REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 33.50 KB
Close
//opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/engine/__pycache__/create.cpython-312.pyc
Text
Base64
yw0NCgAAAAD5ke9nwYEAAOMAAAAAAAAAAAAAAAAhAAAAAAAAAfN6AwAAlwBkAGQBbABtAVoBAQBkAGQCbAJaAmQAZAJsA1oDZABkA2wDbQRaBAEAZABkBGwDbQVaBQEAZABkBWwDbQZaBgEAZABkBmwDbQdaBwEAZABkB2wDbQhaCAEAZABkCGwDbQlaCQEAZABkCWwDbQpaCgEAZABkCmwDbQtaCwEAZABkC2wDbQxaDAEAZAxkDWwNbQ5aDgEAZAxkDmwNbQ9aEAEAZAxkD2wRbRJaEgEAZAxkEGwTbRRaFAEAZBFkEmwNbRVaFQEAZBFkE2wNbRZaFgEAZBFkFGwNbRdaFwEAZBFkFWwYbRlaGQEAZBFkFmwYbRpaGgEAZBFkF2wbbRxaHAEAZBFkGGwXbR1aHQEAZQNqPAAAAAAAAAAAAAAAAAAAAAAAAHJCZAxkGWwObR9aHwEAZAxkGmwRbSBaIAEAZAxkG2wRbSFaIQEAZAxkHGwRbSJaIgEAZAxkHWwPbSNaIwEAZBFkHmwkbSVaJQEAZBFkH2wYbSZaJgEAZBFkIGwYbSdaJwEAZBFkIWwYbShaKAEAZBFkImwYbSlaKQEAZBFkI2wqbStaKwEAZQpkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQkZCRkJGQlnB8JAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQBkO2QthAarAAAAAAAAAFosZQpkPGQuhASrAAAAAAAAAFosAgBlF2paAAAAAAAAAAAAAAAAAAAAAAAAZC9kMGQxrDKrAwAAAAAAAGQ9ZDOEBKsAAAAAAAAAWiwJAGQ+CQAJAAkACQAJAAkACQBkP2Q0hAVaLmUKZCRkJGQkZCRkJGQkZCRkJGQ1nAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQBkQGQ2hAarAAAAAAAAAFovZQpkQWQ3hASrAAAAAAAAAFovZEFkOIQEWi8CAGUdZCdkJmQrZClkOWQqZChkLGQ6nAirAQAAAAAAAFoweQIpQukAAAAAKQHaC2Fubm90YXRpb25zTikB2gNBbnkpAdoIQ2FsbGFibGUpAdoEY2FzdCkB2gREaWN0KQHaBExpc3QpAdoIT3B0aW9uYWwpAdoIb3ZlcmxvYWQpAdoEVHlwZSkB2gVVbmlvbukBAAAAKQHaBGJhc2UpAdoDdXJsKQHaD0RCQVBJQ29ubmVjdGlvbikB2hJjcmVhdGVfbW9ja19lbmdpbmXpAgAAACkB2gVldmVudCkB2gNleGMpAdoEdXRpbCkB2hdfQWRob2NQcm94aWVkQ29ubmVjdGlvbikB2hNDb25uZWN0aW9uUG9vbEVudHJ5KQHaCGNvbXBpbGVyKQHaDWltbXV0YWJsZWRpY3QpAdoGRW5naW5lKQHaD19FeGVjdXRlT3B0aW9ucykB2gtfUGFyYW1TdHlsZSkB2g5Jc29sYXRpb25MZXZlbCkB2gNVUkwpAdoNX0VjaG9GbGFnVHlwZSkB2g5fQ3JlYXRvckZuVHlwZSkB2hJfQ3JlYXRvcldSZWNGblR5cGUpAdoSX1Jlc2V0U3R5bGVBcmdUeXBlKQHaBFBvb2wpAdoHTGl0ZXJhbC4pH9oMY29ubmVjdF9hcmdz2g9jb252ZXJ0X3VuaWNvZGXaB2NyZWF0b3LaBGVjaG/aCWVjaG9fcG9vbNoTZW5hYmxlX2Zyb21fbGludGluZ9oRZXhlY3V0aW9uX29wdGlvbnPaD2hpZGVfcGFyYW1ldGVyc9oSaW1wbGljaXRfcmV0dXJuaW5n2hppbnNlcnRtYW55dmFsdWVzX3BhZ2Vfc2l6ZdoPaXNvbGF0aW9uX2xldmVs2hFqc29uX2Rlc2VyaWFsaXplctoPanNvbl9zZXJpYWxpemVy2gxsYWJlbF9sZW5ndGjaDGxvZ2dpbmdfbmFtZdoVbWF4X2lkZW50aWZpZXJfbGVuZ3Ro2gxtYXhfb3ZlcmZsb3faBm1vZHVsZdoKcGFyYW1zdHlsZdoEcG9vbNoJcG9vbGNsYXNz2hFwb29sX2xvZ2dpbmdfbmFtZdoNcG9vbF9wcmVfcGluZ9oJcG9vbF9zaXpl2gxwb29sX3JlY3ljbGXaFHBvb2xfcmVzZXRfb25fcmV0dXJu2gxwb29sX3RpbWVvdXTaDXBvb2xfdXNl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YWwgZ3VpZGVsaW5lcyBpbiBjb21wb3NpbmcKICAgICAgICBVUkwgc3RyaW5ncy4gIEluIHBhcnRpY3VsYXIsIHNwZWNpYWwgY2hhcmFjdGVycywgc3VjaCBhcyB0aG9zZSBvZnRlbgogICAgICAgIHBhcnQgb2YgcGFzc3dvcmRzLCBtdXN0IGJlIFVSTCBlbmNvZGVkIHRvIGJlIHByb3Blcmx5IHBhcnNlZC4KCiAgICBBZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIG1heSB0aGVuIGZvbGxvdyBpdCB3aGljaAogICAgZXN0YWJsaXNoIHZhcmlvdXMgb3B0aW9ucyBvbiB0aGUgcmVzdWx0aW5nIDpjbGFzczpgX2VuZ2luZS5FbmdpbmVgCiAgICBhbmQgaXRzIHVuZGVybHlpbmcgOmNsYXNzOmAuRGlhbGVjdGAgYW5kIDpjbGFzczpgX3Bvb2wuUG9vbGAKICAgIGNvbnN0cnVjdHM6OgoKICAgICAgICBlbmdpbmUgPSBjcmVhdGVfZW5naW5lKAogICAgICAgICAgICAibXlzcWwrbXlzcWxkYjovL3Njb3R0OnRpZ2VyQGhvc3RuYW1lL2RibmFtZSIsCiAgICAgICAgICAgIHBvb2xfcmVjeWNsZT0zNjAwLAogICAgICAgICAgICBlY2hvPVRydWUsCiAgICAgICAgKQoKICAgIFRoZSBzdHJpbmcgZm9ybSBvZiB0aGUgVVJMIGlzCiAgICBgYGRpYWxlY3RbK2RyaXZlcl06Ly91c2VyOnBhc3N3b3JkQGhvc3QvZGJuYW1lWz9rZXk9dmFsdWUuLl1gYCwgd2hlcmUKICAgIGBgZGlhbGVjdGBgIGlzIGEgZGF0YWJhc2UgbmFtZSBzdWNoIGFzIGBgbXlzcWxgYCwgYGBvcmFjbGVgYCwKICAgIGBgcG9zdGdyZXNxbGBgLCBldGMuLCBhbmQgYGBkcml2ZXJgYCB0aGUgbmFtZSBvZiBhIERCQVBJLCBzdWNoIGFzCiAgICBgYHBzeWNvcGcyYGAsIGBgcHlvZGJjYGAsIGBgY3hfb3JhY2xlYGAsIGV0Yy4gIEFsdGVybmF0aXZlbHksCiAgICB0aGUgVVJMIGNhbiBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5zcWxhbGNoZW15LmVuZ2luZS51cmwuVVJMYC4KCiAgICBgYCoqa3dhcmdzYGAgdGFrZXMgYSB3aWRlIHZhcmlldHkgb2Ygb3B0aW9ucyB3aGljaCBhcmUgcm91dGVkCiAgICB0b3dhcmRzIHRoZWlyIGFwcHJvcHJpYXRlIGNvbXBvbmVudHMuICBBcmd1bWVudHMgbWF5IGJlIHNwZWNpZmljIHRvCiAgICB0aGUgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAsIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgLkRpYWxlY3RgLAogICAgYXMgd2VsbCBhcyB0aGUKICAgIDpjbGFzczpgX3Bvb2wuUG9vbGAuICBTcGVjaWZpYyBkaWFsZWN0cyBhbHNvIGFjY2VwdCBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0CiAgICBhcmUgdW5pcXVlIHRvIHRoYXQgZGlhbGVjdC4gICBIZXJlLCB3ZSBkZXNjcmliZSB0aGUgcGFyYW1ldGVycwogICAgdGhhdCBhcmUgY29tbW9uIHRvIG1vc3QgOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lKClgIHVzYWdlLgoKICAgIE9uY2UgZXN0YWJsaXNoZWQsIHRoZSBuZXdseSByZXN1bHRpbmcgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAgd2lsbAogICAgcmVxdWVzdCBhIGNvbm5lY3Rpb24gZnJvbSB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YF9wb29sLlBvb2xgIG9uY2UKICAgIDptZXRoOmBfZW5naW5lLkVuZ2luZS5jb25uZWN0YCBpcyBjYWxsZWQsIG9yIGEgbWV0aG9kIHdoaWNoIGRlcGVuZHMgb24gaXQKICAgIHN1Y2ggYXMgOm1ldGg6YF9lbmdpbmUuRW5naW5lLmV4ZWN1dGVgIGlzIGludm9rZWQuICAgVGhlCiAgICA6Y2xhc3M6YF9wb29sLlBvb2xgIGluIHR1cm4KICAgIHdpbGwgZXN0YWJsaXNoIHRoZSBmaXJzdCBhY3R1YWwgREJBUEkgY29ubmVjdGlvbiB3aGVuIHRoaXMgcmVxdWVzdAogICAgaXMgcmVjZWl2ZWQuICAgVGhlIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAgY2FsbCBpdHNlbGYgZG9lcyAqKm5vdCoqCiAgICBlc3RhYmxpc2ggYW55IGFjdHVhbCBEQkFQSSBjb25uZWN0aW9ucyBkaXJlY3RseS4KCiAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgOmRvYzpgL2NvcmUvZW5naW5lc2AKCiAgICAgICAgOmRvYzpgL2RpYWxlY3RzL2luZGV4YAoKICAgICAgICA6cmVmOmBjb25uZWN0aW9uc190b3BsZXZlbGAKCiAgICA6cGFyYW0gY29ubmVjdF9hcmdzOiBhIGRpY3Rpb25hcnkgb2Ygb3B0aW9ucyB3aGljaCB3aWxsIGJlCiAgICAgICAgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBEQkFQSSdzIGBgY29ubmVjdCgpYGAgbWV0aG9kIGFzCiAgICAgICAgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIFNlZSB0aGUgZXhhbXBsZQogICAgICAgIGF0IDpyZWY6YGN1c3RvbV9kYmFwaV9hcmdzYC4KCiAgICA6cGFyYW0gY3JlYXRvcjogYSBjYWxsYWJsZSB3aGljaCByZXR1cm5zIGEgREJBUEkgY29ubmVjdGlvbi4KICAgICAgICBUaGlzIGNyZWF0aW9uIGZ1bmN0aW9uIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nCiAgICAgICAgY29ubmVjdGlvbiBwb29sIGFuZCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIGFsbCBuZXcgZGF0YWJhc2UKICAgICAgICBjb25uZWN0aW9ucy4gVXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbiBjYXVzZXMgY29ubmVjdGlvbgogICAgICAgIHBhcmFtZXRlcnMgc3BlY2lmaWVkIGluIHRoZSBVUkwgYXJndW1lbnQgdG8gYmUgYnlwYXNzZWQuCgogICAgICAgIFRoaXMgaG9vayBpcyBub3QgYXMgZmxleGlibGUgYXMgdGhlIG5ld2VyCiAgICAgICAgOm1ldGg6YF9ldmVudHMuRGlhbGVjdEV2ZW50cy5kb19jb25uZWN0YCBob29rIHdoaWNoIGFsbG93cyBjb21wbGV0ZQogICAgICAgIGNvbnRyb2wgb3ZlciBob3cgYSBjb25uZWN0aW9uIGlzIG1hZGUgdG8gdGhlIGRhdGFiYXNlLCBnaXZlbiB0aGUgZnVsbAogICAgICAgIHNldCBvZiBVUkwgYXJndW1lbnRzIGFuZCBzdGF0ZSBiZWZvcmVoYW5kLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDptZXRoOmBfZXZlbnRzLkRpYWxlY3RFdmVudHMuZG9fY29ubmVjdGAgLSBldmVudCBob29rIHRoYXQgYWxsb3dzCiAgICAgICAgICAgIGZ1bGwgY29udHJvbCBvdmVyIERCQVBJIGNvbm5lY3Rpb24gbWVjaGFuaWNzLgoKICAgICAgICAgICAgOnJlZjpgY3VzdG9tX2RiYXBpX2FyZ3NgCgogICAgOnBhcmFtIGVjaG89RmFsc2U6IGlmIFRydWUsIHRoZSBFbmdpbmUgd2lsbCBsb2cgYWxsIHN0YXRlbWVudHMKICAgICAgICBhcyB3ZWxsIGFzIGEgYGByZXByKClgYCBvZiB0aGVpciBwYXJhbWV0ZXIgbGlzdHMgdG8gdGhlIGRlZmF1bHQgbG9nCiAgICAgICAgaGFuZGxlciwgd2hpY2ggZGVmYXVsdHMgdG8gYGBzeXMuc3Rkb3V0YGAgZm9yIG91dHB1dC4gICBJZiBzZXQgdG8gdGhlCiAgICAgICAgc3RyaW5nIGBgImRlYnVnImBgLCByZXN1bHQgcm93cyB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dAogICAgICAgIGFzIHdlbGwuIFRoZSBgYGVjaG9gYCBhdHRyaWJ1dGUgb2YgYGBFbmdpbmVgYCBjYW4gYmUgbW9kaWZpZWQgYXQgYW55CiAgICAgICAgdGltZSB0byB0dXJuIGxvZ2dpbmcgb24gYW5kIG9mZjsgZGlyZWN0IGNvbnRyb2wgb2YgbG9nZ2luZyBpcyBhbHNvCiAgICAgICAgYXZhaWxhYmxlIHVzaW5nIHRoZSBzdGFuZGFyZCBQeXRob24gYGBsb2dnaW5nYGAgbW9kdWxlLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGRiZW5naW5lX2xvZ2dpbmdgIC0gZnVydGhlciBkZXRhaWwgb24gaG93IHRvIGNvbmZpZ3VyZQogICAgICAgICAgICBsb2dnaW5nLgoKCiAgICA6cGFyYW0gZWNob19wb29sPUZhbHNlOiBpZiBUcnVlLCB0aGUgY29ubmVjdGlvbiBwb29sIHdpbGwgbG9nCiAgICAgICAgaW5mb3JtYXRpb25hbCBvdXRwdXQgc3VjaCBhcyB3aGVuIGNvbm5lY3Rpb25zIGFyZSBpbnZhbGlkYXRlZAogICAgICAgIGFzIHdlbGwgYXMgd2hlbiBjb25uZWN0aW9ucyBhcmUgcmVjeWNsZWQgdG8gdGhlIGRlZmF1bHQgbG9nIGhhbmRsZXIsCiAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gYGBzeXMuc3Rkb3V0YGAgZm9yIG91dHB1dC4gICBJZiBzZXQgdG8gdGhlIHN0cmluZwogICAgICAgIGBgImRlYnVnImBgLCB0aGUgbG9nZ2luZyB3aWxsIGluY2x1ZGUgcG9vbCBjaGVja291dHMgYW5kIGNoZWNraW5zLgogICAgICAgIERpcmVjdCBjb250cm9sIG9mIGxvZ2dpbmcgaXMgYWxzbyBhdmFpbGFibGUgdXNpbmcgdGhlIHN0YW5kYXJkIFB5dGhvbgogICAgICAgIGBgbG9nZ2luZ2BgIG1vZHVsZS4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBkYmVuZ2luZV9sb2dnaW5nYCAtIGZ1cnRoZXIgZGV0YWlsIG9uIGhvdyB0byBjb25maWd1cmUKICAgICAgICAgICAgbG9nZ2luZy4KCgogICAgOnBhcmFtIGVtcHR5X2luX3N0cmF0ZWd5OiAgIE5vIGxvbmdlciB1c2VkOyBTUUxBbGNoZW15IG5vdyB1c2VzCiAgICAgICAgImVtcHR5IHNldCIgYmVoYXZpb3IgZm9yIElOIGluIGFsbCBjYXNlcy4KCiAgICA6cGFyYW0gZW5hYmxlX2Zyb21fbGludGluZzogZGVmYXVsdHMgdG8gVHJ1ZS4gIFdpbGwgZW1pdCBhIHdhcm5pbmcKICAgICAgICBpZiBhIGdpdmVuIFNFTEVDVCBzdGF0ZW1lbnQgaXMgZm91bmQgdG8gaGF2ZSB1bi1saW5rZWQgRlJPTSBlbGVtZW50cwogICAgICAgIHdoaWNoIHdvdWxkIGNhdXNlIGEgY2FydGVzaWFuIHByb2R1Y3QuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNAoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGNoYW5nZV80NzM3YAoKICAgIDpwYXJhbSBleGVjdXRpb25fb3B0aW9uczogRGljdGlvbmFyeSBleGVjdXRpb24gb3B0aW9ucyB3aGljaCB3aWxsCiAgICAgICAgYmUgYXBwbGllZCB0byBhbGwgY29ubmVjdGlvbnMuICBTZWUKICAgICAgICA6bWV0aDpgfnNxbGFsY2hlbXkuZW5naW5lLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnNgCgogICAgOnBhcmFtIGZ1dHVyZTogVXNlIHRoZSAyLjAgc3R5bGUgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAgYW5kCiAgICAgICAgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gIEFQSS4KCiAgICAgICAgQXMgb2YgU1FMQWxjaGVteSAyLjAsIHRoaXMgcGFyYW1ldGVyIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkcwogICAgICAgIGNvbXBhdGliaWxpdHkgb25seSBhbmQgbXVzdCByZW1haW4gYXQgaXRzIGRlZmF1bHQgdmFsdWUgb2YgYGBUcnVlYGAuCgogICAgICAgIFRoZSA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmZ1dHVyZWAgcGFyYW1ldGVyIHdpbGwgYmUKICAgICAgICBkZXByZWNhdGVkIGluIGEgc3Vic2VxdWVudCAyLnggcmVsZWFzZSBhbmQgZXZlbnR1YWxseSByZW1vdmVkLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjQKCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjAgQWxsIDpjbGFzczpgX2VuZ2luZS5FbmdpbmVgIG9iamVjdHMgYXJlCiAgICAgICAgICAgImZ1dHVyZSIgc3R5bGUgZW5naW5lcyBhbmQgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgYGBmdXR1cmU9RmFsc2VgYAogICAgICAgICAgIG1vZGUgb2Ygb3BlcmF0aW9uLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YG1pZ3JhdGlvbl8yMF90b3BsZXZlbGAKCiAgICA6cGFyYW0gaGlkZV9wYXJhbWV0ZXJzOiBCb29sZWFuLCB3aGVuIHNldCB0byBUcnVlLCBTUUwgc3RhdGVtZW50IHBhcmFtZXRlcnMKICAgICAgICB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQgaW4gSU5GTyBsb2dnaW5nIG5vciB3aWxsIHRoZXkgYmUgZm9ybWF0dGVkIGludG8KICAgICAgICB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIDpjbGFzczpgLlN0YXRlbWVudEVycm9yYCBvYmplY3RzLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjMuOAoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGRiZW5naW5lX2xvZ2dpbmdgIC0gZnVydGhlciBkZXRhaWwgb24gaG93IHRvIGNvbmZpZ3VyZQogICAgICAgICAgICBsb2dnaW5nLgoKICAgIDpwYXJhbSBpbXBsaWNpdF9yZXR1cm5pbmc9VHJ1ZTogIExlZ2FjeSBwYXJhbWV0ZXIgdGhhdCBtYXkgb25seSBiZSBzZXQKICAgICAgICB0byBUcnVlLiBJbiBTUUxBbGNoZW15IDIuMCwgdGhpcyBwYXJhbWV0ZXIgZG9lcyBub3RoaW5nLiBJbiBvcmRlciB0bwogICAgICAgIGRpc2FibGUgImltcGxpY2l0IHJldHVybmluZyIgZm9yIHN0YXRlbWVudHMgaW52b2tlZCBieSB0aGUgT1JNLAogICAgICAgIGNvbmZpZ3VyZSB0aGlzIG9uIGEgcGVyLXRhYmxlIGJhc2lzIHVzaW5nIHRoZQogICAgICAgIDpwYXJhbXJlZjpgLlRhYmxlLmltcGxpY2l0X3JldHVybmluZ2AgcGFyYW1ldGVyLgoKCiAgICA6cGFyYW0gaW5zZXJ0bWFueXZhbHVlc19wYWdlX3NpemU6IG51bWJlciBvZiByb3dzIHRvIGZvcm1hdCBpbnRvIGFuCiAgICAgSU5TRVJUIHN0YXRlbWVudCB3aGVuIHRoZSBzdGF0ZW1lbnQgdXNlcyAiaW5zZXJ0bWFueXZhbHVlcyIgbW9kZSwgd2hpY2ggaXMKICAgICBhIHBhZ2VkIGZvcm0gb2YgYnVsayBpbnNlcnQgdGhhdCBpcyB1c2VkIGZvciBtYW55IGJhY2tlbmRzIHdoZW4gdXNpbmcKICAgICA6dGVybTpgZXhlY3V0ZW1hbnlgIGV4ZWN1dGlvbiB0eXBpY2FsbHkgaW4gY29uanVuY3Rpb24gd2l0aCBSRVRVUk5JTkcuCiAgICAgRGVmYXVsdHMgdG8gMTAwMCwgYnV0IG1heSBhbHNvIGJlIHN1YmplY3QgdG8gZGlhbGVjdC1zcGVjaWZpYyBsaW1pdGluZwogICAgIGZhY3RvcnMgd2hpY2ggbWF5IG92ZXJyaWRlIHRoaXMgdmFsdWUgb24gYSBwZXItc3RhdGVtZW50IGJhc2lzLgoKICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKCiAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgIDpyZWY6YGVuZ2luZV9pbnNlcnRtYW55dmFsdWVzYAoKICAgICAgICA6cmVmOmBlbmdpbmVfaW5zZXJ0bWFueXZhbHVlc19wYWdlX3NpemVgCgogICAgICAgIDpwYXJhbXJlZjpgX2VuZ2luZS5Db25uZWN0aW9uLmV4ZWN1dGlvbl9vcHRpb25zLmluc2VydG1hbnl2YWx1ZXNfcGFnZV9zaXplYAoKICAgIDpwYXJhbSBpc29sYXRpb25fbGV2ZWw6IG9wdGlvbmFsIHN0cmluZyBuYW1lIG9mIGFuIGlzb2xhdGlvbiBsZXZlbAogICAgICAgIHdoaWNoIHdpbGwgYmUgc2V0IG9uIGFsbCBuZXcgY29ubmVjdGlvbnMgdW5jb25kaXRpb25hbGx5LgogICAgICAgIElzb2xhdGlvbiBsZXZlbHMgYXJlIHR5cGljYWxseSBzb21lIHN1YnNldCBvZiB0aGUgc3RyaW5nIG5hbWVzCiAgICAgICAgYGAiU0VSSUFMSVpBQkxFImBgLCBgYCJSRVBFQVRBQkxFIFJFQUQiYGAsCiAgICAgICAgYGAiUkVBRCBDT01NSVRURUQiYGAsIGBgIlJFQUQgVU5DT01NSVRURUQiYGAgYW5kIGBgIkFVVE9DT01NSVQiYGAKICAgICAgICBiYXNlZCBvbiBiYWNrZW5kLgoKICAgICAgICBUaGUgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5pc29sYXRpb25fbGV2ZWxgIHBhcmFtZXRlciBpcwogICAgICAgIGluIGNvbnRyYXN0IHRvIHRoZQogICAgICAgIDpwYXJhbXJlZjpgLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnMuaXNvbGF0aW9uX2xldmVsYAogICAgICAgIGV4ZWN1dGlvbiBvcHRpb24sIHdoaWNoIG1heSBiZSBzZXQgb24gYW4gaW5kaXZpZHVhbAogICAgICAgIDpjbGFzczpgLkNvbm5lY3Rpb25gLCBhcyB3ZWxsIGFzIHRoZSBzYW1lIHBhcmFtZXRlciBwYXNzZWQgdG8KICAgICAgICA6bWV0aDpgLkVuZ2luZS5leGVjdXRpb25fb3B0aW9uc2AsIHdoZXJlIGl0IG1heSBiZSB1c2VkIHRvIGNyZWF0ZQogICAgICAgIG11bHRpcGxlIGVuZ2luZXMgd2l0aCBkaWZmZXJlbnQgaXNvbGF0aW9uIGxldmVscyB0aGF0IHNoYXJlIGEgY29tbW9uCiAgICAgICAgY29ubmVjdGlvbiBwb29sIGFuZCBkaWFsZWN0LgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMCBUaGUKICAgICAgICAgICA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmlzb2xhdGlvbl9sZXZlbGAKICAgICAgICAgICBwYXJhbWV0ZXIgaGFzIGJlZW4gZ2VuZXJhbGl6ZWQgdG8gd29yayBvbiBhbGwgZGlhbGVjdHMgd2hpY2ggc3VwcG9ydAogICAgICAgICAgIHRoZSBjb25jZXB0IG9mIGlzb2xhdGlvbiBsZXZlbCwgYW5kIGlzIHByb3ZpZGVkIGFzIGEgbW9yZSBzdWNjaW5jdCwKICAgICAgICAgICB1cCBmcm9udCBjb25maWd1cmF0aW9uIHN3aXRjaCBpbiBjb250cmFzdCB0byB0aGUgZXhlY3V0aW9uIG9wdGlvbgogICAgICAgICAgIHdoaWNoIGlzIG1vcmUgb2YgYW4gYWQtaG9jIHByb2dyYW1tYXRpYyBvcHRpb24uCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgZGJhcGlfYXV0b2NvbW1pdGAKCiAgICA6cGFyYW0ganNvbl9kZXNlcmlhbGl6ZXI6IGZvciBkaWFsZWN0cyB0aGF0IHN1cHBvcnQgdGhlCiAgICAgICAgOmNsYXNzOmBfdHlwZXMuSlNPTmAKICAgICAgICBkYXRhdHlwZSwgdGhpcyBpcyBhIFB5dGhvbiBjYWxsYWJsZSB0aGF0IHdpbGwgY29udmVydCBhIEpTT04gc3RyaW5nCiAgICAgICAgdG8gYSBQeXRob24gb2JqZWN0LiAgQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiBgYGpzb24ubG9hZHNgYCBmdW5jdGlvbiBpcwogICAgICAgIHVzZWQuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4zLjcgIFRoZSBTUUxpdGUgZGlhbGVjdCByZW5hbWVkIHRoaXMgZnJvbQogICAgICAgICAgIGBgX2pzb25fZGVzZXJpYWxpemVyYGAuCgogICAgOnBhcmFtIGpzb25fc2VyaWFsaXplcjogZm9yIGRpYWxlY3RzIHRoYXQgc3VwcG9ydCB0aGUgOmNsYXNzOmBfdHlwZXMuSlNPTmAKICAgICAgICBkYXRhdHlwZSwgdGhpcyBpcyBhIFB5dGhvbiBjYWxsYWJsZSB0aGF0IHdpbGwgcmVuZGVyIGEgZ2l2ZW4gb2JqZWN0CiAgICAgICAgYXMgSlNPTi4gICBCeSBkZWZhdWx0LCB0aGUgUHl0aG9uIGBganNvbi5kdW1wc2BgIGZ1bmN0aW9uIGlzIHVzZWQuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4zLjcgIFRoZSBTUUxpdGUgZGlhbGVjdCByZW5hbWVkIHRoaXMgZnJvbQogICAgICAgICAgIGBgX2pzb25fc2VyaWFsaXplcmBgLgoKCiAgICA6cGFyYW0gbGFiZWxfbGVuZ3RoPU5vbmU6IG9wdGlvbmFsIGludGVnZXIgdmFsdWUgd2hpY2ggbGltaXRzCiAgICAgICAgdGhlIHNpemUgb2YgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGNvbHVtbiBsYWJlbHMgdG8gdGhhdCBtYW55CiAgICAgICAgY2hhcmFjdGVycy4gSWYgbGVzcyB0aGFuIDYsIGxhYmVscyBhcmUgZ2VuZXJhdGVkIGFzCiAgICAgICAgIl8oY291bnRlcikiLiBJZiBgYE5vbmVgYCwgdGhlIHZhbHVlIG9mCiAgICAgICAgYGBkaWFsZWN0Lm1heF9pZGVudGlmaWVyX2xlbmd0aGBgLCB3aGljaCBtYXkgYmUgYWZmZWN0ZWQgdmlhIHRoZQogICAgICAgIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUubWF4X2lkZW50aWZpZXJfbGVuZ3RoYCBwYXJhbWV0ZXIsCiAgICAgICAgaXMgdXNlZCBpbnN0ZWFkLiAgIFRoZSB2YWx1ZSBvZgogICAgICAgIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUubGFiZWxfbGVuZ3RoYAogICAgICAgIG1heSBub3QgYmUgbGFyZ2VyIHRoYW4gdGhhdCBvZgogICAgICAgIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUubWF4X2lkZW50Zmllcl9sZW5ndGhgLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUubWF4X2lkZW50aWZpZXJfbGVuZ3RoYAoKICAgIDpwYXJhbSBsb2dnaW5nX25hbWU6ICBTdHJpbmcgaWRlbnRpZmllciB3aGljaCB3aWxsIGJlIHVzZWQgd2l0aGluCiAgICAgICAgdGhlICJuYW1lIiBmaWVsZCBvZiBsb2dnaW5nIHJlY29yZHMgZ2VuZXJhdGVkIHdpdGhpbiB0aGUKICAgICAgICAic3FsYWxjaGVteS5lbmdpbmUiIGxvZ2dlci4gRGVmYXVsdHMgdG8gYSBoZXhzdHJpbmcgb2YgdGhlCiAgICAgICAgb2JqZWN0J3MgaWQuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgZGJlbmdpbmVfbG9nZ2luZ2AgLSBmdXJ0aGVyIGRldGFpbCBvbiBob3cgdG8gY29uZmlndXJlCiAgICAgICAgICAgIGxvZ2dpbmcuCgogICAgICAgICAgICA6cGFyYW1yZWY6YF9lbmdpbmUuQ29ubmVjdGlvbi5leGVjdXRpb25fb3B0aW9ucy5sb2dnaW5nX3Rva2VuYAoKICAgIDpwYXJhbSBtYXhfaWRlbnRpZmllcl9sZW5ndGg6IGludGVnZXI7IG92ZXJyaWRlIHRoZSBtYXhfaWRlbnRpZmllcl9sZW5ndGgKICAgICAgICBkZXRlcm1pbmVkIGJ5IHRoZSBkaWFsZWN0LiAgaWYgYGBOb25lYGAgb3IgemVybywgaGFzIG5vIGVmZmVjdC4gIFRoaXMKICAgICAgICBpcyB0aGUgZGF0YWJhc2UncyBjb25maWd1cmVkIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBtYXkgYmUKICAgICAgICB1c2VkIGluIGEgU1FMIGlkZW50aWZpZXIgc3VjaCBhcyBhIHRhYmxlIG5hbWUsIGNvbHVtbiBuYW1lLCBvciBsYWJlbAogICAgICAgIG5hbWUuIEFsbCBkaWFsZWN0cyBkZXRlcm1pbmUgdGhpcyB2YWx1ZSBhdXRvbWF0aWNhbGx5LCBob3dldmVyIGluIHRoZQogICAgICAgIGNhc2Ugb2YgYSBuZXcgZGF0YWJhc2UgdmVyc2lvbiBmb3Igd2hpY2ggdGhpcyB2YWx1ZSBoYXMgY2hhbmdlZCBidXQKICAgICAgICBTUUxBbGNoZW15J3MgZGlhbGVjdCBoYXMgbm90IGJlZW4gYWRqdXN0ZWQsIHRoZSB2YWx1ZSBtYXkgYmUgcGFzc2VkCiAgICAgICAgaGVyZS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4zLjkKCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmxhYmVsX2xlbmd0aGAKCiAgICA6cGFyYW0gbWF4X292ZXJmbG93PTEwOiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIGFsbG93IGluCiAgICAgICAgY29ubmVjdGlvbiBwb29sICJvdmVyZmxvdyIsIHRoYXQgaXMgY29ubmVjdGlvbnMgdGhhdCBjYW4gYmUKICAgICAgICBvcGVuZWQgYWJvdmUgYW5kIGJleW9uZCB0aGUgcG9vbF9zaXplIHNldHRpbmcsIHdoaWNoIGRlZmF1bHRzCiAgICAgICAgdG8gZml2ZS4gdGhpcyBpcyBvbmx5IHVzZWQgd2l0aCA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuUXVldWVQb29sYC4KCiAgICA6cGFyYW0gbW9kdWxlPU5vbmU6IHJlZmVyZW5jZSB0byBhIFB5dGhvbiBtb2R1bGUgb2JqZWN0ICh0aGUgbW9kdWxlCiAgICAgICAgaXRzZWxmLCBub3QgaXRzIHN0cmluZyBuYW1lKS4gIFNwZWNpZmllcyBhbiBhbHRlcm5hdGUgREJBUEkgbW9kdWxlIHRvCiAgICAgICAgYmUgdXNlZCBieSB0aGUgZW5naW5lJ3MgZGlhbGVjdC4gIEVhY2ggc3ViLWRpYWxlY3QgcmVmZXJlbmNlcyBhCiAgICAgICAgc3BlY2lmaWMgREJBUEkgd2hpY2ggd2lsbCBiZSBpbXBvcnRlZCBiZWZvcmUgZmlyc3QgY29ubmVjdC4gIFRoaXMKICAgICAgICBwYXJhbWV0ZXIgY2F1c2VzIHRoZSBpbXBvcnQgdG8gYmUgYnlwYXNzZWQsIGFuZCB0aGUgZ2l2ZW4gbW9kdWxlIHRvCiAgICAgICAgYmUgdXNlZCBpbnN0ZWFkLiBDYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBvZiBEQkFQSXMgYXMgd2VsbCBhcyB0bwogICAgICAgIGluamVjdCAibW9jayIgREJBUEkgaW1wbGVtZW50YXRpb25zIGludG8gdGhlIDpjbGFzczpgX2VuZ2luZS5FbmdpbmVgLgoKICAgIDpwYXJhbSBwYXJhbXN0eWxlPU5vbmU6IFRoZSBgcGFyYW1zdHlsZSA8aHR0cHM6Ly9sZWdhY3kucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI0OS8jcGFyYW1zdHlsZT5gXwogICAgICAgIHRvIHVzZSB3aGVuIHJlbmRlcmluZyBib3VuZCBwYXJhbWV0ZXJzLiAgVGhpcyBzdHlsZSBkZWZhdWx0cyB0byB0aGUKICAgICAgICBvbmUgcmVjb21tZW5kZWQgYnkgdGhlIERCQVBJIGl0c2VsZiwgd2hpY2ggaXMgcmV0cmlldmVkIGZyb20gdGhlCiAgICAgICAgYGAucGFyYW1zdHlsZWBgIGF0dHJpYnV0ZSBvZiB0aGUgREJBUEkuICBIb3dldmVyLCBtb3N0IERCQVBJcyBhY2NlcHQKICAgICAgICBtb3JlIHRoYW4gb25lIHBhcmFtc3R5bGUsIGFuZCBpbiBwYXJ0aWN1bGFyIGl0IG1heSBiZSBkZXNpcmFibGUKICAgICAgICB0byBjaGFuZ2UgYSAibmFtZWQiIHBhcmFtc3R5bGUgaW50byBhICJwb3NpdGlvbmFsIiBvbmUsIG9yIHZpY2UgdmVyc2EuCiAgICAgICAgV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIGl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIHZhbHVlcwogICAgICAgIGBgInFtYXJrImBgLCBgYCJudW1lcmljImBgLCBgYCJuYW1lZCJgYCwgYGAiZm9ybWF0ImBgIG9yCiAgICAgICAgYGAicHlmb3JtYXQiYGAsIGFuZCBzaG91bGQgY29ycmVzcG9uZCB0byBhIHBhcmFtZXRlciBzdHlsZSBrbm93bgogICAgICAgIHRvIGJlIHN1cHBvcnRlZCBieSB0aGUgREJBUEkgaW4gdXNlLgoKICAgIDpwYXJhbSBwb29sPU5vbmU6IGFuIGFscmVhZHktY29uc3RydWN0ZWQgaW5zdGFuY2Ugb2YKICAgICAgICA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuUG9vbGAsIHN1Y2ggYXMgYQogICAgICAgIDpjbGFzczpgfnNxbGFsY2hlbXkucG9vbC5RdWV1ZVBvb2xgIGluc3RhbmNlLiBJZiBub24tTm9uZSwgdGhpcwogICAgICAgIHBvb2wgd2lsbCBiZSB1c2VkIGRpcmVjdGx5IGFzIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gcG9vbAogICAgICAgIGZvciB0aGUgZW5naW5lLCBieXBhc3Npbmcgd2hhdGV2ZXIgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGFyZQogICAgICAgIHByZXNlbnQgaW4gdGhlIFVSTCBhcmd1bWVudC4gRm9yIGluZm9ybWF0aW9uIG9uIGNvbnN0cnVjdGluZwogICAgICAgIGNvbm5lY3Rpb24gcG9vbHMgbWFudWFsbHksIHNlZSA6cmVmOmBwb29saW5nX3RvcGxldmVsYC4KCiAgICA6cGFyYW0gcG9vbGNsYXNzPU5vbmU6IGEgOmNsYXNzOmB+c3FsYWxjaGVteS5wb29sLlBvb2xgCiAgICAgICAgc3ViY2xhc3MsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYSBjb25uZWN0aW9uIHBvb2wKICAgICAgICBpbnN0YW5jZSB1c2luZyB0aGUgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGdpdmVuIGluIHRoZSBVUkwuIE5vdGUKICAgICAgICB0aGlzIGRpZmZlcnMgZnJvbSBgYHBvb2xgYCBpbiB0aGF0IHlvdSBkb24ndCBhY3R1YWxseQogICAgICAgIGluc3RhbnRpYXRlIHRoZSBwb29sIGluIHRoaXMgY2FzZSwgeW91IGp1c3QgaW5kaWNhdGUgd2hhdCB0eXBlCiAgICAgICAgb2YgcG9vbCB0byBiZSB1c2VkLgoKICAgIDpwYXJhbSBwb29sX2xvZ2dpbmdfbmFtZTogIFN0cmluZyBpZGVudGlmaWVyIHdoaWNoIHdpbGwgYmUgdXNlZCB3aXRoaW4KICAgICAgIHRoZSAibmFtZSIgZmllbGQgb2YgbG9nZ2luZyByZWNvcmRzIGdlbmVyYXRlZCB3aXRoaW4gdGhlCiAgICAgICAic3FsYWxjaGVteS5wb29sIiBsb2dnZXIuIERlZmF1bHRzIHRvIGEgaGV4c3RyaW5nIG9mIHRoZSBvYmplY3QncwogICAgICAgaWQuCgogICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBkYmVuZ2luZV9sb2dnaW5nYCAtIGZ1cnRoZXIgZGV0YWlsIG9uIGhvdyB0byBjb25maWd1cmUKICAgICAgICAgICAgbG9nZ2luZy4KCiAgICA6cGFyYW0gcG9vbF9wcmVfcGluZzogYm9vbGVhbiwgaWYgVHJ1ZSB3aWxsIGVuYWJsZSB0aGUgY29ubmVjdGlvbiBwb29sCiAgICAgICAgInByZS1waW5nIiBmZWF0dXJlIHRoYXQgdGVzdHMgY29ubmVjdGlvbnMgZm9yIGxpdmVuZXNzIHVwb24KICAgICAgICBlYWNoIGNoZWNrb3V0LgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjIKCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBwb29sX2Rpc2Nvbm5lY3RzX3Blc3NpbWlzdGljYAoKICAgIDpwYXJhbSBwb29sX3NpemU9NTogdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byBrZWVwIG9wZW4KICAgICAgICBpbnNpZGUgdGhlIGNvbm5lY3Rpb24gcG9vbC4gVGhpcyB1c2VkIHdpdGgKICAgICAgICA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuUXVldWVQb29sYCBhcwogICAgICAgIHdlbGwgYXMgOmNsYXNzOmB+c3FsYWxjaGVteS5wb29sLlNpbmdsZXRvblRocmVhZFBvb2xgLiAgV2l0aAogICAgICAgIDpjbGFzczpgfnNxbGFsY2hlbXkucG9vbC5RdWV1ZVBvb2xgLCBhIGBgcG9vbF9zaXplYGAgc2V0dGluZwogICAgICAgIG9mIDAgaW5kaWNhdGVzIG5vIGxpbWl0OyB0byBkaXNhYmxlIHBvb2xpbmcsIHNldCBgYHBvb2xjbGFzc2BgIHRvCiAgICAgICAgOmNsYXNzOmB+c3FsYWxjaGVteS5wb29sLk51bGxQb29sYCBpbnN0ZWFkLgoKICAgIDpwYXJhbSBwb29sX3JlY3ljbGU9LTE6IHRoaXMgc2V0dGluZyBjYXVzZXMgdGhlIHBvb2wgdG8gcmVjeWNsZQogICAgICAgIGNvbm5lY3Rpb25zIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcyBoYXMgcGFzc2VkLiBJdAogICAgICAgIGRlZmF1bHRzIHRvIC0xLCBvciBubyB0aW1lb3V0LiBGb3IgZXhhbXBsZSwgc2V0dGluZyB0byAzNjAwCiAgICAgICAgbWVhbnMgY29ubmVjdGlvbnMgd2lsbCBiZSByZWN5Y2xlZCBhZnRlciBvbmUgaG91ci4gTm90ZSB0aGF0CiAgICAgICAgTXlTUUwgaW4gcGFydGljdWxhciB3aWxsIGRpc2Nvbm5lY3QgYXV0b21hdGljYWxseSBpZiBubwogICAgICAgIGFjdGl2aXR5IGlzIGRldGVjdGVkIG9uIGEgY29ubmVjdGlvbiBmb3IgZWlnaHQgaG91cnMgKGFsdGhvdWdoCiAgICAgICAgdGhpcyBpcyBjb25maWd1cmFibGUgd2l0aCB0aGUgTXlTUUxEQiBjb25uZWN0aW9uIGl0c2VsZiBhbmQgdGhlCiAgICAgICAgc2VydmVyIGNvbmZpZ3VyYXRpb24gYXMgd2VsbCkuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgcG9vbF9zZXR0aW5nX3JlY3ljbGVgCgogICAgOnBhcmFtIHBvb2xfcmVzZXRfb25fcmV0dXJuPSdyb2xsYmFjayc6IHNldCB0aGUKICAgICAgICA6cGFyYW1yZWY6YF9wb29sLlBvb2wucmVzZXRfb25fcmV0dXJuYCBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlpbmcKICAgICAgICA6Y2xhc3M6YF9wb29sLlBvb2xgIG9iamVjdCwgd2hpY2ggY2FuIGJlIHNldCB0byB0aGUgdmFsdWVzCiAgICAgICAgYGAicm9sbGJhY2siYGAsIGBgImNvbW1pdCJgYCwgb3IgYGBOb25lYGAuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgcG9vbF9yZXNldF9vbl9yZXR1cm5gCgogICAgOnBhcmFtIHBvb2xfdGltZW91dD0zMDogbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nCiAgICAgICAgdXAgb24gZ2V0dGluZyBhIGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbC4gVGhpcyBpcyBvbmx5IHVzZWQKICAgICAgICB3aXRoIDpjbGFzczpgfnNxbGFsY2hlbXkucG9vbC5RdWV1ZVBvb2xgLiBUaGlzIGNhbiBiZSBhIGZsb2F0IGJ1dCBpcwogICAgICAgIHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIFB5dGhvbiB0aW1lIGZ1bmN0aW9ucyB3aGljaCBtYXkgbm90IGJlCiAgICAgICAgcmVsaWFibGUgaW4gdGhlIHRlbnMgb2YgbWlsbGlzZWNvbmRzLgoKICAgICAgICAuLiBub3RlOiBkb24ndCB1c2UgMzAuMCBhYm92ZSwgaXQgc2VlbXMgdG8gYnJlYWsgd2l0aCB0aGUgOnBhcmFtIHRhZwoKICAgIDpwYXJhbSBwb29sX3VzZV9saWZvPUZhbHNlOiB1c2UgTElGTyAobGFzdC1pbi1maXJzdC1vdXQpIHdoZW4gcmV0cmlldmluZwogICAgICAgIGNvbm5lY3Rpb25zIGZyb20gOmNsYXNzOmAuUXVldWVQb29sYCBpbnN0ZWFkIG9mIEZJRk8KICAgICAgICAoZmlyc3QtaW4tZmlyc3Qtb3V0KS4gVXNpbmcgTElGTywgYSBzZXJ2ZXItc2lkZSB0aW1lb3V0IHNjaGVtZSBjYW4KICAgICAgICByZWR1Y2UgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB1c2VkIGR1cmluZyBub24tIHBlYWsgICBwZXJpb2RzIG9mCiAgICAgICAgdXNlLiAgIFdoZW4gcGxhbm5pbmcgZm9yIHNlcnZlci1zaWRlIHRpbWVvdXRzLCBlbnN1cmUgdGhhdCBhIHJlY3ljbGUgb3IKICAgICAgICBwcmUtcGluZyBzdHJhdGVneSBpcyBpbiB1c2UgdG8gZ3JhY2VmdWxseSAgIGhhbmRsZSBzdGFsZSBjb25uZWN0aW9ucy4KCiAgICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjMKCiAgICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YHBvb2xfdXNlX2xpZm9gCgogICAgICAgICAgICA6cmVmOmBwb29sX2Rpc2Nvbm5lY3RzYAoKICAgIDpwYXJhbSBwbHVnaW5zOiBzdHJpbmcgbGlzdCBvZiBwbHVnaW4gbmFtZXMgdG8gbG9hZC4gIFNlZQogICAgICAgIDpjbGFzczpgLkNyZWF0ZUVuZ2luZVBsdWdpbmAgZm9yIGJhY2tncm91bmQuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMi4zCgogICAgOnBhcmFtIHF1ZXJ5X2NhY2hlX3NpemU6IHNpemUgb2YgdGhlIGNhY2hlIHVzZWQgdG8gY2FjaGUgdGhlIFNRTCBzdHJpbmcKICAgICBmb3JtIG9mIHF1ZXJpZXMuICBTZXQgdG8gemVybyB0byBkaXNhYmxlIGNhY2hpbmcuCgogICAgIFRoZSBjYWNoZSBpcyBwcnVuZWQgb2YgaXRzIGxlYXN0IHJlY2VudGx5IHVzZWQgaXRlbXMgd2hlbiBpdHMgc2l6ZSByZWFjaGVzCiAgICAgTiAqIDEuNS4gIERlZmF1bHRzIHRvIDUwMCwgbWVhbmluZyB0aGUgY2FjaGUgd2lsbCBhbHdheXMgc3RvcmUgYXQgbGVhc3QKICAgICA1MDAgU1FMIHN0YXRlbWVudHMgd2hlbiBmaWxsZWQsIGFuZCB3aWxsIGdyb3cgdXAgdG8gNzUwIGl0ZW1zIGF0IHdoaWNoCiAgICAgcG9pbnQgaXQgaXMgcHJ1bmVkIGJhY2sgZG93biB0byA1MDAgYnkgcmVtb3ZpbmcgdGhlIDI1MCBsZWFzdCByZWNlbnRseQogICAgIHVzZWQgaXRlbXMuCgogICAgIENhY2hpbmcgaXMgYWNjb21wbGlzaGVkIG9uIGEgcGVyLXN0YXRlbWVudCBiYXNpcyBieSBnZW5lcmF0aW5nIGEKICAgICBjYWNoZSBrZXkgdGhhdCByZXByZXNlbnRzIHRoZSBzdGF0ZW1lbnQncyBzdHJ1Y3R1cmUsIHRoZW4gZ2VuZXJhdGluZwogICAgIHN0cmluZyBTUUwgZm9yIHRoZSBjdXJyZW50IGRpYWxlY3Qgb25seSBpZiB0aGF0IGtleSBpcyBub3QgcHJlc2VudAogICAgIGluIHRoZSBjYWNoZS4gICBBbGwgc3RhdGVtZW50cyBzdXBwb3J0IGNhY2hpbmcsIGhvd2V2ZXIgc29tZSBmZWF0dXJlcwogICAgIHN1Y2ggYXMgYW4gSU5TRVJUIHdpdGggYSBsYXJnZSBzZXQgb2YgcGFyYW1ldGVycyB3aWxsIGludGVudGlvbmFsbHkKICAgICBieXBhc3MgdGhlIGNhY2hlLiAgIFNRTCBsb2dnaW5nIHdpbGwgaW5kaWNhdGUgc3RhdGlzdGljcyBmb3IgZWFjaAogICAgIHN0YXRlbWVudCB3aGV0aGVyIG9yIG5vdCBpdCB3ZXJlIHB1bGwgZnJvbSB0aGUgY2FjaGUuCgogICAgIC4uIG5vdGU6OiBzb21lIE9STSBmdW5jdGlvbnMgcmVsYXRlZCB0byB1bml0LW9mLXdvcmsgcGVyc2lzdGVuY2UgYXMgd2VsbAogICAgICAgIGFzIHNvbWUgYXR0cmlidXRlIGxvYWRpbmcgc3RyYXRlZ2llcyB3aWxsIG1ha2UgdXNlIG9m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ZGlhbGVjdF9jbHNyFQAAANoOZ2V0X2Nsc19rd2FyZ3PaCF9fZGljdF9fcl4AAADaB2hhc2F0dHLaB2luc3BlY3TaCGlzbWV0aG9kcl8AAADaD3dhcm5fZGVwcmVjYXRlZNoPZ2V0X2Z1bmNfa3dhcmdz2gpzZXRkZWZhdWx0chgAAADaCk5PX0xJTlRJTkfaGkNPTExFQ1RfQ0FSVEVTSUFOX1BST0RVQ1RT2hVoYW5kbGVfZGlhbGVjdF9rd2FyZ3PaE2NyZWF0ZV9jb25uZWN0X2FyZ3PaBnVwZGF0ZdoGYXNib29s2gRsaXN02hZnZXRfZGlhbGVjdF9wb29sX2NsYXNz2hZfcG9vbF90cmFuc2xhdGVfa3dhcmdz2gNnZXTaEmhhbmRsZV9wb29sX2t3YXJnc9oIX2RpYWxlY3RybQAAANoIaXNfYXN5bmPaCV9fY2xhc3NfX9oIX19uYW1lX19yDgAAAHIaAAAA2glUeXBlRXJyb3LaBGpvaW7aDm9uX2Nvbm5lY3RfdXJschMAAADaBmxpc3RlbtoSX2J1aWx0aW5fb25jb25uZWN02g5lbmdpbmVfY3JlYXRlZCkicg8AAABySAAAANoFc3RyYXTaAXVyQQAAANoKZW50cnlwb2ludHJUAAAAcl0AAADaDGRpYWxlY3RfYXJnc3J1AAAAcl8AAADaCmRiYXBpX2FyZ3PaCmRiYXBpX21ldGhyKgAAANoGcGx1Z2lu2gljYXJnc190dXByOAAAAHJmAAAAcicAAAByOQAAANoJcG9vbF9hcmdz2gJ0a9oLZW5naW5lY2xhc3PaC2VuZ2luZV9hcmdzcnEAAAByewAAANoSYnVpbHRpbl9vbl9jb25uZWN0cogAAAByagAAAHJrAAAAcmwAAAByXAAAAHJ6AAAAcocAAABzIgAAACBgICAgICAgICAgICAgICAgICAgICAgICAgICBAQEBAQEBySQAAAHJKAAAAckoAAABcAAAAc7YFAAD+gADwfA0ACBKQVtEHG9gQFpcKkQqYOtMQJogF2AsQkEaKP+QTJaBj0RM0qFbREzTQDDTkEhXXEiPREiPQJDq4VdEkQtMSQ9AMQ+AECodKgUrQDyKgRNQEKfQGAAkNjw2JDZBj0wgagEHgGRrXGS/RGS+wBtMZN9EEFoBBgHeQBuAREtcRItERItMRJIBK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bGFsY2hlbXkuZWNob2BgLCBldGMuICBUaGUgJ3ByZWZpeCcgYXJndW1lbnQKICAgIGluZGljYXRlcyB0aGUgcHJlZml4IHRvIGJlIHNlYXJjaGVkIGZvci4gIEVhY2ggbWF0Y2hpbmcga2V5IChhZnRlciB0aGUKICAgIHByZWZpeCBpcyBzdHJpcHBlZCkgaXMgdHJlYXRlZCBhcyB0aG91Z2ggaXQgd2VyZSB0aGUgY29ycmVzcG9uZGluZyBrZXl3b3JkCiAgICBhcmd1bWVudCB0byBhIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAgY2FsbC4KCiAgICBUaGUgb25seSByZXF1aXJlZCBrZXkgaXMgKGFzc3VtaW5nIHRoZSBkZWZhdWx0IHByZWZpeCkgYGBzcWxhbGNoZW15LnVybGBgLAogICAgd2hpY2ggcHJvdmlkZXMgdGhlIDpyZWY6YGRhdGFiYXNlIFVSTCA8ZGF0YWJhc2VfdXJscz5gLgoKICAgIEEgc2VsZWN0IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB3aWxsIGJlICJjb2VyY2VkIiB0byB0aGVpcgogICAgZXhwZWN0ZWQgdHlwZSBiYXNlZCBvbiBzdHJpbmcgdmFsdWVzLiAgICBUaGUgc2V0IG9mIGFyZ3VtZW50cwogICAgaXMgZXh0ZW5zaWJsZSBwZXItZGlhbGVjdCB1c2luZyB0aGUgYGBlbmdpbmVfY29uZmlnX3R5cGVzYGAgYWNjZXNzb3IuCgogICAgOnBhcmFtIGNvbmZpZ3VyYXRpb246IEEgZGljdGlvbmFyeSAodHlwaWNhbGx5IHByb2R1Y2VkIGZyb20gYSBjb25maWcgZmlsZSwKICAgICAgICBidXQgdGhpcyBpcyBub3QgYSByZXF1aXJlbWVudCkuICBJdGVtcyB3aG9zZSBrZXlzIHN0YXJ0IHdpdGggdGhlIHZhbHVlCiAgICAgICAgb2YgJ3ByZWZpeCcgd2lsbCBoYXZlIHRoYXQgcHJlZml4IHN0cmlwcGVkLCBhbmQgd2lsbCB0aGVuIGJlIHBhc3NlZCB0bwogICAgICAgIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAuCgogICAgOnBhcmFtIHByZWZpeDogUHJlZml4IHRvIG1h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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 19
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
base.cpython-312.pyc
126.90 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
characteristics.cpython-312.pyc
6.66 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
create.cpython-312.pyc
33.50 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
cursor.cpython-312.pyc
77.50 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
default.cpython-312.pyc
86.01 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
events.cpython-312.pyc
38.97 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
interfaces.cpython-312.pyc
97.25 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
mock.cpython-312.pyc
5.54 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
processors.cpython-312.pyc
1.24 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
reflection.cpython-312.pyc
78.40 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
result.cpython-312.pyc
89.07 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
row.cpython-312.pyc
17.01 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
strategies.cpython-312.pyc
539 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
url.cpython-312.pyc
33.58 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
util.cpython-312.pyc
6.46 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
_py_processors.cpython-312.pyc
4.37 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
_py_row.cpython-312.pyc
5.61 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
_py_util.cpython-312.pyc
2.11 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
2.20 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
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).