From eaf7045714349a2ae6a6b1bca6626d2d13b32952 Mon Sep 17 00:00:00 2001 From: huangxiaolei <1782360262@qq.com> Date: Mon, 28 Nov 2022 18:14:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E5=8A=A0=E5=AF=86=E5=AF=86?= =?UTF-8?q?=E9=92=A5=E7=94=9F=E6=88=90=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/dispatch/application.toml | 3 + .../{static => key}/account_password_key.pem | 0 cmd/dispatch/{static => key}/dispatchKey.bin | Bin cmd/dispatch/{static => key}/dispatchSeed.bin | Bin .../{static => key}/region_enc_key_2.pem | 0 .../{static => key}/region_enc_key_3.pem | 0 .../{static => key}/region_enc_key_4.pem | 0 .../{static => key}/region_enc_key_5.pem | 0 .../{static => key}/region_sign_key.pem | 0 cmd/dispatch/{static => key}/secretKey.bin | Bin .../{static => key}/secretKeyBuffer.bin | 0 cmd/dispatch/static/29342328.blk | Bin 14103 -> 0 bytes cmd/dispatch/static/data_versions | 5 - cmd/dispatch/static/query_cur_region | 1 - cmd/dispatch/static/query_cur_region_key | 1 - cmd/dispatch/static/query_region_list | 1 - cmd/dispatch/static/query_region_list_key | 1 - cmd/dispatch/static/server.crt | 24 - cmd/dispatch/static/server.key | 27 - .../{static => key}/account_password_key.pem | 0 cmd/gate/{static => key}/dispatchKey.bin | Bin cmd/gate/{static => key}/dispatchSeed.bin | Bin cmd/gate/{static => key}/region_enc_key_2.pem | 0 cmd/gate/{static => key}/region_enc_key_3.pem | 0 cmd/gate/{static => key}/region_enc_key_4.pem | 0 cmd/gate/{static => key}/region_enc_key_5.pem | 0 cmd/gate/{static => key}/region_sign_key.pem | 0 cmd/gate/{static => key}/secretKey.bin | Bin cmd/gate/{static => key}/secretKeyBuffer.bin | 0 cmd/gate/static/.gitattributes | 1 - cmd/gate/static/query_cur_region | 1 - cmd/gate/static/query_cur_region_key | 1 - cmd/gate/static/query_region_list | 1 - cmd/gate/static/query_region_list_key | 1 - common/region/region.go | 109 +--- dispatch/app/app.go | 15 + dispatch/controller/auto_patch_controller.go | 40 -- dispatch/controller/controller.go | 8 - gate/forward/forward.go | 2 +- gate/mq/mq.go | 19 +- gate/net/kcp_connect_manager.go | 4 +- gs/dao/dao.go | 2 +- gs/mq/mq.go | 4 +- pkg/random/hk4e_ec2b.go | 179 ++++++ pkg/random/hk4e_magic.go | 521 ++++++++++++++++++ pkg/random/hk4e_mt19937.go | 91 +++ pkg/random/hk4e_test.go | 39 ++ 47 files changed, 877 insertions(+), 224 deletions(-) rename cmd/dispatch/{static => key}/account_password_key.pem (100%) rename cmd/dispatch/{static => key}/dispatchKey.bin (100%) rename cmd/dispatch/{static => key}/dispatchSeed.bin (100%) rename cmd/dispatch/{static => key}/region_enc_key_2.pem (100%) rename cmd/dispatch/{static => key}/region_enc_key_3.pem (100%) rename cmd/dispatch/{static => key}/region_enc_key_4.pem (100%) rename cmd/dispatch/{static => key}/region_enc_key_5.pem (100%) rename cmd/dispatch/{static => key}/region_sign_key.pem (100%) rename cmd/dispatch/{static => key}/secretKey.bin (100%) rename cmd/dispatch/{static => key}/secretKeyBuffer.bin (100%) delete mode 100644 cmd/dispatch/static/29342328.blk delete mode 100644 cmd/dispatch/static/data_versions delete mode 100644 cmd/dispatch/static/query_cur_region delete mode 100644 cmd/dispatch/static/query_cur_region_key delete mode 100644 cmd/dispatch/static/query_region_list delete mode 100644 cmd/dispatch/static/query_region_list_key delete mode 100644 cmd/dispatch/static/server.crt delete mode 100644 cmd/dispatch/static/server.key rename cmd/gate/{static => key}/account_password_key.pem (100%) rename cmd/gate/{static => key}/dispatchKey.bin (100%) rename cmd/gate/{static => key}/dispatchSeed.bin (100%) rename cmd/gate/{static => key}/region_enc_key_2.pem (100%) rename cmd/gate/{static => key}/region_enc_key_3.pem (100%) rename cmd/gate/{static => key}/region_enc_key_4.pem (100%) rename cmd/gate/{static => key}/region_enc_key_5.pem (100%) rename cmd/gate/{static => key}/region_sign_key.pem (100%) rename cmd/gate/{static => key}/secretKey.bin (100%) rename cmd/gate/{static => key}/secretKeyBuffer.bin (100%) delete mode 100644 cmd/gate/static/.gitattributes delete mode 100644 cmd/gate/static/query_cur_region delete mode 100644 cmd/gate/static/query_cur_region_key delete mode 100644 cmd/gate/static/query_region_list delete mode 100644 cmd/gate/static/query_region_list_key delete mode 100644 dispatch/controller/auto_patch_controller.go create mode 100644 pkg/random/hk4e_ec2b.go create mode 100644 pkg/random/hk4e_magic.go create mode 100644 pkg/random/hk4e_mt19937.go create mode 100644 pkg/random/hk4e_test.go diff --git a/cmd/dispatch/application.toml b/cmd/dispatch/application.toml index 45e0d354..aefd1239 100644 --- a/cmd/dispatch/application.toml +++ b/cmd/dispatch/application.toml @@ -11,3 +11,6 @@ track_line = true [database] url = "mongodb://mongo:27017" + +[mq] +nats_url = "nats://nats1:4222,nats://nats2:4222,nats://nats3:4222" diff --git a/cmd/dispatch/static/account_password_key.pem b/cmd/dispatch/key/account_password_key.pem similarity index 100% rename from cmd/dispatch/static/account_password_key.pem rename to cmd/dispatch/key/account_password_key.pem diff --git a/cmd/dispatch/static/dispatchKey.bin b/cmd/dispatch/key/dispatchKey.bin similarity index 100% rename from cmd/dispatch/static/dispatchKey.bin rename to cmd/dispatch/key/dispatchKey.bin diff --git a/cmd/dispatch/static/dispatchSeed.bin b/cmd/dispatch/key/dispatchSeed.bin similarity index 100% rename from cmd/dispatch/static/dispatchSeed.bin rename to cmd/dispatch/key/dispatchSeed.bin diff --git a/cmd/dispatch/static/region_enc_key_2.pem b/cmd/dispatch/key/region_enc_key_2.pem similarity index 100% rename from cmd/dispatch/static/region_enc_key_2.pem rename to cmd/dispatch/key/region_enc_key_2.pem diff --git a/cmd/dispatch/static/region_enc_key_3.pem b/cmd/dispatch/key/region_enc_key_3.pem similarity index 100% rename from cmd/dispatch/static/region_enc_key_3.pem rename to cmd/dispatch/key/region_enc_key_3.pem diff --git a/cmd/dispatch/static/region_enc_key_4.pem b/cmd/dispatch/key/region_enc_key_4.pem similarity index 100% rename from cmd/dispatch/static/region_enc_key_4.pem rename to cmd/dispatch/key/region_enc_key_4.pem diff --git a/cmd/dispatch/static/region_enc_key_5.pem b/cmd/dispatch/key/region_enc_key_5.pem similarity index 100% rename from cmd/dispatch/static/region_enc_key_5.pem rename to cmd/dispatch/key/region_enc_key_5.pem diff --git a/cmd/dispatch/static/region_sign_key.pem b/cmd/dispatch/key/region_sign_key.pem similarity index 100% rename from cmd/dispatch/static/region_sign_key.pem rename to cmd/dispatch/key/region_sign_key.pem diff --git a/cmd/dispatch/static/secretKey.bin b/cmd/dispatch/key/secretKey.bin similarity index 100% rename from cmd/dispatch/static/secretKey.bin rename to cmd/dispatch/key/secretKey.bin diff --git a/cmd/dispatch/static/secretKeyBuffer.bin b/cmd/dispatch/key/secretKeyBuffer.bin similarity index 100% rename from cmd/dispatch/static/secretKeyBuffer.bin rename to cmd/dispatch/key/secretKeyBuffer.bin diff --git a/cmd/dispatch/static/29342328.blk b/cmd/dispatch/static/29342328.blk deleted file mode 100644 index 4d51f76dc807c50aaf4f8e5e4b063fdbea171b8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14103 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 diff --git a/cmd/dispatch/static/data_versions b/cmd/dispatch/static/data_versions deleted file mode 100644 index 81d59d64..00000000 --- a/cmd/dispatch/static/data_versions +++ /dev/null @@ -1,5 +0,0 @@ -{"remoteName": "blocks/00/22551915.blk", "md5": "0cf3d6b599d443c7cfa4a3e6189a7757", "fileSize": 3184} -{"remoteName": "blocks/00/25060239.blk", "md5": "f3cf18d697e3380b2f833ccf2c7d4194", "fileSize": 3328} -{"remoteName": "blocks/00/29342328.blk", "md5": "3b8e2c23e33ce92f68e40196c574ae94", "fileSize": 14103} -{"remoteName": "blocks/00/32070509.blk", "md5": "4bf2a81d7565301269d1c90e14393045", "fileSize": 698} -{"remoteName": "blocks/00/33067900.blk", "md5": "0b4d781c1633537d2fa4b4f0f567d2ca", "fileSize": 454} diff --git a/cmd/dispatch/static/query_cur_region b/cmd/dispatch/static/query_cur_region deleted file mode 100644 index 9823a433..00000000 --- a/cmd/dispatch/static/query_cur_region +++ /dev/null @@ -1 +0,0 @@ -GpkdCg00Ny4yNTMuNDMuMTA2ENasARoraHR0cHM6Ly9vc3VzYW9hc2VydmVyLnl1YW5zaGVuLmNvbS9yZWNoYXJnZToDVVNBQjlodHRwczovL2F1dG9wYXRjaGhrLnl1YW5zaGVuLmNvbS9jbGllbnRfZ2FtZV9yZXMvMi42X2xpdmVKPGh0dHBzOi8vYXV0b3BhdGNoaGsueXVhbnNoZW4uY29tL2NsaWVudF9kZXNpZ25fZGF0YS8yLjZfbGl2ZVKSAWh0dHBzOi8vd2Vic3RhdGljLXNlYS5ob3lvdmVyc2UuY29tL3lzL2V2ZW50L2ltLXNlcnZpY2UvaW5kZXguaHRtbD9pbV9vdXQ9ZmFsc2Umc2lnbl90eXBlPTImYXV0aF9hcHBpZD1pbV9jY3MmYXV0aGtleV92ZXI9MSZ3aW5fZGlyZWN0aW9uPXBvcnRyYWl0YggyLjZfbGl2ZXDZ7JoDkAGJxKoDmgFceyJyZW1vdGVOYW1lIjogImRhdGFfdmVyc2lvbnMiLCAibWQ1IjogIjFhNDQ1YWU0OGZiZGJlMDM4MzEyYmU4NjhmMjgxM2QyIiwgImZpbGVTaXplIjogNDQxNX2iAVt7InJlbW90ZU5hbWUiOiAiZGF0YV92ZXJzaW9ucyIsICJtZDUiOiAiZjY0NmZlY2FjMTA3ZDNlN2ZiNDdjOTA4OTIwMmQzZmYiLCAiZmlsZVNpemUiOiA1MTR9sgGBBgi9t5kDGuAFeyJyZW1vdGVOYW1lIjogInJlc192ZXJzaW9uc19leHRlcm5hbCIsICJtZDUiOiAiOWYwOTJjYTEzMDY3Y2FlNDMxMzQ5M2VlZDNkM2U5YWUiLCAiZmlsZVNpemUiOiA1MjY5NjZ9DQp7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX21lZGl1bSIsICJtZDUiOiAiN2M5NDJlNzA0YTgwNGMyMTIyZmM2M2VlOTI4ZTcxNDgiLCAiZmlsZVNpemUiOiAyODU1NTB9DQp7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX3N0cmVhbWluZyIsICJtZDUiOiAiZTM1ZjZkODUzZDA0Y2UwMjJhYzdjMzZkNDNmNDBlN2MiLCAiZmlsZVNpemUiOiAxMjIwMzZ9DQp7InJlbW90ZU5hbWUiOiAicmVsZWFzZV9y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 \ No newline at end of file diff --git a/cmd/dispatch/static/query_cur_region_key b/cmd/dispatch/static/query_cur_region_key deleted file mode 100644 index ddef1aff..00000000 --- a/cmd/dispatch/static/query_cur_region_key +++ /dev/null @@ -1 +0,0 @@ -GpgdCgo4LjIwOS42Ni4xENWsARosaHR0cHM6Ly9vc2V1cm9vYXNlcnZlci55dWFuc2hlbi5jb20vcmVjaGFyZ2U6BGV1cm9COWh0dHBzOi8vYXV0b3BhdGNoaGsueXVhbnNoZW4uY29tL2NsaWVudF9nYW1lX3Jlcy8yLjZfbGl2ZUo8aHR0cHM6Ly9hdXRvcGF0Y2hoay55dWFuc2hlbi5jb20vY2xpZW50X2Rlc2lnbl9kYXRhLzIuNl9saXZlUpIBaHR0cHM6Ly93ZWJzdGF0aWMtc2VhLmhveW92ZXJzZS5jb20veXMvZXZlbnQvaW0tc2VydmljZS9pbmRleC5odG1sP2ltX291dD1mYWxzZSZzaWduX3R5cGU9MiZhdXRoX2FwcGlkPWltX2NjcyZhdXRoa2V5X3Zlcj0xJndpbl9kaXJlY3Rpb249cG9ydHJhaXRiCDIuNl9saXZlcNnsmgOQAdnsmgOaAVx7InJlbW90ZU5hbWUiOiAiZGF0YV92ZXJzaW9ucyIsICJtZDUiOiAiMWE0NDVhZTQ4ZmJkYmUwMzgzMTJiZTg2OGYyODEzZDIiLCAiZmlsZVNpemUiOiA0NDE1faIBW3sicmVtb3RlTmFtZSI6ICJkYXRhX3ZlcnNpb25zIiwgIm1kNSI6ICIxNzU0MmM3YmJhYzQ5YjkxMWRlMjlhOTYyNzU0YmQ2MSIsICJmaWxlU2l6ZSI6IDUxNH2yAYEGCL23mQMa4AV7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX2V4dGVybmFsIiwgIm1kNSI6ICI5ZjA5MmNhMTMwNjdjYWU0MzEzNDkzZWVkM2QzZTlhZSIsICJmaWxlU2l6ZSI6IDUyNjk2Nn0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfbWVkaXVtIiwgIm1kNSI6ICI3Yzk0MmU3MDRhODA0YzIxMjJmYzYzZWU5MjhlNzE0OCIsICJmaWxlU2l6ZSI6IDI4NTU1MH0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfc3RyZWFtaW5nIiwgIm1kNSI6ICJlMzVmNmQ4NTNkMDRjZTAyMmFjN2MzNmQ0M2Y0MGU3YyIsICJmaWxlU2l6ZSI6IDEyMjAzNn0NCnsicmVtb3RlTmFtZSI6ICJyZWxlYXNlX3Jl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 \ No newline at end of file diff --git a/cmd/dispatch/static/query_region_list b/cmd/dispatch/static/query_region_list deleted file mode 100644 index b4681aaa..00000000 --- a/cmd/dispatch/static/query_region_list +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/cmd/dispatch/static/query_region_list_key b/cmd/dispatch/static/query_region_list_key deleted file mode 100644 index b4681aaa..00000000 --- a/cmd/dispatch/static/query_region_list_key +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/cmd/dispatch/static/server.crt b/cmd/dispatch/static/server.crt deleted file mode 100644 index 7ff94003..00000000 --- a/cmd/dispatch/static/server.crt +++ /dev/null @@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID8zCCAtugAwIBAgIUYL/dZNSITnL3uvCDT62CVzoHeKMwDQYJKoZIhvcNAQEL -BQAwgYgxCzAJBgNVBAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTERMA8GA1UEBwwI -U2hhbmdoYWkxDzANBgNVBAoMBmZsc3dsZDEPMA0GA1UECwwGZmxzd2xkMQ8wDQYD -VQQDDAZmbHN3bGQxIDAeBgkqhkiG9w0BCQEWEWZsc3dsZEBmbHN3bGQuY29tMB4X -DTIyMDQyNjE3MjYwN1oXDTMyMDQyMzE3MjYwN1owgYgxCzAJBgNVBAYTAkNOMREw -DwYDVQQIDAhTaGFuZ2hhaTERMA8GA1UEBwwIU2hhbmdoYWkxDzANBgNVBAoMBmZs -c3dsZDEPMA0GA1UECwwGZmxzd2xkMQ8wDQYDVQQDDAZmbHN3bGQxIDAeBgkqhkiG -9w0BCQEWEWZsc3dsZEBmbHN3bGQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAp4bjl/JavfVApTELsgNhGxwlXY+Z4SoVz8a+KVogdZf0fdMt62ob -YMwg7mg9r5dUmfvfvHhtFjCjviR+sKkS6Dgfc+xwS2ap4DWNwk/7kpmDr/QYTqb9 -XO8kUAQ+zPxU0rfPE8KbdCvTlTh4opCMWde8C3BvWExNcKBgb132pHlZNwJTDs7G -laa1T9aSoDz+I9qb91acKnWsDm9NumQ86L1pJgZ+DylzBkVAwTHbMgURLM6hGGmW -RHaYKOnHb/s91YxgO1pN56IL6M2tZQuydt8pMC1Tt3z8yZR2nqAPVvF3j0U1Xh2+ -X9iKL9zAsCXgw+nQt/s9QWFP70Pr95hQ8wIDAQABo1MwUTAdBgNVHQ4EFgQU0HwJ -oRLZWEVg9itEpy1VI04MefkwHwYDVR0jBBgwFoAU0HwJoRLZWEVg9itEpy1VI04M -efkwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAK2vphvnVGONT -GBdb8khlPGVf+2caAy5+LrgxX77wQy4aRO//e8r040awzkhN4C8eC2ozGLifzTKy -zxNKWNp163c4v2i0PGx4gdAS7yfLMklUndntiV/uPdk4jZ7Vr4eTciN+Sf0FdUUR -K7tpq0HNHrI6q+29B8Eq1ClkBYAmJqnHllu1EmpNReXkPOOaadpv2pjoJDmIWumI -wCKs4uGZburgX9jBsFHuyRDYOkG+1OGL4zKZClMuEFNodOa3zm4WrBPzWM3WOBZ9 -uHLCXkRnce192OopnaytxEEoxuKCQ3lQZzrcuoz1wRfczTBh2pUU4YR1L6oBNuG+ -oC9MpDAcmw== ------END CERTIFICATE----- diff --git a/cmd/dispatch/static/server.key b/cmd/dispatch/static/server.key deleted file mode 100644 index 7da9b006..00000000 --- a/cmd/dispatch/static/server.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAp4bjl/JavfVApTELsgNhGxwlXY+Z4SoVz8a+KVogdZf0fdMt -62obYMwg7mg9r5dUmfvfvHhtFjCjviR+sKkS6Dgfc+xwS2ap4DWNwk/7kpmDr/QY -Tqb9XO8kUAQ+zPxU0rfPE8KbdCvTlTh4opCMWde8C3BvWExNcKBgb132pHlZNwJT -Ds7Glaa1T9aSoDz+I9qb91acKnWsDm9NumQ86L1pJgZ+DylzBkVAwTHbMgURLM6h -GGmWRHaYKOnHb/s91YxgO1pN56IL6M2tZQuydt8pMC1Tt3z8yZR2nqAPVvF3j0U1 -Xh2+X9iKL9zAsCXgw+nQt/s9QWFP70Pr95hQ8wIDAQABAoIBAD7rNHOO/HG3uO3R -+9iB2Gi8K3R2SI7+pW6B8E3LocFIrvTK6cYu9dVnFT81O2XFamri5Gb+u8nHvtfd -EQ/8kDNTUMzTEmHfTxH8Sx+dtpiau5DMFo0Dvsi2sGa1EXkflCQIEOgVARmilDbJ -HNXBgFUF54RMWCVLkxInydBJ9CZVKUVgN5xmUTnLOEINbcn3V8d2aLwSYjECW5Gm -22QzrA05dKvmc6Io776Sc2fNDnJHTkHMrxH+kQ+c2jnHLWvdMb3aCJh/4JDAF/Iq -CZ6EsXBBYJ7C3ZRMata3LEgGU44L2oOZpUcd+RNldcvaBN8T86hxiyHddC9DC+AE -+svJIgECgYEA3H2EBQeVDjJ6PGE/elHJwRyWWtb9xxd7hbJkDfqw+SMEX2pYKnf5 -tftXKbPY+U09Sm78Mbdac7W+O7IfD1e00/EDIcjdmq4S2CMGNtQ4GQxfxsFzg2LH -ujtVtx/xuvCNQbgNOEXl+/127AQpSDkhPxD2Tm1WoH72UXS82Ydq9HMCgYEAwoHF -ucrscqPRsg9AVb0UbecbJjRjQD+BudGmOkm0d/QCsjANRJYpSoQ9jP39uqYWlh4f -JAe+H89UWdDTVtFWL14+//nLNqPeCAu70RYt+xajvGAWUCRYaZvECBQW5stzHnHv -p2LG6TSyRbs10vBHxSkxgDe1Ng5+7jjJe09KkYECgYASu5c71ikTy7YW6yw5eDlr -7sHXdeyZvaUA9ucJSQNAJ3l3odFbylWs4G3HXUBR7f4HFObYUnuc2RQQflGlPA5g -81kQxcAOJDv1oQQmJGGfvy1j9Yua3gmaCPB/XndrKoTV0I1O+qFPh3lTFAdt22y3 -rvk+MIvrlt3WjdR9psOvgQKBgGOvhtq1uYD3nJ0ZW+uVQEcjTrLB3qwq4B2P6RWu -eKORl2AjaGliXD8ojzMXaVajkKfXQDaDEVnUNHLjp6yzFOyp7LfcGd4jFcQh31xF -dcNd0wTUahsgxX86qblKMoKOeq17z0uGQFN9AnDiha9aHi5Z8li4NFNEEqGc0QY1 -mQ4BAoGALmY+k+sL3jdjZ7XwJTuCfPka/UQP32osWzZMCvalts5I73Osyr9+o3sC -gptDMTOmUIh6xxY2pshM6i6etKgyDA7r9utUe+w6pvMIrDG1uZva/2oj0jzQrRq5 -X9F3C/MJVMcVSI6Uk+rvBb8QtltKovbN/JX+nlKrIp2FDNuj8zg= ------END RSA PRIVATE KEY----- diff --git a/cmd/gate/static/account_password_key.pem b/cmd/gate/key/account_password_key.pem similarity index 100% rename from cmd/gate/static/account_password_key.pem rename to cmd/gate/key/account_password_key.pem diff --git a/cmd/gate/static/dispatchKey.bin b/cmd/gate/key/dispatchKey.bin similarity index 100% rename from cmd/gate/static/dispatchKey.bin rename to cmd/gate/key/dispatchKey.bin diff --git a/cmd/gate/static/dispatchSeed.bin b/cmd/gate/key/dispatchSeed.bin similarity index 100% rename from cmd/gate/static/dispatchSeed.bin rename to cmd/gate/key/dispatchSeed.bin diff --git a/cmd/gate/static/region_enc_key_2.pem b/cmd/gate/key/region_enc_key_2.pem similarity index 100% rename from cmd/gate/static/region_enc_key_2.pem rename to cmd/gate/key/region_enc_key_2.pem diff --git a/cmd/gate/static/region_enc_key_3.pem b/cmd/gate/key/region_enc_key_3.pem similarity index 100% rename from cmd/gate/static/region_enc_key_3.pem rename to cmd/gate/key/region_enc_key_3.pem diff --git a/cmd/gate/static/region_enc_key_4.pem b/cmd/gate/key/region_enc_key_4.pem similarity index 100% rename from cmd/gate/static/region_enc_key_4.pem rename to cmd/gate/key/region_enc_key_4.pem diff --git a/cmd/gate/static/region_enc_key_5.pem b/cmd/gate/key/region_enc_key_5.pem similarity index 100% rename from cmd/gate/static/region_enc_key_5.pem rename to cmd/gate/key/region_enc_key_5.pem diff --git a/cmd/gate/static/region_sign_key.pem b/cmd/gate/key/region_sign_key.pem similarity index 100% rename from cmd/gate/static/region_sign_key.pem rename to cmd/gate/key/region_sign_key.pem diff --git a/cmd/gate/static/secretKey.bin b/cmd/gate/key/secretKey.bin similarity index 100% rename from cmd/gate/static/secretKey.bin rename to cmd/gate/key/secretKey.bin diff --git a/cmd/gate/static/secretKeyBuffer.bin b/cmd/gate/key/secretKeyBuffer.bin similarity index 100% rename from cmd/gate/static/secretKeyBuffer.bin rename to cmd/gate/key/secretKeyBuffer.bin diff --git a/cmd/gate/static/.gitattributes b/cmd/gate/static/.gitattributes deleted file mode 100644 index 741c0a20..00000000 --- a/cmd/gate/static/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* binary \ No newline at end of file diff --git a/cmd/gate/static/query_cur_region b/cmd/gate/static/query_cur_region deleted file mode 100644 index 9823a433..00000000 --- a/cmd/gate/static/query_cur_region +++ /dev/null @@ -1 +0,0 @@ -GpkdCg00Ny4yNTMuNDMuMTA2ENasARoraHR0cHM6Ly9vc3VzYW9hc2VydmVyLnl1YW5zaGVuLmNvbS9yZWNoYXJnZToDVVNBQjlodHRwczovL2F1dG9wYXRjaGhrLnl1YW5zaGVuLmNvbS9jbGllbnRfZ2FtZV9yZXMvMi42X2xpdmVKPGh0dHBzOi8vYXV0b3BhdGNoaGsueXVhbnNoZW4uY29tL2NsaWVudF9kZXNpZ25fZGF0YS8yLjZfbGl2ZVKSAWh0dHBzOi8vd2Vic3RhdGljLXNlYS5ob3lvdmVyc2UuY29tL3lzL2V2ZW50L2ltLXNlcnZpY2UvaW5kZXguaHRtbD9pbV9vdXQ9ZmFsc2Umc2lnbl90eXBlPTImYXV0aF9hcHBpZD1pbV9jY3MmYXV0aGtleV92ZXI9MSZ3aW5fZGlyZWN0aW9uPXBvcnRyYWl0YggyLjZfbGl2ZXDZ7JoDkAGJxKoDmgFceyJyZW1vdGVOYW1lIjogImRhdGFfdmVyc2lvbnMiLCAibWQ1IjogIjFhNDQ1YWU0OGZiZGJlMDM4MzEyYmU4NjhmMjgxM2QyIiwgImZpbGVTaXplIjogNDQxNX2iAVt7InJlbW90ZU5hbWUiOiAiZGF0YV92ZXJzaW9ucyIsICJtZDUiOiAiZjY0NmZlY2FjMTA3ZDNlN2ZiNDdjOTA4OTIwMmQzZmYiLCAiZmlsZVNpemUiOiA1MTR9sgGBBgi9t5kDGuAFeyJyZW1vdGVOYW1lIjogInJlc192ZXJzaW9uc19leHRlcm5hbCIsICJtZDUiOiAiOWYwOTJjYTEzMDY3Y2FlNDMxMzQ5M2VlZDNkM2U5YWUiLCAiZmlsZVNpemUiOiA1MjY5NjZ9DQp7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX21lZGl1bSIsICJtZDUiOiAiN2M5NDJlNzA0YTgwNGMyMTIyZmM2M2VlOTI4ZTcxNDgiLCAiZmlsZVNpemUiOiAyODU1NTB9DQp7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX3N0cmVhbWluZyIsICJtZDUiOiAiZTM1ZjZkODUzZDA0Y2UwMjJhYzdjMzZkNDNmNDBlN2MiLCAiZmlsZVNpemUiOiAxMjIwMzZ9DQp7InJlbW90ZU5hbWUiOiAicmVsZWFzZV9y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 \ No newline at end of file diff --git a/cmd/gate/static/query_cur_region_key b/cmd/gate/static/query_cur_region_key deleted file mode 100644 index ddef1aff..00000000 --- a/cmd/gate/static/query_cur_region_key +++ /dev/null @@ -1 +0,0 @@ -GpgdCgo4LjIwOS42Ni4xENWsARosaHR0cHM6Ly9vc2V1cm9vYXNlcnZlci55dWFuc2hlbi5jb20vcmVjaGFyZ2U6BGV1cm9COWh0dHBzOi8vYXV0b3BhdGNoaGsueXVhbnNoZW4uY29tL2NsaWVudF9nYW1lX3Jlcy8yLjZfbGl2ZUo8aHR0cHM6Ly9hdXRvcGF0Y2hoay55dWFuc2hlbi5jb20vY2xpZW50X2Rlc2lnbl9kYXRhLzIuNl9saXZlUpIBaHR0cHM6Ly93ZWJzdGF0aWMtc2VhLmhveW92ZXJzZS5jb20veXMvZXZlbnQvaW0tc2VydmljZS9pbmRleC5odG1sP2ltX291dD1mYWxzZSZzaWduX3R5cGU9MiZhdXRoX2FwcGlkPWltX2NjcyZhdXRoa2V5X3Zlcj0xJndpbl9kaXJlY3Rpb249cG9ydHJhaXRiCDIuNl9saXZlcNnsmgOQAdnsmgOaAVx7InJlbW90ZU5hbWUiOiAiZGF0YV92ZXJzaW9ucyIsICJtZDUiOiAiMWE0NDVhZTQ4ZmJkYmUwMzgzMTJiZTg2OGYyODEzZDIiLCAiZmlsZVNpemUiOiA0NDE1faIBW3sicmVtb3RlTmFtZSI6ICJkYXRhX3ZlcnNpb25zIiwgIm1kNSI6ICIxNzU0MmM3YmJhYzQ5YjkxMWRlMjlhOTYyNzU0YmQ2MSIsICJmaWxlU2l6ZSI6IDUxNH2yAYEGCL23mQMa4AV7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX2V4dGVybmFsIiwgIm1kNSI6ICI5ZjA5MmNhMTMwNjdjYWU0MzEzNDkzZWVkM2QzZTlhZSIsICJmaWxlU2l6ZSI6IDUyNjk2Nn0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfbWVkaXVtIiwgIm1kNSI6ICI3Yzk0MmU3MDRhODA0YzIxMjJmYzYzZWU5MjhlNzE0OCIsICJmaWxlU2l6ZSI6IDI4NTU1MH0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfc3RyZWFtaW5nIiwgIm1kNSI6ICJlMzVmNmQ4NTNkMDRjZTAyMmFjN2MzNmQ0M2Y0MGU3YyIsICJmaWxlU2l6ZSI6IDEyMjAzNn0NCnsicmVtb3RlTmFtZSI6ICJyZWxlYXNlX3Jl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 \ No newline at end of file diff --git a/cmd/gate/static/query_region_list b/cmd/gate/static/query_region_list deleted file mode 100644 index b4681aaa..00000000 --- a/cmd/gate/static/query_region_list +++ /dev/null @@ -1 +0,0 @@ -ElIKBm9zX3VzYRIHQW1lcmljYRoKREVWX1BVQkxJQyIzaHR0cHM6Ly9vc3VzYWRpc3BhdGNoLnl1YW5zaGVuLmNvbS9xdWVyeV9jdXJfcmVnaW9uElMKB29zX2V1cm8SBkV1cm9wZRoKREVWX1BVQkxJQyI0aHR0cHM6Ly9vc2V1cm9kaXNwYXRjaC55dWFuc2hlbi5jb20vcXVlcnlfY3VyX3JlZ2lvbhJRCgdvc19hc2lhEgRBc2lhGgpERVZfUFVCTElDIjRodHRwczovL29zYXNpYWRpc3BhdGNoLnl1YW5zaGVuLmNvbS9xdWVyeV9jdXJfcmVnaW9uElUKBm9zX2NodBIKVFcsIEhLLCBNTxoKREVWX1BVQkxJQyIzaHR0cHM6Ly9vc2NodGRpc3BhdGNoLnl1YW5zaGVuLmNvbS9xdWVyeV9jdXJfcmVnaW9uKpwQRWMyYhAAAABbrAvbhfIRHfaSCN24qQyVAAgAAMs68ZiMdPfEj41O2wBCYqGiC/WdovvJvaw4t3/m1zIYDrt3/ftK9GKFb7C+2E8FmaHqOnwjJYBg2wI1sXpGmuSxkeWw8Avr36wlNtQjhXNV9zoNKstuZYuheyLlpbPRbYZ3UA6/BzTVsjIhjR1lcqFrigQnpV6MgRR9KqxakCaffK6qIzMlodx4ZPKlqseQhCiyVAvLWQSRqCRcZipzotXsmgLQbpDFtRzhgukXPjfW5dAlzMwswPuu7ZQsf1AKipI34dVQLu6gtXthGgbjn89h/79VR5AokLCPGqIV7/2s+gHfykrjDtyp5rwCcmGQqwV3gHy5LGrHl8Zm12jNd7Qcng51ydqtX4xzet6J2iMF6Dw5nPd/hTyxn+i3Ttk6fop9rbCq3iNgEw3+0cSDal1I1ThYdVnMgPhZgQkZc5/SpTaR+8vfDzRIKbSSrrPSEgLnQvWZOOugXhNdyuiaBc8rJveno7vvktmnhDUF3xWi6osj75j2KghRrdHfDR3Zuh4COrGZDRBSKHft2AvfrxaMT9O8hPzzzYk0U2iicVCDlNP/8wqaT9Vqt1kHmruLxqh377iyp0mxKfNt0+SNRzLyRoyvOar/z3AT6TU9LRoCFrkcJpVsUN+2MVeT52PfMbv5O/Nw9sqsFDlofCJJ/EknY0wDc+tNarYOhDM67/ojn/p6W3ZPBJxb2wcF1TOh9dpAeZdCGJusqhMIj5lpoW8nENTFhkEgMUv2Lh5Z6WpeOAKAu9eDpBMhlRNCccDaNYUgo6TdVDtWxtPrS3NRYqtkvb2I2SEFP0apht954oKdG3ncxyOgHRUkwgtxbCMAngzWo9+VWV3H3OlqeEOv7DdO2o0y95EvlHYb/qtosXPI2jC+6FPa+yl4xmLqcENRTUrU23dsmX3SyBEmZvML4dNeyC53B+mh7DUFtPFJFndxj2tGO9mTSDgy8eCmKG90AiJOMoxaLB2HpnDXN1sTiIcd3WraiE6ZCt4E54hKXvXHPyN52CHkxq1y/TeXHEq4X4MyHyDSRLHmzVs9pnwHM0ZLthKFNyvGfTvjiYokAWtNEuh74syt+m6Wietb6JvgibnnDj6uFKI3BbH4GUT9blsnMgug323bJ6bFvV4iESvz1fNnnUSokWQy5+fWzxPDohULgFzhDCpwov78Bp0E3t6DXSWnrUdNqpLbYKmXO1Hdbn+QH4B90p85UB1V5eSZgxPpUvZbIO4GPScil8K+dkDLdsFa1zypWNmlUN0Ns5H/iuzMuJql2QFYz+SnV1R1T+qywwqCNP9oswcLiAR3XnSacs52vd3PI9+0PZuoF6tVMWlvutsQ34IFZaAwIkdKigZcHumLBt/0KyFASBfN674n8FnHrHOQHU6oCeXkQA9kC8MtkvMb7fOLdzbTsD6SVojzZ64i9mDXxF+iLR9o52OxjIFzwLGRy/ivT/aAnHLZ3AsbnvslDjlQl2ADBFvf7xjmvFu0xlfK58TUpfVEkScFFapWJyKVybB4CRz1wKKz6n/a9581LpCVOWRsJa5p+j0zYcS2PfhmRf3RzwsDHeBjEVlIARbhxNKvmjdZyIidSdMMcsJHDRLE3bvo9kKfag0vRVKmuPLPc9FrACsz3vlkApcVQvzieHWoiP+foEvfj9+7Ti2tLfKdzVkMUmugZiZ46+7PKvIciiiuBPlyld0CCPTtTFHUOMO5dUfrUblX8K3awWiaNQFBS0J3iK08t1bgWfLhsKzsS32fRWugaqecwO9Rji9oHn+UuN8Nz9SgNxodroq9q7y/KHFxbqjCl62g25HN9zUa/s5wnIRwVAiWgTuOe3qGqjwp5m/GR8YVSSK/8mV9EL4AaF8d1uifdVA6wWSH1e/1UB8vcdU83P8ne3u1ho+Y/57WB7KnQaGaiD/108+wiAxNqMb2ex8on01VxdLKV1makXV3gzsvWaRevW8t/K11ZwYfo9g+guWADsA0JO0jWooiaupq1kNWrEheBdSRXBO7Jnb+56cTjPGwLpp7ZOHe/bSCJ4MGzPF3lK66LXhVo+rxvNjhoKVRjhGYxN4T8+AiRo3r+1KwdIGSrtODp3ri3JWAy6Eajp1Ukp9GaCbHSJFnYml84nKew7zLLe//ExQpjd4QAjMTvnbm+Ff6a1jf69QEVo0I33gI7/buwqgjiuvjeL6EYaMolKrKlHZHf/HwWbFbdID8T9aoyZJuCUd6YHaMPRAS6n5nvTwkRLlJ/f6wgyypUGZ22Bb1qGIb9SoPgSgIJkifUoewQW2EexqfoAsHXJVABLy+jp/SC4xzHZOSh42zU1k80HIgrnSOmu6T56F6gqy4Y2cZuZU8LXbO/01u8ifEz8yaXfEFSFdxE0TWl92OLKFtJZr9nNOBQQQr5FDGf6zB1/0CziG/5+PrUDgG3irzho6+7wXkc2CpxlBKOLWdjs3V/Lab6cURz1QZY4HYgUkJtm4U5OKUeO2+murlhC7SrnwyUtGrsD8NbCmI4SRHKPoeLBJQO/m3dRze5Ltr8N9IS7/ukPeOYe1O2agrmhH/JjYfz/l8Gmq8PGY+oavYp8I+2yKvGLD9kCxEgKcTeRh9AW/xPTLGsacrGKQCY+M76DfyLKxCZDiDY9xkBIKchxsMsn7FqZvRMMyJBHbqa3AKQyAN73NCSuFF5f1qDjARU/xqJFhOaKoR64c78oqh1GqOqEFbfNQIRw6WeFCGyW6v6p10uLdR7KXnR7+wub9aG992MpIBk0+gru74yO/WcA0vLdDEQIBwc+M0lmLB53ylsPtde3nliaC5ROHR1IS4LO8Q+3o0BHMr0my0bqFwwCAvZVXOFBHxXyUgrrmUTnZYVSQXNV6+MALBmmRU5yOzhhyHoEdj9YHZeyPpZkYc6DkJWCRYbFfmczNIs133KB9rlfug40w/hHa8pXyRyLaKQUMIUYEvt3Y4AQ== \ No newline at end of file diff --git a/cmd/gate/static/query_region_list_key b/cmd/gate/static/query_region_list_key deleted file mode 100644 index b4681aaa..00000000 --- a/cmd/gate/static/query_region_list_key +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/common/region/region.go b/common/region/region.go index 360f7105..007ff881 100644 --- a/common/region/region.go +++ b/common/region/region.go @@ -1,33 +1,30 @@ package region import ( - "encoding/base64" "os" "hk4e/pkg/endec" "hk4e/pkg/logger" "hk4e/protocol/proto" - - pb "google.golang.org/protobuf/proto" ) func LoadRsaKey() (signRsaKey []byte, encRsaKeyMap map[string][]byte, pwdRsaKey []byte) { var err error = nil encRsaKeyMap = make(map[string][]byte) - signRsaKey, err = os.ReadFile("static/region_sign_key.pem") + signRsaKey, err = os.ReadFile("key/region_sign_key.pem") if err != nil { logger.LOG.Error("open region_sign_key.pem error: %v", err) return nil, nil, nil } encKeyIdList := []string{"2", "3", "4", "5"} for _, v := range encKeyIdList { - encRsaKeyMap[v], err = os.ReadFile("static/region_enc_key_" + v + ".pem") + encRsaKeyMap[v], err = os.ReadFile("key/region_enc_key_" + v + ".pem") if err != nil { - logger.LOG.Error("open region_enc_key_3.pem error: %v", err) + logger.LOG.Error("open region_enc_key_"+v+".pem error: %v", err) return nil, nil, nil } } - pwdRsaKey, err = os.ReadFile("static/account_password_key.pem") + pwdRsaKey, err = os.ReadFile("key/account_password_key.pem") if err != nil { logger.LOG.Error("open account_password_key.pem error: %v", err) return nil, nil, nil @@ -36,12 +33,12 @@ func LoadRsaKey() (signRsaKey []byte, encRsaKeyMap map[string][]byte, pwdRsaKey } func InitRegion(kcpAddr string, kcpPort int) (*proto.QueryCurrRegionHttpRsp, *proto.QueryRegionListHttpRsp) { - dispatchKey, err := os.ReadFile("static/dispatchKey.bin") + dispatchKey, err := os.ReadFile("key/dispatchKey.bin") if err != nil { logger.LOG.Error("open dispatchKey.bin error: %v", err) return nil, nil } - dispatchSeed, err := os.ReadFile("static/dispatchSeed.bin") + dispatchSeed, err := os.ReadFile("key/dispatchSeed.bin") if err != nil { logger.LOG.Error("open dispatchSeed.bin error: %v", err) return nil, nil @@ -81,97 +78,3 @@ func InitRegion(kcpAddr string, kcpPort int) (*proto.QueryCurrRegionHttpRsp, *pr regionList.EnableLoginPc = true return regionCurr, regionList } - -// 新的region构建方式已经不需要读取query_region_list和query_cur_region文件了 并跳过了版本校验的blk补丁下载 -func _InitRegion(log *logger.Logger, kcpAddr string, kcpPort int) (*proto.QueryCurrRegionHttpRsp, *proto.QueryRegionListHttpRsp) { - // TODO 总有一天要把这些烦人的数据全部自己构造别再他妈的读文件了 - // 加载文件 - regionListKeyFile, err := os.ReadFile("static/query_region_list_key") - if err != nil { - log.Error("open query_region_list_key error") - return nil, nil - } - regionCurrKeyFile, err := os.ReadFile("static/query_cur_region_key") - if err != nil { - log.Error("open query_cur_region_key error") - return nil, nil - } - regionListFile, err := os.ReadFile("static/query_region_list") - if err != nil { - log.Error("open query_region_list error") - return nil, nil - } - regionCurrFile, err := os.ReadFile("static/query_cur_region") - if err != nil { - log.Error("open query_cur_region error") - return nil, nil - } - regionListKeyBin, err := base64.StdEncoding.DecodeString(string(regionListKeyFile)) - if err != nil { - log.Error("decode query_region_list_key error") - return nil, nil - } - regionCurrKeyBin, err := base64.StdEncoding.DecodeString(string(regionCurrKeyFile)) - if err != nil { - log.Error("decode query_cur_region_key error") - return nil, nil - } - regionListBin, err := base64.StdEncoding.DecodeString(string(regionListFile)) - if err != nil { - log.Error("decode query_region_list error") - return nil, nil - } - regionCurrBin, err := base64.StdEncoding.DecodeString(string(regionCurrFile)) - if err != nil { - log.Error("decode query_cur_region error") - return nil, nil - } - regionListKey := new(proto.QueryRegionListHttpRsp) - err = pb.Unmarshal(regionListKeyBin, regionListKey) - if err != nil { - log.Error("Unmarshal QueryRegionListHttpRsp error") - return nil, nil - } - regionCurrKey := new(proto.QueryCurrRegionHttpRsp) - err = pb.Unmarshal(regionCurrKeyBin, regionCurrKey) - if err != nil { - log.Error("Unmarshal QueryCurrRegionHttpRsp error") - return nil, nil - } - regionList := new(proto.QueryRegionListHttpRsp) - err = pb.Unmarshal(regionListBin, regionList) - if err != nil { - log.Error("Unmarshal QueryRegionListHttpRsp error") - return nil, nil - } - regionCurr := new(proto.QueryCurrRegionHttpRsp) - err = pb.Unmarshal(regionCurrBin, regionCurr) - if err != nil { - log.Error("Unmarshal QueryCurrRegionHttpRsp error") - return nil, nil - } - secretKey, err := os.ReadFile("static/dispatchSeed.bin") - if err != nil { - log.Error("open dispatchSeed.bin error") - return nil, nil - } - // RegionCurr - regionInfo := regionCurr.GetRegionInfo() - regionInfo.GateserverIp = kcpAddr - regionInfo.GateserverPort = uint32(kcpPort) - regionInfo.SecretKey = secretKey - regionCurr.RegionInfo = regionInfo - // RegionList - serverList := make([]*proto.RegionSimpleInfo, 0) - server := &proto.RegionSimpleInfo{ - Name: "os_usa", - Title: "America", - Type: "DEV_PUBLIC", - DispatchUrl: "https://osusadispatch.yuanshen.com/query_cur_region", - } - serverList = append(serverList, server) - regionList.RegionList = serverList - regionList.ClientSecretKey = regionListKey.ClientSecretKey - regionList.ClientCustomConfigEncrypted = regionListKey.ClientCustomConfigEncrypted - return regionCurr, regionList -} diff --git a/dispatch/app/app.go b/dispatch/app/app.go index de6b4ad0..5467cbf8 100644 --- a/dispatch/app/app.go +++ b/dispatch/app/app.go @@ -2,6 +2,7 @@ package app import ( "context" + "github.com/nats-io/nats.go" _ "net/http/pprof" "os" "os/signal" @@ -25,6 +26,20 @@ func Run(ctx context.Context, configFile string) error { _ = controller.NewController(db) + // TODO 临时写一下用来传递新的密钥后面改RPC + conn, err := nats.Connect(config.CONF.MQ.NatsUrl) + if err != nil { + logger.LOG.Error("connect nats error: %v", err) + return nil + } + natsMsg := nats.NewMsg("GATE_KEY_HK4E") + natsMsg.Data = []byte{0x00, 0xff} + err = conn.PublishMsg(natsMsg) + if err != nil { + logger.LOG.Error("nats publish msg error: %v", err) + return nil + } + c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT) for { diff --git a/dispatch/controller/auto_patch_controller.go b/dispatch/controller/auto_patch_controller.go deleted file mode 100644 index 176000da..00000000 --- a/dispatch/controller/auto_patch_controller.go +++ /dev/null @@ -1,40 +0,0 @@ -package controller - -import ( - "net/http" - "os" - - "hk4e/pkg/logger" - - "github.com/gin-gonic/gin" -) - -func (c *Controller) headDataVersions(context *gin.Context) { - context.Header("Content-Type", "application/octet-stream") - context.Header("Content-Length", "514") - context.Status(http.StatusOK) -} - -func (c *Controller) getDataVersions(context *gin.Context) { - dataVersions, err := os.ReadFile("static/data_versions") - if err != nil { - logger.LOG.Error("open data_versions error") - return - } - context.Data(http.StatusOK, "application/octet-stream", dataVersions) -} - -func (c *Controller) headBlk(context *gin.Context) { - context.Header("Content-Type", "application/octet-stream") - context.Header("Content-Length", "14103") - context.Status(http.StatusOK) -} - -func (c *Controller) getBlk(context *gin.Context) { - blk, err := os.ReadFile("static/29342328.blk") - if err != nil { - logger.LOG.Error("open 29342328.blk error") - return - } - context.Data(http.StatusOK, "application/octet-stream", blk) -} diff --git a/dispatch/controller/controller.go b/dispatch/controller/controller.go index 595a1c5c..6bb740c7 100644 --- a/dispatch/controller/controller.go +++ b/dispatch/controller/controller.go @@ -96,14 +96,6 @@ func (c *Controller) registerRouter() { // 获取combo token engine.POST("/hk4e_global/combo/granter/login/v2/login", c.v2Login) } - { - // BLK文件补丁下载 - // autopatchhk.yuanshen.com - engine.HEAD("/client_design_data/2.6_live/output_6988297_84eeb1c18b/client_silence/General/AssetBundles/data_versions", c.headDataVersions) - engine.GET("/client_design_data/2.6_live/output_6988297_84eeb1c18b/client_silence/General/AssetBundles/data_versions", c.getDataVersions) - engine.HEAD("/client_design_data/2.6_live/output_6988297_84eeb1c18b/client_silence/General/AssetBundles/blocks/00/29342328.blk", c.headBlk) - engine.GET("/client_design_data/2.6_live/output_6988297_84eeb1c18b/client_silence/General/AssetBundles/blocks/00/29342328.blk", c.getBlk) - } { // 日志 engine.POST("/sdk/dataUpload", c.sdkDataUpload) diff --git a/gate/forward/forward.go b/gate/forward/forward.go index 45e84f19..4b0b87c1 100644 --- a/gate/forward/forward.go +++ b/gate/forward/forward.go @@ -184,7 +184,7 @@ func (f *ForwardManager) kcpEventHandle() { func (f *ForwardManager) Start() { // 读取密钥相关文件 var err error = nil - f.secretKeyBuffer, err = os.ReadFile("static/secretKeyBuffer.bin") + f.secretKeyBuffer, err = os.ReadFile("key/secretKeyBuffer.bin") if err != nil { logger.LOG.Error("open secretKeyBuffer.bin error") return diff --git a/gate/mq/mq.go b/gate/mq/mq.go index 80be712e..3aa8926f 100644 --- a/gate/mq/mq.go +++ b/gate/mq/mq.go @@ -27,11 +27,26 @@ func NewMessageQueue(netMsgInput chan *cmd.NetMsg, netMsgOutput chan *cmd.NetMsg } r.natsConn = conn r.natsMsgChan = make(chan *nats.Msg, 10000) - _, err = r.natsConn.ChanSubscribe("GATE_HK4E", r.natsMsgChan) + _, err = r.natsConn.ChanSubscribe("GATE_CMD_HK4E", r.natsMsgChan) if err != nil { logger.LOG.Error("nats subscribe error: %v", err) return nil } + + // TODO 临时写一下用来传递新的密钥后面改RPC + keyNatsMsgChan := make(chan *nats.Msg, 10000) + _, err = r.natsConn.ChanSubscribe("GATE_KEY_HK4E", keyNatsMsgChan) + if err != nil { + logger.LOG.Error("nats subscribe error: %v", err) + return nil + } + go func() { + for { + natsMsg := <-keyNatsMsgChan + logger.LOG.Error("GATE_KEY_HK4E %v", natsMsg.Data) + } + }() + r.netMsgInput = netMsgInput r.netMsgOutput = netMsgOutput r.cmdProtoMap = cmd.NewCmdProtoMap() @@ -87,7 +102,7 @@ func (m *MessageQueue) startSendHandler() { logger.LOG.Error("parse net msg to bin error: %v", err) continue } - natsMsg := nats.NewMsg("GS_HK4E") + natsMsg := nats.NewMsg("GS_CMD_HK4E") natsMsg.Data = netMsgData err = m.natsConn.PublishMsg(natsMsg) if err != nil { diff --git a/gate/net/kcp_connect_manager.go b/gate/net/kcp_connect_manager.go index 6e934933..aa7518c1 100644 --- a/gate/net/kcp_connect_manager.go +++ b/gate/net/kcp_connect_manager.go @@ -66,12 +66,12 @@ func (k *KcpConnectManager) Start() { go func() { // key var err error = nil - k.dispatchKey, err = os.ReadFile("static/dispatchKey.bin") + k.dispatchKey, err = os.ReadFile("key/dispatchKey.bin") if err != nil { logger.LOG.Error("open dispatchKey.bin error") return } - k.secretKey, err = os.ReadFile("static/secretKey.bin") + k.secretKey, err = os.ReadFile("key/secretKey.bin") if err != nil { logger.LOG.Error("open secretKey.bin error") return diff --git a/gs/dao/dao.go b/gs/dao/dao.go index 2883cc04..1ba6f2bb 100644 --- a/gs/dao/dao.go +++ b/gs/dao/dao.go @@ -24,7 +24,7 @@ func NewDao() (r *Dao, err error) { return nil, err } r.client = client - r.db = client.Database("game_hk4e") + r.db = client.Database("gs_hk4e") return r, nil } diff --git a/gs/mq/mq.go b/gs/mq/mq.go index 1cf2a933..2204a464 100644 --- a/gs/mq/mq.go +++ b/gs/mq/mq.go @@ -21,7 +21,7 @@ func NewMessageQueue(conn *nats.Conn, netMsgInput chan *cmd.NetMsg, netMsgOutput r = new(MessageQueue) r.natsConn = conn r.natsMsgChan = make(chan *nats.Msg, 10000) - _, err := r.natsConn.ChanSubscribe("GS_HK4E", r.natsMsgChan) + _, err := r.natsConn.ChanSubscribe("GS_CMD_HK4E", r.natsMsgChan) if err != nil { logger.LOG.Error("nats subscribe error: %v", err) return nil @@ -75,7 +75,7 @@ func (m *MessageQueue) startSendHandler() { logger.LOG.Error("parse net msg to bin error: %v", err) continue } - natsMsg := nats.NewMsg("GATE_HK4E") + natsMsg := nats.NewMsg("GATE_CMD_HK4E") natsMsg.Data = netMsgData err = m.natsConn.PublishMsg(natsMsg) if err != nil { diff --git a/pkg/random/hk4e_ec2b.go b/pkg/random/hk4e_ec2b.go new file mode 100644 index 00000000..c408bb71 --- /dev/null +++ b/pkg/random/hk4e_ec2b.go @@ -0,0 +1,179 @@ +package random + +import ( + "crypto/rand" + "encoding/binary" + "fmt" +) + +type Ec2b struct { + key []byte + data []byte + seed uint64 + temp []byte +} + +func LoadKey(b []byte) (*Ec2b, error) { + if len(b) < 4+4+16+4+2048 { + return nil, fmt.Errorf("invalid ec2b key") + } + if string(b[0:4]) != "Ec2b" { + return nil, fmt.Errorf("invalid ec2b key") + } + keyLen := binary.LittleEndian.Uint32(b[4:]) + if keyLen != 16 { + return nil, fmt.Errorf("invalid ec2b key") + } + dataLen := binary.LittleEndian.Uint32(b[24:]) + if dataLen != 2048 { + return nil, fmt.Errorf("invalid ec2b key") + } + e := &Ec2b{ + key: b[8:24], + data: b[28 : 28+2048], + } + e.init() + return e, nil +} + +func NewEc2b() *Ec2b { + e := &Ec2b{ + key: make([]byte, 16), + data: make([]byte, 2048), + } + rand.Read(e.key) + rand.Read(e.data) + e.init() + return e +} + +func (e *Ec2b) init() { + k := make([]byte, 16) + copy(k[:], e.key) + keyScramble(k) + e.SetSeed(getSeed(k, e.data)) +} + +func (e *Ec2b) Bytes() []byte { + b := make([]byte, 4+4+16+4+2048) + copy(b[0:4], []byte("Ec2b")) + binary.LittleEndian.PutUint32(b[4:], 16) + copy(b[8:], e.key) + binary.LittleEndian.PutUint32(b[24:], 2048) + copy(b[28:], e.data) + return b +} + +func (e *Ec2b) SetSeed(seed uint64) { + e.seed = seed + r := NewRand64() + r.Seed(int64(e.seed)) + e.temp = make([]byte, 4096) + for i := 0; i < 4096>>3; i++ { + binary.LittleEndian.PutUint64(e.temp[i<<3:], r.Uint64()) + } +} + +func (e *Ec2b) Seed() uint64 { + return e.seed +} + +func (e *Ec2b) Key() []byte { + b := make([]byte, 4+4+16+4+2048) + copy(b[0:4], []byte("Ec2b")) + binary.LittleEndian.PutUint32(b[4:], 16) + copy(b[8:], e.key) + binary.LittleEndian.PutUint32(b[24:], 2048) + copy(b[28:], e.data) + return b +} + +func (e *Ec2b) Xor(data []byte) { + for i := 0; i < len(data); i++ { + data[i] ^= e.temp[i%4096] + } +} + +func keyScramble(key []byte) { + var roundKeys [11][16]byte + for r := 0; r < 11; r++ { + for i := 0; i < 16; i++ { + for j := 0; j < 16; j++ { + idx := (r << 8) + (i << 4) + j + roundKeys[r][i] ^= aesXorTable[1][idx] ^ aesXorTable[0][idx] + } + } + } + xorRoundKey(key, roundKeys[0][:]) + for r := 1; r < 10; r++ { + subBytesInv(key) + shiftRowsInv(key) + mixColsInv(key) + xorRoundKey(key, roundKeys[r][:]) + } + subBytesInv(key) + shiftRowsInv(key) + xorRoundKey(key, roundKeys[10][:]) + for i := 0; i < 16; i++ { + key[i] ^= keyXorTable[i] + } +} + +func xorRoundKey(key, roundKey []byte) { + for i := 0; i < 16; i++ { + key[i] ^= roundKey[i] + } +} + +func subBytes(key []byte) { + for i := 0; i < 16; i++ { + key[i] = lookupSbox[key[i]] + } +} + +func subBytesInv(key []byte) { + for i := 0; i < 16; i++ { + key[i] = lookupSboxInv[key[i]] + } +} + +func shiftRows(key []byte) { + var temp [16]byte + copy(temp[:], key[:]) + for i := 0; i < 16; i++ { + key[i] = temp[shiftRowsTable[i]] + } +} + +func shiftRowsInv(key []byte) { + var temp [16]byte + copy(temp[:], key[:]) + for i := 0; i < 16; i++ { + key[i] = temp[shiftRowsTableInv[i]] + } +} + +func mixColInv(key []byte) { + a0, a1, a2, a3 := key[0], key[1], key[2], key[3] + key[0] = lookupG14[a0] ^ lookupG9[a3] ^ lookupG13[a2] ^ lookupG11[a1] + key[1] = lookupG14[a1] ^ lookupG9[a0] ^ lookupG13[a3] ^ lookupG11[a2] + key[2] = lookupG14[a2] ^ lookupG9[a1] ^ lookupG13[a0] ^ lookupG11[a3] + key[3] = lookupG14[a3] ^ lookupG9[a2] ^ lookupG13[a1] ^ lookupG11[a0] +} + +func mixColsInv(key []byte) { + mixColInv(key[0:]) + mixColInv(key[4:]) + mixColInv(key[8:]) + mixColInv(key[12:]) +} + +func getSeed(key, data []byte) uint64 { + v := ^uint64(0xCEAC3B5A867837AC) + v ^= binary.LittleEndian.Uint64(key[0:]) + v ^= binary.LittleEndian.Uint64(key[8:]) + for i := 0; i < len(data)>>3; i++ { + v ^= binary.LittleEndian.Uint64(data[i<<3:]) + } + return v +} diff --git a/pkg/random/hk4e_magic.go b/pkg/random/hk4e_magic.go new file mode 100644 index 00000000..b23a0cfa --- /dev/null +++ b/pkg/random/hk4e_magic.go @@ -0,0 +1,521 @@ +package random + +var keyXorTable = [16]byte{ + 0xA2, 0x25, 0x25, 0x99, 0xB7, 0x62, 0xF4, 0x39, 0x28, 0xE1, 0xB7, 0x73, 0x91, 0x05, 0x25, 0x87, +} + +var aesXorTable = [2][11 << 8]byte{{ + 0xDE, 0xAD, 0xCA, 0xFE, 0xFA, 0xCE, 0xB0, 0x0C, 0xDE, 0xAD, 0xCA, 0xFE, 0xFA, 0xCE, 0xB0, 0x0C, + 0x3A, 0xE6, 0xDE, 0x9C, 0x81, 0xBA, 0x7C, 0xC6, 0x12, 0x1B, 0xAF, 0xD2, 0x8A, 0xBA, 0xF5, 0xE6, + 0x41, 0xDF, 0x71, 0xBA, 0x37, 0x11, 0x50, 0xF3, 0xF3, 0x62, 0x6E, 0x04, 0xF1, 0x14, 0xFC, 0xBD, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x7B, 0x52, 0x7C, 0x19, 0x98, 0x35, 0x96, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, +}, { + 0xC3, 0x20, 0x20, 0xB4, 0xAF, 0x0E, 0x82, 0x2E, 0xEF, 0x29, 0xFE, 0x75, 0x1D, 0xDB, 0x4B, 0x86, + 0x86, 0x23, 0x28, 0x72, 0xA3, 0xF4, 0x1B, 0x4F, 0x5F, 0x0E, 0x02, 0xB1, 0xAC, 0x0D, 0xE6, 0x4F, + 0x8B, 0x0B, 0x3F, 0xF3, 0x5F, 0xB5, 0x09, 0x7E, 0x3B, 0xE9, 0x93, 0x29, 0x55, 0xE1, 0xB4, 0x9B, + 0xCC, 0xCE, 0x37, 0xFC, 0xAB, 0x6B, 0xA4, 0x05, 0xE6, 0xC7, 0x45, 0x34, 0xC0, 0xFF, 0x7C, 0x24, + 0x89, 0x36, 0xBF, 0x17, 0xAB, 0x91, 0xCA, 0x49, 0xF2, 0x74, 0x80, 0xB6, 0x90, 0x60, 0xFF, 0xD2, + 0xA9, 0xE5, 0xC9, 0x64, 0xBC, 0x38, 0x40, 0x98, 0xB3, 0xBA, 0x8F, 0x8B, 0xBA, 0x9D, 0xF3, 0xCF, + 0x57, 0xBA, 0xAC, 0x18, 0xE7, 0xD3, 0x03, 0x01, 0x48, 0x29, 0x41, 0xF6, 0x2F, 0x89, 0xD4, 0x9F, + 0xD7, 0xD3, 0x05, 0x71, 0x63, 0x30, 0x4E, 0xBB, 0xF7, 0xB0, 0x99, 0xFF, 0x43, 0xDA, 0x87, 0xCA, + 0xA7, 0x48, 0x92, 0x9E, 0x76, 0xA6, 0xEE, 0x48, 0x1C, 0x96, 0x28, 0x8E, 0x54, 0x30, 0xD6, 0xA5, + 0xD3, 0x22, 0xA2, 0x30, 0xCB, 0x6A, 0x85, 0x26, 0x69, 0xE1, 0x7C, 0xEC, 0xDC, 0xD4, 0x89, 0x2A, + 0xB8, 0xAE, 0xDF, 0x12, 0x6E, 0x39, 0x8A, 0x9B, 0x48, 0x61, 0xF9, 0x4B, 0x34, 0xD0, 0xF1, 0x60, + 0x87, 0xBA, 0x88, 0x86, 0x68, 0x8C, 0xBE, 0xC1, 0x9C, 0xAE, 0x30, 0xBC, 0xE6, 0x62, 0xFF, 0xEB, + 0xBB, 0x88, 0x7C, 0xD2, 0xBB, 0x57, 0xB4, 0x02, 0x82, 0x06, 0x72, 0xD2, 0x94, 0x60, 0x86, 0x4A, + 0x29, 0xF0, 0xEA, 0xD3, 0x88, 0x92, 0xF1, 0x22, 0xD1, 0x5C, 0x88, 0x65, 0xE6, 0xFB, 0xEE, 0x28, + 0x79, 0x86, 0x68, 0x7D, 0xA6, 0x5A, 0xBF, 0xBD, 0x7D, 0x15, 0xEF, 0x05, 0xF6, 0xF9, 0xE0, 0x11, + 0xD6, 0x30, 0x94, 0xF2, 0x6C, 0x3D, 0x0A, 0xDB, 0xC5, 0x0E, 0xDC, 0xF2, 0xFD, 0x1F, 0x61, 0x91, + 0x5D, 0x80, 0x69, 0xA3, 0xDB, 0x35, 0x98, 0x4E, 0x4A, 0xC1, 0x49, 0x76, 0xAB, 0xC0, 0x67, 0x36, + 0x3F, 0xA4, 0xC6, 0xE8, 0xCA, 0x25, 0x44, 0x63, 0x23, 0xB5, 0xC8, 0xBB, 0x3A, 0xAC, 0xA1, 0x09, + 0xC3, 0x10, 0x57, 0xA5, 0x5B, 0x3B, 0x33, 0x21, 0xCD, 0x3C, 0x88, 0xAE, 0x1E, 0x8F, 0xC1, 0xD6, + 0xFB, 0x94, 0x61, 0x38, 0xAB, 0xF1, 0x9C, 0x06, 0xCB, 0x89, 0x58, 0x9A, 0xF4, 0xF4, 0x33, 0x80, + 0x66, 0x13, 0xC0, 0xFD, 0xE2, 0x16, 0xE0, 0x89, 0x65, 0xE2, 0xC1, 0xA6, 0xE3, 0x74, 0xD2, 0x5F, + 0xA0, 0x76, 0xAD, 0xF5, 0x6B, 0x4F, 0xE0, 0xF7, 0x52, 0xB0, 0xB1, 0x48, 0xDD, 0xEE, 0xB6, 0x01, + 0x9A, 0x90, 0x91, 0x18, 0xEC, 0xCB, 0xCB, 0xAD, 0x04, 0xB6, 0x73, 0xCF, 0x7F, 0xF3, 0xAC, 0xBE, + 0xEC, 0x91, 0x44, 0x56, 0x81, 0xB8, 0x74, 0xAE, 0x28, 0x5D, 0xC7, 0x5C, 0xAB, 0x8B, 0x56, 0x21, + 0x32, 0x91, 0xB9, 0x9E, 0x70, 0xF6, 0x9B, 0xAC, 0x50, 0x0B, 0x2E, 0x4B, 0x8B, 0xA2, 0xA5, 0x24, + 0x5B, 0x91, 0xDF, 0x24, 0xA7, 0xB0, 0x79, 0xA7, 0x16, 0x54, 0x44, 0x2E, 0xBC, 0x48, 0xCD, 0x87, + 0xBA, 0xAF, 0xD4, 0xB9, 0x1C, 0x0F, 0xAA, 0xFA, 0x3A, 0x3F, 0x3A, 0x3D, 0x68, 0x5A, 0xAE, 0xAC, + 0xBA, 0xBE, 0xA3, 0x92, 0x6E, 0x38, 0x8E, 0x33, 0x3E, 0x0A, 0xCC, 0xF6, 0xE3, 0x26, 0x57, 0xEC, + 0x8E, 0x63, 0x31, 0x27, 0xBA, 0x20, 0x4E, 0x7F, 0x34, 0xE5, 0x19, 0xFE, 0x7F, 0xA6, 0x97, 0x90, + 0xD6, 0x29, 0x1C, 0x3F, 0x8C, 0x3F, 0x81, 0x62, 0x3D, 0xF5, 0x00, 0xD4, 0xC5, 0xE2, 0xE1, 0x42, + 0x42, 0x8C, 0x65, 0x8F, 0x5A, 0x66, 0x59, 0xE1, 0xDD, 0xEC, 0xDC, 0x1B, 0x4E, 0x63, 0x82, 0xFF, + 0x02, 0x9D, 0x53, 0xDE, 0xBD, 0xB4, 0x80, 0xCF, 0x2B, 0xB7, 0xDE, 0x69, 0x5D, 0x1B, 0xCA, 0xFB, + 0xB3, 0xF9, 0xBE, 0xD0, 0xF5, 0x79, 0x86, 0x2F, 0x0E, 0xB6, 0xA9, 0x87, 0xF4, 0x68, 0xC1, 0xBF, + 0x4F, 0xB8, 0xA6, 0x2D, 0x03, 0xA9, 0x72, 0x04, 0xCA, 0x37, 0x6D, 0x1B, 0x90, 0xDD, 0xBC, 0x52, + 0xAE, 0xF3, 0xFF, 0x08, 0xDD, 0x4B, 0x46, 0xD0, 0xCD, 0xB1, 0x8A, 0x35, 0x9A, 0x02, 0x64, 0x64, + 0x2F, 0x57, 0xA5, 0x7B, 0x9A, 0x0D, 0x2B, 0x55, 0x11, 0x3C, 0xC0, 0x35, 0x74, 0x69, 0xD9, 0x7B, + 0x43, 0x1D, 0xAC, 0xB2, 0xC2, 0x8A, 0xBE, 0x22, 0x45, 0x46, 0x76, 0xA9, 0x8A, 0x49, 0xB2, 0x5F, + 0xC0, 0xB8, 0xBC, 0xCD, 0x27, 0xF8, 0x14, 0xB2, 0xA9, 0x6D, 0x5A, 0x1F, 0xA4, 0x43, 0x1E, 0x0F, + 0xDB, 0xA4, 0x9E, 0x2B, 0xCA, 0xFC, 0x98, 0x7F, 0xF1, 0x18, 0x87, 0x5B, 0x11, 0x2D, 0xC5, 0xE4, + 0x91, 0x20, 0xA9, 0x6A, 0x2D, 0xAC, 0xA8, 0xFA, 0x94, 0x57, 0x7F, 0x30, 0x73, 0x08, 0xE8, 0x49, + 0xF0, 0xC8, 0x63, 0xDA, 0x83, 0x87, 0x2A, 0xC3, 0x31, 0x1A, 0xFC, 0xB7, 0x57, 0xB2, 0x40, 0x46, + 0x09, 0x6D, 0x84, 0xB4, 0x66, 0xF1, 0x13, 0x16, 0x3A, 0x3A, 0xFB, 0xC6, 0x6E, 0xB0, 0x71, 0xB8, + 0x23, 0x74, 0x22, 0x89, 0xFC, 0xBE, 0x34, 0xB3, 0x17, 0xB6, 0xC9, 0x68, 0x53, 0x64, 0x47, 0xAF, + 0xCA, 0x1D, 0x5F, 0xB4, 0x74, 0xA3, 0x77, 0xB5, 0xFB, 0x77, 0xD9, 0x69, 0x2B, 0x3A, 0xAA, 0xAE, + 0xE4, 0x03, 0x81, 0x6B, 0x3A, 0x35, 0x9C, 0x45, 0x50, 0x9C, 0x76, 0xCE, 0xE3, 0x7F, 0x64, 0x4B, + 0x9F, 0x83, 0x7B, 0x72, 0xBC, 0x02, 0x1E, 0x94, 0x99, 0xC1, 0x1C, 0x45, 0x19, 0x1D, 0x56, 0x74, + 0x73, 0xE7, 0xFC, 0x58, 0x72, 0x2D, 0xE3, 0x50, 0xA4, 0x21, 0xBE, 0x81, 0xDF, 0x80, 0xDA, 0x40, + 0xDB, 0x79, 0x67, 0x0E, 0x94, 0xA3, 0x05, 0xDD, 0xF7, 0x14, 0x28, 0xD6, 0xC4, 0x2B, 0xF3, 0xCF, + 0x36, 0x08, 0x84, 0xF3, 0xC8, 0x8C, 0xAD, 0xCE, 0x7F, 0x7C, 0x0F, 0xC6, 0xFE, 0x05, 0x54, 0x4B, + 0x17, 0xA1, 0x83, 0x65, 0x97, 0x29, 0x01, 0x70, 0xC1, 0x16, 0xAE, 0x69, 0xA4, 0x90, 0xB9, 0xBE, + 0x17, 0x05, 0x50, 0xF1, 0x65, 0x07, 0x23, 0x76, 0x64, 0x84, 0x2D, 0x40, 0x34, 0xFD, 0xDF, 0x62, + 0x7E, 0x4C, 0x85, 0xD2, 0x6D, 0x17, 0xE1, 0x41, 0x12, 0xC6, 0x3E, 0xD6, 0x14, 0xB8, 0x5F, 0x8F, + 0x39, 0x65, 0xC2, 0x62, 0x21, 0x06, 0x5C, 0xC9, 0xB8, 0x99, 0xA5, 0x00, 0xE3, 0x9C, 0x73, 0xAB, + 0xB9, 0x76, 0x12, 0xD2, 0xFA, 0x7F, 0x7D, 0x64, 0x63, 0x9E, 0x26, 0xAA, 0x89, 0x85, 0x3A, 0xC9, + 0x94, 0x04, 0x97, 0xEC, 0xFD, 0xC5, 0xA3, 0xB1, 0x7D, 0xD6, 0x07, 0x9C, 0x47, 0x30, 0x9C, 0x64, + 0x97, 0x0E, 0xC6, 0xFC, 0x0B, 0xFF, 0xA7, 0xF9, 0x46, 0x5B, 0x2B, 0xDB, 0x9E, 0x1C, 0x85, 0x3A, + 0x75, 0xD6, 0xEB, 0x9B, 0x15, 0x36, 0xD7, 0x1A, 0x3D, 0xFC, 0x0B, 0x75, 0x08, 0x5E, 0x32, 0x23, + 0xE0, 0xA5, 0xAD, 0x0F, 0x45, 0xB3, 0x78, 0x20, 0x22, 0x24, 0x64, 0x0C, 0xCF, 0xD6, 0x3C, 0xA4, + 0x48, 0xC7, 0xB3, 0x6E, 0x02, 0xE2, 0x0A, 0xAB, 0x92, 0xFC, 0x40, 0x7D, 0xF5, 0x02, 0x61, 0x56, + 0xAB, 0xC5, 0x68, 0x38, 0xE0, 0x01, 0xF1, 0x94, 0x73, 0xC6, 0xFE, 0xC2, 0x34, 0x67, 0x8E, 0xB1, + 0x73, 0x72, 0xD4, 0x3B, 0xFD, 0x1F, 0xE2, 0xA8, 0xED, 0x20, 0x14, 0x0A, 0x60, 0x6D, 0xD1, 0x85, + 0x14, 0x05, 0x54, 0x96, 0xC6, 0x3D, 0xB5, 0x1B, 0x37, 0x56, 0x24, 0xF7, 0x7C, 0x0F, 0x55, 0xC6, + 0xAA, 0x7E, 0x33, 0x2D, 0xE1, 0x97, 0x74, 0xA8, 0xDC, 0xC5, 0xA1, 0xEC, 0x8C, 0xEF, 0x28, 0x3B, + 0x49, 0x8B, 0x00, 0xED, 0x8B, 0xD9, 0xE9, 0x65, 0xD5, 0x05, 0x7B, 0x6D, 0x20, 0xCA, 0x8F, 0x93, + 0xB4, 0xCA, 0x36, 0x34, 0x8E, 0x16, 0x46, 0xCE, 0x02, 0x23, 0x43, 0x22, 0xF6, 0xBD, 0x10, 0xCC, + 0xD0, 0xA3, 0xB0, 0x42, 0xA5, 0xAF, 0x59, 0x72, 0x97, 0x0B, 0xAE, 0x80, 0x8D, 0x19, 0xD0, 0x1D, + 0x7D, 0x30, 0x4E, 0x5B, 0x46, 0xC0, 0xC2, 0x5C, 0x40, 0xFC, 0xF3, 0xEF, 0x05, 0x84, 0xE8, 0x0C, + 0x80, 0xD7, 0x37, 0xA1, 0x6F, 0xC1, 0x8C, 0xE0, 0xBA, 0xA1, 0x88, 0x7B, 0xE7, 0x20, 0xBF, 0x18, + 0x02, 0x40, 0x9F, 0x6F, 0x23, 0x11, 0x78, 0x07, 0xD0, 0x92, 0x87, 0x2D, 0xB5, 0xE0, 0xE9, 0xE9, + 0xAA, 0x32, 0x88, 0x57, 0xF8, 0x9B, 0x01, 0x93, 0x2D, 0x07, 0x77, 0x68, 0x86, 0xAD, 0x06, 0xDE, + 0x57, 0xA9, 0xA4, 0x96, 0x33, 0x42, 0xF8, 0xFB, 0x23, 0x1F, 0x99, 0xB6, 0x62, 0x93, 0x6B, 0x12, + 0xBE, 0x72, 0x9F, 0x96, 0x1A, 0xDA, 0x05, 0x60, 0xF1, 0xD5, 0x40, 0x9F, 0x75, 0xF3, 0x1D, 0xBE, + 0xD7, 0x87, 0x5D, 0x3A, 0x55, 0xF0, 0x9B, 0xBF, 0xE8, 0xB9, 0x72, 0xC2, 0xDD, 0x4D, 0x27, 0xF6, + 0xA9, 0x37, 0x96, 0x7E, 0x6E, 0x6E, 0x64, 0x37, 0x4E, 0x2E, 0x3F, 0xFD, 0x3C, 0xF4, 0xA6, 0xF5, + 0x22, 0xA8, 0x43, 0xF4, 0x13, 0x21, 0xB5, 0x4E, 0xA8, 0x6D, 0x50, 0x0A, 0xB3, 0xFE, 0x9F, 0x5C, + 0xE7, 0x1A, 0xCF, 0x36, 0x42, 0x30, 0x1C, 0x88, 0x7F, 0x29, 0xE9, 0xCD, 0x96, 0xF2, 0x6A, 0x52, + 0xB2, 0x25, 0x87, 0x63, 0xDC, 0xFC, 0x72, 0xE4, 0xF8, 0x5E, 0xB1, 0x97, 0xB4, 0x1E, 0x08, 0x90, + 0x68, 0x10, 0x73, 0x7F, 0x94, 0x61, 0x48, 0x49, 0x36, 0x9B, 0x7D, 0xBD, 0xDF, 0xCD, 0xB1, 0xA3, + 0x7D, 0xFB, 0xDD, 0x97, 0x8A, 0x0D, 0xFC, 0x9A, 0xB8, 0xA9, 0x33, 0xB5, 0x4E, 0x50, 0x3D, 0x60, + 0x90, 0xEB, 0xAB, 0xB8, 0xCB, 0x6E, 0x32, 0xE4, 0x6B, 0xB0, 0x3F, 0x57, 0xB8, 0xA4, 0x6A, 0x7C, + 0x00, 0x66, 0x39, 0xB1, 0x22, 0xE2, 0x04, 0x26, 0xA1, 0x5A, 0x17, 0xAA, 0x80, 0xB6, 0xC0, 0xF6, + 0xCF, 0x7A, 0xF8, 0x60, 0xE9, 0x52, 0xB8, 0x0E, 0x08, 0xC0, 0xD5, 0x1F, 0xAB, 0x61, 0x62, 0x1A, + 0x83, 0xD1, 0x92, 0xE1, 0x4D, 0x6D, 0xDF, 0x27, 0x0E, 0xFF, 0xF9, 0xA3, 0x36, 0xFF, 0x73, 0xEF, + 0x1D, 0xAB, 0xAC, 0xBF, 0xA7, 0xB3, 0x29, 0xD2, 0xB2, 0x37, 0xAB, 0x08, 0x7D, 0xB6, 0x7E, 0x0D, + 0x25, 0xAA, 0x49, 0x29, 0x9F, 0x61, 0x52, 0x44, 0x19, 0x1C, 0x51, 0x95, 0x74, 0xB9, 0x3D, 0xDD, + 0x95, 0x2C, 0x4F, 0x30, 0x56, 0xC9, 0xEF, 0x3D, 0x87, 0x90, 0x1E, 0xF8, 0x69, 0xFF, 0x37, 0x06, + 0x27, 0xDB, 0x72, 0x82, 0x2C, 0xDE, 0xB8, 0x39, 0x0B, 0x78, 0xB1, 0x1F, 0x37, 0x54, 0xBF, 0x21, + 0x32, 0x87, 0xB4, 0xD9, 0x49, 0x2D, 0x29, 0x19, 0x43, 0x01, 0xD4, 0xC0, 0xA3, 0xFF, 0x09, 0x6F, + 0x69, 0xC8, 0x5D, 0x35, 0x1D, 0x10, 0x09, 0x91, 0xB6, 0x12, 0xEC, 0x04, 0xA6, 0x61, 0xEF, 0x73, + 0xC7, 0x4C, 0x04, 0x8E, 0x3E, 0xAE, 0xD7, 0xC2, 0x84, 0x48, 0xAB, 0x99, 0x96, 0x75, 0xD8, 0xAD, + 0xA7, 0x5B, 0xDE, 0x72, 0x44, 0x96, 0xC5, 0xB3, 0xEB, 0x8E, 0xED, 0xD6, 0x69, 0x81, 0xE6, 0x07, + 0x3A, 0x15, 0x0D, 0x66, 0x5F, 0x36, 0xA9, 0xAB, 0x53, 0x82, 0x47, 0x98, 0x27, 0xF2, 0x16, 0x95, + 0x05, 0x0B, 0xAE, 0xF1, 0x04, 0x92, 0x80, 0x20, 0xA4, 0x9B, 0x43, 0x66, 0x70, 0x7F, 0x45, 0x0B, + 0x4B, 0x85, 0x95, 0x10, 0x09, 0xC8, 0xD9, 0xF9, 0x5D, 0x40, 0x6D, 0x07, 0x69, 0x18, 0xF3, 0xD6, + 0x98, 0x61, 0x25, 0x8E, 0xA1, 0xE2, 0x24, 0xBD, 0xF0, 0xFA, 0x89, 0xD8, 0x68, 0xB2, 0x03, 0x81, + 0x63, 0xF9, 0x42, 0xD4, 0x1A, 0xD9, 0x4D, 0xCD, 0x30, 0x36, 0x2D, 0xB1, 0x63, 0xFC, 0xA3, 0x2B, + 0xA7, 0x07, 0x50, 0xBC, 0x67, 0xAB, 0x7D, 0x33, 0x1D, 0xEC, 0x62, 0xFE, 0xD2, 0x65, 0xAA, 0xBA, + 0x37, 0xC9, 0x7F, 0x67, 0x26, 0x9D, 0x8A, 0x8B, 0x63, 0x0B, 0xE0, 0x30, 0x65, 0x07, 0x8C, 0xF3, + 0xD1, 0xCF, 0x0D, 0xB4, 0x1E, 0xF3, 0x29, 0xBE, 0x43, 0x1F, 0x34, 0x1E, 0x52, 0x02, 0xA7, 0x8D, + 0x30, 0x2E, 0x3E, 0x39, 0x00, 0xB6, 0x7B, 0x5C, 0x29, 0x39, 0xC0, 0x0D, 0xAB, 0xA0, 0x6D, 0x77, + 0x3C, 0xB2, 0x18, 0x42, 0x57, 0x63, 0xDA, 0x9E, 0xF5, 0xE0, 0x42, 0x43, 0xF6, 0x50, 0xFD, 0x71, + 0x9B, 0x30, 0xE0, 0x92, 0x8B, 0xD1, 0xE1, 0xC4, 0x96, 0xC9, 0xF5, 0x14, 0xB6, 0xF7, 0xA5, 0x10, + 0x77, 0xF4, 0xF9, 0xAC, 0xDC, 0x45, 0xE1, 0x3C, 0xD6, 0x0B, 0xA5, 0xE2, 0x58, 0x01, 0x19, 0x39, + 0x14, 0x68, 0x96, 0xC0, 0xCE, 0xA9, 0xDE, 0x84, 0x22, 0x59, 0x87, 0x70, 0xFD, 0x8A, 0x71, 0x64, + 0x79, 0x16, 0x37, 0x80, 0x83, 0xFD, 0x9C, 0x73, 0xE6, 0x9C, 0x8B, 0xCD, 0xC0, 0x69, 0x66, 0x90, + 0x45, 0x0A, 0xC9, 0x81, 0x4A, 0xDA, 0x26, 0xDA, 0xA1, 0x70, 0x03, 0x6C, 0x36, 0x9D, 0xAD, 0xD7, + 0xE2, 0x1F, 0x27, 0xBE, 0xBB, 0xEC, 0x63, 0xD9, 0xC2, 0x2A, 0x56, 0x4D, 0x63, 0xCD, 0x92, 0xEE, + 0xAF, 0xCA, 0xD0, 0x11, 0x35, 0x2F, 0x1D, 0xF1, 0x96, 0xD1, 0xAA, 0xDC, 0xF6, 0x14, 0x3F, 0xA0, + 0xEE, 0x90, 0x83, 0x9F, 0x42, 0x40, 0xE6, 0x2C, 0x10, 0x23, 0x00, 0x23, 0x18, 0x8C, 0xA1, 0x26, + 0x4B, 0x22, 0xE1, 0x36, 0x07, 0x55, 0xCB, 0xC3, 0xD2, 0xDD, 0x12, 0x58, 0x19, 0x75, 0x03, 0xC6, + 0xD8, 0x2E, 0xCE, 0x87, 0x1C, 0xC3, 0x15, 0x44, 0x2A, 0x30, 0x00, 0x52, 0x39, 0x31, 0x13, 0xF4, + 0x25, 0x75, 0x74, 0x15, 0x6C, 0xC5, 0xC1, 0xD2, 0x33, 0x75, 0xC2, 0x41, 0x22, 0x28, 0x95, 0xDF, + 0x97, 0x6C, 0x31, 0xF8, 0x35, 0xA6, 0x54, 0x29, 0x5C, 0xF4, 0x20, 0x97, 0x69, 0xE5, 0x46, 0xFF, + 0x34, 0x24, 0x73, 0x12, 0xB8, 0x61, 0x25, 0x46, 0xB3, 0x8F, 0xBA, 0x3C, 0xFA, 0x06, 0xFF, 0x3F, + 0x66, 0x9D, 0x22, 0x55, 0x46, 0x2F, 0xFF, 0x44, 0xDB, 0x25, 0x29, 0xE0, 0x16, 0x6E, 0xEC, 0x87, + 0x97, 0x92, 0x37, 0x23, 0x0E, 0x52, 0x4E, 0xBB, 0x10, 0xBB, 0x1C, 0x73, 0x75, 0xD1, 0x31, 0xC3, + 0xAD, 0xFE, 0xB8, 0x12, 0x50, 0xA0, 0x69, 0x91, 0x36, 0xEA, 0x5F, 0x0D, 0xEC, 0x1A, 0x23, 0x4A, + 0x7D, 0x94, 0x84, 0xC8, 0x4A, 0x58, 0x6A, 0xA1, 0xA3, 0x75, 0xCA, 0x85, 0xE7, 0x96, 0x91, 0x07, + 0x05, 0x3A, 0x57, 0x61, 0x6A, 0x6F, 0xF1, 0xEF, 0xF7, 0xB3, 0xB1, 0x09, 0xB8, 0x91, 0xA8, 0xF9, + 0x57, 0xB8, 0x63, 0x95, 0xFF, 0xB4, 0x1C, 0x96, 0xE7, 0xE5, 0xEC, 0x06, 0x3A, 0x11, 0xE6, 0x81, + 0xAB, 0x23, 0xE4, 0x5E, 0x5A, 0xB6, 0x6B, 0x69, 0x62, 0x6F, 0x9D, 0xC4, 0x08, 0x6F, 0xA6, 0xBE, + 0x4D, 0x09, 0x12, 0x77, 0xCA, 0xDD, 0xB5, 0x2D, 0x66, 0xCB, 0x4F, 0x4F, 0x11, 0xF2, 0x3A, 0x1A, + 0x97, 0x1F, 0xFE, 0x50, 0x2F, 0x19, 0x32, 0x05, 0x45, 0xA0, 0x50, 0x60, 0x58, 0x40, 0x40, 0x3D, + 0xF6, 0xC3, 0x6F, 0x07, 0xC8, 0x26, 0x26, 0x0E, 0x42, 0x22, 0x96, 0x6D, 0xFE, 0x95, 0x53, 0x70, + 0xDC, 0x92, 0x12, 0x63, 0xFD, 0xA3, 0x7D, 0x6E, 0x44, 0xCD, 0x11, 0x2C, 0x51, 0x6F, 0xBC, 0x50, + 0xFC, 0x1C, 0xC8, 0x3A, 0x28, 0xF5, 0x39, 0xF8, 0x8C, 0x60, 0x5D, 0xA5, 0x4A, 0xFA, 0xAB, 0x04, + 0x7F, 0x34, 0x91, 0x53, 0xE7, 0x6C, 0x56, 0xC6, 0x14, 0xE4, 0xCC, 0xE4, 0xBB, 0x6E, 0x47, 0x7A, + 0x46, 0x6B, 0xE2, 0x88, 0xA0, 0xBD, 0xBD, 0xCC, 0x51, 0xF3, 0x37, 0x4B, 0xB3, 0xA0, 0x19, 0x92, + 0x48, 0x35, 0xBB, 0xBC, 0x79, 0x78, 0xFF, 0x49, 0xC1, 0x2B, 0x93, 0xDF, 0x75, 0xA7, 0xFB, 0x94, + 0x89, 0xAF, 0x50, 0x5E, 0x2D, 0xE1, 0x78, 0x60, 0x0C, 0xDF, 0xF8, 0x7C, 0xFD, 0xCD, 0x2D, 0xE2, + 0xFF, 0xD3, 0xA3, 0x4A, 0x48, 0x0D, 0x40, 0x8F, 0x03, 0x4F, 0x2C, 0xBD, 0xFA, 0x2E, 0x16, 0xC3, + 0xD4, 0xFD, 0x0B, 0xB3, 0xBD, 0x4F, 0x30, 0xAD, 0xD0, 0xAE, 0xCA, 0x77, 0x9D, 0xDD, 0x3D, 0xA3, + 0x66, 0xD0, 0xC1, 0x6D, 0xCC, 0x3B, 0x56, 0x81, 0x5D, 0x80, 0x07, 0xD8, 0x84, 0x46, 0x71, 0x40, + 0x57, 0xB3, 0x44, 0x85, 0x63, 0x4E, 0x17, 0x2C, 0xB0, 0x21, 0x98, 0x43, 0x42, 0x04, 0x18, 0x84, + 0xFA, 0xB1, 0xD7, 0xC5, 0x5C, 0xCA, 0x25, 0x8B, 0x1A, 0x7A, 0x50, 0x60, 0x68, 0x4A, 0x30, 0xEA, + 0xE6, 0xDE, 0x19, 0xBB, 0x9F, 0x47, 0xEF, 0xDB, 0xC5, 0x81, 0x72, 0xF0, 0x8D, 0xBA, 0x74, 0x3A, + 0xD1, 0xD5, 0xC6, 0xD1, 0xE0, 0xAE, 0x28, 0x2A, 0x65, 0xE5, 0x0B, 0x09, 0xFA, 0xEA, 0x5B, 0xA6, + 0xDB, 0x38, 0xD8, 0x67, 0xC0, 0xBE, 0xA1, 0x12, 0x1C, 0x03, 0xB1, 0x81, 0xB8, 0x95, 0xDD, 0x78, + 0xF8, 0x16, 0x6E, 0xAB, 0xBB, 0xAA, 0x33, 0x54, 0x0E, 0x39, 0x83, 0x24, 0x17, 0xB3, 0x0B, 0x3C, + 0xA1, 0x62, 0x21, 0xB2, 0xA0, 0xF8, 0x49, 0xAB, 0x8B, 0x80, 0xC6, 0x3D, 0xF1, 0x2E, 0x18, 0x44, + 0x74, 0x5F, 0x98, 0x92, 0x33, 0xFB, 0xB2, 0x52, 0x6B, 0x97, 0xE9, 0x48, 0x12, 0x91, 0x32, 0x50, + 0x21, 0x75, 0x74, 0x69, 0x88, 0x54, 0xC6, 0xF3, 0xC9, 0x37, 0x3C, 0xB3, 0x89, 0xAB, 0x33, 0x1F, + 0x79, 0x57, 0xF7, 0xE4, 0xB5, 0x87, 0x0C, 0xA4, 0x99, 0x48, 0x89, 0x63, 0x5F, 0x72, 0xA1, 0xBC, + 0xFF, 0xFE, 0xF8, 0xB3, 0xF1, 0x00, 0xE4, 0xD4, 0x01, 0x9B, 0xB7, 0x2E, 0x4F, 0xA0, 0x90, 0xE4, + 0x9B, 0x6A, 0xA8, 0xBA, 0xE1, 0xD3, 0xD5, 0xBC, 0xEB, 0xC5, 0xB2, 0x89, 0xB4, 0xE9, 0x4D, 0x3F, + 0x4C, 0xFA, 0x8C, 0xCB, 0xCD, 0x22, 0x08, 0xB8, 0xC7, 0xB3, 0xA3, 0xED, 0x6B, 0xAC, 0xF3, 0x2D, + 0x98, 0x70, 0x41, 0x47, 0x85, 0xE8, 0x6E, 0x31, 0x0A, 0xC2, 0x3E, 0x51, 0x39, 0x55, 0xF8, 0x4A, + 0xE9, 0x48, 0x64, 0x01, 0xDB, 0x8D, 0xE3, 0xAF, 0xA4, 0xB9, 0xD8, 0x19, 0xCA, 0x86, 0xCA, 0xA1, + 0x6C, 0x1C, 0x12, 0x3D, 0xA1, 0x02, 0x23, 0x1D, 0x29, 0x5D, 0x94, 0x04, 0xC6, 0x51, 0x01, 0x40, + 0x0B, 0xB3, 0x69, 0x25, 0x45, 0xEF, 0x43, 0x81, 0x4F, 0x97, 0x57, 0x0D, 0xA1, 0xA5, 0xC9, 0x9D, + 0xE6, 0x56, 0xB9, 0x38, 0x93, 0xA1, 0x78, 0xC5, 0xBF, 0x75, 0xFE, 0x81, 0x6A, 0x35, 0x64, 0x89, + 0x64, 0x43, 0x75, 0xFD, 0x29, 0x63, 0xD1, 0x15, 0xAB, 0x43, 0x60, 0x65, 0xDC, 0x98, 0xD5, 0xC7, + 0x6E, 0xF9, 0xB2, 0x38, 0xFB, 0x6E, 0xB0, 0x34, 0x9C, 0xA3, 0x73, 0x61, 0xF5, 0x51, 0xFF, 0x1F, + 0xCE, 0xB0, 0x08, 0x83, 0x29, 0xB3, 0x82, 0x07, 0xFA, 0xC4, 0xE5, 0x21, 0xD3, 0xA0, 0xD4, 0xC0, + 0xF8, 0x1A, 0x65, 0x9B, 0x35, 0x7A, 0xE3, 0x32, 0xA5, 0x4D, 0x77, 0x1F, 0x23, 0x19, 0xCC, 0xE1, + 0xB3, 0x50, 0x0D, 0xE8, 0x2F, 0x8B, 0x18, 0x89, 0x61, 0xCB, 0x22, 0xBA, 0xE0, 0x4A, 0xA2, 0x7F, + 0xA5, 0x1B, 0x45, 0x59, 0x33, 0xC4, 0x73, 0xDF, 0x42, 0xC6, 0x00, 0x11, 0x37, 0xF2, 0x3C, 0x1B, + 0xF4, 0x26, 0xD1, 0x6D, 0x93, 0xC1, 0x94, 0xD2, 0x60, 0xE5, 0xF3, 0x91, 0x66, 0x92, 0x3C, 0x65, + 0x27, 0xC1, 0x83, 0x13, 0x76, 0x5A, 0x88, 0xEC, 0xB2, 0x59, 0x95, 0x18, 0x81, 0x2E, 0x94, 0x96, + 0x53, 0x17, 0xB6, 0xFD, 0x8C, 0xCC, 0xBE, 0x8D, 0x36, 0xB3, 0xC8, 0xF2, 0xB2, 0xBE, 0x0F, 0x12, + 0x99, 0xFF, 0xFA, 0xF9, 0x18, 0xAB, 0x30, 0xFA, 0xB1, 0x5B, 0xF2, 0xEE, 0xCA, 0x6E, 0xA1, 0xD9, + 0xCE, 0xCC, 0x60, 0xA0, 0x4D, 0xFD, 0x7C, 0xAD, 0x4D, 0x50, 0xB6, 0x88, 0x0D, 0x88, 0x3B, 0x28, + 0x7F, 0xA1, 0x28, 0x41, 0x0A, 0x43, 0xAD, 0xCC, 0x08, 0x14, 0xF3, 0xF2, 0x43, 0xE7, 0xCF, 0x6A, + 0x5C, 0x11, 0xD0, 0x6D, 0x99, 0xC8, 0x4F, 0xB1, 0x14, 0x06, 0xBC, 0x68, 0x6D, 0xBE, 0xCD, 0xD7, + 0x58, 0xA2, 0x17, 0xF5, 0x9E, 0xFD, 0xDA, 0xFA, 0xBF, 0x73, 0x57, 0x4A, 0xF8, 0xF3, 0xA9, 0x94, + 0xB3, 0x01, 0xE9, 0xA3, 0xDA, 0xEA, 0xC1, 0x40, 0x33, 0xAA, 0x3F, 0xE6, 0x0D, 0x6A, 0xE2, 0xF3, + 0x74, 0xE8, 0x1B, 0x3C, 0x2B, 0x25, 0x44, 0x8E, 0x1C, 0x36, 0xBE, 0xA9, 0x27, 0x6E, 0x6A, 0x48, + 0x8E, 0x2F, 0x2C, 0x9D, 0x71, 0x66, 0x23, 0x7C, 0x7A, 0x74, 0x93, 0x46, 0x2D, 0xCA, 0x6B, 0xC6, + 0x33, 0xDA, 0x1E, 0x1E, 0x44, 0x07, 0xFD, 0x89, 0x5D, 0x30, 0x02, 0x4C, 0xB1, 0x73, 0xC0, 0x91, + 0xEB, 0xA5, 0x61, 0x89, 0xA4, 0x04, 0xFD, 0xD5, 0x5F, 0x54, 0x59, 0x81, 0xC3, 0x2A, 0x13, 0x89, + 0xDA, 0x68, 0xB6, 0x3A, 0x9C, 0x70, 0x6F, 0x48, 0xB4, 0x3C, 0xF8, 0x9B, 0xF8, 0xF2, 0x59, 0xBF, + 0xF4, 0x8D, 0x06, 0x58, 0xEA, 0xA2, 0xA6, 0xB4, 0x70, 0x08, 0x80, 0x2B, 0x50, 0x13, 0x36, 0x79, + 0x17, 0x0B, 0x94, 0x0E, 0x4D, 0xF5, 0xC8, 0x14, 0xB9, 0x02, 0x7D, 0xEE, 0x6B, 0xBD, 0x10, 0xB4, + 0x85, 0x74, 0xA1, 0xB9, 0x84, 0x67, 0xC6, 0x2C, 0xDB, 0xDA, 0x55, 0x54, 0x16, 0xDA, 0x02, 0xB6, + 0xDA, 0x2A, 0x9B, 0x51, 0xD6, 0xDC, 0x87, 0x80, 0xC1, 0xB8, 0x6F, 0x0C, 0xEF, 0x4B, 0xD1, 0x1A, + 0x9F, 0x36, 0x2E, 0x9C, 0x7E, 0x5F, 0x17, 0xE2, 0xC1, 0x82, 0x0C, 0x42, 0x0D, 0x15, 0x18, 0xCA, +}} + +var lookupG2 = [1 << 8]byte{ + 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, + 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3E, + 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5A, 0x5C, 0x5E, + 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7A, 0x7C, 0x7E, + 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9A, 0x9C, 0x9E, + 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, + 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, + 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, + 0x1B, 0x19, 0x1F, 0x1D, 0x13, 0x11, 0x17, 0x15, 0x0B, 0x09, 0x0F, 0x0D, 0x03, 0x01, 0x07, 0x05, + 0x3B, 0x39, 0x3F, 0x3D, 0x33, 0x31, 0x37, 0x35, 0x2B, 0x29, 0x2F, 0x2D, 0x23, 0x21, 0x27, 0x25, + 0x5B, 0x59, 0x5F, 0x5D, 0x53, 0x51, 0x57, 0x55, 0x4B, 0x49, 0x4F, 0x4D, 0x43, 0x41, 0x47, 0x45, + 0x7B, 0x79, 0x7F, 0x7D, 0x73, 0x71, 0x77, 0x75, 0x6B, 0x69, 0x6F, 0x6D, 0x63, 0x61, 0x67, 0x65, + 0x9B, 0x99, 0x9F, 0x9D, 0x93, 0x91, 0x97, 0x95, 0x8B, 0x89, 0x8F, 0x8D, 0x83, 0x81, 0x87, 0x85, + 0xBB, 0xB9, 0xBF, 0xBD, 0xB3, 0xB1, 0xB7, 0xB5, 0xAB, 0xA9, 0xAF, 0xAD, 0xA3, 0xA1, 0xA7, 0xA5, + 0xDB, 0xD9, 0xDF, 0xDD, 0xD3, 0xD1, 0xD7, 0xD5, 0xCB, 0xC9, 0xCF, 0xCD, 0xC3, 0xC1, 0xC7, 0xC5, + 0xFB, 0xF9, 0xFF, 0xFD, 0xF3, 0xF1, 0xF7, 0xF5, 0xEB, 0xE9, 0xEF, 0xED, 0xE3, 0xE1, 0xE7, 0xE5, +} + +var lookupG3 = [1 << 8]byte{ + 0x00, 0x03, 0x06, 0x05, 0x0C, 0x0F, 0x0A, 0x09, 0x18, 0x1B, 0x1E, 0x1D, 0x14, 0x17, 0x12, 0x11, + 0x30, 0x33, 0x36, 0x35, 0x3C, 0x3F, 0x3A, 0x39, 0x28, 0x2B, 0x2E, 0x2D, 0x24, 0x27, 0x22, 0x21, + 0x60, 0x63, 0x66, 0x65, 0x6C, 0x6F, 0x6A, 0x69, 0x78, 0x7B, 0x7E, 0x7D, 0x74, 0x77, 0x72, 0x71, + 0x50, 0x53, 0x56, 0x55, 0x5C, 0x5F, 0x5A, 0x59, 0x48, 0x4B, 0x4E, 0x4D, 0x44, 0x47, 0x42, 0x41, + 0xC0, 0xC3, 0xC6, 0xC5, 0xCC, 0xCF, 0xCA, 0xC9, 0xD8, 0xDB, 0xDE, 0xDD, 0xD4, 0xD7, 0xD2, 0xD1, + 0xF0, 0xF3, 0xF6, 0xF5, 0xFC, 0xFF, 0xFA, 0xF9, 0xE8, 0xEB, 0xEE, 0xED, 0xE4, 0xE7, 0xE2, 0xE1, + 0xA0, 0xA3, 0xA6, 0xA5, 0xAC, 0xAF, 0xAA, 0xA9, 0xB8, 0xBB, 0xBE, 0xBD, 0xB4, 0xB7, 0xB2, 0xB1, + 0x90, 0x93, 0x96, 0x95, 0x9C, 0x9F, 0x9A, 0x99, 0x88, 0x8B, 0x8E, 0x8D, 0x84, 0x87, 0x82, 0x81, + 0x9B, 0x98, 0x9D, 0x9E, 0x97, 0x94, 0x91, 0x92, 0x83, 0x80, 0x85, 0x86, 0x8F, 0x8C, 0x89, 0x8A, + 0xAB, 0xA8, 0xAD, 0xAE, 0xA7, 0xA4, 0xA1, 0xA2, 0xB3, 0xB0, 0xB5, 0xB6, 0xBF, 0xBC, 0xB9, 0xBA, + 0xFB, 0xF8, 0xFD, 0xFE, 0xF7, 0xF4, 0xF1, 0xF2, 0xE3, 0xE0, 0xE5, 0xE6, 0xEF, 0xEC, 0xE9, 0xEA, + 0xCB, 0xC8, 0xCD, 0xCE, 0xC7, 0xC4, 0xC1, 0xC2, 0xD3, 0xD0, 0xD5, 0xD6, 0xDF, 0xDC, 0xD9, 0xDA, + 0x5B, 0x58, 0x5D, 0x5E, 0x57, 0x54, 0x51, 0x52, 0x43, 0x40, 0x45, 0x46, 0x4F, 0x4C, 0x49, 0x4A, + 0x6B, 0x68, 0x6D, 0x6E, 0x67, 0x64, 0x61, 0x62, 0x73, 0x70, 0x75, 0x76, 0x7F, 0x7C, 0x79, 0x7A, + 0x3B, 0x38, 0x3D, 0x3E, 0x37, 0x34, 0x31, 0x32, 0x23, 0x20, 0x25, 0x26, 0x2F, 0x2C, 0x29, 0x2A, + 0x0B, 0x08, 0x0D, 0x0E, 0x07, 0x04, 0x01, 0x02, 0x13, 0x10, 0x15, 0x16, 0x1F, 0x1C, 0x19, 0x1A, +} + +var lookupG9 = [1 << 8]byte{ + 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F, 0x48, 0x41, 0x5A, 0x53, 0x6C, 0x65, 0x7E, 0x77, + 0x90, 0x99, 0x82, 0x8B, 0xB4, 0xBD, 0xA6, 0xAF, 0xD8, 0xD1, 0xCA, 0xC3, 0xFC, 0xF5, 0xEE, 0xE7, + 0x3B, 0x32, 0x29, 0x20, 0x1F, 0x16, 0x0D, 0x04, 0x73, 0x7A, 0x61, 0x68, 0x57, 0x5E, 0x45, 0x4C, + 0xAB, 0xA2, 0xB9, 0xB0, 0x8F, 0x86, 0x9D, 0x94, 0xE3, 0xEA, 0xF1, 0xF8, 0xC7, 0xCE, 0xD5, 0xDC, + 0x76, 0x7F, 0x64, 0x6D, 0x52, 0x5B, 0x40, 0x49, 0x3E, 0x37, 0x2C, 0x25, 0x1A, 0x13, 0x08, 0x01, + 0xE6, 0xEF, 0xF4, 0xFD, 0xC2, 0xCB, 0xD0, 0xD9, 0xAE, 0xA7, 0xBC, 0xB5, 0x8A, 0x83, 0x98, 0x91, + 0x4D, 0x44, 0x5F, 0x56, 0x69, 0x60, 0x7B, 0x72, 0x05, 0x0C, 0x17, 0x1E, 0x21, 0x28, 0x33, 0x3A, + 0xDD, 0xD4, 0xCF, 0xC6, 0xF9, 0xF0, 0xEB, 0xE2, 0x95, 0x9C, 0x87, 0x8E, 0xB1, 0xB8, 0xA3, 0xAA, + 0xEC, 0xE5, 0xFE, 0xF7, 0xC8, 0xC1, 0xDA, 0xD3, 0xA4, 0xAD, 0xB6, 0xBF, 0x80, 0x89, 0x92, 0x9B, + 0x7C, 0x75, 0x6E, 0x67, 0x58, 0x51, 0x4A, 0x43, 0x34, 0x3D, 0x26, 0x2F, 0x10, 0x19, 0x02, 0x0B, + 0xD7, 0xDE, 0xC5, 0xCC, 0xF3, 0xFA, 0xE1, 0xE8, 0x9F, 0x96, 0x8D, 0x84, 0xBB, 0xB2, 0xA9, 0xA0, + 0x47, 0x4E, 0x55, 0x5C, 0x63, 0x6A, 0x71, 0x78, 0x0F, 0x06, 0x1D, 0x14, 0x2B, 0x22, 0x39, 0x30, + 0x9A, 0x93, 0x88, 0x81, 0xBE, 0xB7, 0xAC, 0xA5, 0xD2, 0xDB, 0xC0, 0xC9, 0xF6, 0xFF, 0xE4, 0xED, + 0x0A, 0x03, 0x18, 0x11, 0x2E, 0x27, 0x3C, 0x35, 0x42, 0x4B, 0x50, 0x59, 0x66, 0x6F, 0x74, 0x7D, + 0xA1, 0xA8, 0xB3, 0xBA, 0x85, 0x8C, 0x97, 0x9E, 0xE9, 0xE0, 0xFB, 0xF2, 0xCD, 0xC4, 0xDF, 0xD6, + 0x31, 0x38, 0x23, 0x2A, 0x15, 0x1C, 0x07, 0x0E, 0x79, 0x70, 0x6B, 0x62, 0x5D, 0x54, 0x4F, 0x46, +} + +var lookupG11 = [1 << 8]byte{ + 0x00, 0x0B, 0x16, 0x1D, 0x2C, 0x27, 0x3A, 0x31, 0x58, 0x53, 0x4E, 0x45, 0x74, 0x7F, 0x62, 0x69, + 0xB0, 0xBB, 0xA6, 0xAD, 0x9C, 0x97, 0x8A, 0x81, 0xE8, 0xE3, 0xFE, 0xF5, 0xC4, 0xCF, 0xD2, 0xD9, + 0x7B, 0x70, 0x6D, 0x66, 0x57, 0x5C, 0x41, 0x4A, 0x23, 0x28, 0x35, 0x3E, 0x0F, 0x04, 0x19, 0x12, + 0xCB, 0xC0, 0xDD, 0xD6, 0xE7, 0xEC, 0xF1, 0xFA, 0x93, 0x98, 0x85, 0x8E, 0xBF, 0xB4, 0xA9, 0xA2, + 0xF6, 0xFD, 0xE0, 0xEB, 0xDA, 0xD1, 0xCC, 0xC7, 0xAE, 0xA5, 0xB8, 0xB3, 0x82, 0x89, 0x94, 0x9F, + 0x46, 0x4D, 0x50, 0x5B, 0x6A, 0x61, 0x7C, 0x77, 0x1E, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2F, + 0x8D, 0x86, 0x9B, 0x90, 0xA1, 0xAA, 0xB7, 0xBC, 0xD5, 0xDE, 0xC3, 0xC8, 0xF9, 0xF2, 0xEF, 0xE4, + 0x3D, 0x36, 0x2B, 0x20, 0x11, 0x1A, 0x07, 0x0C, 0x65, 0x6E, 0x73, 0x78, 0x49, 0x42, 0x5F, 0x54, + 0xF7, 0xFC, 0xE1, 0xEA, 0xDB, 0xD0, 0xCD, 0xC6, 0xAF, 0xA4, 0xB9, 0xB2, 0x83, 0x88, 0x95, 0x9E, + 0x47, 0x4C, 0x51, 0x5A, 0x6B, 0x60, 0x7D, 0x76, 0x1F, 0x14, 0x09, 0x02, 0x33, 0x38, 0x25, 0x2E, + 0x8C, 0x87, 0x9A, 0x91, 0xA0, 0xAB, 0xB6, 0xBD, 0xD4, 0xDF, 0xC2, 0xC9, 0xF8, 0xF3, 0xEE, 0xE5, + 0x3C, 0x37, 0x2A, 0x21, 0x10, 0x1B, 0x06, 0x0D, 0x64, 0x6F, 0x72, 0x79, 0x48, 0x43, 0x5E, 0x55, + 0x01, 0x0A, 0x17, 0x1C, 0x2D, 0x26, 0x3B, 0x30, 0x59, 0x52, 0x4F, 0x44, 0x75, 0x7E, 0x63, 0x68, + 0xB1, 0xBA, 0xA7, 0xAC, 0x9D, 0x96, 0x8B, 0x80, 0xE9, 0xE2, 0xFF, 0xF4, 0xC5, 0xCE, 0xD3, 0xD8, + 0x7A, 0x71, 0x6C, 0x67, 0x56, 0x5D, 0x40, 0x4B, 0x22, 0x29, 0x34, 0x3F, 0x0E, 0x05, 0x18, 0x13, + 0xCA, 0xC1, 0xDC, 0xD7, 0xE6, 0xED, 0xF0, 0xFB, 0x92, 0x99, 0x84, 0x8F, 0xBE, 0xB5, 0xA8, 0xA3, +} + +var lookupG13 = [1 << 8]byte{ + 0x00, 0x0D, 0x1A, 0x17, 0x34, 0x39, 0x2E, 0x23, 0x68, 0x65, 0x72, 0x7F, 0x5C, 0x51, 0x46, 0x4B, + 0xD0, 0xDD, 0xCA, 0xC7, 0xE4, 0xE9, 0xFE, 0xF3, 0xB8, 0xB5, 0xA2, 0xAF, 0x8C, 0x81, 0x96, 0x9B, + 0xBB, 0xB6, 0xA1, 0xAC, 0x8F, 0x82, 0x95, 0x98, 0xD3, 0xDE, 0xC9, 0xC4, 0xE7, 0xEA, 0xFD, 0xF0, + 0x6B, 0x66, 0x71, 0x7C, 0x5F, 0x52, 0x45, 0x48, 0x03, 0x0E, 0x19, 0x14, 0x37, 0x3A, 0x2D, 0x20, + 0x6D, 0x60, 0x77, 0x7A, 0x59, 0x54, 0x43, 0x4E, 0x05, 0x08, 0x1F, 0x12, 0x31, 0x3C, 0x2B, 0x26, + 0xBD, 0xB0, 0xA7, 0xAA, 0x89, 0x84, 0x93, 0x9E, 0xD5, 0xD8, 0xCF, 0xC2, 0xE1, 0xEC, 0xFB, 0xF6, + 0xD6, 0xDB, 0xCC, 0xC1, 0xE2, 0xEF, 0xF8, 0xF5, 0xBE, 0xB3, 0xA4, 0xA9, 0x8A, 0x87, 0x90, 0x9D, + 0x06, 0x0B, 0x1C, 0x11, 0x32, 0x3F, 0x28, 0x25, 0x6E, 0x63, 0x74, 0x79, 0x5A, 0x57, 0x40, 0x4D, + 0xDA, 0xD7, 0xC0, 0xCD, 0xEE, 0xE3, 0xF4, 0xF9, 0xB2, 0xBF, 0xA8, 0xA5, 0x86, 0x8B, 0x9C, 0x91, + 0x0A, 0x07, 0x10, 0x1D, 0x3E, 0x33, 0x24, 0x29, 0x62, 0x6F, 0x78, 0x75, 0x56, 0x5B, 0x4C, 0x41, + 0x61, 0x6C, 0x7B, 0x76, 0x55, 0x58, 0x4F, 0x42, 0x09, 0x04, 0x13, 0x1E, 0x3D, 0x30, 0x27, 0x2A, + 0xB1, 0xBC, 0xAB, 0xA6, 0x85, 0x88, 0x9F, 0x92, 0xD9, 0xD4, 0xC3, 0xCE, 0xED, 0xE0, 0xF7, 0xFA, + 0xB7, 0xBA, 0xAD, 0xA0, 0x83, 0x8E, 0x99, 0x94, 0xDF, 0xD2, 0xC5, 0xC8, 0xEB, 0xE6, 0xF1, 0xFC, + 0x67, 0x6A, 0x7D, 0x70, 0x53, 0x5E, 0x49, 0x44, 0x0F, 0x02, 0x15, 0x18, 0x3B, 0x36, 0x21, 0x2C, + 0x0C, 0x01, 0x16, 0x1B, 0x38, 0x35, 0x22, 0x2F, 0x64, 0x69, 0x7E, 0x73, 0x50, 0x5D, 0x4A, 0x47, + 0xDC, 0xD1, 0xC6, 0xCB, 0xE8, 0xE5, 0xF2, 0xFF, 0xB4, 0xB9, 0xAE, 0xA3, 0x80, 0x8D, 0x9A, 0x97, +} + +var lookupG14 = [1 << 8]byte{ + 0x00, 0x0E, 0x1C, 0x12, 0x38, 0x36, 0x24, 0x2A, 0x70, 0x7E, 0x6C, 0x62, 0x48, 0x46, 0x54, 0x5A, + 0xE0, 0xEE, 0xFC, 0xF2, 0xD8, 0xD6, 0xC4, 0xCA, 0x90, 0x9E, 0x8C, 0x82, 0xA8, 0xA6, 0xB4, 0xBA, + 0xDB, 0xD5, 0xC7, 0xC9, 0xE3, 0xED, 0xFF, 0xF1, 0xAB, 0xA5, 0xB7, 0xB9, 0x93, 0x9D, 0x8F, 0x81, + 0x3B, 0x35, 0x27, 0x29, 0x03, 0x0D, 0x1F, 0x11, 0x4B, 0x45, 0x57, 0x59, 0x73, 0x7D, 0x6F, 0x61, + 0xAD, 0xA3, 0xB1, 0xBF, 0x95, 0x9B, 0x89, 0x87, 0xDD, 0xD3, 0xC1, 0xCF, 0xE5, 0xEB, 0xF9, 0xF7, + 0x4D, 0x43, 0x51, 0x5F, 0x75, 0x7B, 0x69, 0x67, 0x3D, 0x33, 0x21, 0x2F, 0x05, 0x0B, 0x19, 0x17, + 0x76, 0x78, 0x6A, 0x64, 0x4E, 0x40, 0x52, 0x5C, 0x06, 0x08, 0x1A, 0x14, 0x3E, 0x30, 0x22, 0x2C, + 0x96, 0x98, 0x8A, 0x84, 0xAE, 0xA0, 0xB2, 0xBC, 0xE6, 0xE8, 0xFA, 0xF4, 0xDE, 0xD0, 0xC2, 0xCC, + 0x41, 0x4F, 0x5D, 0x53, 0x79, 0x77, 0x65, 0x6B, 0x31, 0x3F, 0x2D, 0x23, 0x09, 0x07, 0x15, 0x1B, + 0xA1, 0xAF, 0xBD, 0xB3, 0x99, 0x97, 0x85, 0x8B, 0xD1, 0xDF, 0xCD, 0xC3, 0xE9, 0xE7, 0xF5, 0xFB, + 0x9A, 0x94, 0x86, 0x88, 0xA2, 0xAC, 0xBE, 0xB0, 0xEA, 0xE4, 0xF6, 0xF8, 0xD2, 0xDC, 0xCE, 0xC0, + 0x7A, 0x74, 0x66, 0x68, 0x42, 0x4C, 0x5E, 0x50, 0x0A, 0x04, 0x16, 0x18, 0x32, 0x3C, 0x2E, 0x20, + 0xEC, 0xE2, 0xF0, 0xFE, 0xD4, 0xDA, 0xC8, 0xC6, 0x9C, 0x92, 0x80, 0x8E, 0xA4, 0xAA, 0xB8, 0xB6, + 0x0C, 0x02, 0x10, 0x1E, 0x34, 0x3A, 0x28, 0x26, 0x7C, 0x72, 0x60, 0x6E, 0x44, 0x4A, 0x58, 0x56, + 0x37, 0x39, 0x2B, 0x25, 0x0F, 0x01, 0x13, 0x1D, 0x47, 0x49, 0x5B, 0x55, 0x7F, 0x71, 0x63, 0x6D, + 0xD7, 0xD9, 0xCB, 0xC5, 0xEF, 0xE1, 0xF3, 0xFD, 0xA7, 0xA9, 0xBB, 0xB5, 0x9F, 0x91, 0x83, 0x8D, +} + +var lookupSbox = [1 << 8]byte{ + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16, +} + +var lookupSboxInv = [1 << 8]byte{ + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D, +} + +var shiftRowsTable = [16]byte{ + 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11, +} + +var shiftRowsTableInv = [16]byte{ + 0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3, +} diff --git a/pkg/random/hk4e_mt19937.go b/pkg/random/hk4e_mt19937.go new file mode 100644 index 00000000..0a3604a2 --- /dev/null +++ b/pkg/random/hk4e_mt19937.go @@ -0,0 +1,91 @@ +package random + +import ( + "encoding/binary" + "math/rand" +) + +const ( + N = 312 + M = 156 + MATRIX_A = 0xB5026F5AA96619E9 + UPPER_MASK = 0xFFFFFFFF80000000 + LOWER_MASK = 0x7FFFFFFF +) + +type source struct { + array [312]uint64 // state vector + index uint64 // array index +} + +func NewRand() *rand.Rand { return rand.New(NewSource64()) } +func NewRand64() *rand.Rand { return rand.New(NewSource64()) } +func NewSource() rand.Source { return &source{index: N + 1} } +func NewSource64() rand.Source64 { return &source{index: N + 1} } + +func (s *source) Seed(seed int64) { + s.array[0] = uint64(seed) + for s.index = 1; s.index < N; s.index++ { + s.array[s.index] = (0x5851F42D4C957F2D*(s.array[s.index-1]^(s.array[s.index-1]>>62)) + s.index) + } +} + +func (s *source) Int63() int64 { + return int64(s.Uint64() & 0x7FFFFFFFFFFFFFFE) +} + +func (s *source) Uint64() uint64 { + var i int + var x uint64 + magic := []uint64{0, MATRIX_A} + if s.index >= N { + if s.index == N+1 { + s.Seed(int64(5489)) + } + for i = 0; i < N-M; i++ { + x = (s.array[i] & UPPER_MASK) | (s.array[i+1] & LOWER_MASK) + s.array[i] = s.array[i+(M)] ^ (x >> 1) ^ magic[int(x&uint64(1))] + } + for ; i < N-1; i++ { + x = (s.array[i] & UPPER_MASK) | (s.array[i+1] & LOWER_MASK) + s.array[i] = s.array[i+(M-N)] ^ (x >> 1) ^ magic[int(x&uint64(1))] + } + x = (s.array[N-1] & UPPER_MASK) | (s.array[0] & LOWER_MASK) + s.array[N-1] = s.array[M-1] ^ (x >> 1) ^ magic[int(x&uint64(1))] + s.index = 0 + } + x = s.array[s.index] + s.index++ + x ^= (x >> 29) & 0x5555555555555555 + x ^= (x << 17) & 0x71D67FFFEDA60000 + x ^= (x << 37) & 0xFFF7EEE000000000 + x ^= (x >> 43) + return x +} + +type KeyBlock struct { + seed uint64 + data [4096]byte +} + +func NewKeyBlock(seed uint64) *KeyBlock { + b := &KeyBlock{seed: seed} + r := NewRand() + r.Seed(int64(b.seed)) + r.Seed(int64(r.Uint64())) + r.Uint64() + for i := 0; i < 4096>>3; i++ { + binary.BigEndian.PutUint64(b.data[i<<3:], r.Uint64()) + } + return b +} + +func (b *KeyBlock) Seed() uint64 { + return b.seed +} + +func (b *KeyBlock) Xor(data []byte) { + for i := 0; i < len(data); i++ { + data[i] ^= b.data[i%4096] + } +} diff --git a/pkg/random/hk4e_test.go b/pkg/random/hk4e_test.go new file mode 100644 index 00000000..68abb289 --- /dev/null +++ b/pkg/random/hk4e_test.go @@ -0,0 +1,39 @@ +package random + +import ( + "fmt" + "os" + "testing" +) + +func TestKey(t *testing.T) { + fmt.Println("hw") + + //dispatchEc2b := NewEc2b() + keyBin, err := os.ReadFile("./static/dispatchSeed.bin") + if err != nil { + panic(err) + } + dispatchEc2b, err := LoadKey(keyBin) + if err != nil { + panic(err) + } + dispatchBin := dispatchEc2b.Bytes() + dispatchSeed := dispatchEc2b.Seed() + _ = dispatchBin + + gateDispatchEc2b := NewEc2b() + gateDispatchEc2b.SetSeed(dispatchSeed) + + dispatchKey := make([]byte, 4096) + dispatchEc2b.Xor(dispatchKey) + + gateDispatchKey := make([]byte, 4096) + gateDispatchEc2b.Xor(gateDispatchKey) + + gateXorKey := make([]byte, 4096) + keyBlock := NewKeyBlock(uint64(11468049314633205968)) + keyBlock.Xor(gateXorKey) + + fmt.Println("end") +}