REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 45.22 KB
Close
//opt/hc_python/lib/python3.12/site-packages/sqlalchemy/ext/__pycache__/mutable.cpython-312.pyc
Text
Base64
yw0NCgAAAAD5ke9nuJIAAOMAAAAAAAAAAAAAAAAIAAAAAAAAAfOsAgAAlwBkAFoAZAFkAmwBbQJaAgEAZAFkA2wDbQRaBAEAZAFkBGwFbQZaBgEAZAFkBWwFbQdaBwEAZAFkBmwFbQhaCAEAZAFkB2wFbQlaCQEAZAFkCGwFbQpaCgEAZAFkCWwFbQtaCwEAZAFkCmwFbQxaDAEAZAFkC2wFbQ1aDQEAZAFkDGwFbQ5aDgEAZAFkDWwFbQ9aDwEAZAFkDmwFbRBaEAEAZAFkD2wFbRFaEQEAZAFkEGwSWhJkAWQRbBJtE1oTAQBkEmQTbBRtFVoVAQBkEmQUbBRtFloWAQBkEmQVbBRtF1oXAQBkEmQWbBRtGFoYAQBkEmQXbBltGloaAQBkEmQYbBttHFocAQBkEmQZbBttHVodAQBkEmQabBttHloeAQBkEmQbbB9tIFogAQBkEmQcbB9tIVohAQBkEmQdbB9tIloiAQBkEmQebB9tI1ojAQBkEmQfbCRtJVolAQBkEmQgbCZtJ1onAQBkEmQhbChtKVopAQBkEmQibCptK1orAQBkEmQjbCxtLVotAQBkEmQkbC5tL1ovAQBkEmQlbDBtMVoxAQBkEmQmbDJtM1ozAQBkEmQnbBhtNFo0AQBkEmQobDVtNlo2AQBkEmQpbDVtN1o3AQACAGUQZCqrAQAAAAAAAFo4AgBlEGQrqwEAAAAAAABaOQIARwBkLIQAZC2rAgAAAAAAAFo6AgBHAGQuhABkL2U6qwMAAAAAAABaOwIARwBkMIQAZDFlOqsDAAAAAAAAWjxkOWQyhARaPQIAZT2rAAAAAAAAAAEAAgBHAGQzhABkNGU7ZQhlOGU5ZgIZAAAAqwQAAAAAAABaPgIARwBkNYQAZDZlO2UKZR4ZAAAAqwQAAAAAAABaPwIARwBkN4QAZDhlO2UNZR4ZAAAAqwQAAAAAAABaQHkQKTphkzMAAFByb3ZpZGUgc3VwcG9ydCBmb3IgdHJhY2tpbmcgb2YgaW4tcGxhY2UgY2hhbmdlcyB0byBzY2FsYXIgdmFsdWVzLAp3aGljaCBhcmUgcHJvcGFnYXRlZCBpbnRvIE9STSBjaGFuZ2UgZXZlbnRzIG9uIG93bmluZyBwYXJlbnQgb2JqZWN0cy4KCi4uIF9tdXRhYmxlX3NjYWxhcnM6CgpFc3RhYmxpc2hpbmcgTXV0YWJpbGl0eSBvbiBTY2FsYXIgQ29sdW1uIFZhbHVlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQSB0eXBpY2FsIGV4YW1wbGUgb2YgYSAibXV0YWJsZSIgc3RydWN0dXJlIGlzIGEgUHl0aG9uIGRpY3Rpb25hcnkuCkZvbGxvd2luZyB0aGUgZXhhbXBsZSBpbnRyb2R1Y2VkIGluIDpyZWY6YHR5cGVzX3RvcGxldmVsYCwgd2UKYmVnaW4gd2l0aCBhIGN1c3RvbSB0eXBlIHRoYXQgbWFyc2hhbHMgUHl0aG9uIGRpY3Rpb25hcmllcyBpbnRvCkpTT04gc3RyaW5ncyBiZWZvcmUgYmVpbmcgcGVyc2lzdGVkOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkudHlwZXMgaW1wb3J0IFR5cGVEZWNvcmF0b3IsIFZBUkNIQVIKICAgIGltcG9ydCBqc29uCgoKICAgIGNsYXNzIEpTT05FbmNvZGVkRGljdChUeXBlRGVjb3JhdG9yKToKICAgICAgICAiUmVwcmVzZW50cyBhbiBpbW11dGFibGUgc3RydWN0dXJlIGFzIGEganNvbi1lbmNvZGVkIHN0cmluZy4iCgogICAgICAgIGltcGwgPSBWQVJDSEFSCgogICAgICAgIGRlZiBwcm9jZXNzX2JpbmRfcGFyYW0oc2VsZiwgdmFsdWUsIGRpYWxlY3QpOgogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHZhbHVlID0ganNvbi5kdW1wcyh2YWx1ZSkKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgICAgIGRlZiBwcm9jZXNzX3Jlc3VsdF92YWx1ZShzZWxmLCB2YWx1ZSwgZGlhbGVjdCk6CiAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdmFsdWUgPSBqc29uLmxvYWRzKHZhbHVlKQogICAgICAgICAgICByZXR1cm4gdmFsdWUKClRoZSB1c2FnZSBvZiBgYGpzb25gYCBpcyBvbmx5IGZvciB0aGUgcHVycG9zZXMgb2YgZXhhbXBsZS4gVGhlCjptb2Q6YHNxbGFsY2hlbXkuZXh0Lm11dGFibGVgIGV4dGVuc2lvbiBjYW4gYmUgdXNlZAp3aXRoIGFueSB0eXBlIHdob3NlIHRhcmdldCBQeXRob24gdHlwZSBtYXkgYmUgbXV0YWJsZSwgaW5jbHVkaW5nCjpjbGFzczpgLlBpY2tsZVR5cGVgLCA6Y2xhc3M6YF9wb3N0Z3Jlc3FsLkFSUkFZYCwgZXRjLgoKV2hlbiB1c2luZyB0aGUgOm1vZDpgc3FsYWxjaGVteS5leHQubXV0YWJsZWAgZXh0ZW5zaW9uLCB0aGUgdmFsdWUgaXRzZWxmCnRyYWNrcyBhbGwgcGFyZW50cyB3aGljaCByZWZlcmVuY2UgaXQuICBCZWxvdywgd2UgaWxsdXN0cmF0ZSBhIHNpbXBsZQp2ZXJzaW9uIG9mIHRoZSA6Y2xhc3M6YC5NdXRhYmxlRGljdGAgZGljdGlvbmFyeSBvYmplY3QsIHdoaWNoIGFwcGxpZXMKdGhlIDpjbGFzczpgLk11dGFibGVgIG1peGluIHRvIGEgcGxhaW4gUHl0aG9uIGRpY3Rpb25hcnk6OgoKICAgIGZyb20gc3FsYWxjaGVteS5leHQubXV0YWJsZSBpbXBvcnQgTXV0YWJsZQoKCiAgICBjbGFzcyBNdXRhYmxlRGljdChNdXRhYmxlLCBkaWN0KToKICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICBkZWYgY29lcmNlKGNscywga2V5LCB2YWx1ZSk6CiAgICAgICAgICAgICJDb252ZXJ0IHBsYWluIGRpY3Rpb25hcmllcyB0byBNdXRhYmxlRGljdC4iCgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgTXV0YWJsZURpY3QpOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11dGFibGVEaWN0KHZhbHVlKQoKICAgICAgICAgICAgICAgICMgdGhpcyBjYWxsIHdpbGwgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgcmV0dXJuIE11dGFibGUuY29lcmNlKGtleSwgdmFsdWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKCiAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICAgICAiRGV0ZWN0IGRpY3Rpb25hcnkgc2V0IGV2ZW50cyBhbmQgZW1pdCBjaGFuZ2UgZXZlbnRzLiIKCiAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSkKICAgICAgICAgICAgc2VsZi5jaGFuZ2VkKCkKCiAgICAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICAgICJEZXRlY3QgZGljdGlvbmFyeSBkZWwgZXZlbnRzIGFuZCBlbWl0IGNoYW5nZSBldmVudHMuIgoKICAgICAgICAgICAgZGljdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpCiAgICAgICAgICAgIHNlbGYuY2hhbmdlZCgpCgpUaGUgYWJvdmUgZGljdGlvbmFyeSBjbGFzcyB0YWtlcyB0aGUgYXBwcm9hY2ggb2Ygc3ViY2xhc3NpbmcgdGhlIFB5dGhvbgpidWlsdC1pbiBgYGRpY3RgYCB0byBwcm9kdWNlIGEgZGljdApzdWJjbGFzcyB3aGljaCByb3V0ZXMgYWxsIG11dGF0aW9uIGV2ZW50cyB0aHJvdWdoIGBgX19zZXRpdGVtX19gYC4gIFRoZXJlIGFyZQp2YXJpYW50cyBvbiB0aGlzIGFwcHJvYWNoLCBzdWNoIGFzIHN1YmNsYXNzaW5nIGBgVXNlckRpY3QuVXNlckRpY3RgYCBvcgpgYGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nYGA7IHRoZSBwYXJ0IHRoYXQncyBpbXBvcnRhbnQgdG8gdGhpcyBleGFtcGxlIGlzCnRoYXQgdGhlIDptZXRoOmAuTXV0YWJsZS5jaGFuZ2VkYCBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGFuIGluLXBsYWNlCmNoYW5nZSB0byB0aGUgZGF0YXN0cnVjdHVyZSB0YWtlcyBwbGFjZS4KCldlIGFsc28gcmVkZWZpbmUgdGhlIDptZXRoOmAuTXV0YWJsZS5jb2VyY2VgIG1ldGhvZCB3aGljaCB3aWxsIGJlIHVzZWQgdG8KY29udmVydCBhbnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBpbnN0YW5jZXMgb2YgYGBNdXRhYmxlRGljdGBgLCBzdWNoCmFzIHRoZSBwbGFpbiBkaWN0aW9uYXJpZXMgcmV0dXJuZWQgYnkgdGhlIGBganNvbmBgIG1vZHVsZSwgaW50byB0aGUKYXBwcm9wcmlhdGUgdHlwZS4gIERlZmluaW5nIHRoaXMgbWV0aG9kIGlzIG9wdGlvbmFsOyB3ZSBjb3VsZCBqdXN0IGFzIHdlbGwKY3JlYXRlZCBvdXIgYGBKU09ORW5jb2RlZERpY3RgYCBzdWNoIHRoYXQgaXQgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2UKb2YgYGBNdXRhYmxlRGljdGBgLCBhbmQgYWRkaXRpb25hbGx5IGVuc3VyZWQgdGhhdCBhbGwgY2FsbGluZyBjb2RlCnVzZXMgYGBNdXRhYmxlRGljdGBgIGV4cGxpY2l0bHkuICBXaGVuIDptZXRoOmAuTXV0YWJsZS5jb2VyY2VgIGlzIG5vdApvdmVycmlkZGVuLCBhbnkgdmFsdWVzIGFwcGxpZWQgdG8gYSBwYXJlbnQgb2JqZWN0IHdoaWNoIGFyZSBub3QgaW5zdGFuY2VzCm9mIHRoZSBtdXRhYmxlIHR5cGUgd2lsbCByYWlzZSBhIGBgVmFsdWVFcnJvcmBgLgoKT3VyIG5ldyBgYE11dGFibGVEaWN0YGAgdHlwZSBvZmZlcnMgYSBjbGFzcyBtZXRob2QKOm1ldGg6YH4uTXV0YWJsZS5hc19tdXRhYmxlYCB3aGljaCB3ZSBjYW4gdXNlIHdpdGhpbiBjb2x1bW4gbWV0YWRhdGEKdG8gYXNzb2NpYXRlIHdpdGggdHlwZXMuIFRoaXMgbWV0aG9kIGdyYWJzIHRoZSBnaXZlbiB0eXBlIG9iamVjdCBvcgpjbGFzcyBhbmQgYXNzb2NpYXRlcyBhIGxpc3RlbmVyIHRoYXQgd2lsbCBkZXRlY3QgYWxsIGZ1dHVyZSBtYXBwaW5ncwpvZiB0aGlzIHR5cGUsIGFwcGx5aW5nIGV2ZW50IGxpc3RlbmluZyBpbnN0cnVtZW50YXRpb24gdG8gdGhlIG1hcHBlZAphdHRyaWJ1dGUuIFN1Y2ggYXMsIHdpdGggY2xhc3NpY2FsIHRhYmxlIG1ldGFkYXRhOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IFRhYmxlLCBDb2x1bW4sIEludGVnZXIKCiAgICBteV9kYXRhID0gVGFibGUoCiAgICAgICAgIm15X2RhdGEiLAogICAgICAgIG1ldGFkYXRhLAogICAgICAgIENvbHVtbigiaWQiLCBJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKSwKICAgICAgICBDb2x1bW4oImRhdGEiLCBNdXRhYmxlRGljdC5hc19tdXRhYmxlKEpTT05FbmNvZGVkRGljdCkpLAogICAgKQoKQWJvdmUsIDptZXRoOmB+Lk11dGFibGUuYXNfbXV0YWJsZWAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgYEpTT05FbmNvZGVkRGljdGBgCihpZiB0aGUgdHlwZSBvYmplY3Qgd2FzIG5vdCBhbiBpbnN0YW5jZSBhbHJlYWR5KSwgd2hpY2ggd2lsbCBpbnRlcmNlcHQgYW55CmF0dHJpYnV0ZXMgd2hpY2ggYXJlIG1hcHBlZCBhZ2FpbnN0IHRoaXMgdHlwZS4gIEJlbG93IHdlIGVzdGFibGlzaCBhIHNpbXBsZQptYXBwaW5nIGFnYWluc3QgdGhlIGBgbXlfZGF0YWBgIHRhYmxlOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBEZWNsYXJhdGl2ZUJhc2UKICAgIGZyb20gc3FsYWxjaGVteS5vcm0gaW1wb3J0IE1hcHBlZAogICAgZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgbWFwcGVkX2NvbHVtbgoKCiAgICBjbGFzcyBCYXNlKERlY2xhcmF0aXZlQmFzZSk6CiAgICAgICAgcGFzcwoKCiAgICBjbGFzcyBNeURhdGFDbGFzcyhCYXNlKToKICAgICAgICBfX3RhYmxlbmFtZV9fID0gIm15X2RhdGEiCiAgICAgICAgaWQ6IE1hcHBlZFtpbnRdID0gbWFwcGVkX2NvbHVtbihwcmltYXJ5X2tleT1UcnVlKQogICAgICAgIGRhdGE6IE1hcHBlZFtkaWN0W3N0ciwgc3RyXV0gPSBtYXBwZWRfY29sdW1uKAogICAgICAgICAgICBNdXRhYmxlRGljdC5hc19tdXRhYmxlKEpTT05FbmNvZGVkRGljdCkKICAgICAgICApCgpUaGUgYGBNeURhdGFDbGFzcy5kYXRhYGAgbWVtYmVyIHdpbGwgbm93IGJlIG5vdGlmaWVkIG9mIGluIHBsYWNlIGNoYW5nZXMKdG8gaXRzIHZhbHVlLgoKQW55IGluLXBsYWNlIGNoYW5nZXMgdG8gdGhlIGBgTXlEYXRhQ2xhc3MuZGF0YWBgIG1lbWJlcgp3aWxsIGZsYWcgdGhlIGF0dHJpYnV0ZSBhcyAiZGlydHkiIG9uIHRoZSBwYXJlbnQgb2JqZWN0OjoKCiAgICA+Pj4gZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgU2Vzc2lvbgoKICAgID4+PiBzZXNzID0gU2Vzc2lvbihzb21lX2VuZ2luZSkKICAgID4+PiBtMSA9IE15RGF0YUNsYXNzKGRhdGE9eyJ2YWx1ZTEiOiAiZm9vIn0pCiAgICA+Pj4gc2Vzcy5hZGQobTEpCiAgICA+Pj4gc2Vzcy5jb21taXQoKQoKICAgID4+PiBtMS5kYXRhWyJ2YWx1ZTEiXSA9ICJiYXIiCiAgICA+Pj4gYXNzZXJ0IG0xIGluIHNlc3MuZGlydHkKICAgIFRydWUKClRoZSBgYE11dGFibGVEaWN0YGAgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbGwgZnV0dXJlIGluc3RhbmNlcwpvZiBgYEpTT05FbmNvZGVkRGljdGBgIGluIG9uZSBzdGVwLCB1c2luZwo6bWV0aDpgfi5NdXRhYmxlLmFzc29jaWF0ZV93aXRoYC4gIFRoaXMgaXMgc2ltaWxhciB0bwo6bWV0aDpgfi5NdXRhYmxlLmFzX211dGFibGVgIGV4Y2VwdCBpdCB3aWxsIGludGVyY2VwdCBhbGwgb2NjdXJyZW5jZXMKb2YgYGBNdXRhYmxlRGljdGBgIGluIGFsbCBtYXBwaW5ncyB1bmNvbmRpdGlvbmFsbHksIHdpdGhvdXQKdGhlIG5lZWQgdG8gZGVjbGFyZSBpdCBpbmRpdmlkdWFsbHk6OgoKICAgIGZyb20gc3FsYWxjaGVteS5vcm0gaW1wb3J0IERlY2xhcmF0aXZlQmFzZQogICAgZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgTWFwcGVkCiAgICBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBtYXBwZWRfY29sdW1uCgogICAgTXV0YWJsZURpY3QuYXNzb2NpYXRlX3dpdGgoSlNPTkVuY29kZWREaWN0KQoKCiAgICBjbGFzcyBCYXNlKERlY2xhcmF0aXZlQmFzZSk6CiAgICAgICAgcGFzcwoKCiAgICBjbGFzcyBNeURhdGFDbGFzcyhCYXNlKToKICAgICAgICBfX3RhYmxlbmFtZV9fID0gIm15X2RhdGEiCiAgICAgICAgaWQ6IE1hcHBlZFtpbnRdID0gbWFwcGVkX2NvbHVtbihwcmltYXJ5X2tleT1UcnVlKQogICAgICAgIGRhdGE6IE1hcHBlZFtkaWN0W3N0ciwgc3RyXV0gPSBtYXBwZWRfY29sdW1uKEpTT05FbmNvZGVkRGljdCkKClN1cHBvcnRpbmcgUGlja2xpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBrZXkgdG8gdGhlIDptb2Q6YHNxbGFsY2hlbXkuZXh0Lm11dGFibGVgIGV4dGVuc2lvbiByZWxpZXMgdXBvbiB0aGUKcGxhY2VtZW50IG9mIGEgYGB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5YGAgdXBvbiB0aGUgdmFsdWUgb2JqZWN0LCB3aGljaApzdG9yZXMgYSBtYXBwaW5nIG9mIHBhcmVudCBtYXBwZWQgb2JqZWN0cyBrZXllZCB0byB0aGUgYXR0cmlidXRlIG5hbWUgdW5kZXIKd2hpY2ggdGhleSBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmFsdWUuIGBgV2Vha0tleURpY3Rpb25hcnlgYCBvYmplY3RzIGFyZQpub3QgcGlja2xhYmxlLCBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGV5IGNvbnRhaW4gd2Vha3JlZnMgYW5kIGZ1bmN0aW9uCmNhbGxiYWNrcy4gSW4gb3VyIGNhc2UsIHRoaXMgaXMgYSBnb29kIHRoaW5nLCBzaW5jZSBpZiB0aGlzIGRpY3Rpb25hcnkgd2VyZQpwaWNrbGFibGUsIGl0IGNvdWxkIGxlYWQgdG8gYW4gZXhjZXNzaXZlbHkgbGFyZ2UgcGlja2xlIHNpemUgZm9yIG91ciB2YWx1ZQpvYmplY3RzIHRoYXQgYXJlIHBpY2tsZWQgYnkgdGhlbXNlbHZlcyBvdXRzaWRlIG9mIHRoZSBjb250ZXh0IG9mIHRoZSBwYXJlbnQuClRoZSBkZXZlbG9wZXIgcmVzcG9uc2liaWxpdHkgaGVyZSBpcyBvbmx5IHRvIHByb3ZpZGUgYSBgYF9fZ2V0c3RhdGVfX2BgIG1ldGhvZAp0aGF0IGV4Y2x1ZGVzIHRoZSA6bWV0aDpgfk11dGFibGVCYXNlLl9wYXJlbnRzYCBjb2xsZWN0aW9uIGZyb20gdGhlIHBpY2tsZQpzdHJlYW06OgoKICAgIGNsYXNzIE15TXV0YWJsZVR5cGUoTXV0YWJsZSk6CiAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgICAgZCA9IHNlbGYuX19kaWN0X18uY29weSgpCiAgICAgICAgICAgIGQucG9wKCJfcGFyZW50cyIsIE5vbmUpCiAgICAgICAgICAgIHJldHVybiBkCgpXaXRoIG91ciBkaWN0aW9uYXJ5IGV4YW1wbGUsIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZGljdCBpdHNlbGYKKGFuZCBhbHNvIHJlc3RvcmUgdGhlbSBvbiBfX3NldHN0YXRlX18pOjoKCiAgICBjbGFzcyBNdXRhYmxlRGljdChNdXRhYmxlLCBkaWN0KToKICAgICAgICAjIC4uLi4KCiAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIGRpY3Qoc2VsZikKCiAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgIHNlbGYudXBkYXRlKHN0YXRlKQoKSW4gdGhlIGNhc2UgdGhhdCBvdXIgbXV0YWJsZSB2YWx1ZSBvYmplY3QgaXMgcGlja2xlZCBhcyBpdCBpcyBhdHRhY2hlZCB0byBvbmUKb3IgbW9yZSBwYXJlbnQgb2JqZWN0cyB0aGF0IGFyZSBhbHNvIHBhcnQgb2YgdGhlIHBpY2tsZSwgdGhlIDpjbGFzczpgLk11dGFibGVgCm1peGluIHdpbGwgcmUtZXN0YWJsaXNoIHRoZSA6YXR0cjpgLk11dGFibGUuX3BhcmVudHNgIGNvbGxlY3Rpb24gb24gZWFjaCB2YWx1ZQpvYmplY3QgYXMgdGhlIG93bmluZyBwYXJlbnRzIHRoZW1zZWx2ZXMgYXJlIHVucGlja2xlZC4KClJlY2VpdmluZyBFdmVudHMKLS0tLS0tLS0tLS0tLS0tLQoKVGhlIDptZXRoOmAuQXR0cmlidXRlRXZlbnRzLm1vZGlmaWVkYCBldmVudCBoYW5kbGVyIG1heSBiZSB1c2VkIHRvIHJlY2VpdmUKYW4gZXZlbnQgd2hlbiBhIG11dGFibGUgc2NhbGFyIGVtaXRzIGEgY2hhbmdlIGV2ZW50LiAgVGhpcyBldmVudCBoYW5kbGVyCmlzIGNhbGxlZCB3aGVuIHRoZSA6ZnVuYzpgLmF0dHJpYnV0ZXMuZmxhZ19tb2RpZmllZGAgZnVuY3Rpb24gaXMgY2FsbGVkCmZyb20gd2l0aGluIHRoZSBtdXRhYmxlIGV4dGVuc2lvbjo6CgogICAgZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgRGVjbGFyYXRpdmVCYXNlCiAgICBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBNYXBwZWQKICAgIGZyb20gc3FsYWxjaGVteS5vcm0gaW1wb3J0IG1hcHBlZF9jb2x1bW4KICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgZXZlbnQKCgogICAgY2xhc3MgQmFzZShEZWNsYXJhdGl2ZUJhc2UpOgogICAgICAgIHBhc3MKCgogICAgY2xhc3MgTXlEYXRhQ2xhc3MoQmFzZSk6CiAgICAgICAgX190YWJsZW5hbWVfXyA9ICJteV9kYXRhIgogICAgICAgIGlkOiBNYXBwZWRbaW50XSA9IG1hcHBlZF9jb2x1bW4ocHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICBkYXRhOiBNYXBwZWRbZGljdFtzdHIsIHN0cl1dID0gbWFwcGVkX2NvbHVtbigKICAgICAgICAgICAgTXV0YWJsZURpY3QuYXNfbXV0YWJsZShKU09ORW5jb2RlZERpY3QpCiAgICAgICAgKQoKCiAgICBAZXZlbnQubGlzdGVuc19mb3IoTXlEYXRhQ2xhc3MuZGF0YSwgIm1vZGlmaWVkIikKICAgIGRlZiBtb2RpZmllZF9qc29uKGluc3RhbmNlLCBpbml0aWF0b3IpOgogICAgICAgIHByaW50KCJqc29uIHZhbHVlIG1vZGlmaWVkOiIsIGluc3RhbmNlLmRhdGEpCgouLiBfbXV0YWJsZV9jb21wb3NpdGVzOgoKRXN0YWJsaXNoaW5nIE11dGFiaWxpdHkgb24gQ29tcG9zaXRlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpDb21wb3NpdGVzIGFyZSBhIHNwZWNpYWwgT1JNIGZlYXR1cmUgd2hpY2ggYWxsb3cgYSBzaW5nbGUgc2NhbGFyIGF0dHJpYnV0ZSB0bwpiZSBhc3NpZ25lZCBhbiBvYmplY3QgdmFsdWUgd2hpY2ggcmVwcmVzZW50cyBpbmZvcm1hdGlvbiAiY29tcG9zZWQiIGZyb20gb25lCm9yIG1vcmUgY29sdW1ucyBmcm9tIHRoZSB1bmRlcmx5aW5nIG1hcHBlZCB0YWJsZS4gVGhlIHVzdWFsIGV4YW1wbGUgaXMgdGhhdCBvZgphIGdlb21ldHJpYyAicG9pbnQiLCBhbmQgaXMgaW50cm9kdWNlZCBpbiA6cmVmOmBtYXBwZXJfY29tcG9zaXRlYC4KCkFzIGlzIHRoZSBjYXNlIHdpdGggOmNsYXNzOmAuTXV0YWJsZWAsIHRoZSB1c2VyLWRlZmluZWQgY29tcG9zaXRlIGNsYXNzCnN1YmNsYXNzZXMgOmNsYXNzOmAuTXV0YWJsZUNvbXBvc2l0ZWAgYXMgYSBtaXhpbiwgYW5kIGRldGVjdHMgYW5kIGRlbGl2ZXJzCmNoYW5nZSBldmVudHMgdG8gaXRzIHBhcmVudHMgdmlhIHRoZSA6bWV0aDpgLk11dGFibGVDb21wb3NpdGUuY2hhbmdlZGAgbWV0aG9kLgpJbiB0aGUgY2FzZSBvZiBhIGNvbXBvc2l0ZSBjbGFzcywgdGhlIGRldGVjdGlvbiBpcyB1c3VhbGx5IHZpYSB0aGUgdXNhZ2Ugb2YgdGhlCnNwZWNpYWwgUHl0aG9uIG1ldGhvZCBgYF9fc2V0YXR0cl9fKClgYC4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIHdlIGV4cGFuZCB1cG9uIHRoZSBgYFBvaW50YGAKY2xhc3MgaW50cm9kdWNlZCBpbiA6cmVmOmBtYXBwZXJfY29tcG9zaXRlYCB0byBpbmNsdWRlCjpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgIGluIGl0cyBiYXNlcyBhbmQgdG8gcm91dGUgYXR0cmlidXRlIHNldCBldmVudHMgdmlhCmBgX19zZXRhdHRyX19gYCB0byB0aGUgOm1ldGg6YC5NdXRhYmxlQ29tcG9zaXRlLmNoYW5nZWRgIG1ldGhvZDo6CgogICAgaW1wb3J0IGRhdGFjbGFzc2VzCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0Lm11dGFibGUgaW1wb3J0IE11dGFibGVDb21wb3NpdGUKCgogICAgQGRhdGFjbGFzc2VzLmRhdGFjbGFzcwogICAgY2xhc3MgUG9pbnQoTXV0YWJsZUNvbXBvc2l0ZSk6CiAgICAgICAgeDogaW50CiAgICAgICAgeTogaW50CgogICAgICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgICAgIkludGVyY2VwdCBzZXQgZXZlbnRzIgoKICAgICAgICAgICAgIyBzZXQgdGhlIGF0dHJpYnV0ZQogICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwga2V5LCB2YWx1ZSkKCiAgICAgICAgICAgICMgYWxlcnQgYWxsIHBhcmVudHMgdG8gdGhlIGNoYW5nZQogICAgICAgICAgICBzZWxmLmNoYW5nZWQoKQoKVGhlIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgIGNsYXNzIG1ha2VzIHVzZSBvZiBjbGFzcyBtYXBwaW5nIGV2ZW50cyB0bwphdXRvbWF0aWNhbGx5IGVzdGFibGlzaCBsaXN0ZW5lcnMgZm9yIGFueSB1c2FnZSBvZiA6ZnVuYzpgX29ybS5jb21wb3NpdGVgIHRoYXQKc3BlY2lmaWVzIG91ciBgYFBvaW50YGAgdHlwZS4gQmVsb3csIHdoZW4gYGBQb2ludGBgIGlzIG1hcHBlZCB0byB0aGUgYGBWZXJ0ZXhgYApjbGFzcywgbGlzdGVuZXJzIGFyZSBlc3RhYmxpc2hlZCB3aGljaCB3aWxsIHJvdXRlIGNoYW5nZSBldmVudHMgZnJvbSBgYFBvaW50YGAKb2JqZWN0cyB0byBlYWNoIG9mIHRoZSBgYFZlcnRleC5zdGFydGBgIGFuZCBgYFZlcnRleC5lbmRgYCBhdHRyaWJ1dGVzOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBEZWNsYXJhdGl2ZUJhc2UsIE1hcHBlZAogICAgZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgY29tcG9zaXRlLCBtYXBwZWRfY29sdW1uCgoKICAgIGNsYXNzIEJhc2UoRGVjbGFyYXRpdmVCYXNlKToKICAgICAgICBwYXNzCgoKICAgIGNsYXNzIFZlcnRleChCYXNlKToKICAgICAgICBfX3RhYmxlbmFtZV9fID0gInZlcnRpY2VzIgoKICAgICAgICBpZDogTWFwcGVkW2ludF0gPSBtYXBwZWRfY29sdW1uKHByaW1hcnlfa2V5PVRydWUpCgogICAgICAgIHN0YXJ0OiBNYXBwZWRbUG9pbnRdID0gY29tcG9zaXRlKAogICAgICAgICAgICBtYXBwZWRfY29sdW1uKCJ4MSIpLCBtYXBwZWRfY29sdW1uKCJ5MSIpCiAgICAgICAgKQogICAgICAgIGVuZDogTWFwcGVkW1BvaW50XSA9IGNvbXBvc2l0ZSgKICAgICAgICAgICAgbWFwcGVkX2NvbHVtbigieDIiKSwgbWFwcGVkX2NvbHVtbigieTIiKQogICAgICAgICkKCiAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gZiJWZXJ0ZXgoc3RhcnQ9e3NlbGYuc3RhcnR9LCBlbmQ9e3NlbGYuZW5kfSkiCgpBbnkgaW4tcGxhY2UgY2hhbmdlcyB0byB0aGUgYGBWZXJ0ZXguc3RhcnRgYCBvciBgYFZlcnRleC5lbmRgYCBtZW1iZXJzCndpbGwgZmxhZyB0aGUgYXR0cmlidXRlIGFzICJkaXJ0eSIgb24gdGhlIHBhcmVudCBvYmplY3Q6CgouLiBzb3VyY2Vjb2RlOjogcHl0aG9uK3NxbAoKICAgID4+PiBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBTZXNzaW9uCiAgICA+Pj4gc2VzcyA9IFNlc3Npb24oZW5naW5lKQogICAgPj4+IHYxID0gVmVydGV4KHN0YXJ0PVBvaW50KDMsIDQpLCBlbmQ9UG9pbnQoMTIsIDE1KSkKICAgID4+PiBzZXNzLmFkZCh2MSkKICAgIHtzcWx9Pj4+IHNlc3MuZmx1c2goKQogICAgQkVHSU4gKGltcGxpY2l0KQogICAgSU5TRVJUIElOVE8gdmVydGljZXMgKHgxLCB5MSwgeDIsIHkyKSBWQUxVRVMgKD8sID8sID8sID8pCiAgICBbLi4uXSAoMywgNCwgMTIsIDE1KQoKICAgIHtzdG9wfT4+PiB2MS5lbmQueCA9IDgKICAgID4+PiBhc3NlcnQgdjEgaW4gc2Vzcy5kaXJ0eQogICAgVHJ1ZQogICAge3NxbH0+Pj4gc2Vzcy5jb21taXQoKQogICAgVVBEQVRFIHZlcnRpY2VzIFNFVCB4Mj0/IFdIRVJFIHZlcnRpY2VzLmlkID0gPwogICAgWy4uLl0gKDgsIDEpCiAgICBDT01NSVQKCkNvZXJjaW5nIE11dGFibGUgQ29tcG9zaXRlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSA6bWV0aDpgLk11dGFibGVCYXNlLmNvZXJjZWAgbWV0aG9kIGlzIGFsc28gc3VwcG9ydGVkIG9uIGNvbXBvc2l0ZSB0eXBlcy4KSW4gdGhlIGNhc2Ugb2YgOmNsYXNzOmAuTXV0YWJsZUNvbXBvc2l0ZWAsIHRoZSA6bWV0aDpgLk11dGFibGVCYXNlLmNvZXJjZWAKbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZvciBhdHRyaWJ1dGUgc2V0IG9wZXJhdGlvbnMsIG5vdCBsb2FkIG9wZXJhdGlvbnMuCk92ZXJyaWRpbmcgdGhlIDptZXRoOmAuTXV0YWJsZUJhc2UuY29lcmNlYCBtZXRob2QgaXMgZXNzZW50aWFsbHkgZXF1aXZhbGVudAp0byB1c2luZyBhIDpmdW5jOmAudmFsaWRhdGVzYCB2YWxpZGF0aW9uIHJvdXRpbmUgZm9yIGFsbCBhdHRyaWJ1dGVzIHdoaWNoCm1ha2UgdXNlIG9mIHRoZSBjdXN0b20gY29tcG9zaXRlIHR5cGU6OgoKICAgIEBkYXRhY2xhc3Nlcy5kYXRhY2xhc3MKICAgIGNsYXNzIFBvaW50KE11dGFibGVDb21wb3NpdGUpOgogICAgICAgICMgb3RoZXIgUG9pbnQgbWV0aG9kcwogICAgICAgICMgLi4uCgogICAgICAgIGRlZiBjb2VyY2UoY2xzLCBrZXksIHZhbHVlKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICAgICAgdmFsdWUgPSBQb2ludCgqdmFsdWUpCiAgICAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIFBvaW50KToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR1cGxlIG9yIFBvaW50IGV4cGVjdGVkIikKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCgpTdXBwb3J0aW5nIFBpY2tsaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBcyBpcyB0aGUgY2FzZSB3aXRoIDpjbGFzczpgLk11dGFibGVgLCB0aGUgOmNsYXNzOmAuTXV0YWJsZUNvbXBvc2l0ZWAgaGVscGVyCmNsYXNzIHVzZXMgYSBgYHdlYWtyZWYuV2Vha0tleURpY3Rpb25hcnlgYCBhdmFpbGFibGUgdmlhIHRoZQo6bWV0aDpgTXV0YWJsZUJhc2UuX3BhcmVudHNgIGF0dHJpYnV0ZSB3aGljaCBpc24ndCBwaWNrbGFibGUuIElmIHdlIG5lZWQgdG8KcGlja2xlIGluc3RhbmNlcyBvZiBgYFBvaW50YGAgb3IgaXRzIG93bmluZyBjbGFzcyBgYFZlcnRleGBgLCB3ZSBhdCBsZWFzdCBuZWVkCnRvIGRlZmluZSBhIGBgX19nZXRzdGF0ZV9fYGAgdGhhdCBkb2Vzbid0IGluY2x1ZGUgdGhlIGBgX3BhcmVudHNgYCBkaWN0aW9uYXJ5LgpCZWxvdyB3ZSBkZWZpbmUgYm90aCBhIGBgX19nZXRzdGF0ZV9fYGAgYW5kIGEgYGBfX3NldHN0YXRlX19gYCB0aGF0IHBhY2thZ2UgdXAKdGhlIG1pbmltYWwgZm9ybSBvZiBvdXIgYGBQb2ludGBgIGNsYXNzOjoKCiAgICBAZGF0YWNsYXNzZXMuZGF0YWNsYXNzCiAgICBjbGFzcyBQb2ludChNdXRhYmxlQ29tcG9zaXRlKToKICAgICAgICAjIC4uLgoKICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZi54LCBzZWxmLnkKCiAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgIHNlbGYueCwgc2VsZi55ID0gc3RhdGUKCkFzIHdpdGggOmNsYXNzOmAuTXV0YWJsZWAsIHRoZSA6Y2xhc3M6YC5NdXRhYmxlQ29tcG9zaXRlYCBhdWdtZW50cyB0aGUKcGlja2xpbmcgcHJvY2VzcyBvZiB0aGUgcGFyZW50J3Mgb2JqZWN0LXJlbGF0aW9uYWwgc3RhdGUgc28gdGhhdCB0aGUKOm1ldGg6YE11dGFibGVCYXNlLl9wYXJlbnRzYCBjb2xsZWN0aW9uIGlzIHJlc3RvcmVkIHRvIGFsbCBgYFBvaW50YGAgb2JqZWN0cy4KCukAAAAAKQHaC2Fubm90YXRpb25zKQHaC2RlZmF1bHRkaWN0KQHaC0Fic3RyYWN0U2V0KQHaA0FueSkB2gREaWN0KQHaCEl0ZXJhYmxlKQHaBExpc3QpAdoIT3B0aW9uYWwpAdoIb3ZlcmxvYWQpAdoDU2V0KQHaBVR1cGxlKQHaDVRZUEVfQ0hFQ0tJTkcpAdoHVHlwZVZhcikB2gVVbmlvbk4pAdoRV2Vha0tleURpY3Rpb25hcnnpAgAAACkB2gVldmVudCkB2gdpbnNwZWN0KQHaBXR5cGVzKQHaBHV0aWwpAdoGTWFwcGVyKQHaE19FeHRlcm5hbEVudGl0eVR5cGUpAdoCX08pAdoCX1QpAdoTQXR0cmlidXRlRXZlbnRUb2tlbikB2g1mbGFnX21vZGlmaWVkKQHaFUluc3RydW1lbnRlZEF0dHJpYnV0ZSkB2hJRdWVyeWFibGVBdHRyaWJ1dGUpAdoMUXVlcnlDb250ZXh0KQHaHURlY2xhcmF0aXZlQXR0cmlidXRlSW50ZXJjZXB0KQHaDUluc3RhbmNlU3RhdGUpAdoOVU9XVHJhbnNhY3Rpb24pAdoTX1R5cGVFbmdpbmVBcmd1bWVudCkB2hFTY2hlbWFFdmVudFRhcmdldCkB2gZDb2x1bW4pAdoKVHlwZUVuZ2luZSkB2hFtZW1vaXplZF9wcm9wZXJ0eSkB2g1TdXBwb3J0c0luZGV4KQHaCVR5cGVHdWFyZNoDX0tU2gNfVlRjAAAAAAAAAAAAAAAAAwAAAAAAAAHzaAAAAJcAZQBaAWQAWgJkAVoDZQRkB2QChASrAAAAAAAAAFoFZQZkCGQDhASrAAAAAAAAAFoHZQZkCWQEhASrAAAAAAAAAFoIZQYJAAkACQAJAAkACQAJAAkAZApkBYQEqwAAAAAAAABaCXkGKQvaC011dGFibGVCYXNlelBDb21tb24gYmFzZSBjbGFzcyB0byA6Y2xhc3M6YC5NdXRhYmxlYAogICAgYW5kIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgLgoKICAgIGMBAAAAAAAAAAAAAAACAAAAAwAAAfMqAAAAlwB0AQAAAAAAAAAAagIAAAAAAAAAAAAAAAAAAAAAAACrAAAAAAAAAFMAKQFh5QEAAERpY3Rpb25hcnkgb2YgcGFyZW50IG9iamVjdCdzIDpjbGFzczpgLkluc3RhbmNlU3RhdGVgLT5hdHRyaWJ1dGUKICAgICAgICBuYW1lIG9uIHRoZSBwYXJlbnQuCgogICAgICAgIFRoaXMgYXR0cmlidXRlIGlzIGEgc28tY2FsbGVkICJtZW1vaXplZCIgcHJvcGVydHkuICBJdCBpbml0aWFsaXplcwogICAgICAgIGl0c2VsZiB3aXRoIGEgbmV3IGBgd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeWBgIHRoZSBmaXJzdCB0aW1lCiAgICAgICAgaXQgaXMgYWNjZXNzZWQsIHJldHVybmluZyB0aGUgc2FtZSBvYmplY3QgdXBvbiBzdWJzZXF1ZW50IGFjY2Vzcy4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjQgdGhlIDpjbGFzczpgLkluc3RhbmNlU3RhdGVgIGlzIG5vdyB1c2VkCiAgICAgICAgICAgYXMgdGhlIGtleSBpbiB0aGUgd2VhayBkaWN0aW9uYXJ5IHJhdGhlciB0aGFuIHRoZSBpbnN0YW5jZQogICAgICAgICAgIGl0c2VsZi4KCiAgICAgICAgKQLaB3dlYWtyZWZyEQAAAKkB2gRzZWxmcwEAAAAg+kcvb3B0L2hjX3B5dGhvbi9saWI2NC9weXRob24zLjEyL3NpdGUtcGFja2FnZXMvc3FsYWxjaGVteS9leHQvbXV0YWJsZS5wedoIX3BhcmVudHN6FE11dGFibGVCYXNlLl9wYXJlbnRzrwEAAHMTAAAAgAD0HgAQF9cPKNEPKNMPKtAIKvMAAAAAYwMAAAAAAAAAAAAAAAcAAAADAAAB8z4AAACXAHwCgAF5AWQCfQN0AQAAAAAAAAAAfAN8AXQDAAAAAAAAAAB8AqsBAAAAAAAAZgJ6BgAAqwEAAAAAAACCASkDYaADAABHaXZlbiBhIHZhbHVlLCBjb2VyY2UgaXQgaW50byB0aGUgdGFyZ2V0IHR5cGUuCgogICAgICAgIENhbiBiZSBvdmVycmlkZGVuIGJ5IGN1c3RvbSBzdWJjbGFzc2VzIHRvIGNvZXJjZSBpbmNvbWluZwogICAgICAgIGRhdGEgaW50byBhIHBhcnRpY3VsYXIgdHlwZS4KCiAgICAgICAgQnkgZGVmYXVsdCwgcmFpc2VzIGBgVmFsdWVFcnJvcmBgLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyBkZXBlbmRpbmcgb24gaWYKICAgICAgICB0aGUgcGFyZW50IGNsYXNzIGlzIG9mIHR5cGUgOmNsYXNzOmAuTXV0YWJsZWAgb3Igb2YgdHlwZQogICAgICAgIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIGZvcm1lciwgaXQgaXMgY2FsbGVkCiAgICAgICAgZm9yIGJvdGggYXR0cmlidXRlLXNldCBvcGVyYXRpb25zIGFzIHdlbGwgYXMgZHVyaW5nIE9STSBsb2FkaW5nCiAgICAgICAgb3BlcmF0aW9ucy4gIEZvciB0aGUgbGF0dGVyLCBpdCBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgYXR0cmlidXRlLXNldAogICAgICAgIG9wZXJhdGlvbnM7IHRoZSBtZWNoYW5pY3Mgb2YgdGhlIDpmdW5jOmAuY29tcG9zaXRlYCBjb25zdHJ1Y3QKICAgICAgICBoYW5kbGUgY29lcmNpb24gZHVyaW5nIGxvYWQgb3BlcmF0aW9ucy4KCgogICAgICAgIDpwYXJhbSBrZXk6IHN0cmluZyBuYW1lIG9mIHRoZSBPUk0tbWFwcGVkIGF0dHJpYnV0ZSBiZWluZyBzZXQuCiAgICAgICAgOnBhcmFtIHZhbHVlOiB0aGUgaW5jb21pbmcgdmFsdWUuCiAgICAgICAgOnJldHVybjogdGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSBjb2VyY2VkIHZhbHVlLCBvciByYWlzZQogICAgICAgICBgYFZhbHVlRXJyb3JgYCBpZiB0aGUgY29lcmNpb24gY2Fubm90IGJlIGNvbXBsZXRlZC4KCiAgICAgICAgTnoxQXR0cmlidXRlICclcycgZG9lcyBub3QgYWNjZXB0IG9iamVjdHMgb2YgdHlwZSAlcykC2gpWYWx1ZUVycm9y2gR0eXBlKQTaA2Nsc9oDa2V52gV2YWx1ZdoDbXNncwQAAAAgICAgcjIAAADaBmNvZXJjZXoSTXV0YWJsZUJhc2UuY29lcmNlwAEAAHMqAAAAgADwMAAMEYg92BMX2A5BiAPcDhiYE6ADpFSoJaNb0B8x0Rkx0w4y0AgycjQAAABjAgAAAAAAAAAAAAAAAQAAAAMAAAHzHAAAAJcAfAFqAAAAAAAAAAAAAAAAAAAAAAAAAGgBUwApAWHwAgAAR2l2ZW4gYSBkZXNjcmlwdG9yIGF0dHJpYnV0ZSwgcmV0dXJuIGEgYGBzZXQoKWBgIG9mIHRoZSBhdHRyaWJ1dGUKICAgICAgICBrZXlzIHdoaWNoIGluZGljYXRlIGEgY2hhbmdlIGluIHRoZSBzdGF0ZSBvZiB0aGlzIGF0dHJpYnV0ZS4KCiAgICAgICAgVGhpcyBpcyBub3JtYWxseSBqdXN0IGBgc2V0KFthdHRyaWJ1dGUua2V5XSlgYCwgYnV0IGNhbiBiZSBvdmVycmlkZGVuCiAgICAgICAgdG8gcHJvdmlkZSBmb3IgYWRkaXRpb25hbCBrZXlzLiAgRS5nLiBhIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgCiAgICAgICAgYXVnbWVudHMgdGhpcyBzZXQgd2l0aCB0aGUgYXR0cmlidXRlIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBj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ICAgICAgICkKCiAgICAgICAgTm90ZSB0aGF0IHRoZSByZXR1cm5lZCB0eXBlIGlzIGFsd2F5cyBhbiBpbnN0YW5jZSwgZXZlbiBpZiBhIGNsYXNzCiAgICAgICAgaXMgZ2l2ZW4sIGFuZCB0aGF0IG9ubHkgY29sdW1ucyB3aGljaCBhcmUgZGVjbGFyZWQgc3BlY2lmaWNhbGx5IHdpdGgKICAgICAgICB0aGF0IHR5cGUgaW5zdGFuY2UgcmVjZWl2ZSBhZGRpdGlvbmFsIGluc3RydW1lbnRhdGlvbi4KCiAgICAgICAgVG8gYXNzb2NpYXRlIGEgcGFydGljdWxhciBtdXRhYmxlIHR5cGUgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgYQogICAgICAgIHBhcnRpY3VsYXIgdHlwZSwgdXNlIHRoZSA6bWV0aDpgLk11dGFibGUuYXNzb2NpYXRlX3dpdGhgIGNsYXNzbWV0aG9kCiAgICAgICAgb2YgdGhlIHBhcnRpY3VsYXIgOmNsYXNzOmAuTXV0YWJsZWAgc3ViY2xhc3MgdG8gZXN0YWJsaXNoIGEgZ2xvYmFsCiAgICAgICAgYXNzb2NpYXRpb24uCgogICAgICAgIC4uIHdhcm5pbmc6OgoKICAgICAgICAgICBUaGUgbGlzdGVuZXJzIGVzdGFibGlzaGVkIGJ5IHRoaXMgbWV0aG9kIGFyZSAqZ2xvYmFsKgogICAgICAgICAgIHRvIGFsbCBtYXBwZXJzLCBhbmQgYXJlICpub3QqIGdhcmJhZ2UgY29sbGVjdGVkLiAgIE9ubHkgdXNlCiAgICAgICAgICAgOm1ldGg6YC5hc19tdXRhYmxlYCBmb3IgdHlwZXMgdGhhdCBhcmUgcGVybWFuZW50IHRvIGFuIGFwcGxpY2F0aW9uLAogICAgICAgICAgIG5vdCB3aXRoIGFkLWhvYyB0eXBlcyBlbHNlIHRoaXMgd2lsbCBjYXVzZSB1bmJvdW5kZWQgZ3Jvd3RoCiAgICAgICAgICAgaW4gbWVtb3J5IHVzYWdlLgoKICAgICAgICDaFGJlZm9yZV9wYXJlbnRfYXR0YWNoYwIAAAAAAAAAAAAAAAMAAAATAAAB8yIAAACXAHwAfAFqAAAAAAAAAAAAAAAAAAAAAAAAAGQBPAAAAHkA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YC5NdXRhYmxlYC4KCiAgICBUaGUgOmNsYXNzOmAuTXV0YWJsZURpY3RgIG9iamVjdCBpbXBsZW1lbnRzIGEgZGljdGlvbmFyeSB0aGF0IHdpbGwKICAgIGVtaXQgY2hhbmdlIGV2ZW50cyB0byB0aGUgdW5kZXJseWluZyBtYXBwaW5nIHdoZW4gdGhlIGNvbnRlbnRzIG9mCiAgICB0aGUgZGljdGlvbmFyeSBhcmUgYWx0ZXJlZCwgaW5jbHVkaW5nIHdoZW4gdmFsdWVzIGFyZSBhZGRlZCBvciByZW1vdmVkLgoKICAgIE5vdGUgdGhhdCA6Y2xhc3M6YC5NdXRhYmxlRGljdGAgZG9lcyAqKm5vdCoqIGFwcGx5IG11dGFibGUgdHJhY2tpbmcgdG8gIHRoZQogICAgKnZhbHVlcyB0aGVtc2VsdmVzKiBpbnNpZGUgdGhlIGRpY3Rpb25hcnkuIFRoZXJlZm9yZSBpdCBpcyBub3QgYSBzdWZmaWNpZW50CiAgICBzb2x1dGlvbiBmb3IgdGhlIHVzZSBjYXNlIG9mIHRyYWNraW5nIGRlZXAgY2hhbmdlcyB0byBhICpyZWN1cnNpdmUqCiAgICBkaWN0aW9uYXJ5IHN0cnVjdHVyZSwgc3VjaCBhcyBhIEpTT04gc3RydWN0dXJlLiAgVG8gc3VwcG9ydCB0aGlzIHVzZSBjYXNlLAogICAgYnVpbGQgYSBzdWJjbGFzcyBvZiAgOmNsYXNzOmAuTXV0YWJsZURpY3RgIHRoYXQgcHJvdmlkZXMgYXBwcm9wcmlhdGUKICAgIGNvZXJjaW9uIHRvIHRoZSB2YWx1ZXMgcGxhY2VkIGluIHRoZSBkaWN0aW9uYXJ5IHNvIHRoYXQgdGhleSB0b28gYXJlCiAgICAibXV0YWJsZSIsIGFuZCBlbWl0IGV2ZW50cyB1cCB0byB0aGVpciBwYXJlbnQgc3RydWN0dXJlLgoKICAgIC4uIHNlZWFsc286OgoKICAgICAgICA6Y2xhc3M6YC5NdXRhYmxlTGlzdGAKCiAgICAgICAgOmNsYXNzOmAuTXV0YWJsZVNldGAKCiAgICBjAwAAAAAAAAAAAAAABAAAAAMAAAHzRgAAAJUBlwB0AAAAAAAAAAAAiQN8AI0FAAB8AXwCqwIAAAAAAAABAHwAagUA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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 12
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
associationproxy.cpython-312.pyc
84.81 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
automap.cpython-312.pyc
56.04 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
baked.cpython-312.pyc
22.82 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-312.pyc
20.72 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
horizontal_shard.cpython-312.pyc
17.21 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hybrid.cpython-312.pyc
58.41 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
indexable.cpython-312.pyc
11.89 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
instrumentation.cpython-312.pyc
19.38 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
mutable.cpython-312.pyc
45.22 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
orderinglist.cpython-312.pyc
16.89 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
serializer.cpython-312.pyc
7.84 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
332 B
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).