Files

38 lines
34 KiB
Python
Raw Permalink Normal View History

import base64, re
protected_pat = re.compile(
r'(com_mokowaashq|pkg_mokowaashq|plg_webservices_mokowaashq|'
r'com_mokowaasannounce|mod_mokowaasannounce|mokowaasannounce|'
r'mokowaashq|ModMokowaasannounceHelper|#__mokowaasannounce)',
re.IGNORECASE
)
def apply_replacements(text):
parts = protected_pat.split(text)
result = []
for i, part in enumerate(parts):
if i % 2 == 0:
part = part.replace('MokoWaaSHQ', 'MokoSuiteHQ')
part = part.replace('MokoWaaSBase', 'MokoSuiteBase')
part = part.replace('MokoWaaS', 'MokoSuite')
part = part.replace('mokowaas', 'mokosuite')
result.append(part)
return ''.join(result)
pages = {
"Home": "IyBNb2tvU3VpdGVIUQoKQ2VudHJhbGl6ZWQgY29udHJvbCBwYW5lbCBmb3IgTW9rb1dhYVMgY2xpZW50IGluc3RhbGxhdGlvbnMgLS0gcmVjZWl2ZXMgaGVhcnRiZWF0cyBmcm9tIHJlbW90ZSBKb29tbGEgc2l0ZXMsIGRpc3BsYXlzIHN0YXR1cyBkYXNoYm9hcmQsIGFuZCBtYW5hZ2VzIHNpdGUgcmVnaXN0cmF0aW9ucwoKfCBGaWVsZCB8IFZhbHVlIHwKfC0tLXwtLS18CnwgKipUeXBlKiogfCBKb29tbGEgUGFja2FnZSAoY29tcG9uZW50ICsgd2Vic2VydmljZXMgcGx1Z2luKSB8CnwgKipWZXJzaW9uKiogfCAwMS4wMC4zNSB8CnwgKipKb29tbGEqKiB8IDUueCAvIDYueCB8CnwgKipQSFAqKiB8IDguMSsgfAp8ICoqTGljZW5zZSoqIHwgR1BMLTMuMC1vci1sYXRlciB8CnwgKipQbGF0Zm9ybSoqIHwgW01va29HaXRlYV0oaHR0cHM6Ly9naXQubW9rb2NvbnN1bHRpbmcudGVjaC9Nb2tvQ29uc3VsdGluZy9Nb2tvU3VpdGVIUSkgfAoKLS0tCgojIyBBcmNoaXRlY3R1cmUKCmBgYAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgIE1va29XYWFTSFEgQ29udHJvbCBQYW5lbCAgICAgICAgICAgICB8CnwgICAgICAgICAoQ2VudHJhbCBKb29tbGEgU2l0ZSkgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgY29tX21va293YWFzaHEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICstIERhc2hib2FyZDogc2l0ZSBzdGF0dXMgb3ZlcnZpZXcgICAgICAgICAgfAp8ICArLSBTaXRlczogcmVnaXN0ZXIgJiBtYW5hZ2UgY2xpZW50IHNpdGVzICAgIHwKfCAgKy0gSGVhcnRiZWF0czogaGlzdG9yeSAmIGRpYWdub3N0aWNzICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICBwbGdfd2Vic2VydmljZXNfbW9rb3dhYXNocSAgICAgICAgICAgICAgICAgIHwKfCAgKy0gUE9TVCAvYXBpL3YxL21va293YWFzaHEvaGVhcnRiZWF0ICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgIF4gICAgICAgICAgICBeICAgICAgICAgICAgXgogICAgICAgICB8IGhlYXJ0YmVhdCAgfCBoZWFydGJlYXQgIHwgaGVhcnRiZWF0CiAgICArLS0tLS0tLS0rICAgKy0tLS0tLS0tKyAgICstLS0tLS0tLSsKICAgIHxDbGllbnQgMXwgICB8Q2xpZW50IDJ8ICAgfENsaWVudCBOfAogICAgfCBKb29tbGEgfCAgIHwgSm9vbWxhIHwgICB8IEpvb21sYSB8CiAgICB8ICtXYWFTICB8ICAgfCArV2FhUyAgfCAgIHwgK1dhYVMgIHwKICAgICstLS0tLS0tLSsgICArLS0tLS0tLS0rICAgKy0tLS0tLS0tKwpgYGAKCnwgRXh0ZW5zaW9uIHwgUHVycG9zZSB8CnwtLS18LS0tfAp8IGBjb21fbW9rb3dhYXNocWAgfCBBZG1pbiBkYXNoYm9hcmQsIHNpdGUgQ1JVRCwgaGVhcnRiZWF0IGhpc3RvcnkgfAp8IGBwbGdfd2Vic2VydmljZXNfbW9rb3dhYXNocWAgfCBSRVNUIEFQSSByb3V0ZSBmb3IgaGVhcnRiZWF0IGluZ2VzdGlvbiB8CnwgYHBrZ19tb2tvd2Fhc2hxYCB8IEJ1bmRsZXMgYm90aCBmb3Igc2luZ2xlLWNsaWNrIGluc3RhbGwgfAoKLS0tCgojIyBSZXF1aXJlbWVudHMKCnwgUmVxdWlyZW1lbnQgfCBNaW5pbXVtIHwKfC0tLXwtLS18CnwgSm9vbWxhIHwgNS54IG9yIDYueCB8CnwgUEhQIHwgOC4xKyB8CnwgTXlTUUwgfCA4LjArIHwKCi0tLQoKPiBbTW9rb1N0YW5kYXJkc10oaHR0cHM6Ly9naXQubW9rb2NvbnN1bHRpbmcudGVjaC9Nb2tvQ29uc3VsdGluZy9tb2tvcGxhdGZvcm0vd2lraS9Ib21lKQoKLS0tCgoqUmVwbzogW01va29TdWl0ZUhRXShodHRwczovL2dpdC5tb2tvY29uc3VsdGluZy50ZWNoL01va29Db25zdWx0aW5nL01va29TdWl0ZUhRKSDCtyBbTW9rb1N0YW5kYXJkc10oaHR0cHM6Ly9naXQubW9rb2NvbnN1bHRpbmcudGVjaC9Nb2tvQ29uc3VsdGluZy9tb2tvcGxhdGZvcm0vd2lraS9Ib21lKSoKCnwgUmV2aXNpb24gfCBEYXRlIHwgQXV0aG9yIHwgRGVzY3JpcHRpb24gfAp8LS0tfC0tLXwtLS18LS0tfAp8IDIuMCB8IDIwMjYtMDYtMTkgfCBNb2tvIENvbnN1bHRpbmcgfCBSZXdyaXRlIGZyb20gY29kZSByZXNlYXJjaCAtLSBhcmNoaXRlY3R1cmUsIGhlYXJ0YmVhdCBmbG93IHwKfCAxLjEgfCAyMDI2LTA2LTE4IHwgTW9rbyBDb25zdWx0aW5nIHwgRml4IHJlcG8gbmFtZSwgVVJMcyB8CnwgMS4wIHwgMjAyNi0wNS0wOSB8IE1va28gQ29uc3VsdGluZyB8IEluaXRpYWwgdmVyc2lvbiB8Cg==",
"guides/Configuration": "W+KGkCBCYWNrIHRvIEhvbWVdKEhvbWUpCgojIENvbmZpZ3VyYXRpb24KCkNvbmZpZ3VyYXRpb24gaXMgc3BsaXQgYmV0d2VlbiB0aGUgaG9zdCBjb21wb25lbnQgKGFubm91bmNlbWVudCBtYW5hZ2VtZW50KSBhbmQgdGhlIHJlbW90ZSBtb2R1bGUgKGRpc3BsYXkgc2V0dGluZ3MpLgoKIyMgSG9zdCBDb21wb25lbnQgQ29uZmlndXJhdGlvbgoKVGhlIGNvbXBvbmVudCBpdHNlbGYgaGFzIG1pbmltYWwgY29uZmlndXJhdGlvbi4gTWFuYWdlIGFubm91bmNlbWVudHMgYXQgKipDb21wb25lbnRzID4gTW9rb1dhYVNCYXNlKiogaW4gdGhlIEpvb21sYSBhZG1pbi4KCiMjIyBBbm5vdW5jZW1lbnQgRmllbGRzCgpFYWNoIGFubm91bmNlbWVudCBoYXM6Cgp8IEZpZWxkIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgKipUaXRsZSoqIHwgVGV4dCB8IEFubm91bmNlbWVudCBoZWFkbGluZSB8CnwgKipNZXNzYWdlKiogfCBUZXh0YXJlYSB8IEZ1bGwgYW5ub3VuY2VtZW50IGNvbnRlbnQgKHN1cHBvcnRzIGxpbmUgYnJlYWtzKSB8CnwgKipTdGF0dXMqKiB8IFB1Ymxpc2hlZC9VbnB1Ymxpc2hlZCB8IE9ubHkgcHVibGlzaGVkIGFubm91bmNlbWVudHMgYXBwZWFyIGluIEFQSSB8CnwgKipPcmRlcmluZyoqIHwgSW50ZWdlciB8IEN1c3RvbSBzb3J0IG9yZGVyIChkcmFnLWFuZC1kcm9wIGluIGxpc3QgdmlldykgfAoKIyMjIFBlcm1pc3Npb25zCgpDb25maWd1cmUgdmlhICoqQ29tcG9uZW50cyA+IE1va29XYWFTQmFzZSA+IE9wdGlvbnMgPiBQZXJtaXNzaW9ucyoqOgoKLSAqKkNyZWF0ZSoqOiBXaGljaCB1c2VyIGdyb3VwcyBjYW4gY3JlYXRlIG5ldyBhbm5vdW5jZW1lbnRzCi0gKipFZGl0Kio6IFdoaWNoIHVzZXIgZ3JvdXBzIGNhbiBlZGl0IGV4aXN0aW5nIGFubm91bmNlbWVudHMKLSAqKkRlbGV0ZSoqOiBXaGljaCB1c2VyIGdyb3VwcyBjYW4gZGVsZXRlIGFubm91bmNlbWVudHMKLSAqKk1hbmFnZSoqOiBXaGljaCB1c2VyIGdyb3VwcyBjYW4gYWNjZXNzIHRoZSBjb21wb25lbnQKCiMjIyBBUEkgRW5kcG9pbnQKClRoZSBKU09OIEFQSSBpcyBhdXRvbWF0aWNhbGx5IGF2YWlsYWJsZSBhdDoKCmBgYApodHRwczovL3lvdXItaG9zdC1zaXRlLmNvbS9pbmRleC5waHA/b3B0aW9uPWNvbV9tb2tvd2Fhc2Fubm91bmNlJnZpZXc9YXBpJmZvcm1hdD1qc29uCmBgYAoKUXVlcnkgcGFyYW1ldGVyczoKCnwgUGFyYW1ldGVyIHwgVmFsdWVzIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IGBsaW1pdGAgfCBJbnRlZ2VyIHwgNSB8IE1heGltdW0gYW5ub3VuY2VtZW50cyB0byByZXR1cm4gfAp8IGBvcmRlcmluZ2AgfCBgY3JlYXRlZGAsIGBvcmRlcmluZ2AgfCBgY3JlYXRlZGAgfCBTb3J0IGZpZWxkIHwKfCBgZGlyZWN0aW9uYCB8IGBBU0NgLCBgREVTQ2AgfCBgREVTQ2AgfCBTb3J0IGRpcmVjdGlvbiB8CgojIyBSZW1vdGUgTW9kdWxlIENvbmZpZ3VyYXRpb24KCkNvbmZpZ3VyZSBlYWNoIG1vZHVsZSBpbnN0YW5jZSBhdCAqKkV4dGVuc2lvbnMgPiBNb2R1bGVzKiogb24gdGhlIHJlbW90ZSBzaXRlLgoKIyMjIEJhc2ljIFRhYgoKfCBQYXJhbWV0ZXIgfCBUeXBlIHwgRGVmYXVsdCB8IFJlcXVpcmVkIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgKipIb3N0IFVSTCoqIChgaG9zdF91cmxgKSB8IFVSTCB8ICooZW1wdHkpKiB8IFllcyB8IEZ1bGwgVVJMIG9mIHRoZSBob3N0IHNpdGUgaW5jbHVkaW5nIHByb3RvY29sIChlLmcuLCBgaHR0cHM6Ly95b3VyLWhvc3Qtc2l0ZS5jb21gKSB8CnwgKipOdW1iZXIgb2YgQW5ub3VuY2VtZW50cyoqIChgY291bnRgKSB8IFRleHQvTnVtYmVyIHwgYDVgIHwgTm8gfCBIb3cgbWFueSBhbm5vdW5jZW1lbnRzIHRvIGRpc3BsYXkgfAp8ICoqT3JkZXJpbmcqKiAoYG9yZGVyaW5nYCkgfCBMaXN0IHwgYGNyZWF0ZWRgIHwgTm8gfCBTb3J0IGZpZWxkOiAiQnkgRGF0ZSAoTmV3ZXN0KSIgb3IgIkN1c3RvbSBPcmRlcmluZyIgfAp8ICoqRGlyZWN0aW9uKiogKGBkaXJlY3Rpb25gKSB8IExpc3QgfCBgREVTQ2AgfCBObyB8IFNvcnQgZGlyZWN0aW9uOiBEZXNjZW5kaW5nIG9yIEFzY2VuZGluZyB8CnwgKipTaG93IERhdGUqKiAoYHNob3dfZGF0ZWApIHwgUmFkaW8gKFllcy9ObykgfCBZZXMgfCBObyB8IFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgY3JlYXRpb24gZGF0ZSB3aXRoIGVhY2ggYW5ub3VuY2VtZW50IHwKCiMjIyBBZHZhbmNlZCBUYWIKCnwgUGFyYW1ldGVyIHwgVHlwZSB8IERlZmF1bHQgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLXwtLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgKipBbHRlcm5hdGl2ZSBMYXlvdXQqKiAoYGxheW91dGApIHwgTW9kdWxlIExheW91dCB8ICooZGVmYXVsdCkqIHwgU2VsZWN0IGFuIGFsdGVybmF0aXZlIHRlbXBsYXRlIGxheW91dCB8CnwgKipNb2R1bGUgQ2xhc3MgU3VmZml4KiogKGBtb2R1bGVjbGFzc19zZnhgKSB8IFRleHQgfCAqKGVtcHR5KSogfCBDU1MgY2xhc3Mgc3VmZml4IGZvciBzdHlsaW5nIHwKfCAqKkNhY2hpbmcqKiAoYGNhY2hlYCkgfCBMaXN0IHwgVXNlIEdsb2JhbCB8IE1vZHVsZS1sZXZlbCBjYWNoZSB0b2dnbGUgfAp8ICoqQ2FjaGUgVGltZSoqIChgY2FjaGVfdGltZWApIHwgVGV4dCB8IGA5MDBgIHwgQ2FjaGUgZHVyYXRpb24gaW4gc2Vjb25kcyAoMTUgbWludXRlcykgfAoKIyMjIFN0YW5kYXJkIEpvb21sYSBNb2R1bGUgU2V0dGluZ3MKClRoZXNlIGFyZSBjb25maWd1cmVkIG9uIHRoZSBtb2R1bGUgZWRpdGluZyBwYWdlIGl0c2VsZjoKCnwgU2V0dGluZyB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8ICoqVGl0bGUqKiB8IE1vZHVsZSB0aXRsZSBkaXNwbGF5ZWQgb24gdGhlIGZyb250ZW5kIHwKfCAqKlNob3cgVGl0bGUqKiB8IFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgbW9kdWxlIHRpdGxlIHwKfCAqKlBvc2l0aW9uKi
"guides/Contributing": "W+KGkCBCYWNrIHRvIEhvbWVdKEhvbWUpCgojIENvbnRyaWJ1dGluZyB0byBNb2tvIENvbnN1bHRpbmcgUHJvamVjdHMKClRoYW5rIHlvdSBmb3IgeW91ciBpbnRlcmVzdCBpbiBjb250cmlidXRpbmcuIEFsbCBNb2tvIENvbnN1bHRpbmcgcmVwb3NpdG9yaWVzIGZvbGxvdyB0aGlzIHVuaXZlcnNhbCB3b3JrZmxvdyBhbmQgdmVyc2lvbiBwb2xpY3kuCgojIyBCcmFuY2hpbmcgV29ya2Zsb3cKCmBgYApmZWF0dXJlLyog4pSA4pSAUFLilIDilIA+IGRldiDilIDilIBkcmFmdCBQUuKUgOKUgD4gKHJlbmFtZWQgdG8gcmMpIOKUgOKUgG1lcmdl4pSA4pSAPiBtYWluCmBgYAoKIyMjIFN0ZXAgYnkgc3RlcAoKMS4gKipDcmVhdGUgYSBmZWF0dXJlIGJyYW5jaCoqIGZyb20gYGRldmA6CiAgIGBgYGJhc2gKICAgZ2l0IGNoZWNrb3V0IGRldiAmJiBnaXQgcHVsbAogICBnaXQgY2hlY2tvdXQgLWIgZmVhdHVyZS9teS1jaGFuZ2UKICAgYGBgCgoyLiAqKldvcmsgYW5kIGNvbW1pdCoqIG9uIHlvdXIgZmVhdHVyZSBicmFuY2guIFB1c2ggdG8gb3JpZ2luLgoKMy4gKipPcGVuIGEgUFIqKjogYGZlYXR1cmUvbXktY2hhbmdlYCDihpIgYGRldmAuIEFmdGVyIHJldmlldyBhbmQgY2hlY2tzLCBtZXJnZSBpdC4KCjQuICoqV2hlbiByZWFkeSBmb3IgcmVsZWFzZSoqLCBvcGVuIGEgKipkcmFmdCBQUioqOiBgZGV2YCDihpIgYG1haW5gLgogICAtIFRoaXMgYXV0b21hdGljYWxseSByZW5hbWVzIHRoZSBzb3VyY2UgYnJhbmNoIHRvIGByY2AgKHJlbGVhc2UgY2FuZGlkYXRlKQogICAtIEFuIFJDIHByZS1yZWxlYXNlIGlzIGJ1aWx0IGFuZCB1cGxvYWRlZAoKNS4gKipBbHBoYSBhbmQgYmV0YSBicmFuY2hlcyoqIGFyZSBjcmVhdGVkIGJ5IG1hbnVhbGx5IHJlbmFtaW5nIHRoZSBicmFuY2ggYmVmb3JlIHRoZSBSQyBzdGFnZToKICAgLSBSZW5hbWUgYGRldmAgdG8gYGFscGhhYCBmb3IgZWFybHkgdGVzdGluZyDihpIgYWxwaGEgcHJlLXJlbGVhc2UgaXMgYnVpbHQKICAgLSBSZW5hbWUgYGFscGhhYCB0byBgYmV0YWAgZm9yIGZlYXR1cmUtY29tcGxldGUgdGVzdGluZyDihpIgYmV0YSBwcmUtcmVsZWFzZSBpcyBidWlsdAogICAtIFdoZW4gdGhlIGRyYWZ0IFBSIGlzIGNyZWF0ZWQsIHRoZSBicmFuY2ggaXMgcmVuYW1lZCB0byBgcmNgCgo2LiAqKk9uY2UgUFIgY2hlY2tzIHBhc3MqKiBvbiB0aGUgYHJjYCBicmFuY2gsIG1hcmsgdGhlIFBSIGFzIHJlYWR5IGFuZCBtZXJnZSB0byBgbWFpbmAuCgo3LiAqKk1lcmdpbmcgdG8gbWFpbioqIHRyaWdnZXJzIHRoZSBzdGFibGUgcmVsZWFzZSBwaXBlbGluZToKICAgLSBNaW5vciB2ZXJzaW9uIGJ1bXAgKGUuZy4sIGAwMi4wOS54eGAg4oaSIGAwMi4xMC4wMGApCiAgIC0gU3RhYmlsaXR5IHN1ZmZpeCBzdHJpcHBlZCAoY2xlYW4gdmVyc2lvbikKICAgLSBNb2tvR2l0ZWEgcmVsZWFzZSBjcmVhdGVkIHdpdGggWklQL3Rhci5neiBwYWNrYWdlcwogICAtIGB1cGRhdGVzLnhtbGAgdXBkYXRlZCAoSm9vbWxhIGV4dGVuc2lvbnMpCiAgIC0gYGRldmAgYnJhbmNoIHJlY3JlYXRlZCBmcm9tIGBtYWluYAoKIyMjIEJyYW5jaCBzdW1tYXJ5Cgp8IEJyYW5jaCB8IFB1cnBvc2UgfCBDcmVhdGVkIGJ5IHwKfC0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCBgZmVhdHVyZS8qYCB8IE5ldyBmZWF0dXJlcyBhbmQgZml4ZXMgfCBEZXZlbG9wZXIgfAp8IGBkZXZgIHwgSW50ZWdyYXRpb24gYnJhbmNoIHwgQXV0by1yZWNyZWF0ZWQgYWZ0ZXIgcmVsZWFzZSB8CnwgYGFscGhhYCB8IEFscGhhIHByZS1yZWxlYXNlIHRlc3RpbmcgfCBNYW51YWwgcmVuYW1lIGZyb20gYGRldmAgfAp8IGBiZXRhYCB8IEJldGEgcHJlLXJlbGVhc2UgdGVzdGluZyB8IE1hbnVhbCByZW5hbWUgZnJvbSBgYWxwaGFgIHwKfCBgcmNgIHwgUmVsZWFzZSBjYW5kaWRhdGUgfCBBdXRvLXJlbmFtZWQgb24gZHJhZnQgUFIgdG8gbWFpbiB8CnwgYG1haW5gIHwgU3RhYmxlIHJlbGVhc2VzIHwgUHJvdGVjdGVkLCBtZXJnZSBvbmx5IHwKfCBgdmVyc2lvbi9YWC5ZWS5aWmAgfCBBcmNoaXZlZCByZWxlYXNlIHNuYXBzaG90cyB8IEF1dG8tY3JlYXRlZCBieSBDSSB8CgojIyMgUHJvdGVjdGVkIGJyYW5jaGVzCgp8IEJyYW5jaCB8IERpcmVjdCBwdXNoIHwgTWVyZ2UgdmlhIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCBgbWFpbmAgfCBCbG9ja2VkIChDSSBib3Qgd2hpdGVsaXN0ZWQpIHwgUFIgbWVyZ2Ugb25seSB8CnwgYGRldmAgfCBCbG9ja2VkIChDSSBib3Qgd2hpdGVsaXN0ZWQpIHwgUFIgbWVyZ2UgZnJvbSBmZWF0dXJlLyogfAp8IGByY2AgfCBCbG9ja2VkIChDSSBib3Qgd2hpdGVsaXN0ZWQpIHwgQXV0by1jcmVhdGVkIG9uIGRyYWZ0IFBSIHwKfCBgYWxwaGFgIHwgQmxvY2tlZCAoQ0kgYm90IHdoaXRlbGlzdGVkKSB8IE1hbnVhbCByZW5hbWUgfAp8IGBiZXRhYCB8IEJsb2NrZWQgKENJIGJvdCB3aGl0ZWxpc3RlZCkgfCBNYW51YWwgcmVuYW1lIHwKfCBgZmVhdHVyZS8qYCB8IE9wZW4gfCBOL0EgKHNvdXJjZSBicmFuY2gpIHwKCiMjIFZlcnNpb24gUG9saWN5CgojIyMgRm9ybWF0CgpBbGwgdmVyc2lvbnMgdXNlIGBYWC5ZWS5aWmAg4oCUIHRocmVlIHR3by1kaWdpdCBzZWdtZW50cywgemVyby1wYWRkZWQ6CgotICoqWFgqKiDigJQgTWFqb3IgdmVyc2lvbiAoYnJlYWtpbmcgY2hhbmdlcykKLSAqKllZKiog4oCUIE1pbm9yIHZlcnNpb24gKG5ldyBmZWF0dXJlcywgYnVtcGVkIG9uIHJlbGVhc2UgdG8gbWFpbikKLSAqKlpaKiog4oCUIFBhdGNoIHZlcnNpb24gKGF1dG8taW5jcmVtZW50ZWQgb24gZXZlcnkgcHVzaCB0byBkZXYvZmVhdHVyZSBicmFuY2hlcykKClJvbGxvdmVyOiBwYXRjaCBgOTlgIOKGkiBgMDBgIGluY3JlbWVudHMgbWlub3I7IG1pbm9yIGA5OWAg4oaSIGAwMGAgaW5jcmVtZW50cyBtYWpvci4KCiMjIyBTdGFiaWxpdHkgc3VmZml4ZXMKCkVhY2ggYnJhbmNoIGFwcGVuZHMgYSBzdWZmaXggdG8gaW5kaWNhdGUgc3RhYmlsaXR5OgoKfCBCcmFuY2ggfCBTdWZmaXggfCBFeGFtcGxlIHwKfC0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLXw
"guides/Installation": "W+KGkCBCYWNrIHRvIEhvbWVdKEhvbWUpCgojIEluc3RhbGxhdGlvbgoKTW9rb1dhYVNCYXNlIHVzZXMgYSB0d28tcGFydCBpbnN0YWxsYXRpb246IHRoZSAqKmNvbXBvbmVudCoqIG9uIHRoZSBob3N0IHNpdGUgYW5kIHRoZSAqKm1vZHVsZSoqIG9uIHJlbW90ZSBzaXRlcy4KCiMjIFJlcXVpcmVtZW50cwoKfCBSZXF1aXJlbWVudCB8IE1pbmltdW0gfAp8LS0tfC0tLXwKfCAqKkpvb21sYSoqIHwgMy54IG9yIGxhdGVyIHwKfCAqKlBIUCoqIHwgNS42IG9yIGxhdGVyIHwKfCAqKk15U1FMKiogfCA1LjUgb3IgbGF0ZXIgKGhvc3Qgc2l0ZSBvbmx5KSB8CnwgKipOZXR3b3JrKiogfCBSZW1vdGUgc2l0ZXMgbXVzdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSBob3N0IHNpdGUgdmlhIEhUVFAvSFRUUFMgfAoKIyMgUGFydCAxOiBIb3N0IFNpdGUgKENvbXBvbmVudCkKCkluc3RhbGwgdGhlIGNvbXBvbmVudCBvbiB0aGUgKipvbmUgY2VudHJhbCBzaXRlKiogd2hlcmUgYW5ub3VuY2VtZW50cyB3aWxsIGJlIG1hbmFnZWQuCgojIyMgUGFja2FnZSB0aGUgQ29tcG9uZW50CgpgYGBiYXNoCmNkIHNyYy8KemlwIC1yIGNvbV9tb2tvd2Fhc2Fubm91bmNlLnppcCBjb21fbW9rb3dhYXNhbm5vdW5jZS8KYGBgCgojIyMgSW5zdGFsbCB2aWEgSm9vbWxhIEFkbWluCgoxLiBMb2cgaW4gdG8gdGhlIEpvb21sYSBhZG1pbmlzdHJhdG9yIHBhbmVsCjIuIE5hdmlnYXRlIHRvICoqRXh0ZW5zaW9ucyA+IE1hbmFnZSA+IEluc3RhbGwqKgozLiBDbGljayAqKlVwbG9hZCBQYWNrYWdlIEZpbGUqKgo0LiBTZWxlY3QgYGNvbV9tb2tvd2Fhc2Fubm91bmNlLnppcGAgYW5kIGNsaWNrICoqVXBsb2FkICYgSW5zdGFsbCoqCgojIyMgVmVyaWZ5IEluc3RhbGxhdGlvbgoKMS4gR28gdG8gKipDb21wb25lbnRzKiogaW4gdGhlIGFkbWluIG1lbnUKMi4gQ2xpY2sgKipNb2tvV2FhU0Jhc2UqKiB0byBvcGVuIHRoZSBtYW5hZ2VtZW50IGludGVyZmFjZQozLiBUZXN0IHRoZSBBUEkgZW5kcG9pbnQgaW4geW91ciBicm93c2VyOgoKYGBgCmh0dHBzOi8veW91ci1ob3N0LXNpdGUuY29tL2luZGV4LnBocD9vcHRpb249Y29tX21va293YWFzYW5ub3VuY2Umdmlldz1hcGkmZm9ybWF0PWpzb24KYGBgCgpFeHBlY3RlZCByZXNwb25zZSAoZW1wdHkgYXQgZmlyc3QpOgoKYGBganNvbgp7CiAgInN1Y2Nlc3MiOiB0cnVlLAogICJjb3VudCI6IDAsCiAgImFubm91bmNlbWVudHMiOiBbXQp9CmBgYAoKU2F2ZSB0aGlzIFVSTCAtLSByZW1vdGUgbW9kdWxlcyB3aWxsIG5lZWQgaXQuCgojIyMgQ29uZmlndXJlIFBlcm1pc3Npb25zIChPcHRpb25hbCkKCjEuIEdvIHRvICoqQ29tcG9uZW50cyA+IE1va29XYWFTQmFzZSA+IE9wdGlvbnMgPiBQZXJtaXNzaW9ucyoqCjIuIENvbmZpZ3VyZSB3aGljaCB1c2VyIGdyb3VwcyBjYW4gY3JlYXRlLCBlZGl0LCBkZWxldGUsIGFuZCBtYW5hZ2UgYW5ub3VuY2VtZW50cwoKIyMgUGFydCAyOiBSZW1vdGUgU2l0ZXMgKE1vZHVsZSkKCkluc3RhbGwgdGhlIG1vZHVsZSBvbiAqKmVhY2ggc2l0ZSoqIHRoYXQgc2hvdWxkIGRpc3BsYXkgYW5ub3VuY2VtZW50cyBmcm9tIHRoZSBob3N0LgoKIyMjIFBhY2thZ2UgdGhlIE1vZHVsZQoKYGBgYmFzaApjZCBzcmMvCnppcCAtciBtb2RfbW9rb3dhYXNhbm5vdW5jZS56aXAgbW9kX21va293YWFzYW5ub3VuY2UvCmBgYAoKIyMjIEluc3RhbGwgdmlhIEpvb21sYSBBZG1pbgoKMS4gTG9nIGluIHRvIHRoZSByZW1vdGUgc2l0ZSdzIEpvb21sYSBhZG1pbgoyLiBOYXZpZ2F0ZSB0byAqKkV4dGVuc2lvbnMgPiBNYW5hZ2UgPiBJbnN0YWxsKioKMy4gVXBsb2FkIGBtb2RfbW9rb3dhYXNhbm5vdW5jZS56aXBgCgojIyMgQ3JlYXRlIGEgTW9kdWxlIEluc3RhbmNlCgoxLiBHbyB0byAqKkV4dGVuc2lvbnMgPiBNb2R1bGVzID4gTmV3KioKMi4gU2VsZWN0ICoqTW9rb1dhYVNCYXNlKioKMy4gQ29uZmlndXJlOgoKfCBTZXR0aW5nIHwgVmFsdWUgfAp8LS0tLS0tLS0tfC0tLS0tLS18CnwgKipUaXRsZSoqIHwgZS5nLiwgIkxhdGVzdCBBbm5vdW5jZW1lbnRzIiB8CnwgKipQb3NpdGlvbioqIHwgU2VsZWN0IGEgdGVtcGxhdGUgcG9zaXRpb24gfAp8ICoqU3RhdHVzKiogfCBQdWJsaXNoZWQgfAp8ICoqSG9zdCBVUkwqKiB8IGBodHRwczovL3lvdXItaG9zdC1zaXRlLmNvbWAgKHRoZSBzaXRlIHdoZXJlIHRoZSBjb21wb25lbnQgaXMgaW5zdGFsbGVkKSB8Cgo0LiBBZGp1c3QgZGlzcGxheSBvcHRpb25zIChzZWUgW0NvbmZpZ3VyYXRpb25dKENvbmZpZ3VyYXRpb24pKQo1LiBTZXQgbW9kdWxlIGFzc2lnbm1lbnQgKHdoaWNoIHBhZ2VzIHNob3cgdGhlIG1vZHVsZSkKNi4gQ2xpY2sgKipTYXZlICYgQ2xvc2UqKgoKIyMjIFZlcmlmeSB0aGUgTW9kdWxlCgoxLiBWaXNpdCB0aGUgcmVtb3RlIHNpdGUncyBmcm9udGVuZAoyLiBOYXZpZ2F0ZSB0byBhIHBhZ2Ugd2hlcmUgdGhlIG1vZHVsZSBpcyBhc3NpZ25lZAozLiBBbm5vdW5jZW1lbnRzIGZyb20gdGhlIGhvc3Qgc2hvdWxkIGFwcGVhcgoKIyMgQWx0ZXJuYXRpdmUgSW5zdGFsbGF0aW9uOiBEaXJlY3RvcnkgVXBsb2FkCgpJZiB5b3UgaGF2ZSBGVFAvU1NIIGFjY2VzczoKCjEuIFVwbG9hZCBgY29tX21va293YWFzYW5ub3VuY2UvYCB0byBgL2FkbWluaXN0cmF0b3IvY29tcG9uZW50cy9jb21fbW9rb3dhYXNhbm5vdW5jZS9gCjIuIFVwbG9hZCBgbW9kX21va293YWFzYW5ub3VuY2UvYCB0byBgL21vZHVsZXMvbW9kX21va293YWFzYW5ub3VuY2UvYAozLiBJbiBKb29tbGEgYWRtaW46ICoqRXh0ZW5zaW9ucyA+IE1hbmFnZSA+IERpc2NvdmVyID4gRGlzY292ZXIgPiBJbnN0YWxsKioKCiMjIENyZWF0aW5nIFlvdXIgRmlyc3QgQW5ub3VuY2VtZW50CgoxLiBPbiB0aGUgKipob3N0IHNpdGUqKiwgZ28gdG8gKipDb21wb25lbnRzID4gTW9rb1dhYVNCYXNlKioKMi4gQ2xpY2sgKipOZXcqKgozLiBFbnRlciBhIHRpdGxlIGFuZCBtZXNzYWdlCjQuIFNldCBzdGF0dXMgdG8gKipQdWJsaXNoZWQqKgo1LiBDbGljayAqKlNhdmUgJiBDbG9zZSoqCgpUaGUgYW5ub3VuY2VtZW50IHdpbGwgYXBwZWFyIG9uIHJlbW90ZSBzaXRlcyB
"reference/Architecture": "W+KGkCBCYWNrIHRvIEhvbWVdKEhvbWUpCgojIEFyY2hpdGVjdHVyZQoKTW9rb1dhYVNCYXNlIHVzZXMgYSBkaXN0cmlidXRlZCBjbGllbnQtc2VydmVyIGFyY2hpdGVjdHVyZSB3aGVyZSBvbmUgaG9zdCBzaXRlIG1hbmFnZXMgYW5ub3VuY2VtZW50cyBhbmQgYW55IG51bWJlciBvZiByZW1vdGUgc2l0ZXMgZmV0Y2ggYW5kIGRpc3BsYXkgdGhlbSB2aWEgYSBKU09OIEFQSS4KCiMjIFN5c3RlbSBEaWFncmFtCgpgYGAK4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQCuKUgiAgICAgICAgIEhvc3QgSm9vbWxhIFNpdGUgICAgICAgICAgICAg4pSCCuKUgiAgKENlbnRyYWwgTWFuYWdlbWVudCkgICAgICAgICAgICAgICDilIIK4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIK4pSCICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAg4pSCCuKUgiAg4pSCICBjb21fbW9rb3dhYXNhbm5vdW5jZSAgICAgICDilIIgICAg4pSCCuKUgiAg4pSCICAoQWRtaW4gQ29tcG9uZW50KSAgICAgICAgICDilIIgICAg4pSCCuKUgiAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAg4pSCCuKUgiAg4pSCICAtIENSVUQgZm9yIGFubm91bmNlbWVudHMgICDilIIgICAg4pSCCuKUgiAg4pSCICAtIERhdGFiYXNlIHN0b3JhZ2UgICAgICAgICDilIIgICAg4pSCCuKUgiAg4pSCICAtIEpTT04gQVBJIGVuZHBvaW50ICAgICAgICDilIIgICAg4pSCCuKUgiAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgIOKUggrilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAg4pSCCiAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIOKUggogICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkAogICAgIOKUgiAgICAgICAgICAgICAgICAgICDilIIgICAgICAgICAgICAgIOKUggogICAgIOKWvCAgICAgICAgICAgICAgICAgICDilrwgICAgICAgICAgICAgIOKWvArilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkArilIIgUmVtb3RlIDEg4pSCICAgICAgICDilIIgUmVtb3RlIDIg4pSCICAg4pSCIFJlbW90ZSBOIOKUggrilIIgICAgICAgICAg4pSCICAgICAgICDilIIgICAgICAgICAg4pSCICAg4pSCICAgICAgICAgIOKUggrilIIgbW9kX2FubiAg4pSCICAgICAgICDilIIgbW9kX2FubiAg4pSCICAg4pSCIG1vZF9hbm4gIOKUggrilIIgKEZldGNoICAg4pSCICAgICAgICDilIIgKEZldGNoICAg4pSCICAg4pSCIChGZXRjaCAgIOKUggrilIIgJiBDYWNoZSAg4pSCICAgICAgICDilIIgJiBDYWNoZSAg4pSCICAg4pSCICYgQ2FjaGUgIOKUggrilIIgJiBEaXNwbGF54pSCICAgICAgICDilIIgJiBEaXNwbGF54pSCICAg4pSCICYgRGlzcGxheeKUggrilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmApgYGAKCiMjIEhvc3QgU2l0ZSBDb21wb25lbnRzCgpUaGUgaG9zdCBzaXRlIHJ1bnMgYGNvbV9tb2tvd2Fhc2Fubm91bmNlYCBhcyBhbiBhZG1pbi1vbmx5IGNvbXBvbmVudC4gTm8gbW9kdWxlIGlzIG5lZWRlZCBvbiB0aGUgaG9zdC4KCiMjIyBEaXJlY3RvcnkgU3RydWN0dXJlCgpgYGAKY29tX21va293YWFzYW5ub3VuY2UvCuKUnOKUgOKUgCBtb2tvd2Fhc2Fubm91bmNlLnhtbCAgICAgICAjIENvbXBvbmVudCBtYW5pZmVzdArilJzilIDilIAgYWRtaW4vCuKUgiAgIOKUnOKUgOKUgCBtb2tvd2Fhc2Fubm91bmNlLnBocCAgICMgQWRtaW4gZW50cnkgcG9pbnQK4pSCICAg4pSc4pSA4pSAIGNvbnRyb2xsZXIucGhwICAgICAgICAgIyBNYWluIGNvbnRyb2xsZXIK4pSCICAg4pSc4pSA4pSAIGNvbmZpZy54bWwgICAgICAgICAgICAgIyBDb21wb25lbnQgY29uZmlndXJhdGlvbgrilIIgICDilJzilIDilIAgY29udHJvbGxlcnMvCuKUgiAgIOKUgiAgIOKUlOKUgOKUgCBhbm5vdW5jZW1lbnQucGhwICAgIyBTaW5nbGUgYW5ub3VuY2VtZW50IGNvbnRyb2xsZXIK4pSCICAg4pSc4pSA4pSAIG1vZGVscy8K4pSCICAg4pSCICAg4pSc4pSA4pSAIGFubm91bmNlbWVudC5waHAgICAjIFNpbmdsZSBhbm5vdW5jZW1lbnQgbW9kZWwK4pSCICAg4pSCICAg4pSc4pSA4pSAIGFubm91bmNlbWVudHMucGhwICAjIExpc3QgbW9kZWwK4pSCICAg4pSCICAg4pSU4pSA4pSAIGZvcm1zLwrilIIgICDilIIgICAgICAgIOKUlOKUgOKUgCBhbm5vdW5jZW1lbnQueG1sICAjIEVkaXQgZm9ybSBkZWZpbml0aW9uCuKUgiAgIOKUnOKUgOKUgCB2aWV3cy8gICAgICAgICAgICAgICAgICMgQWRtaW4gdmlldyB0ZW1wbGF0ZXMK4pSCICAg4pSc4pSA4pSAIHRhYmxlcy8K4pSCICAg4pSCICAg4pSU4pSA4pSAIGFubm91bmNlbWVudC5waHAgICAjIERhdGFiYXNlIHRhYmxlIGNsYXNzCuKUgiAgIOKUnOKUgOKUgCBoZWxwZXJzLwrilIIgICDilIIgICDilJTilIDilIAgYW5ub3VuY2VtZW50cy5waHAgICMgU3VibWVudSBhbmQgcGVybWlzc2lvbiBo
iIsCiAgICAgICJjcmVhdGVkIjogIjIwMjYtMDUtMDEgMTI6MDA6MDAiLAogICAgICAib3JkZXJpbmciOiAxCiAgICB9CiAgXQp9CmBgYAoKIyMgUmVtb3RlIE1vZHVsZQoKUmVtb3RlIHNpdGVzIHJ1biBgbW9kX21va293YWFzYW5ub3VuY2VgLCB3aGljaCBmZXRjaGVzIGFubm91bmNlbWVudHMgZnJvbSB0aGUgaG9zdCBBUEkgYW5kIGRpc3BsYXlzIHRoZW0uCgojIyMgRGlyZWN0b3J5IFN0cnVjdHVyZQoKYGBgCm1vZF9tb2tvd2Fhc2Fubm91bmNlLwrilJzilIDilIAgbW9kX21va293YWFzYW5ub3VuY2UueG1sICAgIyBNb2R1bGUgbWFuaWZlc3QK4pSc4pSA4pSAIG1vZF9tb2tvd2Fhc2Fubm91bmNlLnBocCAgICMgRW50cnkgcG9pbnQK4pSc4pSA4pSAIGhlbHBlci5waHAgICAgICAgICAgICAgICAgIyBBUEkgZmV0Y2hpbmcgbG9naWMK4pSc4pSA4pSAIHRtcGwvCuKUgiAgIOKUlOKUgOKUgCBkZWZhdWx0LnBocCAgICAgICAgICAgICMgRGlzcGxheSB0ZW1wbGF0ZQrilJTilIDilIAgbGFuZ3VhZ2UvCiAgICDilJTilIDilIAgZW4tR0IvICAgICAgICAgICAgICAgICAjIExhbmd1YWdlIGZpbGVzCmBgYAoKIyMjIERhdGEgRmxvdwoKMS4gTW9kdWxlIGxvYWRzIGFuZCByZWFkcyBgaG9zdF91cmxgIHBhcmFtZXRlcgoyLiBgTW9kTW9rb3dhYXNhbm5vdW5jZUhlbHBlcjo6Z2V0QW5ub3VuY2VtZW50cygpYCBpcyBjYWxsZWQKMy4gSGVscGVyIGNoZWNrcyBKb29tbGEgY2FjaGUgZm9yIGEgY2FjaGVkIHJlc3BvbnNlIChrZXllZCBieSBBUEkgVVJMIGhhc2gpCjQuIElmIGNhY2hlIG1pc3M6IHNlbmRzIEhUVFAgR0VUIHRvIGhvc3QgQVBJIHZpYSBgSkh0dHBGYWN0b3J5OjpnZXRIdHRwKClgIHdpdGggMTAtc2Vjb25kIHRpbWVvdXQKNS4gVmFsaWRhdGVzIHJlc3BvbnNlIChIVFRQIDIwMCwgYHN1Y2Nlc3M6IHRydWVgKQo2LiBDYWNoZXMgcmVzdWx0IGZvciAxNSBtaW51dGVzICh2aWEgSm9vbWxhJ3Mgb3V0cHV0IGNhY2hlKQo3LiBSZXR1cm5zIGFycmF5IG9mIGFubm91bmNlbWVudCBvYmplY3RzIHRvIHRlbXBsYXRlIGZvciByZW5kZXJpbmcKCiMjIyBDYWNoaW5nCgpUaGUgbW9kdWxlIHVzZXMgSm9vbWxhJ3MgYnVpbHQtaW4gY2FjaGUgc3lzdGVtOgoKYGBgcGhwCiRjYWNoZSA9IEpGYWN0b3J5OjpnZXRDYWNoZSgnbW9kX21va293YWFzYW5ub3VuY2UnLCAnb3V0cHV0Jyk7CiRjYWNoZUtleSA9IG1kNSgkYXBpVXJsKTsKYGBgCgotIENhY2hlIGdyb3VwOiBgbW9kX21va293YWFzYW5ub3VuY2VgCi0gQ2FjaGUga2V5OiBNRDUgaGFzaCBvZiB0aGUgZnVsbCBBUEkgVVJMIChpbmNsdWRlcyBsaW1pdCwgb3JkZXJpbmcsIGRpcmVjdGlvbiBwYXJhbWV0ZXJzKQotIER1cmF0aW9uOiAxNSBtaW51dGVzIChKb29tbGEgZGVmYXVsdCBjYWNoZSBsaWZldGltZSkKLSBBZGRpdGlvbmFsIG1vZHVsZS1sZXZlbCBjYWNoZSBzZXR0aW5ncyBhdmFpbGFibGUgaW4gQWR2YW5jZWQgdGFiIChkZWZhdWx0OiA5MDAgc2Vjb25kcykKCiMjIyBFcnJvciBIYW5kbGluZwoKVGhlIGhlbHBlciBoYW5kbGVzIHNldmVyYWwgZmFpbHVyZSBtb2RlczoKCnwgQ29uZGl0aW9uIHwgQmVoYXZpb3IgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBFbXB0eSBob3N0IFVSTCB8IFdhcm5pbmcgbWVzc2FnZSwgcmV0dXJucyBlbXB0eSBhcnJheSB8CnwgSFRUUCBlcnJvciAobm9uLTIwMCkgfCBFcnJvciBtZXNzYWdlIHdpdGggc3RhdHVzIGNvZGUsIHJldHVybnMgZW1wdHkgYXJyYXkgfAp8IEludmFsaWQgSlNPTiByZXNwb25zZSB8IEVycm9yIG1lc3NhZ2UsIHJldHVybnMgZW1wdHkgYXJyYXkgfAp8IGBzdWNjZXNzOiBmYWxzZWAgaW4gcmVzcG9uc2UgfCBEaXNwbGF5cyBlcnJvciBmcm9tIEFQSSByZXNwb25zZSB8CnwgTmV0d29yay9jb25uZWN0aW9uIGZhaWx1cmUgfCBDYXRjaGVzIGV4Y2VwdGlvbiwgZGlzcGxheXMgZXJyb3IgbWVzc2FnZSB8CgpBbGwgZXJyb3JzIHVzZSBgSkZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCktPmVucXVldWVNZXNzYWdlKClgIHRvIGRpc3BsYXkgdXNlci1mYWNpbmcgbWVzc2FnZXMgd2l0aG91dCBicmVha2luZyB0aGUgcGFnZS4KCiMjIFNlY3VyaXR5CgotICoqSG9zdCBzaWRlKio6IEpFWEVDIGNoZWNrcyBvbiBhbGwgZmlsZXMsIGlucHV0IGZpbHRlcmluZyB2aWEgSm9vbWxhJ3MgcXVlcnkgYnVpbGRlciwgcGVybWlzc2lvbiBjaGVja3MgdmlhIEFDTAotICoqTW9kdWxlIHNpZGUqKjogVVJMIHNhbml0aXphdGlvbiwgb3V0cHV0IGVzY2FwaW5nLCBIVFRQLW9ubHkgY29tbXVuaWNhdGlvbgotICoqQVBJKio6IFB1YmxpYyByZWFkLW9ubHkgZW5kcG9pbnQgKG5vIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIGZvciBmZXRjaGluZyBhbm5vdW5jZW1lbnRzKQoKLS0tCgoKLS0tCgoqUmVwbzogW01va29XYWFTQmFzZV0oaHR0cHM6Ly9naXQubW9rb2NvbnN1bHRpbmcudGVjaC9Nb2tvQ29uc3VsdGluZy9Nb2tvV2FhU0Jhc2UpIMK3IFtNb2tvU3RhbmRhcmRzXShodHRwczovL2dpdC5tb2tvY29uc3VsdGluZy50ZWNoL01va29Db25zdWx0aW5nL21va29wbGF0Zm9ybS93aWtpL0hvbWUpKgoKfCBSZXZpc2lvbiB8IERhdGUgfCBBdXRob3IgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfC0tLXwtLS18CnwgMS4wIHwgMjAyNi0wNS0wOSB8IE1va28gQ29uc3VsdGluZyB8IEluaXRpYWwgdmVyc2lvbiB8Cg==",
"reference/Security": "W+KGkCBCYWNrIHRvIEhvbWVdKEhvbWUpCgojIFNlY3VyaXR5IFBvbGljeQoKIyMgU3VwcG9ydGVkIFZlcnNpb25zCgpTZWN1cml0eSB1cGRhdGVzIGFyZSBwcm92aWRlZCBmb3IgdGhlIGZvbGxvd2luZyB2ZXJzaW9uczoKCnwgVmVyc2lvbiB8IFN1cHBvcnRlZCAgICAgICAgICB8CnwgLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgMDEueC54ICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgPCAwMS4wICB8IDp4OiAgICAgICAgICAgICAgICB8CgpPbmx5IHRoZSBjdXJyZW50IG1ham9yIHZlcnNpb24gcmVjZWl2ZXMgc2VjdXJpdHkgdXBkYXRlcy4KCiMjIFJlcG9ydGluZyBhIFZ1bG5lcmFiaWxpdHkKCiMjIyBXaGVyZSB0byBSZXBvcnQKCioqRE8gTk9UKiogY3JlYXRlIHB1YmxpYyBpc3N1ZXMgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4KClJlcG9ydCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgcHJpdmF0ZWx5IHRvOgoKKipFbWFpbCoqOiBgc2VjdXJpdHlAbW9rb2NvbnN1bHRpbmcudGVjaGAKCioqU3ViamVjdCBMaW5lKio6IGBbU0VDVVJJVFldIE1va29XYWFTQmFzZSAtIEJyaWVmIERlc2NyaXB0aW9uYAoKIyMjIFdoYXQgdG8gSW5jbHVkZQoKMS4gKipEZXNjcmlwdGlvbioqOiBDbGVhciBleHBsYW5hdGlvbiBvZiB0aGUgdnVsbmVyYWJpbGl0eQoyLiAqKkltcGFjdCoqOiBQb3RlbnRpYWwgc2VjdXJpdHkgaW1wYWN0IGFuZCBzZXZlcml0eSBhc3Nlc3NtZW50CjMuICoqQWZmZWN0ZWQgVmVyc2lvbnMqKjogV2hpY2ggdmVyc2lvbnMgYXJlIHZ1bG5lcmFibGUKNC4gKipSZXByb2R1Y3Rpb24gU3RlcHMqKjogRGV0YWlsZWQgc3RlcHMgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZQo1LiAqKlByb29mIG9mIENvbmNlcHQqKjogQ29kZSwgY29uZmlndXJhdGlvbiwgb3IgZGVtb25zdHJhdGlvbiAoaWYgYXBwbGljYWJsZSkKNi4gKipTdWdnZXN0ZWQgRml4Kio6IFByb3Bvc2VkIHJlbWVkaWF0aW9uIChpZiBrbm93bikKCiMjIyBSZXNwb25zZSBUaW1lbGluZQoKKiAqKkluaXRpYWwgUmVzcG9uc2UqKjogV2l0aGluIDMgYnVzaW5lc3MgZGF5cwoqICoqQXNzZXNzbWVudCBDb21wbGV0ZSoqOiBXaXRoaW4gNyBidXNpbmVzcyBkYXlzCiogKipGaXggVGltZWxpbmUqKjogRGVwZW5kcyBvbiBzZXZlcml0eSAoc2VlIGJlbG93KQoqICoqRGlzY2xvc3VyZSoqOiBDb29yZGluYXRlZCB3aXRoIHJlcG9ydGVyCgojIyBTZXZlcml0eSBDbGFzc2lmaWNhdGlvbgoKIyMjIENyaXRpY2FsCiogUmVtb3RlIGNvZGUgZXhlY3V0aW9uCiogQXV0aGVudGljYXRpb24gYnlwYXNzCiogRGF0YSBicmVhY2ggb3IgZXhwb3N1cmUgb2Ygc2Vuc2l0aXZlIGluZm9ybWF0aW9uCiogKipGaXggVGltZWxpbmUqKjogNyBkYXlzCgojIyMgSGlnaAoqIFByaXZpbGVnZSBlc2NhbGF0aW9uCiogU1FMIGluamVjdGlvbiBvciBjb21tYW5kIGluamVjdGlvbgoqIENyb3NzLXNpdGUgc2NyaXB0aW5nIChYU1MpIHdpdGggc2lnbmlmaWNhbnQgaW1wYWN0CiogKipGaXggVGltZWxpbmUqKjogMTQgZGF5cwoKIyMjIE1lZGl1bQoqIEluZm9ybWF0aW9uIGRpc2Nsb3N1cmUgKGxpbWl0ZWQgc2NvcGUpCiogRGVuaWFsIG9mIHNlcnZpY2UKKiBTZWN1cml0eSBtaXNjb25maWd1cmF0aW9ucyB3aXRoIG1vZGVyYXRlIGltcGFjdAoqICoqRml4IFRpbWVsaW5lKio6IDMwIGRheXMKCiMjIyBMb3cKKiBTZWN1cml0eSBiZXN0IHByYWN0aWNlIHZpb2xhdGlvbnMKKiBNaW5vciBpbmZvcm1hdGlvbiBsZWFrcwoqIElzc3VlcyByZXF1aXJpbmcgdXNlciBpbnRlcmFjdGlvbiBvciBjb21wbGV4IHByZWNvbmRpdGlvbnMKKiAqKkZpeCBUaW1lbGluZSoqOiA2MCBkYXlzIG9yIG5leHQgcmVsZWFzZQoKIyMgSm9vbWxhIEV4dGVuc2lvbiBTZWN1cml0eQoKKiBGb2xsb3cgSm9vbWxhIHNlY3VyaXR5IGJlc3QgcHJhY3RpY2VzCiogVmFsaWRhdGUgYW5kIHNhbml0aXplIGFsbCB1c2VyIGlucHV0CiogVXNlIEpvb21sYSdzIGRhdGFiYXNlIEFQSSB0byBwcmV2ZW50IFNRTCBpbmplY3Rpb24KKiBQcm9wZXJseSBlc2NhcGUgb3V0cHV0IHRvIHByZXZlbnQgWFNTCiogSW1wbGVtZW50IHByb3BlciBhY2Nlc3MgY29udHJvbCBjaGVja3MKKiBVc2UgSm9vbWxhJ3Mgc2Vzc2lvbiBhbmQgYXV0aGVudGljYXRpb24gQVBJcwoqIEtlZXAgSm9vbWxhIGFuZCBkZXBlbmRlbmNpZXMgdXAgdG8gZGF0ZQoKIyMgQ29udGFjdAoKKiAqKlNlY3VyaXR5IFRlYW0qKjogc2VjdXJpdHlAbW9rb2NvbnN1bHRpbmcudGVjaAoqICoqUHJpbWFyeSBDb250YWN0Kio6IGhlbGxvQG1va29jb25zdWx0aW5nLnRlY2gKCiMjIE91dCBvZiBTY29wZQoKKiBJc3N1ZXMgaW4gdGhpcmQtcGFydHkgZGVwZW5kZW5jaWVzIChyZXBvcnQgZGlyZWN0bHkgdG8gbWFpbnRhaW5lcnMpCiogU29jaWFsIGVuZ2luZWVyaW5nIGF0dGFja3MKKiBQaHlzaWNhbCBzZWN1cml0eSBpc3N1ZXMKKiBEZW5pYWwgb2Ygc2VydmljZSB2aWEgcmVzb3VyY2UgZXhoYXVzdGlvbiB3aXRob3V0IGFtcGxpZmljYXRpb24KKiBUaGVvcmV0aWNhbCB2dWxuZXJhYmlsaXRpZXMgd2l0aG91dCBwcm9vZiBvZiBleHBsb2l0YWJpbGl0eQoKLS0tCgoqUmVwbzogW01va29XYWFTQmFzZV0oaHR0cHM6Ly9naXQubW9rb2NvbnN1bHRpbmcudGVjaC9Nb2tvQ29uc3VsdGluZy9Nb2tvV2FhU0Jhc2UpIMK3IFtNb2tvU3RhbmRhcmRzXShodHRwczovL2dpdC5tb2tvY29uc3VsdGluZy50ZWNoL01va29Db25zdWx0aW5nL21va29wbGF0Zm9ybS93aWtpL0hvbWUpKgoKfCBSZXZpc2lvbiB8IERhdGUgfCBBdXRob3IgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfC0tLXwtLS18CnwgMS4wIHwgMjAyNi0wNi0wNiB8IE1va28gQ29uc3VsdGluZyB8IEluaXRpYWwgdmVyc2lvbiBmcm9tIFRlbXBsYXRlLUpvb21sYSB8Cg=="
}
for page_name, b64 in pages.items():
original = base64.b64decode(b64).decode('utf-8')
updated = apply_replacements(original)
new_b64 = base64.b64encode(updated.encode('utf-8')).decode('ascii')
changed = original != updated
print(f'PAGE:{page_name}|CHANGED:{changed}|B64:{new_b64}')