REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 44.39 KB
Close
/opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/util/__pycache__/langhelpers.cpython-37.pyc
Text
Base64
Qg0NCgAAAADDzDRdFboAAOMAAAAAAAAAAAAAAAAEAAAAQAAAAHMcAwAAZABaAGQBZAJsAW0CWgIBAGQBZANsA1oDZAFkA2wEWgRkAWQDbAVaBWQBZANsBloGZAFkA2wHWgdkAWQDbAhaCGQBZANsCVoJZAFkA2wKWgpkAWQDbAtaC2QEZAVsDG0NWg0BAGQEZAZsDG0OWg4BAGQHZAhsDG0PWg8BAGQJZAqEAFoQRwBkC2QMhABkDGURgwNaEmQNZA6EAFoTZA9kEIQAWhRkEWQShABaFWQTZBSEAFoWZBVkFoQAWhdkF2QYhABaGGQZZBqEAFoZRwBkG2QchABkHGURgwNaGmQdZB6EAFobZIpkH2QghAFaHGQhZCKEAFodZItkJGQlhAFaHmSMZCdkKIQBWh9kjWQpZCqEAVogZCtkLIQAWiFkLWQuhABaImSOZDBkMYQBWiNHAGQyZDOEAGQzZRGDA1okZDRkNYQAWiVkNmQ3hABaJmSPZDlkOoQBWidkO2Q8hABaKGSQZD1kPoQBWilHAGQ/ZECEAGRAZRGDA1oqZEFkQoQAWitHAGRDZESEAGREZRGDA1osRwBkRWRGhABkRmURgwNaLWSRZEdkSIQBWi5HAGRJZEqEAGRKZRGDA1ovZEtkTIQAWjBkTWROhABaMWRPZFCEAFoyZJJkUWRShAFaM2RTZFSEAFo0ZFVkVoQAWjVkk2RXZFiEAVo2ZFlkWoQAWjdkW2RchABaOEcAZF1kXoQAZF5lOYMDWjpHAGRfZGCEAGRgZRGDA1o7RwBkYWRihABkYmURgwNaPEcAZGNkZIQAZGRlPYMDWj5kZWU+Xz9HAGRmZGWEAGRlZRGDA1pAZARhQWRnZGiEAFpCZGlkaoQAWkNklGRsZG2EAVpERwBkbmRvhABkb2UOakWDA1pGZHBkcYQAWkdkcmRzhABaSGR0ZHWEAFpJZQegSmR2oQFaS2UHoEpkd6EBWkxlTGVLZgJkeGR5hAFaTWVOZAODAVpPZHpke4QAWlBHAGR8ZH2EAGR9ZU6DA1pRZH5kf4QAWlJkgGSBhABaU2SCZIOEAFpUZIRkhYQAWlVkhmSHhABaVmSIZImEAFpXZANTACmVeoVSb3V0aW5lcyB0byBoZWxwIHdpdGggdGhlIGNyZWF0aW9uLCBsb2FkaW5nIGFuZCBpbnRyb3NwZWN0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BHwAgwGDAX0FdAVqBn0GdAF8A3QCgwJyZHwEfQNuGnwDc3Z0A4MAfQN0BWoHfQZuCHQDfAODAX0DfAZ8BaAIfAShAXwDgwJyknwAUwB0AXwAdAmDAnPGfAZ0BWoHawhyqmQEcKxkBX0HdABkBnwAfAdkB6AKfAShAWYDFgCDAYIBRwBkCGQJhABkCXQLgwN9CHwBcuZkCnwBagwXAHwIXwx0A4MAfQl4YHQNfACDAUQAXVRcAn0KfQt8CnwEaweQAXIUdABkC3wKFgCDAYIBdA6gD3wLoQGQAXMwdABkDHwKfAtmAhYAgwGCAXQQfAh8CnQRfAuDAYMDAQB8CaASfAqhAQEAcfZXAHwGfAl8A4MCkAFyXnwIUwB0AGQNZAegCnwDfAkYAKEBFgCDAYIBZA5TACkPYY4FAABFbnN1cmUgYmFzaWMgaW50ZXJmYWNlIGNvbXBsaWFuY2UgZm9yIGFuIGluc3RhbmNlIG9yIGRpY3Qgb2YgY2FsbGFibGVzLgoKICAgIENoZWNrcyB0aGF0IGBgb2JqYGAgaW1wbGVtZW50cyBwdWJsaWMgbWV0aG9kcyBvZiBgYGNsc2BgIG9yIGhhcyBtZW1iZXJzCiAgICBsaXN0ZWQgaW4gYGBtZXRob2RzYGAuIElmIGBgcmVxdWlyZWRgYCBpcyBub3Qgc3VwcGxpZWQsIGltcGxlbWVudGluZyBhdAogICAgbGVhc3Qgb25lIGludGVyZmFjZSBtZXRob2QgaXMgc3VmZmljaWVudC4gTWV0aG9kcyBwcmVzZW50IG9uIGBgb2JqYGAgdGhhdAogICAgYXJlIG5vdCBpbiB0aGUgaW50ZXJmYWNlIGFyZSBpZ25vcmVkLgoKICAgIElmIGBgb2JqYGAgaXMgYSBkaWN0IGFuZCBgYGRpY3RgYCBkb2VzIG5vdCBtZWV0IHRoZSBpbnRlcmZhY2UKICAgIHJlcXVpcmVtZW50cywgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkgYXJlIGluc3BlY3RlZC4gS2V5cyBwcmVzZW50IGluCiAgICBgYG9iamBgIHRoYXQgYXJlIG5vdCBpbiB0aGUgaW50ZXJmYWNlIHdpbGwgcmFpc2UgVHlwZUVycm9ycy4KCiAgICBSYWlzZXMgVHlwZUVycm9yIGlmIGBgb2JqYGAgZG9lcyBub3QgbWVldCB0aGUgaW50ZXJmYWNlIGNyaXRlcmlhLgoKICAgIEluIGFsbCBwYXNzaW5nIGNhc2VzLCBhbiBvYmplY3Qgd2l0aCBjYWxsYWJsZSBtZW1iZXJzIGlzIHJldHVybmVkLiAgSW4gdGhlCiAgICBzaW1wbGUgY2FzZSwgYGBvYmpgYCBpcyByZXR1cm5lZCBhcy1pczsgaWYgZGljdCBwcm9jZXNzaW5nIGtpY2tzIGluIHRoZW4KICAgIGFuIGFub255bW91cyBjbGFzcyBpcyByZXR1cm5lZC4KCiAgICBvYmoKICAgICAgQSB0eXBlLCBpbnN0YW5jZSwgb3IgZGljdGlvbmFyeSBvZiBjYWxsYWJsZXMuCiAgICBjbHMKICAgICAgT3B0aW9uYWwsIGEgdHlwZS4gIEFsbCBwdWJsaWMgbWV0aG9kcyBvZiBjbHMgYXJlIGNvbnNpZGVyZWQgdGhlCiAgICAgIGludGVyZmFjZS4gIEFuIGBgb2JqYGAgaW5zdGFuY2Ugb2YgY2xzIHdpbGwgYWx3YXlzIHBhc3MsIGlnbm9yaW5nCiAgICAgIGBgcmVxdWlyZWRgYC4uCiAgICBtZXRob2RzCiAgICAgIE9wdGlvbmFsLCBhIHNlcXVlbmNlIG9mIG1ldGhvZCBuYW1lcyB0byBjb25zaWRlciBhcyB0aGUgaW50ZXJmYWNlLgogICAgcmVxdWlyZWQKICAgICAgT3B0aW9uYWwsIGEgc2VxdWVuY2Ugb2YgbWFuZGF0b3J5IGltcGxlbWVudGF0aW9ucy4gSWYgb21pdHRlZCwgYW4KICAgICAgYGBvYmpgYCB0aGF0IHByb3ZpZGVzIGF0IGxlYXN0IG9uZSBpbnRlcmZhY2UgbWV0aG9kIGlzIGNvbnNpZGVyZWQKICAgICAgc3VmZmljaWVudC4gIEFzIGEgY29udmVuaWVuY2UsIHJlcXVpcmVkIG1heSBiZSBhIHR5cGUsIGluIHdoaWNoIGNhc2UKICAgICAgYWxsIHB1YmxpYyBtZXRob2RzIG9mIHRoZSB0eXBlIGFyZSByZXF1aXJlZC4KCiAgICB6MmEgY2xhc3Mgb3IgY29sbGVjdGlvbiBvZiBtZXRob2QgbmFtZXMgYXJlIHJlcXVpcmVkYwEAAAAAAAAAAgAA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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 7
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
compat.cpython-37.pyc
9.90 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
deprecations.cpython-37.pyc
6.47 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
langhelpers.cpython-37.pyc
44.39 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
queue.cpython-37.pyc
5.79 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
topological.cpython-37.pyc
1.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_collections.cpython-37.pyc
36.55 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
5.04 KB
lrw-r--r--
2023-11-14 14:32:36
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).