@coti-io/coti-contracts 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +3 -115
  2. package/contracts/mocks/README.md +1 -1
  3. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +105 -280
  4. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +83 -187
  5. package/contracts/mocks/utils/mpc/{Comparison1Tests.Contract.sol → Comparison1TestsContract.sol} +67 -115
  6. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +68 -116
  7. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +69 -164
  8. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +70 -52
  9. package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +270 -0
  10. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +102 -0
  11. package/contracts/mocks/utils/mpc/README.md +12 -12
  12. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +54 -211
  13. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +162 -640
  14. package/contracts/onboard/AccountOnboard.sol +3 -3
  15. package/contracts/utils/mpc/MpcCore.sol +2835 -988
  16. package/contracts/utils/mpc/MpcInterface.sol +6 -4
  17. package/hardhat.config.ts +8 -5
  18. package/package.json +2 -2
  19. package/test/utils/accounts.ts +1 -1
  20. package/test/utils/mpc/Precompile.test.ts +26 -37
  21. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract.ts +374 -0
  22. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract.ts +374 -0
  23. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/index.ts +5 -0
  24. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +30 -10
  25. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +39 -5
  26. package/typechain-types/contracts/mocks/utils/mpc/Comparison1TestsContract.ts +374 -0
  27. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +39 -5
  28. package/typechain-types/contracts/mocks/utils/mpc/MinMaxTestsContract.ts +25 -5
  29. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.ts +62 -0
  30. package/typechain-types/contracts/mocks/utils/mpc/MiscellaneousTestsContract.ts +396 -0
  31. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.ts +221 -0
  32. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract.ts +11 -8
  33. package/typechain-types/contracts/mocks/utils/mpc/TransferScalarTestsContract.ts +15 -15
  34. package/typechain-types/contracts/mocks/utils/mpc/TransferTestsContract.ts +15 -15
  35. package/typechain-types/contracts/mocks/utils/mpc/index.ts +3 -6
  36. package/typechain-types/contracts/onboard/AccountOnboard.ts +9 -4
  37. package/typechain-types/contracts/utils/mpc/MpcCore.ts +84 -0
  38. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +81 -40
  39. package/typechain-types/contracts/utils/mpc/index.ts +1 -0
  40. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  41. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  42. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  43. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract__factory.ts +387 -0
  44. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract__factory.ts +388 -0
  45. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/index.ts +5 -0
  46. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +20 -7
  47. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +28 -2
  48. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract__factory.ts +1 -1
  49. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +387 -0
  50. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +28 -2
  51. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +15 -2
  52. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +66 -1
  53. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous2TestsContract__factory.ts +1 -1
  54. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +424 -0
  55. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +289 -0
  56. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract__factory.ts +19 -3
  57. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  58. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  59. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +4 -4
  60. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +4 -4
  61. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +3 -4
  62. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  63. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +8 -2
  64. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +77 -0
  65. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +124 -61
  66. package/typechain-types/factories/contracts/utils/mpc/index.ts +1 -0
  67. package/typechain-types/hardhat.d.ts +26 -26
  68. package/typechain-types/index.ts +8 -8
  69. package/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.sol +0 -448
  70. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol +0 -81
  71. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +0 -311
@@ -203,7 +203,33 @@ const _abi = [
203
203
  },
204
204
  {
205
205
  inputs: [],
206
- name: "getResult",
206
+ name: "getEqResult",
207
+ outputs: [
208
+ {
209
+ internalType: "bool",
210
+ name: "",
211
+ type: "bool",
212
+ },
213
+ ],
214
+ stateMutability: "view",
215
+ type: "function",
216
+ },
217
+ {
218
+ inputs: [],
219
+ name: "getGeResult",
220
+ outputs: [
221
+ {
222
+ internalType: "bool",
223
+ name: "",
224
+ type: "bool",
225
+ },
226
+ ],
227
+ stateMutability: "view",
228
+ type: "function",
229
+ },
230
+ {
231
+ inputs: [],
232
+ name: "getNeResult",
207
233
  outputs: [
208
234
  {
209
235
  internalType: "bool",
@@ -306,7 +332,7 @@ const _abi = [
306
332
  ] as const;
307
333
 
308
334
  const _bytecode =
309
- "0x608060405234801561001057600080fd5b506157f180620000216000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063acb381691161005b578063acb381691461014d578063bc3aa1ed1461017d578063de292789146101ad578063ebb571fd146101cb57610088565b80631988e3221461008d5780632e544aa0146100bd57806370eb37ee146100ed57806380f937bc1461011d575b600080fd5b6100a760048036038101906100a291906145a9565b6101e7565b6040516100b49190614604565b60405180910390f35b6100d760048036038101906100d2919061474a565b61078e565b6040516100e49190614604565b60405180910390f35b610107600480360381019061010291906145a9565b610816565b6040516101149190614604565b60405180910390f35b6101376004803603810190610132919061482b565b610dbd565b6040516101449190614604565b60405180910390f35b610167600480360381019061016291906148e4565b610eb1565b6040516101749190614604565b60405180910390f35b610197600480360381019061019291906145a9565b610f6f565b6040516101a49190614604565b60405180910390f35b6101b5611516565b6040516101c29190614604565b60405180910390f35b6101e560048036038101906101e09190614a8b565b61152c565b005b60006101f161448f565b6101f96144d4565b6102016144f5565b610209614524565b61021484888861152c565b61022e610229856000015186602001516115d3565b61166a565b6000806101000a81548160ff02191690831515021790555061025884604001518560600151611711565b836000018181525050610273846000015185606001516117a8565b83602001818152505061028e84604001518560200151611840565b83604001818152505060006102a28461078e565b905060008054906101000a900460ff161515811515146102f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ee90614b3e565b60405180910390fd5b61030985608001518660a001516118d8565b83600001818152505061032485600001518660a0015161196f565b83602001818152505061033f85608001518660200151611a07565b83604001818152505061035a85604001518660a00151611a9f565b83606001818152505061037585608001518660600151611b37565b836080018181525050600061038984610eb1565b905080151560008054906101000a900460ff161515146103de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d590614baa565b60405180910390fd5b6103f08660c001518760e00151611bcf565b83600001818152505061040b86600001518760e00151611c66565b8360200181815250506104268660c001518760200151611cfe565b83604001818152505061044186604001518760e00151611d96565b83606001818152505061045c8660c001518760600151611e2e565b83608001818152505061047786608001518760e00151611ec6565b8360a00181815250506104928660c001518760a00151611f5e565b8360c001818152505060006104a684610dbd565b905080151560008054906101000a900460ff161515146104fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f290614c16565b60405180910390fd5b61051161050c8b8960200151611ff6565b61166a565b151560008054906101000a900460ff161515148015610555575061054161053c88600001518b612090565b61166a565b151560008054906101000a900460ff161515145b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058b90614ca8565b60405180910390fd5b6105ad6105a88b60ff16896060015161212a565b61166a565b151560008054906101000a900460ff1615151480156105f457506105e06105db88604001518b60ff166121c5565b61166a565b151560008054906101000a900460ff161515145b610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062a90614d3a565b60405180910390fd5b61064c6106478b60ff168960a00151612260565b61166a565b151560008054906101000a900460ff161515148015610693575061067f61067a88608001518b60ff166122fd565b61166a565b151560008054906101000a900460ff161515145b6106d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c990614dcc565b60405180910390fd5b6106eb6106e68b60ff168960e0015161239a565b61166a565b151560008054906101000a900460ff161515148015610732575061071e6107198860c001518b60ff1661243b565b61166a565b151560008054906101000a900460ff161515145b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076890614e5e565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b60008061079e836000015161166a565b90506107ad836020015161166a565b15158115151480156107ce57506107c7836040015161166a565b1515811515145b61080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080490614f16565b60405180910390fd5b80915050919050565b600061082061448f565b6108286144d4565b6108306144f5565b610838614524565b61084384888861152c565b61085d610858856000015186602001516124dc565b61166a565b6000806101000a81548160ff02191690831515021790555061088784604001518560600151612573565b8360000181815250506108a28460000151856060015161260a565b8360200181815250506108bd846040015185602001516126a2565b83604001818152505060006108d18461078e565b905060008054906101000a900460ff16151581151514610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d90614f82565b60405180910390fd5b61093885608001518660a0015161273a565b83600001818152505061095385600001518660a001516127d1565b83602001818152505061096e85608001518660200151612869565b83604001818152505061098985604001518660a00151612901565b8360600181815250506109a485608001518660600151612999565b83608001818152505060006109b884610eb1565b905080151560008054906101000a900460ff16151514610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490614fee565b60405180910390fd5b610a1f8660c001518760e00151612a31565b836000018181525050610a3a86600001518760e00151612ac8565b836020018181525050610a558660c001518760200151612b60565b836040018181525050610a7086604001518760e00151612bf8565b836060018181525050610a8b8660c001518760600151612c90565b836080018181525050610aa686608001518760e00151612d28565b8360a0018181525050610ac18660c001518760a00151612dc0565b8360c00181815250506000610ad584610dbd565b905080151560008054906101000a900460ff16151514610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b219061505a565b60405180910390fd5b610b40610b3b8b8960200151612e58565b61166a565b151560008054906101000a900460ff161515148015610b845750610b70610b6b88600001518b612ef2565b61166a565b151560008054906101000a900460ff161515145b610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906150ec565b60405180910390fd5b610bdc610bd78b60ff168960600151612f8c565b61166a565b151560008054906101000a900460ff161515148015610c235750610c0f610c0a88604001518b60ff16613027565b61166a565b151560008054906101000a900460ff161515145b610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c599061517e565b60405180910390fd5b610c7b610c768b60ff168960a001516130c2565b61166a565b151560008054906101000a900460ff161515148015610cc25750610cae610ca988608001518b60ff1661315f565b61166a565b151560008054906101000a900460ff161515145b610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890615210565b60405180910390fd5b610d1a610d158b60ff168960e001516131fc565b61166a565b151560008054906101000a900460ff161515148015610d615750610d4d610d488860c001518b60ff1661329d565b61166a565b151560008054906101000a900460ff161515145b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906152a2565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b600080610dcd836000015161166a565b9050610ddc836020015161166a565b1515811515148015610dfd5750610df6836040015161166a565b1515811515145b8015610e185750610e11836080015161166a565b1515811515145b8015610e335750610e2c836060015161166a565b1515811515145b8015610e4e5750610e478360c0015161166a565b1515811515145b8015610e695750610e628360a0015161166a565b1515811515145b610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90614f16565b60405180910390fd5b80915050919050565b600080610ec1836000015161166a565b9050610ed0836020015161166a565b1515811515148015610ef15750610eea836040015161166a565b1515811515145b8015610f0c5750610f05836080015161166a565b1515811515145b8015610f275750610f20836060015161166a565b1515811515145b610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90614f16565b60405180910390fd5b80915050919050565b6000610f7961448f565b610f816144d4565b610f896144f5565b610f91614524565b610f9c84888861152c565b610fb6610fb18560000151866020015161333e565b61166a565b6000806101000a81548160ff021916908315150217905550610fe0846040015185606001516133d5565b836000018181525050610ffb8460000151856060015161346c565b83602001818152505061101684604001518560200151613504565b836040018181525050600061102a8461078e565b905060008054906101000a900460ff1615158115151461107f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110769061530e565b60405180910390fd5b61109185608001518660a0015161359c565b8360000181815250506110ac85600001518660a00151613633565b8360200181815250506110c7856080015186602001516136cb565b8360400181815250506110e285604001518660a00151613763565b8360600181815250506110fd856080015186606001516137fb565b836080018181525050600061111184610eb1565b905080151560008054906101000a900460ff16151514611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d9061537a565b60405180910390fd5b6111788660c001518760e00151613893565b83600001818152505061119386600001518760e0015161392a565b8360200181815250506111ae8660c0015187602001516139c2565b8360400181815250506111c986604001518760e00151613a5a565b8360600181815250506111e48660c001518760600151613af2565b8360800181815250506111ff86608001518760e00151613b8a565b8360a001818152505061121a8660c001518760a00151613c22565b8360c0018181525050600061122e84610dbd565b905080151560008054906101000a900460ff16151514611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a906153e6565b60405180910390fd5b6112996112948b8960200151613cba565b61166a565b151560008054906101000a900460ff1615151480156112dd57506112c96112c488600001518b613d54565b61166a565b151560008054906101000a900460ff161515145b61131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131390615478565b60405180910390fd5b6113356113308b60ff168960600151613dee565b61166a565b151560008054906101000a900460ff16151514801561137c575061136861136388604001518b60ff16613e89565b61166a565b151560008054906101000a900460ff161515145b6113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b29061550a565b60405180910390fd5b6113d46113cf8b60ff168960a00151613f24565b61166a565b151560008054906101000a900460ff16151514801561141b575061140761140288608001518b60ff16613fc1565b61166a565b151560008054906101000a900460ff161515145b61145a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114519061559c565b60405180910390fd5b61147361146e8b60ff168960e0015161405e565b61166a565b151560008054906101000a900460ff1615151480156114ba57506114a66114a18860c001518b60ff166140ff565b61166a565b151560008054906101000a900460ff161515145b6114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f09061562e565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b60008060009054906101000a900460ff16905090565b611535826141a0565b836000018181525050611547816141a0565b83602001818152505061155c8260ff16614241565b8360400181815250506115718160ff16614241565b8360600181815250506115868260ff166142e3565b83608001818152505061159b8160ff166142e3565b8360a00181815250506115b08260ff16614387565b8360c00181815250506115c58160ff16614387565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746115ff600180600061442e565b85856040518463ffffffff1660e01b815260040161161f93929190615698565b6020604051808303816000875af115801561163e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166291906156fb565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616000600481111561169e5761169d615728565b5b60f81b856040518363ffffffff1660e01b81526004016116bf929190615792565b6020604051808303816000875af11580156116de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170291906156fb565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461173d600280600061442e565b85856040518463ffffffff1660e01b815260040161175d93929190615698565b6020604051808303816000875af115801561177c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a091906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746117d560016002600061442e565b85856040518463ffffffff1660e01b81526004016117f593929190615698565b6020604051808303816000875af1158015611814573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461186d60026001600061442e565b85856040518463ffffffff1660e01b815260040161188d93929190615698565b6020604051808303816000875af11580156118ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d091906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611904600380600061442e565b85856040518463ffffffff1660e01b815260040161192493929190615698565b6020604051808303816000875af1158015611943573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196791906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461199c60016003600061442e565b85856040518463ffffffff1660e01b81526004016119bc93929190615698565b6020604051808303816000875af11580156119db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ff91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611a3460036001600061442e565b85856040518463ffffffff1660e01b8152600401611a5493929190615698565b6020604051808303816000875af1158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9791906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611acc60026003600061442e565b85856040518463ffffffff1660e01b8152600401611aec93929190615698565b6020604051808303816000875af1158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611b6460036002600061442e565b85856040518463ffffffff1660e01b8152600401611b8493929190615698565b6020604051808303816000875af1158015611ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc791906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611bfb600480600061442e565b85856040518463ffffffff1660e01b8152600401611c1b93929190615698565b6020604051808303816000875af1158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611c9360016004600061442e565b85856040518463ffffffff1660e01b8152600401611cb393929190615698565b6020604051808303816000875af1158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf691906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611d2b60046001600061442e565b85856040518463ffffffff1660e01b8152600401611d4b93929190615698565b6020604051808303816000875af1158015611d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8e91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611dc360026004600061442e565b85856040518463ffffffff1660e01b8152600401611de393929190615698565b6020604051808303816000875af1158015611e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2691906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611e5b60046002600061442e565b85856040518463ffffffff1660e01b8152600401611e7b93929190615698565b6020604051808303816000875af1158015611e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebe91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611ef360036004600061442e565b85856040518463ffffffff1660e01b8152600401611f1393929190615698565b6020604051808303816000875af1158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5691906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611f8b60046003600061442e565b85856040518463ffffffff1660e01b8152600401611fab93929190615698565b6020604051808303816000875af1158015611fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fee91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074612022600180600161442e565b8560ff16856040518463ffffffff1660e01b815260040161204593929190615698565b6020604051808303816000875af1158015612064573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746120bc600180600261442e565b858560ff166040518463ffffffff1660e01b81526004016120df93929190615698565b6020604051808303816000875af11580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074612156600280600161442e565b8561ffff16856040518463ffffffff1660e01b815260040161217a93929190615698565b6020604051808303816000875af1158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746121f1600180600261442e565b858561ffff166040518463ffffffff1660e01b815260040161221593929190615698565b6020604051808303816000875af1158015612234573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461228c600380600161442e565b8563ffffffff16856040518463ffffffff1660e01b81526004016122b293929190615698565b6020604051808303816000875af11580156122d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f591906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074612329600380600261442e565b858563ffffffff166040518463ffffffff1660e01b815260040161234f93929190615698565b6020604051808303816000875af115801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746123c6600480600161442e565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016123f093929190615698565b6020604051808303816000875af115801561240f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243391906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074612467600480600261442e565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161249193929190615698565b6020604051808303816000875af11580156124b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d491906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612508600180600061442e565b85856040518463ffffffff1660e01b815260040161252893929190615698565b6020604051808303816000875af1158015612547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256b91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61259f600280600061442e565b85856040518463ffffffff1660e01b81526004016125bf93929190615698565b6020604051808303816000875af11580156125de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61263760016002600061442e565b85856040518463ffffffff1660e01b815260040161265793929190615698565b6020604051808303816000875af1158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6126cf60026001600061442e565b85856040518463ffffffff1660e01b81526004016126ef93929190615698565b6020604051808303816000875af115801561270e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612766600380600061442e565b85856040518463ffffffff1660e01b815260040161278693929190615698565b6020604051808303816000875af11580156127a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c991906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6127fe60016003600061442e565b85856040518463ffffffff1660e01b815260040161281e93929190615698565b6020604051808303816000875af115801561283d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286191906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61289660036001600061442e565b85856040518463ffffffff1660e01b81526004016128b693929190615698565b6020604051808303816000875af11580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f991906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61292e60026003600061442e565b85856040518463ffffffff1660e01b815260040161294e93929190615698565b6020604051808303816000875af115801561296d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299191906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6129c660036002600061442e565b85856040518463ffffffff1660e01b81526004016129e693929190615698565b6020604051808303816000875af1158015612a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2991906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612a5d600480600061442e565b85856040518463ffffffff1660e01b8152600401612a7d93929190615698565b6020604051808303816000875af1158015612a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac091906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612af560016004600061442e565b85856040518463ffffffff1660e01b8152600401612b1593929190615698565b6020604051808303816000875af1158015612b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612b8d60046001600061442e565b85856040518463ffffffff1660e01b8152600401612bad93929190615698565b6020604051808303816000875af1158015612bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf091906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612c2560026004600061442e565b85856040518463ffffffff1660e01b8152600401612c4593929190615698565b6020604051808303816000875af1158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612cbd60046002600061442e565b85856040518463ffffffff1660e01b8152600401612cdd93929190615698565b6020604051808303816000875af1158015612cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2091906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612d5560036004600061442e565b85856040518463ffffffff1660e01b8152600401612d7593929190615698565b6020604051808303816000875af1158015612d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612ded60046003600061442e565b85856040518463ffffffff1660e01b8152600401612e0d93929190615698565b6020604051808303816000875af1158015612e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5091906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612e84600180600161442e565b8560ff16856040518463ffffffff1660e01b8152600401612ea793929190615698565b6020604051808303816000875af1158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eea91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612f1e600180600261442e565b858560ff166040518463ffffffff1660e01b8152600401612f4193929190615698565b6020604051808303816000875af1158015612f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8491906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612fb8600280600161442e565b8561ffff16856040518463ffffffff1660e01b8152600401612fdc93929190615698565b6020604051808303816000875af1158015612ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301f91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb613053600180600261442e565b858561ffff166040518463ffffffff1660e01b815260040161307793929190615698565b6020604051808303816000875af1158015613096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ba91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6130ee600380600161442e565b8563ffffffff16856040518463ffffffff1660e01b815260040161311493929190615698565b6020604051808303816000875af1158015613133573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315791906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61318b600380600261442e565b858563ffffffff166040518463ffffffff1660e01b81526004016131b193929190615698565b6020604051808303816000875af11580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f491906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb613228600480600161442e565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161325293929190615698565b6020604051808303816000875af1158015613271573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329591906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6132c9600480600261442e565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016132f393929190615698565b6020604051808303816000875af1158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661336a600180600061442e565b85856040518463ffffffff1660e01b815260040161338a93929190615698565b6020604051808303816000875af11580156133a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cd91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613401600280600061442e565b85856040518463ffffffff1660e01b815260040161342193929190615698565b6020604051808303816000875af1158015613440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346491906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661349960016002600061442e565b85856040518463ffffffff1660e01b81526004016134b993929190615698565b6020604051808303816000875af11580156134d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fc91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661353160026001600061442e565b85856040518463ffffffff1660e01b815260040161355193929190615698565b6020604051808303816000875af1158015613570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359491906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566135c8600380600061442e565b85856040518463ffffffff1660e01b81526004016135e893929190615698565b6020604051808303816000875af1158015613607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362b91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661366060016003600061442e565b85856040518463ffffffff1660e01b815260040161368093929190615698565b6020604051808303816000875af115801561369f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c391906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566136f860036001600061442e565b85856040518463ffffffff1660e01b815260040161371893929190615698565b6020604051808303816000875af1158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661379060026003600061442e565b85856040518463ffffffff1660e01b81526004016137b093929190615698565b6020604051808303816000875af11580156137cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f391906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661382860036002600061442e565b85856040518463ffffffff1660e01b815260040161384893929190615698565b6020604051808303816000875af1158015613867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388b91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566138bf600480600061442e565b85856040518463ffffffff1660e01b81526004016138df93929190615698565b6020604051808303816000875af11580156138fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661395760016004600061442e565b85856040518463ffffffff1660e01b815260040161397793929190615698565b6020604051808303816000875af1158015613996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ba91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566139ef60046001600061442e565b85856040518463ffffffff1660e01b8152600401613a0f93929190615698565b6020604051808303816000875af1158015613a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613a8760026004600061442e565b85856040518463ffffffff1660e01b8152600401613aa793929190615698565b6020604051808303816000875af1158015613ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aea91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613b1f60046002600061442e565b85856040518463ffffffff1660e01b8152600401613b3f93929190615698565b6020604051808303816000875af1158015613b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613bb760036004600061442e565b85856040518463ffffffff1660e01b8152600401613bd793929190615698565b6020604051808303816000875af1158015613bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1a91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613c4f60046003600061442e565b85856040518463ffffffff1660e01b8152600401613c6f93929190615698565b6020604051808303816000875af1158015613c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb291906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613ce6600180600161442e565b8560ff16856040518463ffffffff1660e01b8152600401613d0993929190615698565b6020604051808303816000875af1158015613d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4c91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613d80600180600261442e565b858560ff166040518463ffffffff1660e01b8152600401613da393929190615698565b6020604051808303816000875af1158015613dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de691906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613e1a600280600161442e565b8561ffff16856040518463ffffffff1660e01b8152600401613e3e93929190615698565b6020604051808303816000875af1158015613e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8191906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613eb5600180600261442e565b858561ffff166040518463ffffffff1660e01b8152600401613ed993929190615698565b6020604051808303816000875af1158015613ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1c91906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613f50600380600161442e565b8563ffffffff16856040518463ffffffff1660e01b8152600401613f7693929190615698565b6020604051808303816000875af1158015613f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb991906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613fed600380600261442e565b858563ffffffff166040518463ffffffff1660e01b815260040161401393929190615698565b6020604051808303816000875af1158015614032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405691906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661408a600480600161442e565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016140b493929190615698565b6020604051808303816000875af11580156140d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f791906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661412b600480600261442e565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161415593929190615698565b6020604051808303816000875af1158015614174573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419891906156fb565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600160048111156141d3576141d2615728565b5b60f81b8460ff166040518363ffffffff1660e01b81526004016141f7929190615792565b6020604051808303816000875af1158015614216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423a91906156fb565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606002600481111561427457614273615728565b5b60f81b8461ffff166040518363ffffffff1660e01b8152600401614299929190615792565b6020604051808303816000875af11580156142b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142dc91906156fb565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606003600481111561431657614315615728565b5b60f81b8463ffffffff166040518363ffffffff1660e01b815260040161433d929190615792565b6020604051808303816000875af115801561435c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061438091906156fb565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606004808111156143b9576143b8615728565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016143e4929190615792565b6020604051808303816000875af1158015614403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061442791906156fb565b9050919050565b600081600281111561444357614442615728565b5b60ff16600884600481111561445b5761445a615728565b5b61ffff16901b61ffff16601086600481111561447a57614479615728565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600060ff82169050919050565b61458681614570565b811461459157600080fd5b50565b6000813590506145a38161457d565b92915050565b600080604083850312156145c0576145bf61456b565b5b60006145ce85828601614594565b92505060206145df85828601614594565b9150509250929050565b60008115159050919050565b6145fe816145e9565b82525050565b600060208201905061461960008301846145f5565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466d82614624565b810181811067ffffffffffffffff8211171561468c5761468b614635565b5b80604052505050565b600061469f614561565b90506146ab8282614664565b919050565b6000819050919050565b6146c3816146b0565b81146146ce57600080fd5b50565b6000813590506146e0816146ba565b92915050565b6000606082840312156146fc576146fb61461f565b5b6147066060614695565b90506000614716848285016146d1565b600083015250602061472a848285016146d1565b602083015250604061473e848285016146d1565b60408301525092915050565b6000606082840312156147605761475f61456b565b5b600061476e848285016146e6565b91505092915050565b600060e0828403121561478d5761478c61461f565b5b61479760e0614695565b905060006147a7848285016146d1565b60008301525060206147bb848285016146d1565b60208301525060406147cf848285016146d1565b60408301525060606147e3848285016146d1565b60608301525060806147f7848285016146d1565b60808301525060a061480b848285016146d1565b60a08301525060c061481f848285016146d1565b60c08301525092915050565b600060e082840312156148415761484061456b565b5b600061484f84828501614777565b91505092915050565b600060a0828403121561486e5761486d61461f565b5b61487860a0614695565b90506000614888848285016146d1565b600083015250602061489c848285016146d1565b60208301525060406148b0848285016146d1565b60408301525060606148c4848285016146d1565b60608301525060806148d8848285016146d1565b60808301525092915050565b600060a082840312156148fa576148f961456b565b5b600061490884828501614858565b91505092915050565b61491a816146b0565b811461492557600080fd5b50565b60008135905061493781614911565b92915050565b614946816146b0565b811461495157600080fd5b50565b6000813590506149638161493d565b92915050565b614972816146b0565b811461497d57600080fd5b50565b60008135905061498f81614969565b92915050565b61499e816146b0565b81146149a957600080fd5b50565b6000813590506149bb81614995565b92915050565b600061010082840312156149d8576149d761461f565b5b6149e3610100614695565b905060006149f384828501614928565b6000830152506020614a0784828501614928565b6020830152506040614a1b84828501614954565b6040830152506060614a2f84828501614954565b6060830152506080614a4384828501614980565b60808301525060a0614a5784828501614980565b60a08301525060c0614a6b848285016149ac565b60c08301525060e0614a7f848285016149ac565b60e08301525092915050565b60008060006101408486031215614aa557614aa461456b565b5b6000614ab3868287016149c1565b935050610100614ac586828701614594565b925050610120614ad786828701614594565b9150509250925092565b600082825260208201905092915050565b7f6765546573743a2063617374203136206661696c656400000000000000000000600082015250565b6000614b28601683614ae1565b9150614b3382614af2565b602082019050919050565b60006020820190508181036000830152614b5781614b1b565b9050919050565b7f6765546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614b94601683614ae1565b9150614b9f82614b5e565b602082019050919050565b60006020820190508181036000830152614bc381614b87565b9050919050565b7f6765546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614c00601683614ae1565b9150614c0b82614bca565b602082019050919050565b60006020820190508181036000830152614c2f81614bf3565b9050919050565b7f6765546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614c92602683614ae1565b9150614c9d82614c36565b604082019050919050565b60006020820190508181036000830152614cc181614c85565b9050919050565b7f6765546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614d24602783614ae1565b9150614d2f82614cc8565b604082019050919050565b60006020820190508181036000830152614d5381614d17565b9050919050565b7f6765546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614db6602783614ae1565b9150614dc182614d5a565b604082019050919050565b60006020820190508181036000830152614de581614da9565b9050919050565b7f6765546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614e48602783614ae1565b9150614e5382614dec565b604082019050919050565b60006020820190508181036000830152614e7781614e3b565b9050919050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b6000614f00604683614ae1565b9150614f0b82614e7e565b606082019050919050565b60006020820190508181036000830152614f2f81614ef3565b9050919050565b7f6571546573743a2063617374203136206661696c656400000000000000000000600082015250565b6000614f6c601683614ae1565b9150614f7782614f36565b602082019050919050565b60006020820190508181036000830152614f9b81614f5f565b9050919050565b7f6571546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614fd8601683614ae1565b9150614fe382614fa2565b602082019050919050565b6000602082019050818103600083015261500781614fcb565b9050919050565b7f6571546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000615044601683614ae1565b915061504f8261500e565b602082019050919050565b6000602082019050818103600083015261507381615037565b9050919050565b7f6571546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b60006150d6602683614ae1565b91506150e18261507a565b604082019050919050565b60006020820190508181036000830152615105816150c9565b9050919050565b7f6571546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000615168602783614ae1565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b7f6571546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006151fa602783614ae1565b91506152058261519e565b604082019050919050565b60006020820190508181036000830152615229816151ed565b9050919050565b7f6571546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061528c602783614ae1565b915061529782615230565b604082019050919050565b600060208201905081810360008301526152bb8161527f565b9050919050565b7f6e65546573743a2063617374203136206661696c656400000000000000000000600082015250565b60006152f8601683614ae1565b9150615303826152c2565b602082019050919050565b60006020820190508181036000830152615327816152eb565b9050919050565b7f6e65546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000615364601683614ae1565b915061536f8261532e565b602082019050919050565b6000602082019050818103600083015261539381615357565b9050919050565b7f6e65546573743a2063617374203634206661696c656400000000000000000000600082015250565b60006153d0601683614ae1565b91506153db8261539a565b602082019050919050565b600060208201905081810360008301526153ff816153c3565b9050919050565b7f6e65546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000615462602683614ae1565b915061546d82615406565b604082019050919050565b6000602082019050818103600083015261549181615455565b9050919050565b7f6e65546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006154f4602783614ae1565b91506154ff82615498565b604082019050919050565b60006020820190508181036000830152615523816154e7565b9050919050565b7f6e65546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000615586602783614ae1565b91506155918261552a565b604082019050919050565b600060208201905081810360008301526155b581615579565b9050919050565b7f6e65546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000615618602783614ae1565b9150615623826155bc565b604082019050919050565b600060208201905081810360008301526156478161560b565b9050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6156838161564e565b82525050565b615692816146b0565b82525050565b60006060820190506156ad600083018661567a565b6156ba6020830185615689565b6156c76040830184615689565b949350505050565b6156d8816146b0565b81146156e357600080fd5b50565b6000815190506156f5816156cf565b92915050565b6000602082840312156157115761571061456b565b5b600061571f848285016156e6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61578c81615757565b82525050565b60006040820190506157a76000830185615783565b6157b46020830184615689565b939250505056fea2646970667358221220680e65701f7a3b2e738dcea6b8910baa0e7ed5125baf43f13ee1da3ae68c354264736f6c63430008140033";
335
+ "0x608060405234801561001057600080fd5b506156af80620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806380f937bc1161006657806380f937bc1461016f5780639a0c13d81461019f578063acb38169146101bd578063bc3aa1ed146101ed578063ebb571fd1461021d5761009e565b80630d980bf0146100a35780631988e322146100c15780632e544aa0146100f15780632fd37f4b1461012157806370eb37ee1461013f575b600080fd5b6100ab610239565b6040516100b8919061443a565b60405180910390f35b6100db60048036038101906100d6919061449d565b61024f565b6040516100e8919061443a565b60405180910390f35b61010b60048036038101906101069190614608565b610761565b604051610118919061443a565b60405180910390f35b6101296107e9565b604051610136919061443a565b60405180910390f35b6101596004803603810190610154919061449d565b6107ff565b604051610166919061443a565b60405180910390f35b610189600480360381019061018491906146e9565b610d10565b604051610196919061443a565b60405180910390f35b6101a7610e04565b6040516101b4919061443a565b60405180910390f35b6101d760048036038101906101d291906147a2565b610e1a565b6040516101e4919061443a565b60405180910390f35b6102076004803603810190610202919061449d565b610ed8565b604051610214919061443a565b60405180910390f35b61023760048036038101906102329190614949565b6113ea565b005b60008060019054906101000a900460ff16905090565b600061025961434d565b610261614392565b6102696143b3565b6102716143e2565b61027c8488886113ea565b600061029861029386600001518760200151611491565b611528565b905080600060026101000a81548160ff0219169083151502179055506102c6856040015186606001516115cf565b8460000181815250506102e185600001518660600151611666565b8460200181815250506102fc856040015186602001516116fe565b846040018181525050600061031085610761565b905081151581151514610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f906149fc565b60405180910390fd5b61036a86608001518760a00151611796565b84600001818152505061038586600001518760a0015161182d565b8460200181815250506103a0866080015187602001516118c5565b8460400181815250506103bb86604001518760a0015161195d565b8460600181815250506103d6866080015187606001516119f5565b84608001818152505060006103ea85610e1a565b905080151583151514610432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990614a68565b60405180910390fd5b6104448760c001518860e00151611a8d565b84600001818152505061045f87600001518860e00151611b24565b84602001818152505061047a8760c001518860200151611bbc565b84604001818152505061049587604001518860e00151611c54565b8460600181815250506104b08760c001518860600151611cec565b8460800181815250506104cb87608001518860e00151611d84565b8460a00181815250506104e68760c001518860a00151611e1c565b8460c001818152505060006104fa85610d10565b905080151584151514610542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053990614ad4565b60405180910390fd5b6105586105538c8a60200151611eb4565b611528565b1515841515148015610582575061057b61057689600001518c611f4e565b611528565b1515841515145b6105c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b890614b66565b60405180910390fd5b6105da6105d58c60ff168a60600151611fe8565b611528565b151584151514801561060757506106006105fb89604001518c60ff16612083565b611528565b1515841515145b610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90614bf8565b60405180910390fd5b61065f61065a8c60ff168a60a0015161211e565b611528565b151584151514801561068c575061068561068089608001518c60ff166121bb565b611528565b1515841515145b6106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614c8a565b60405180910390fd5b6106e46106df8c60ff168a60e00151612258565b611528565b1515841515148015610711575061070a6107058960c001518c60ff166122f9565b611528565b1515841515145b610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074790614d1c565b60405180910390fd5b839850505050505050505092915050565b6000806107718360000151611528565b90506107808360200151611528565b15158115151480156107a1575061079a8360400151611528565b1515811515145b6107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790614dd4565b60405180910390fd5b80915050919050565b60008060029054906101000a900460ff16905090565b600061080961434d565b610811614392565b6108196143b3565b6108216143e2565b61082c8488886113ea565b60006108486108438660000151876020015161239a565b611528565b9050806000806101000a81548160ff02191690831515021790555061087585604001518660600151612431565b846000018181525050610890856000015186606001516124c8565b8460200181815250506108ab85604001518660200151612560565b84604001818152505060006108bf85610761565b905081151581151514610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90614e40565b60405180910390fd5b61091986608001518760a001516125f8565b84600001818152505061093486600001518760a0015161268f565b84602001818152505061094f86608001518760200151612727565b84604001818152505061096a86604001518760a001516127bf565b84606001818152505061098586608001518760600151612857565b846080018181525050600061099985610e1a565b9050801515831515146109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890614eac565b60405180910390fd5b6109f38760c001518860e001516128ef565b846000018181525050610a0e87600001518860e00151612986565b846020018181525050610a298760c001518860200151612a1e565b846040018181525050610a4487604001518860e00151612ab6565b846060018181525050610a5f8760c001518860600151612b4e565b846080018181525050610a7a87608001518860e00151612be6565b8460a0018181525050610a958760c001518860a00151612c7e565b8460c00181815250506000610aa985610d10565b905080151584151514610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890614f18565b60405180910390fd5b610b07610b028c8a60200151612d16565b611528565b1515841515148015610b315750610b2a610b2589600001518c612db0565b611528565b1515841515145b610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6790614faa565b60405180910390fd5b610b89610b848c60ff168a60600151612e4a565b611528565b1515841515148015610bb65750610baf610baa89604001518c60ff16612ee5565b611528565b1515841515145b610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061503c565b60405180910390fd5b610c0e610c098c60ff168a60a00151612f80565b611528565b1515841515148015610c3b5750610c34610c2f89608001518c60ff1661301d565b611528565b1515841515145b610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906150ce565b60405180910390fd5b610c93610c8e8c60ff168a60e001516130ba565b611528565b1515841515148015610cc05750610cb9610cb48960c001518c60ff1661315b565b611528565b1515841515145b610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690615160565b60405180910390fd5b839850505050505050505092915050565b600080610d208360000151611528565b9050610d2f8360200151611528565b1515811515148015610d505750610d498360400151611528565b1515811515145b8015610d6b5750610d648360800151611528565b1515811515145b8015610d865750610d7f8360600151611528565b1515811515145b8015610da15750610d9a8360c00151611528565b1515811515145b8015610dbc5750610db58360a00151611528565b1515811515145b610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290614dd4565b60405180910390fd5b80915050919050565b60008060009054906101000a900460ff16905090565b600080610e2a8360000151611528565b9050610e398360200151611528565b1515811515148015610e5a5750610e538360400151611528565b1515811515145b8015610e755750610e6e8360800151611528565b1515811515145b8015610e905750610e898360600151611528565b1515811515145b610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690614dd4565b60405180910390fd5b80915050919050565b6000610ee261434d565b610eea614392565b610ef26143b3565b610efa6143e2565b610f058488886113ea565b6000610f21610f1c866000015187602001516131fc565b611528565b905080600060016101000a81548160ff021916908315150217905550610f4f85604001518660600151613293565b846000018181525050610f6a8560000151866060015161332a565b846020018181525050610f85856040015186602001516133c2565b8460400181815250506000610f9985610761565b905081151581151514610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd8906151cc565b60405180910390fd5b610ff386608001518760a0015161345a565b84600001818152505061100e86600001518760a001516134f1565b84602001818152505061102986608001518760200151613589565b84604001818152505061104486604001518760a00151613621565b84606001818152505061105f866080015187606001516136b9565b846080018181525050600061107385610e1a565b9050801515831515146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290615238565b60405180910390fd5b6110cd8760c001518860e00151613751565b8460000181815250506110e887600001518860e001516137e8565b8460200181815250506111038760c001518860200151613880565b84604001818152505061111e87604001518860e00151613918565b8460600181815250506111398760c0015188606001516139b0565b84608001818152505061115487608001518860e00151613a48565b8460a001818152505061116f8760c001518860a00151613ae0565b8460c0018181525050600061118385610d10565b9050801515841515146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c2906152a4565b60405180910390fd5b6111e16111dc8c8a60200151613b78565b611528565b151584151514801561120b57506112046111ff89600001518c613c12565b611528565b1515841515145b61124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190615336565b60405180910390fd5b61126361125e8c60ff168a60600151613cac565b611528565b1515841515148015611290575061128961128489604001518c60ff16613d47565b611528565b1515841515145b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906153c8565b60405180910390fd5b6112e86112e38c60ff168a60a00151613de2565b611528565b1515841515148015611315575061130e61130989608001518c60ff16613e7f565b611528565b1515841515145b611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b9061545a565b60405180910390fd5b61136d6113688c60ff168a60e00151613f1c565b611528565b151584151514801561139a575061139361138e8960c001518c60ff16613fbd565b611528565b1515841515145b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d0906154ec565b60405180910390fd5b839850505050505050505092915050565b6113f38261405e565b8360000181815250506114058161405e565b83602001818152505061141a8260ff166140ff565b83604001818152505061142f8160ff166140ff565b8360600181815250506114448260ff166141a1565b8360800181815250506114598160ff166141a1565b8360a001818152505061146e8260ff16614245565b8360c00181815250506114838160ff16614245565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746114bd60018060006142ec565b85856040518463ffffffff1660e01b81526004016114dd93929190615556565b6020604051808303816000875af11580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152091906155b9565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616000600481111561155c5761155b6155e6565b5b60f81b856040518363ffffffff1660e01b815260040161157d929190615650565b6020604051808303816000875af115801561159c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c091906155b9565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746115fb60028060006142ec565b85856040518463ffffffff1660e01b815260040161161b93929190615556565b6020604051808303816000875af115801561163a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746116936001600260006142ec565b85856040518463ffffffff1660e01b81526004016116b393929190615556565b6020604051808303816000875af11580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461172b6002600160006142ec565b85856040518463ffffffff1660e01b815260040161174b93929190615556565b6020604051808303816000875af115801561176a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746117c260038060006142ec565b85856040518463ffffffff1660e01b81526004016117e293929190615556565b6020604051808303816000875af1158015611801573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461185a6001600360006142ec565b85856040518463ffffffff1660e01b815260040161187a93929190615556565b6020604051808303816000875af1158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746118f26003600160006142ec565b85856040518463ffffffff1660e01b815260040161191293929190615556565b6020604051808303816000875af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461198a6002600360006142ec565b85856040518463ffffffff1660e01b81526004016119aa93929190615556565b6020604051808303816000875af11580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611a226003600260006142ec565b85856040518463ffffffff1660e01b8152600401611a4293929190615556565b6020604051808303816000875af1158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611ab960048060006142ec565b85856040518463ffffffff1660e01b8152600401611ad993929190615556565b6020604051808303816000875af1158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611b516001600460006142ec565b85856040518463ffffffff1660e01b8152600401611b7193929190615556565b6020604051808303816000875af1158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611be96004600160006142ec565b85856040518463ffffffff1660e01b8152600401611c0993929190615556565b6020604051808303816000875af1158015611c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611c816002600460006142ec565b85856040518463ffffffff1660e01b8152600401611ca193929190615556565b6020604051808303816000875af1158015611cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611d196004600260006142ec565b85856040518463ffffffff1660e01b8152600401611d3993929190615556565b6020604051808303816000875af1158015611d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611db16003600460006142ec565b85856040518463ffffffff1660e01b8152600401611dd193929190615556565b6020604051808303816000875af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611e496004600360006142ec565b85856040518463ffffffff1660e01b8152600401611e6993929190615556565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611ee060018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401611f0393929190615556565b6020604051808303816000875af1158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611f7a60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401611f9d93929190615556565b6020604051808303816000875af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461201460028060016142ec565b8561ffff16856040518463ffffffff1660e01b815260040161203893929190615556565b6020604051808303816000875af1158015612057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207b91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746120af60028060026142ec565b858561ffff166040518463ffffffff1660e01b81526004016120d393929190615556565b6020604051808303816000875af11580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461214a60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b815260040161217093929190615556565b6020604051808303816000875af115801561218f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b391906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746121e760038060026142ec565b858563ffffffff166040518463ffffffff1660e01b815260040161220d93929190615556565b6020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461228460048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016122ae93929190615556565b6020604051808303816000875af11580156122cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461232560048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161234f93929190615556565b6020604051808303816000875af115801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6123c660018060006142ec565b85856040518463ffffffff1660e01b81526004016123e693929190615556565b6020604051808303816000875af1158015612405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61245d60028060006142ec565b85856040518463ffffffff1660e01b815260040161247d93929190615556565b6020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6124f56001600260006142ec565b85856040518463ffffffff1660e01b815260040161251593929190615556565b6020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61258d6002600160006142ec565b85856040518463ffffffff1660e01b81526004016125ad93929190615556565b6020604051808303816000875af11580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61262460038060006142ec565b85856040518463ffffffff1660e01b815260040161264493929190615556565b6020604051808303816000875af1158015612663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6126bc6001600360006142ec565b85856040518463ffffffff1660e01b81526004016126dc93929190615556565b6020604051808303816000875af11580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6127546003600160006142ec565b85856040518463ffffffff1660e01b815260040161277493929190615556565b6020604051808303816000875af1158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6127ec6002600360006142ec565b85856040518463ffffffff1660e01b815260040161280c93929190615556565b6020604051808303816000875af115801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6128846003600260006142ec565b85856040518463ffffffff1660e01b81526004016128a493929190615556565b6020604051808303816000875af11580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61291b60048060006142ec565b85856040518463ffffffff1660e01b815260040161293b93929190615556565b6020604051808303816000875af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6129b36001600460006142ec565b85856040518463ffffffff1660e01b81526004016129d393929190615556565b6020604051808303816000875af11580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612a4b6004600160006142ec565b85856040518463ffffffff1660e01b8152600401612a6b93929190615556565b6020604051808303816000875af1158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612ae36002600460006142ec565b85856040518463ffffffff1660e01b8152600401612b0393929190615556565b6020604051808303816000875af1158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612b7b6004600260006142ec565b85856040518463ffffffff1660e01b8152600401612b9b93929190615556565b6020604051808303816000875af1158015612bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bde91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612c136003600460006142ec565b85856040518463ffffffff1660e01b8152600401612c3393929190615556565b6020604051808303816000875af1158015612c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612cab6004600360006142ec565b85856040518463ffffffff1660e01b8152600401612ccb93929190615556565b6020604051808303816000875af1158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612d4260018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401612d6593929190615556565b6020604051808303816000875af1158015612d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612ddc60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401612dff93929190615556565b6020604051808303816000875af1158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612e7660028060016142ec565b8561ffff16856040518463ffffffff1660e01b8152600401612e9a93929190615556565b6020604051808303816000875af1158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612f1160028060026142ec565b858561ffff166040518463ffffffff1660e01b8152600401612f3593929190615556565b6020604051808303816000875af1158015612f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612fac60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b8152600401612fd293929190615556565b6020604051808303816000875af1158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61304960038060026142ec565b858563ffffffff166040518463ffffffff1660e01b815260040161306f93929190615556565b6020604051808303816000875af115801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6130e660048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161311093929190615556565b6020604051808303816000875af115801561312f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315391906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61318760048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016131b193929190615556565b6020604051808303816000875af11580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661322860018060006142ec565b85856040518463ffffffff1660e01b815260040161324893929190615556565b6020604051808303816000875af1158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566132bf60028060006142ec565b85856040518463ffffffff1660e01b81526004016132df93929190615556565b6020604051808303816000875af11580156132fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566133576001600260006142ec565b85856040518463ffffffff1660e01b815260040161337793929190615556565b6020604051808303816000875af1158015613396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ba91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566133ef6002600160006142ec565b85856040518463ffffffff1660e01b815260040161340f93929190615556565b6020604051808303816000875af115801561342e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661348660038060006142ec565b85856040518463ffffffff1660e01b81526004016134a693929190615556565b6020604051808303816000875af11580156134c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661351e6001600360006142ec565b85856040518463ffffffff1660e01b815260040161353e93929190615556565b6020604051808303816000875af115801561355d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566135b66003600160006142ec565b85856040518463ffffffff1660e01b81526004016135d693929190615556565b6020604051808303816000875af11580156135f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661364e6002600360006142ec565b85856040518463ffffffff1660e01b815260040161366e93929190615556565b6020604051808303816000875af115801561368d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566136e66003600260006142ec565b85856040518463ffffffff1660e01b815260040161370693929190615556565b6020604051808303816000875af1158015613725573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661377d60048060006142ec565b85856040518463ffffffff1660e01b815260040161379d93929190615556565b6020604051808303816000875af11580156137bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566138156001600460006142ec565b85856040518463ffffffff1660e01b815260040161383593929190615556565b6020604051808303816000875af1158015613854573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566138ad6004600160006142ec565b85856040518463ffffffff1660e01b81526004016138cd93929190615556565b6020604051808303816000875af11580156138ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566139456002600460006142ec565b85856040518463ffffffff1660e01b815260040161396593929190615556565b6020604051808303816000875af1158015613984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566139dd6004600260006142ec565b85856040518463ffffffff1660e01b81526004016139fd93929190615556565b6020604051808303816000875af1158015613a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613a756003600460006142ec565b85856040518463ffffffff1660e01b8152600401613a9593929190615556565b6020604051808303816000875af1158015613ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613b0d6004600360006142ec565b85856040518463ffffffff1660e01b8152600401613b2d93929190615556565b6020604051808303816000875af1158015613b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613ba460018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401613bc793929190615556565b6020604051808303816000875af1158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613c3e60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401613c6193929190615556565b6020604051808303816000875af1158015613c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613cd860028060016142ec565b8561ffff16856040518463ffffffff1660e01b8152600401613cfc93929190615556565b6020604051808303816000875af1158015613d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d3f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613d7360028060026142ec565b858561ffff166040518463ffffffff1660e01b8152600401613d9793929190615556565b6020604051808303816000875af1158015613db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dda91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613e0e60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b8152600401613e3493929190615556565b6020604051808303816000875af1158015613e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613eab60038060026142ec565b858563ffffffff166040518463ffffffff1660e01b8152600401613ed193929190615556565b6020604051808303816000875af1158015613ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613f4860048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b8152600401613f7293929190615556565b6020604051808303816000875af1158015613f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613fe960048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161401393929190615556565b6020604051808303816000875af1158015614032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060016004811115614091576140906155e6565b5b60f81b8460ff166040518363ffffffff1660e01b81526004016140b5929190615650565b6020604051808303816000875af11580156140d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f891906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060026004811115614132576141316155e6565b5b60f81b8461ffff166040518363ffffffff1660e01b8152600401614157929190615650565b6020604051808303816000875af1158015614176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419a91906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600360048111156141d4576141d36155e6565b5b60f81b8463ffffffff166040518363ffffffff1660e01b81526004016141fb929190615650565b6020604051808303816000875af115801561421a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423e91906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600480811115614277576142766155e6565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016142a2929190615650565b6020604051808303816000875af11580156142c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e591906155b9565b9050919050565b6000816002811115614301576143006155e6565b5b60ff166008846004811115614319576143186155e6565b5b61ffff16901b61ffff166010866004811115614338576143376155e6565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008115159050919050565b6144348161441f565b82525050565b600060208201905061444f600083018461442b565b92915050565b6000604051905090565b600080fd5b600060ff82169050919050565b61447a81614464565b811461448557600080fd5b50565b60008135905061449781614471565b92915050565b600080604083850312156144b4576144b361445f565b5b60006144c285828601614488565b92505060206144d385828601614488565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61452b826144e2565b810181811067ffffffffffffffff8211171561454a576145496144f3565b5b80604052505050565b600061455d614455565b90506145698282614522565b919050565b6000819050919050565b6145818161456e565b811461458c57600080fd5b50565b60008135905061459e81614578565b92915050565b6000606082840312156145ba576145b96144dd565b5b6145c46060614553565b905060006145d48482850161458f565b60008301525060206145e88482850161458f565b60208301525060406145fc8482850161458f565b60408301525092915050565b60006060828403121561461e5761461d61445f565b5b600061462c848285016145a4565b91505092915050565b600060e0828403121561464b5761464a6144dd565b5b61465560e0614553565b905060006146658482850161458f565b60008301525060206146798482850161458f565b602083015250604061468d8482850161458f565b60408301525060606146a18482850161458f565b60608301525060806146b58482850161458f565b60808301525060a06146c98482850161458f565b60a08301525060c06146dd8482850161458f565b60c08301525092915050565b600060e082840312156146ff576146fe61445f565b5b600061470d84828501614635565b91505092915050565b600060a0828403121561472c5761472b6144dd565b5b61473660a0614553565b905060006147468482850161458f565b600083015250602061475a8482850161458f565b602083015250604061476e8482850161458f565b60408301525060606147828482850161458f565b60608301525060806147968482850161458f565b60808301525092915050565b600060a082840312156147b8576147b761445f565b5b60006147c684828501614716565b91505092915050565b6147d88161456e565b81146147e357600080fd5b50565b6000813590506147f5816147cf565b92915050565b6148048161456e565b811461480f57600080fd5b50565b600081359050614821816147fb565b92915050565b6148308161456e565b811461483b57600080fd5b50565b60008135905061484d81614827565b92915050565b61485c8161456e565b811461486757600080fd5b50565b60008135905061487981614853565b92915050565b60006101008284031215614896576148956144dd565b5b6148a1610100614553565b905060006148b1848285016147e6565b60008301525060206148c5848285016147e6565b60208301525060406148d984828501614812565b60408301525060606148ed84828501614812565b60608301525060806149018482850161483e565b60808301525060a06149158482850161483e565b60a08301525060c06149298482850161486a565b60c08301525060e061493d8482850161486a565b60e08301525092915050565b600080600061014084860312156149635761496261445f565b5b60006149718682870161487f565b93505061010061498386828701614488565b92505061012061499586828701614488565b9150509250925092565b600082825260208201905092915050565b7f6765546573743a2063617374203136206661696c656400000000000000000000600082015250565b60006149e660168361499f565b91506149f1826149b0565b602082019050919050565b60006020820190508181036000830152614a15816149d9565b9050919050565b7f6765546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614a5260168361499f565b9150614a5d82614a1c565b602082019050919050565b60006020820190508181036000830152614a8181614a45565b9050919050565b7f6765546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614abe60168361499f565b9150614ac982614a88565b602082019050919050565b60006020820190508181036000830152614aed81614ab1565b9050919050565b7f6765546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614b5060268361499f565b9150614b5b82614af4565b604082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f6765546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614be260278361499f565b9150614bed82614b86565b604082019050919050565b60006020820190508181036000830152614c1181614bd5565b9050919050565b7f6765546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614c7460278361499f565b9150614c7f82614c18565b604082019050919050565b60006020820190508181036000830152614ca381614c67565b9050919050565b7f6765546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614d0660278361499f565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b6000614dbe60468361499f565b9150614dc982614d3c565b606082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f6571546573743a2063617374203136206661696c656400000000000000000000600082015250565b6000614e2a60168361499f565b9150614e3582614df4565b602082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b7f6571546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614e9660168361499f565b9150614ea182614e60565b602082019050919050565b60006020820190508181036000830152614ec581614e89565b9050919050565b7f6571546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614f0260168361499f565b9150614f0d82614ecc565b602082019050919050565b60006020820190508181036000830152614f3181614ef5565b9050919050565b7f6571546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614f9460268361499f565b9150614f9f82614f38565b604082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f6571546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061502660278361499f565b915061503182614fca565b604082019050919050565b6000602082019050818103600083015261505581615019565b9050919050565b7f6571546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006150b860278361499f565b91506150c38261505c565b604082019050919050565b600060208201905081810360008301526150e7816150ab565b9050919050565b7f6571546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061514a60278361499f565b9150615155826150ee565b604082019050919050565b600060208201905081810360008301526151798161513d565b9050919050565b7f6e65546573743a2063617374203136206661696c656400000000000000000000600082015250565b60006151b660168361499f565b91506151c182615180565b602082019050919050565b600060208201905081810360008301526151e5816151a9565b9050919050565b7f6e65546573743a2063617374203332206661696c656400000000000000000000600082015250565b600061522260168361499f565b915061522d826151ec565b602082019050919050565b6000602082019050818103600083015261525181615215565b9050919050565b7f6e65546573743a2063617374203634206661696c656400000000000000000000600082015250565b600061528e60168361499f565b915061529982615258565b602082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f6e65546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b600061532060268361499f565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f6e65546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006153b260278361499f565b91506153bd82615356565b604082019050919050565b600060208201905081810360008301526153e1816153a5565b9050919050565b7f6e65546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061544460278361499f565b915061544f826153e8565b604082019050919050565b6000602082019050818103600083015261547381615437565b9050919050565b7f6e65546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006154d660278361499f565b91506154e18261547a565b604082019050919050565b60006020820190508181036000830152615505816154c9565b9050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6155418161550c565b82525050565b6155508161456e565b82525050565b600060608201905061556b6000830186615538565b6155786020830185615547565b6155856040830184615547565b949350505050565b6155968161456e565b81146155a157600080fd5b50565b6000815190506155b38161558d565b92915050565b6000602082840312156155cf576155ce61445f565b5b60006155dd848285016155a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61564a81615615565b82525050565b60006040820190506156656000830185615641565b6156726020830184615547565b939250505056fea2646970667358221220a2dcdd0854d4c294683b4e5f1c2cae6caf648f273a6b857f91817af40e61c00b64736f6c63430008140033";
310
336
 
311
337
  type Comparison2TestsContractConstructorParams =
312
338
  | [signer?: Signer]
@@ -155,7 +155,20 @@ const _abi = [
155
155
  },
156
156
  {
157
157
  inputs: [],
158
- name: "getResult",
158
+ name: "getMaxResult",
159
+ outputs: [
160
+ {
161
+ internalType: "uint8",
162
+ name: "",
163
+ type: "uint8",
164
+ },
165
+ ],
166
+ stateMutability: "view",
167
+ type: "function",
168
+ },
169
+ {
170
+ inputs: [],
171
+ name: "getMinResult",
159
172
  outputs: [
160
173
  {
161
174
  internalType: "uint8",
@@ -282,7 +295,7 @@ const _abi = [
282
295
  ] as const;
283
296
 
284
297
  const _bytecode =
285
- "0x608060405234801561001057600080fd5b506140a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063dad85e0a1161005b578063dad85e0a14610112578063de29278914610142578063e23a217614610160578063ebb571fd146101905761007d565b80632e544aa01461008257806380f937bc146100b2578063acb38169146100e2575b600080fd5b61009c600480360381019061009791906134af565b6101ac565b6040516100a991906134f9565b60405180910390f35b6100cc60048036038101906100c791906135f4565b61023c565b6040516100d99190613644565b60405180910390f35b6100fc60048036038101906100f79190613717565b610390565b6040516101099190613763565b60405180910390f35b61012c600480360381019061012791906137b7565b61046e565b6040516101399190613806565b60405180910390f35b61014a610a15565b6040516101579190613806565b60405180910390f35b61017a600480360381019061017591906137b7565b610a2b565b6040516101879190613806565b60405180910390f35b6101aa60048036038101906101a59190613917565b610fd2565b005b6000806101bc8360000151611079565b90506101cb8360200151611079565b61ffff168161ffff161480156101f457506101e98360400151611079565b61ffff168161ffff16145b610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a90613a16565b60405180910390fd5b80915050919050565b60008061024c8360000151611117565b905061025b8360200151611117565b67ffffffffffffffff168167ffffffffffffffff1614801561029c57506102858360400151611117565b67ffffffffffffffff168167ffffffffffffffff16145b80156102c757506102b08360800151611117565b67ffffffffffffffff168167ffffffffffffffff16145b80156102f257506102db8360600151611117565b67ffffffffffffffff168167ffffffffffffffff16145b801561031d57506103068360c00151611117565b67ffffffffffffffff168167ffffffffffffffff16145b801561034857506103318360a00151611117565b67ffffffffffffffff168167ffffffffffffffff16145b610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037e90613a16565b60405180910390fd5b80915050919050565b6000806103a083600001516111b4565b90506103af83602001516111b4565b63ffffffff168163ffffffff161480156103e057506103d183604001516111b4565b63ffffffff168163ffffffff16145b801561040357506103f483608001516111b4565b63ffffffff168163ffffffff16145b8015610426575061041783606001516111b4565b63ffffffff168163ffffffff16145b610465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045c90613a16565b60405180910390fd5b80915050919050565b60006104786132a3565b6104806132e8565b610488613309565b610490613338565b61049b848888610fd2565b6104b56104b085600001518660200151611252565b6112e9565b6000806101000a81548160ff021916908360ff1602179055506104e084604001518560600151611387565b8360000181815250506104fb8460000151856060015161141e565b836020018181525050610516846040015185602001516114b6565b836040018181525050600061052a846101ac565b905060008054906101000a900460ff1660ff168161ffff1614610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990613a82565b60405180910390fd5b61059485608001518660a0015161154e565b8360000181815250506105af85600001518660a001516115e5565b8360200181815250506105ca8560800151866020015161167d565b8360400181815250506105e585604001518660a00151611715565b836060018181525050610600856080015186606001516117ad565b836080018181525050600061061484610390565b90508063ffffffff1660008054906101000a900460ff1660ff161461066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590613aee565b60405180910390fd5b6106808660c001518760e00151611845565b83600001818152505061069b86600001518760e001516118dc565b8360200181815250506106b68660c001518760200151611974565b8360400181815250506106d186604001518760e00151611a0c565b8360600181815250506106ec8660c001518760600151611aa4565b83608001818152505061070786608001518760e00151611b3c565b8360a00181815250506107228660c001518760a00151611bd4565b8360c001818152505060006107368461023c565b90508067ffffffffffffffff1660008054906101000a900460ff1660ff1614610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b90613b5a565b60405180910390fd5b6107aa6107a58b8960200151611c6c565b6112e9565b60ff1660008054906101000a900460ff1660ff161480156107f257506107dc6107d788600001518b611d06565b6112e9565b60ff1660008054906101000a900460ff1660ff16145b610831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082890613bec565b60405180910390fd5b61084a6108458b60ff168960600151611da0565b611079565b61ffff168361ffff1614801561087f575061087461086f88604001518b60ff16611e3b565b611079565b61ffff168361ffff16145b6108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590613c7e565b60405180910390fd5b6108d76108d28b60ff168960a00151611ed6565b6111b4565b63ffffffff168263ffffffff16148015610914575061090561090088608001518b60ff16611f73565b6111b4565b63ffffffff168263ffffffff16145b610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90613d10565b60405180910390fd5b61096c6109678b60ff168960e00151612010565b611117565b67ffffffffffffffff168167ffffffffffffffff161480156109b957506109a261099d8860c001518b60ff166120b1565b611117565b67ffffffffffffffff168167ffffffffffffffff16145b6109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613da2565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b60008060009054906101000a900460ff16905090565b6000610a356132a3565b610a3d6132e8565b610a45613309565b610a4d613338565b610a58848888610fd2565b610a72610a6d85600001518660200151612152565b6112e9565b6000806101000a81548160ff021916908360ff160217905550610a9d846040015185606001516121e9565b836000018181525050610ab884600001518560600151612280565b836020018181525050610ad384604001518560200151612318565b8360400181815250506000610ae7846101ac565b905060008054906101000a900460ff1660ff168161ffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613e0e565b60405180910390fd5b610b5185608001518660a001516123b0565b836000018181525050610b6c85600001518660a00151612447565b836020018181525050610b87856080015186602001516124df565b836040018181525050610ba285604001518660a00151612577565b836060018181525050610bbd8560800151866060015161260f565b8360800181815250506000610bd184610390565b90508063ffffffff1660008054906101000a900460ff1660ff1614610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613e7a565b60405180910390fd5b610c3d8660c001518760e001516126a7565b836000018181525050610c5886600001518760e0015161273e565b836020018181525050610c738660c0015187602001516127d6565b836040018181525050610c8e86604001518760e0015161286e565b836060018181525050610ca98660c001518760600151612906565b836080018181525050610cc486608001518760e0015161299e565b8360a0018181525050610cdf8660c001518760a00151612a36565b8360c00181815250506000610cf38461023c565b90508067ffffffffffffffff1660008054906101000a900460ff1660ff1614610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4890613ee6565b60405180910390fd5b610d67610d628b8960200151612ace565b6112e9565b60ff1660008054906101000a900460ff1660ff16148015610daf5750610d99610d9488600001518b612b68565b6112e9565b60ff1660008054906101000a900460ff1660ff16145b610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590613bec565b60405180910390fd5b610e07610e028b60ff168960600151612c02565b611079565b61ffff168361ffff16148015610e3c5750610e31610e2c88604001518b60ff16612c9d565b611079565b61ffff168361ffff16145b610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290613c7e565b60405180910390fd5b610e94610e8f8b60ff168960a00151612d38565b6111b4565b63ffffffff168263ffffffff16148015610ed15750610ec2610ebd88608001518b60ff16612dd5565b6111b4565b63ffffffff168263ffffffff16145b610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790613d10565b60405180910390fd5b610f29610f248b60ff168960e00151612e72565b611117565b67ffffffffffffffff168167ffffffffffffffff16148015610f765750610f5f610f5a8860c001518b60ff16612f13565b611117565b67ffffffffffffffff168167ffffffffffffffff16145b610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90613da2565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b610fdb82612fb4565b836000018181525050610fed81612fb4565b8360200181815250506110028260ff16613055565b8360400181815250506110178160ff16613055565b83606001818152505061102c8260ff166130f7565b8360800181815250506110418160ff166130f7565b8360a00181815250506110568260ff1661319b565b8360c001818152505061106b8160ff1661319b565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600260048111156110ac576110ab613f06565b5b60f81b846040518363ffffffff1660e01b81526004016110cd929190613f7f565b6020604051808303816000875af11580156110ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111109190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160048081111561114957611148613f06565b5b60f81b846040518363ffffffff1660e01b815260040161116a929190613f7f565b6020604051808303816000875af1158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad9190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600360048111156111e7576111e6613f06565b5b60f81b846040518363ffffffff1660e01b8152600401611208929190613f7f565b6020604051808303816000875af1158015611227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124b9190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461127e6001806000613242565b85856040518463ffffffff1660e01b815260040161129e9392919061403c565b6020604051808303816000875af11580156112bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e19190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616001600481111561131c5761131b613f06565b5b60f81b846040518363ffffffff1660e01b815260040161133d929190613f7f565b6020604051808303816000875af115801561135c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113809190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746113b36002806000613242565b85856040518463ffffffff1660e01b81526004016113d39392919061403c565b6020604051808303816000875af11580156113f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114169190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461144b600160026000613242565b85856040518463ffffffff1660e01b815260040161146b9392919061403c565b6020604051808303816000875af115801561148a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ae9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746114e3600260016000613242565b85856040518463ffffffff1660e01b81526004016115039392919061403c565b6020604051808303816000875af1158015611522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115469190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461157a6003806000613242565b85856040518463ffffffff1660e01b815260040161159a9392919061403c565b6020604051808303816000875af11580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611612600160036000613242565b85856040518463ffffffff1660e01b81526004016116329392919061403c565b6020604051808303816000875af1158015611651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116759190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746116aa600360016000613242565b85856040518463ffffffff1660e01b81526004016116ca9392919061403c565b6020604051808303816000875af11580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170d9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611742600260036000613242565b85856040518463ffffffff1660e01b81526004016117629392919061403c565b6020604051808303816000875af1158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a59190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746117da600360026000613242565b85856040518463ffffffff1660e01b81526004016117fa9392919061403c565b6020604051808303816000875af1158015611819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183d9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746118716004806000613242565b85856040518463ffffffff1660e01b81526004016118919392919061403c565b6020604051808303816000875af11580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611909600160046000613242565b85856040518463ffffffff1660e01b81526004016119299392919061403c565b6020604051808303816000875af1158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746119a1600460016000613242565b85856040518463ffffffff1660e01b81526004016119c19392919061403c565b6020604051808303816000875af11580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a049190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611a39600260046000613242565b85856040518463ffffffff1660e01b8152600401611a599392919061403c565b6020604051808303816000875af1158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611ad1600460026000613242565b85856040518463ffffffff1660e01b8152600401611af19392919061403c565b6020604051808303816000875af1158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b349190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611b69600360046000613242565b85856040518463ffffffff1660e01b8152600401611b899392919061403c565b6020604051808303816000875af1158015611ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcc9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611c01600460036000613242565b85856040518463ffffffff1660e01b8152600401611c219392919061403c565b6020604051808303816000875af1158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611c986001806001613242565b8560ff16856040518463ffffffff1660e01b8152600401611cbb9392919061403c565b6020604051808303816000875af1158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611d326001806002613242565b858560ff166040518463ffffffff1660e01b8152600401611d559392919061403c565b6020604051808303816000875af1158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d989190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611dcc6002806001613242565b8561ffff16856040518463ffffffff1660e01b8152600401611df09392919061403c565b6020604051808303816000875af1158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e339190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611e676001806002613242565b858561ffff166040518463ffffffff1660e01b8152600401611e8b9392919061403c565b6020604051808303816000875af1158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611f026003806001613242565b8563ffffffff16856040518463ffffffff1660e01b8152600401611f289392919061403c565b6020604051808303816000875af1158015611f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6b9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611f9f6003806002613242565b858563ffffffff166040518463ffffffff1660e01b8152600401611fc59392919061403c565b6020604051808303816000875af1158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120089190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461203c6004806001613242565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016120669392919061403c565b6020604051808303816000875af1158015612085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a99190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746120dd6004806002613242565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016121079392919061403c565b6020604051808303816000875af1158015612126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214a9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261217e6001806000613242565b85856040518463ffffffff1660e01b815260040161219e9392919061403c565b6020604051808303816000875af11580156121bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e19190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826122156002806000613242565b85856040518463ffffffff1660e01b81526004016122359392919061403c565b6020604051808303816000875af1158015612254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122789190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826122ad600160026000613242565b85856040518463ffffffff1660e01b81526004016122cd9392919061403c565b6020604051808303816000875af11580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612345600260016000613242565b85856040518463ffffffff1660e01b81526004016123659392919061403c565b6020604051808303816000875af1158015612384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a89190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826123dc6003806000613242565b85856040518463ffffffff1660e01b81526004016123fc9392919061403c565b6020604051808303816000875af115801561241b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243f9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612474600160036000613242565b85856040518463ffffffff1660e01b81526004016124949392919061403c565b6020604051808303816000875af11580156124b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d79190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261250c600360016000613242565b85856040518463ffffffff1660e01b815260040161252c9392919061403c565b6020604051808303816000875af115801561254b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256f9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826125a4600260036000613242565b85856040518463ffffffff1660e01b81526004016125c49392919061403c565b6020604051808303816000875af11580156125e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126079190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261263c600360026000613242565b85856040518463ffffffff1660e01b815260040161265c9392919061403c565b6020604051808303816000875af115801561267b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269f9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826126d36004806000613242565b85856040518463ffffffff1660e01b81526004016126f39392919061403c565b6020604051808303816000875af1158015612712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127369190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261276b600160046000613242565b85856040518463ffffffff1660e01b815260040161278b9392919061403c565b6020604051808303816000875af11580156127aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ce9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612803600460016000613242565b85856040518463ffffffff1660e01b81526004016128239392919061403c565b6020604051808303816000875af1158015612842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128669190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261289b600260046000613242565b85856040518463ffffffff1660e01b81526004016128bb9392919061403c565b6020604051808303816000875af11580156128da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fe9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612933600460026000613242565b85856040518463ffffffff1660e01b81526004016129539392919061403c565b6020604051808303816000875af1158015612972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129969190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826129cb600360046000613242565b85856040518463ffffffff1660e01b81526004016129eb9392919061403c565b6020604051808303816000875af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612a63600460036000613242565b85856040518463ffffffff1660e01b8152600401612a839392919061403c565b6020604051808303816000875af1158015612aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac69190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612afa6001806001613242565b8560ff16856040518463ffffffff1660e01b8152600401612b1d9392919061403c565b6020604051808303816000875af1158015612b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b609190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612b946001806002613242565b858560ff166040518463ffffffff1660e01b8152600401612bb79392919061403c565b6020604051808303816000875af1158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612c2e6002806001613242565b8561ffff16856040518463ffffffff1660e01b8152600401612c529392919061403c565b6020604051808303816000875af1158015612c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c959190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612cc96001806002613242565b858561ffff166040518463ffffffff1660e01b8152600401612ced9392919061403c565b6020604051808303816000875af1158015612d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d309190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612d646003806001613242565b8563ffffffff16856040518463ffffffff1660e01b8152600401612d8a9392919061403c565b6020604051808303816000875af1158015612da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dcd9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612e016003806002613242565b858563ffffffff166040518463ffffffff1660e01b8152600401612e279392919061403c565b6020604051808303816000875af1158015612e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6a9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612e9e6004806001613242565b8567ffffffffffffffff16856040518463ffffffff1660e01b8152600401612ec89392919061403c565b6020604051808303816000875af1158015612ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0b9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612f3f6004806002613242565b858567ffffffffffffffff166040518463ffffffff1660e01b8152600401612f699392919061403c565b6020604051808303816000875af1158015612f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fac9190613fd4565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060016004811115612fe757612fe6613f06565b5b60f81b8460ff166040518363ffffffff1660e01b815260040161300b929190613f7f565b6020604051808303816000875af115801561302a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304e9190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606002600481111561308857613087613f06565b5b60f81b8461ffff166040518363ffffffff1660e01b81526004016130ad929190613f7f565b6020604051808303816000875af11580156130cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f09190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606003600481111561312a57613129613f06565b5b60f81b8463ffffffff166040518363ffffffff1660e01b8152600401613151929190613f7f565b6020604051808303816000875af1158015613170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131949190613fd4565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606004808111156131cd576131cc613f06565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016131f8929190613f7f565b6020604051808303816000875af1158015613217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323b9190613fd4565b9050919050565b600081600281111561325757613256613f06565b5b60ff16600884600481111561326f5761326e613f06565b5b61ffff16901b61ffff16601086600481111561328e5761328d613f06565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133d282613389565b810181811067ffffffffffffffff821117156133f1576133f061339a565b5b80604052505050565b6000613404613375565b905061341082826133c9565b919050565b6000819050919050565b61342881613415565b811461343357600080fd5b50565b6000813590506134458161341f565b92915050565b60006060828403121561346157613460613384565b5b61346b60606133fa565b9050600061347b84828501613436565b600083015250602061348f84828501613436565b60208301525060406134a384828501613436565b60408301525092915050565b6000606082840312156134c5576134c461337f565b5b60006134d38482850161344b565b91505092915050565b600061ffff82169050919050565b6134f3816134dc565b82525050565b600060208201905061350e60008301846134ea565b92915050565b61351d81613415565b811461352857600080fd5b50565b60008135905061353a81613514565b92915050565b600060e0828403121561355657613555613384565b5b61356060e06133fa565b905060006135708482850161352b565b60008301525060206135848482850161352b565b60208301525060406135988482850161352b565b60408301525060606135ac8482850161352b565b60608301525060806135c08482850161352b565b60808301525060a06135d48482850161352b565b60a08301525060c06135e88482850161352b565b60c08301525092915050565b600060e0828403121561360a5761360961337f565b5b600061361884828501613540565b91505092915050565b600067ffffffffffffffff82169050919050565b61363e81613621565b82525050565b60006020820190506136596000830184613635565b92915050565b61366881613415565b811461367357600080fd5b50565b6000813590506136858161365f565b92915050565b600060a082840312156136a1576136a0613384565b5b6136ab60a06133fa565b905060006136bb84828501613676565b60008301525060206136cf84828501613676565b60208301525060406136e384828501613676565b60408301525060606136f784828501613676565b606083015250608061370b84828501613676565b60808301525092915050565b600060a0828403121561372d5761372c61337f565b5b600061373b8482850161368b565b91505092915050565b600063ffffffff82169050919050565b61375d81613744565b82525050565b60006020820190506137786000830184613754565b92915050565b600060ff82169050919050565b6137948161377e565b811461379f57600080fd5b50565b6000813590506137b18161378b565b92915050565b600080604083850312156137ce576137cd61337f565b5b60006137dc858286016137a2565b92505060206137ed858286016137a2565b9150509250929050565b6138008161377e565b82525050565b600060208201905061381b60008301846137f7565b92915050565b61382a81613415565b811461383557600080fd5b50565b60008135905061384781613821565b92915050565b6000610100828403121561386457613863613384565b5b61386f6101006133fa565b9050600061387f84828501613838565b600083015250602061389384828501613838565b60208301525060406138a784828501613436565b60408301525060606138bb84828501613436565b60608301525060806138cf84828501613676565b60808301525060a06138e384828501613676565b60a08301525060c06138f78482850161352b565b60c08301525060e061390b8482850161352b565b60e08301525092915050565b600080600061014084860312156139315761393061337f565b5b600061393f8682870161384d565b935050610100613951868287016137a2565b925050610120613963868287016137a2565b9150509250925092565b600082825260208201905092915050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b6000613a0060468361396d565b9150613a0b8261397e565b606082019050919050565b60006020820190508181036000830152613a2f816139f3565b9050919050565b7f6d696e546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000613a6c60178361396d565b9150613a7782613a36565b602082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f6d696e546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000613ad860178361396d565b9150613ae382613aa2565b602082019050919050565b60006020820190508181036000830152613b0781613acb565b9050919050565b7f6d696e546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000613b4460178361396d565b9150613b4f82613b0e565b602082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b7f6d696e546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000613bd660278361396d565b9150613be182613b7a565b604082019050919050565b60006020820190508181036000830152613c0581613bc9565b9050919050565b7f6d696e546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613c6860288361396d565b9150613c7382613c0c565b604082019050919050565b60006020820190508181036000830152613c9781613c5b565b9050919050565b7f6d696e546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613cfa60288361396d565b9150613d0582613c9e565b604082019050919050565b60006020820190508181036000830152613d2981613ced565b9050919050565b7f6d696e546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613d8c60288361396d565b9150613d9782613d30565b604082019050919050565b60006020820190508181036000830152613dbb81613d7f565b9050919050565b7f6d6178546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000613df860178361396d565b9150613e0382613dc2565b602082019050919050565b60006020820190508181036000830152613e2781613deb565b9050919050565b7f6d6178546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000613e6460178361396d565b9150613e6f82613e2e565b602082019050919050565b60006020820190508181036000830152613e9381613e57565b9050919050565b7f6d6178546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000613ed060178361396d565b9150613edb82613e9a565b602082019050919050565b60006020820190508181036000830152613eff81613ec3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613f6a81613f35565b82525050565b613f7981613415565b82525050565b6000604082019050613f946000830185613f61565b613fa16020830184613f70565b9392505050565b613fb181613415565b8114613fbc57600080fd5b50565b600081519050613fce81613fa8565b92915050565b600060208284031215613fea57613fe961337f565b5b6000613ff884828501613fbf565b91505092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61403681614001565b82525050565b6000606082019050614051600083018661402d565b61405e6020830185613f70565b61406b6040830184613f70565b94935050505056fea264697066735822122070ef2a729bd3b07add77857202e4aa0ba6a00add4960ea5e4e62f6442b2ae7ed64736f6c63430008140033";
298
+ "0x608060405234801561001057600080fd5b50614059806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d4c1db711161005b578063d4c1db711461013b578063dad85e0a14610159578063e23a217614610189578063ebb571fd146101b957610088565b80632e544aa01461008d5780634ea83705146100bd57806380f937bc146100db578063acb381691461010b575b600080fd5b6100a760048036038101906100a2919061345f565b6101d5565b6040516100b491906134a9565b60405180910390f35b6100c5610265565b6040516100d291906134e0565b60405180910390f35b6100f560048036038101906100f091906135db565b61027b565b604051610102919061362b565b60405180910390f35b610125600480360381019061012091906136fe565b6103cf565b604051610132919061374a565b60405180910390f35b6101436104ad565b60405161015091906134e0565b60405180910390f35b610173600480360381019061016e9190613791565b6104c3565b60405161018091906134e0565b60405180910390f35b6101a3600480360381019061019e9190613791565b610a22565b6040516101b091906134e0565b60405180910390f35b6101d360048036038101906101ce91906138c7565b610f82565b005b6000806101e58360000151611029565b90506101f48360200151611029565b61ffff168161ffff1614801561021d57506102128360400151611029565b61ffff168161ffff16145b61025c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610253906139c6565b60405180910390fd5b80915050919050565b60008060009054906101000a900460ff16905090565b60008061028b83600001516110c7565b905061029a83602001516110c7565b67ffffffffffffffff168167ffffffffffffffff161480156102db57506102c483604001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b801561030657506102ef83608001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b8015610331575061031a83606001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b801561035c57506103458360c001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b801561038757506103708360a001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b6103c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bd906139c6565b60405180910390fd5b80915050919050565b6000806103df8360000151611164565b90506103ee8360200151611164565b63ffffffff168163ffffffff1614801561041f57506104108360400151611164565b63ffffffff168163ffffffff16145b801561044257506104338360800151611164565b63ffffffff168163ffffffff16145b801561046557506104568360600151611164565b63ffffffff168163ffffffff16145b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049b906139c6565b60405180910390fd5b80915050919050565b60008060019054906101000a900460ff16905090565b60006104cd613253565b6104d5613298565b6104dd6132b9565b6104e56132e8565b6104f0848888610f82565b600061050c61050786600001518760200151611202565b611299565b9050806000806101000a81548160ff021916908360ff16021790555061053a85604001518660600151611337565b846000018181525050610555856000015186606001516113ce565b84602001818152505061057085604001518660200151611466565b8460400181815250506000610584856101d5565b90508160ff168161ffff16146105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c690613a32565b60405180910390fd5b6105e186608001518760a001516114fe565b8460000181815250506105fc86600001518760a00151611595565b8460200181815250506106178660800151876020015161162d565b84604001818152505061063286604001518760a001516116c5565b84606001818152505061064d8660800151876060015161175d565b8460800181815250506000610661856103cf565b90508063ffffffff168360ff16146106ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a590613a9e565b60405180910390fd5b6106c08760c001518860e001516117f5565b8460000181815250506106db87600001518860e0015161188c565b8460200181815250506106f68760c001518860200151611924565b84604001818152505061071187604001518860e001516119bc565b84606001818152505061072c8760c001518860600151611a54565b84608001818152505061074787608001518860e00151611aec565b8460a00181815250506107628760c001518860a00151611b84565b8460c001818152505060006107768561027b565b90508067ffffffffffffffff168460ff16146107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be90613b0a565b60405180910390fd5b6107dd6107d88c8a60200151611c1c565b611299565b60ff168460ff1614801561080b57506108026107fd89600001518c611cb6565b611299565b60ff168460ff16145b61084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190613b9c565b60405180910390fd5b61086361085e8c60ff168a60600151611d50565b611029565b61ffff168361ffff16148015610898575061088d61088889604001518c60ff16611deb565b611029565b61ffff168361ffff16145b6108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90613c2e565b60405180910390fd5b6108f06108eb8c60ff168a60a00151611e86565b611164565b63ffffffff168263ffffffff1614801561092d575061091e61091989608001518c60ff16611f23565b611164565b63ffffffff168263ffffffff16145b61096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390613cc0565b60405180910390fd5b6109856109808c60ff168a60e00151611fc0565b6110c7565b67ffffffffffffffff168167ffffffffffffffff161480156109d257506109bb6109b68960c001518c60ff16612061565b6110c7565b67ffffffffffffffff168167ffffffffffffffff16145b610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0890613d52565b60405180910390fd5b839850505050505050505092915050565b6000610a2c613253565b610a34613298565b610a3c6132b9565b610a446132e8565b610a4f848888610f82565b6000610a6b610a6686600001518760200151612102565b611299565b905080600060016101000a81548160ff021916908360ff160217905550610a9a85604001518660600151612199565b846000018181525050610ab585600001518660600151612230565b846020018181525050610ad0856040015186602001516122c8565b8460400181815250506000610ae4856101d5565b90508160ff168161ffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690613dbe565b60405180910390fd5b610b4186608001518760a00151612360565b846000018181525050610b5c86600001518760a001516123f7565b846020018181525050610b778660800151876020015161248f565b846040018181525050610b9286604001518760a00151612527565b846060018181525050610bad866080015187606001516125bf565b8460800181815250506000610bc1856103cf565b90508063ffffffff168360ff1614610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0590613e2a565b60405180910390fd5b610c208760c001518860e00151612657565b846000018181525050610c3b87600001518860e001516126ee565b846020018181525050610c568760c001518860200151612786565b846040018181525050610c7187604001518860e0015161281e565b846060018181525050610c8c8760c0015188606001516128b6565b846080018181525050610ca787608001518860e0015161294e565b8460a0018181525050610cc28760c001518860a001516129e6565b8460c00181815250506000610cd68561027b565b90508067ffffffffffffffff168460ff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613e96565b60405180910390fd5b610d3d610d388c8a60200151612a7e565b611299565b60ff168460ff16148015610d6b5750610d62610d5d89600001518c612b18565b611299565b60ff168460ff16145b610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190613b9c565b60405180910390fd5b610dc3610dbe8c60ff168a60600151612bb2565b611029565b61ffff168361ffff16148015610df85750610ded610de889604001518c60ff16612c4d565b611029565b61ffff168361ffff16145b610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90613c2e565b60405180910390fd5b610e50610e4b8c60ff168a60a00151612ce8565b611164565b63ffffffff168263ffffffff16148015610e8d5750610e7e610e7989608001518c60ff16612d85565b611164565b63ffffffff168263ffffffff16145b610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec390613cc0565b60405180910390fd5b610ee5610ee08c60ff168a60e00151612e22565b6110c7565b67ffffffffffffffff168167ffffffffffffffff16148015610f325750610f1b610f168960c001518c60ff16612ec3565b6110c7565b67ffffffffffffffff168167ffffffffffffffff16145b610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613d52565b60405180910390fd5b839850505050505050505092915050565b610f8b82612f64565b836000018181525050610f9d81612f64565b836020018181525050610fb28260ff16613005565b836040018181525050610fc78160ff16613005565b836060018181525050610fdc8260ff166130a7565b836080018181525050610ff18160ff166130a7565b8360a00181815250506110068260ff1661314b565b8360c001818152505061101b8160ff1661314b565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616002600481111561105c5761105b613eb6565b5b60f81b846040518363ffffffff1660e01b815260040161107d929190613f2f565b6020604051808303816000875af115801561109c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c09190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616004808111156110f9576110f8613eb6565b5b60f81b846040518363ffffffff1660e01b815260040161111a929190613f2f565b6020604051808303816000875af1158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616003600481111561119757611196613eb6565b5b60f81b846040518363ffffffff1660e01b81526004016111b8929190613f2f565b6020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb9190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461122e60018060006131f2565b85856040518463ffffffff1660e01b815260040161124e93929190613fec565b6020604051808303816000875af115801561126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112919190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600160048111156112cc576112cb613eb6565b5b60f81b846040518363ffffffff1660e01b81526004016112ed929190613f2f565b6020604051808303816000875af115801561130c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113309190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461136360028060006131f2565b85856040518463ffffffff1660e01b815260040161138393929190613fec565b6020604051808303816000875af11580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746113fb6001600260006131f2565b85856040518463ffffffff1660e01b815260040161141b93929190613fec565b6020604051808303816000875af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145e9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746114936002600160006131f2565b85856040518463ffffffff1660e01b81526004016114b393929190613fec565b6020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f69190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461152a60038060006131f2565b85856040518463ffffffff1660e01b815260040161154a93929190613fec565b6020604051808303816000875af1158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746115c26001600360006131f2565b85856040518463ffffffff1660e01b81526004016115e293929190613fec565b6020604051808303816000875af1158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461165a6003600160006131f2565b85856040518463ffffffff1660e01b815260040161167a93929190613fec565b6020604051808303816000875af1158015611699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bd9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746116f26002600360006131f2565b85856040518463ffffffff1660e01b815260040161171293929190613fec565b6020604051808303816000875af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461178a6003600260006131f2565b85856040518463ffffffff1660e01b81526004016117aa93929190613fec565b6020604051808303816000875af11580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461182160048060006131f2565b85856040518463ffffffff1660e01b815260040161184193929190613fec565b6020604051808303816000875af1158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746118b96001600460006131f2565b85856040518463ffffffff1660e01b81526004016118d993929190613fec565b6020604051808303816000875af11580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746119516004600160006131f2565b85856040518463ffffffff1660e01b815260040161197193929190613fec565b6020604051808303816000875af1158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b49190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746119e96002600460006131f2565b85856040518463ffffffff1660e01b8152600401611a0993929190613fec565b6020604051808303816000875af1158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611a816004600260006131f2565b85856040518463ffffffff1660e01b8152600401611aa193929190613fec565b6020604051808303816000875af1158015611ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae49190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611b196003600460006131f2565b85856040518463ffffffff1660e01b8152600401611b3993929190613fec565b6020604051808303816000875af1158015611b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611bb16004600360006131f2565b85856040518463ffffffff1660e01b8152600401611bd193929190613fec565b6020604051808303816000875af1158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c149190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611c4860018060016131f2565b8560ff16856040518463ffffffff1660e01b8152600401611c6b93929190613fec565b6020604051808303816000875af1158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611ce260018060026131f2565b858560ff166040518463ffffffff1660e01b8152600401611d0593929190613fec565b6020604051808303816000875af1158015611d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d489190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611d7c60028060016131f2565b8561ffff16856040518463ffffffff1660e01b8152600401611da093929190613fec565b6020604051808303816000875af1158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611e1760028060026131f2565b858561ffff166040518463ffffffff1660e01b8152600401611e3b93929190613fec565b6020604051808303816000875af1158015611e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7e9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611eb260038060016131f2565b8563ffffffff16856040518463ffffffff1660e01b8152600401611ed893929190613fec565b6020604051808303816000875af1158015611ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1b9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611f4f60038060026131f2565b858563ffffffff166040518463ffffffff1660e01b8152600401611f7593929190613fec565b6020604051808303816000875af1158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb89190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611fec60048060016131f2565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161201693929190613fec565b6020604051808303816000875af1158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461208d60048060026131f2565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016120b793929190613fec565b6020604051808303816000875af11580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261212e60018060006131f2565b85856040518463ffffffff1660e01b815260040161214e93929190613fec565b6020604051808303816000875af115801561216d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121919190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826121c560028060006131f2565b85856040518463ffffffff1660e01b81526004016121e593929190613fec565b6020604051808303816000875af1158015612204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122289190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261225d6001600260006131f2565b85856040518463ffffffff1660e01b815260040161227d93929190613fec565b6020604051808303816000875af115801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c09190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826122f56002600160006131f2565b85856040518463ffffffff1660e01b815260040161231593929190613fec565b6020604051808303816000875af1158015612334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123589190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261238c60038060006131f2565b85856040518463ffffffff1660e01b81526004016123ac93929190613fec565b6020604051808303816000875af11580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826124246001600360006131f2565b85856040518463ffffffff1660e01b815260040161244493929190613fec565b6020604051808303816000875af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826124bc6003600160006131f2565b85856040518463ffffffff1660e01b81526004016124dc93929190613fec565b6020604051808303816000875af11580156124fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251f9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826125546002600360006131f2565b85856040518463ffffffff1660e01b815260040161257493929190613fec565b6020604051808303816000875af1158015612593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b79190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826125ec6003600260006131f2565b85856040518463ffffffff1660e01b815260040161260c93929190613fec565b6020604051808303816000875af115801561262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264f9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261268360048060006131f2565b85856040518463ffffffff1660e01b81526004016126a393929190613fec565b6020604051808303816000875af11580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e69190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261271b6001600460006131f2565b85856040518463ffffffff1660e01b815260040161273b93929190613fec565b6020604051808303816000875af115801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826127b36004600160006131f2565b85856040518463ffffffff1660e01b81526004016127d393929190613fec565b6020604051808303816000875af11580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128169190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261284b6002600460006131f2565b85856040518463ffffffff1660e01b815260040161286b93929190613fec565b6020604051808303816000875af115801561288a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ae9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826128e36004600260006131f2565b85856040518463ffffffff1660e01b815260040161290393929190613fec565b6020604051808303816000875af1158015612922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129469190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261297b6003600460006131f2565b85856040518463ffffffff1660e01b815260040161299b93929190613fec565b6020604051808303816000875af11580156129ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129de9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612a136004600360006131f2565b85856040518463ffffffff1660e01b8152600401612a3393929190613fec565b6020604051808303816000875af1158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a769190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612aaa60018060016131f2565b8560ff16856040518463ffffffff1660e01b8152600401612acd93929190613fec565b6020604051808303816000875af1158015612aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b109190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612b4460018060026131f2565b858560ff166040518463ffffffff1660e01b8152600401612b6793929190613fec565b6020604051808303816000875af1158015612b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612baa9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612bde60028060016131f2565b8561ffff16856040518463ffffffff1660e01b8152600401612c0293929190613fec565b6020604051808303816000875af1158015612c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c459190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612c7960028060026131f2565b858561ffff166040518463ffffffff1660e01b8152600401612c9d93929190613fec565b6020604051808303816000875af1158015612cbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce09190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612d1460038060016131f2565b8563ffffffff16856040518463ffffffff1660e01b8152600401612d3a93929190613fec565b6020604051808303816000875af1158015612d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7d9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612db160038060026131f2565b858563ffffffff166040518463ffffffff1660e01b8152600401612dd793929190613fec565b6020604051808303816000875af1158015612df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1a9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612e4e60048060016131f2565b8567ffffffffffffffff16856040518463ffffffff1660e01b8152600401612e7893929190613fec565b6020604051808303816000875af1158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612eef60048060026131f2565b858567ffffffffffffffff166040518463ffffffff1660e01b8152600401612f1993929190613fec565b6020604051808303816000875af1158015612f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060016004811115612f9757612f96613eb6565b5b60f81b8460ff166040518363ffffffff1660e01b8152600401612fbb929190613f2f565b6020604051808303816000875af1158015612fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffe9190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606002600481111561303857613037613eb6565b5b60f81b8461ffff166040518363ffffffff1660e01b815260040161305d929190613f2f565b6020604051808303816000875af115801561307c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a09190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600360048111156130da576130d9613eb6565b5b60f81b8463ffffffff166040518363ffffffff1660e01b8152600401613101929190613f2f565b6020604051808303816000875af1158015613120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131449190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561317d5761317c613eb6565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016131a8929190613f2f565b6020604051808303816000875af11580156131c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131eb9190613f84565b9050919050565b600081600281111561320757613206613eb6565b5b60ff16600884600481111561321f5761321e613eb6565b5b61ffff16901b61ffff16601086600481111561323e5761323d613eb6565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61338282613339565b810181811067ffffffffffffffff821117156133a1576133a061334a565b5b80604052505050565b60006133b4613325565b90506133c08282613379565b919050565b6000819050919050565b6133d8816133c5565b81146133e357600080fd5b50565b6000813590506133f5816133cf565b92915050565b60006060828403121561341157613410613334565b5b61341b60606133aa565b9050600061342b848285016133e6565b600083015250602061343f848285016133e6565b6020830152506040613453848285016133e6565b60408301525092915050565b6000606082840312156134755761347461332f565b5b6000613483848285016133fb565b91505092915050565b600061ffff82169050919050565b6134a38161348c565b82525050565b60006020820190506134be600083018461349a565b92915050565b600060ff82169050919050565b6134da816134c4565b82525050565b60006020820190506134f560008301846134d1565b92915050565b613504816133c5565b811461350f57600080fd5b50565b600081359050613521816134fb565b92915050565b600060e0828403121561353d5761353c613334565b5b61354760e06133aa565b9050600061355784828501613512565b600083015250602061356b84828501613512565b602083015250604061357f84828501613512565b604083015250606061359384828501613512565b60608301525060806135a784828501613512565b60808301525060a06135bb84828501613512565b60a08301525060c06135cf84828501613512565b60c08301525092915050565b600060e082840312156135f1576135f061332f565b5b60006135ff84828501613527565b91505092915050565b600067ffffffffffffffff82169050919050565b61362581613608565b82525050565b6000602082019050613640600083018461361c565b92915050565b61364f816133c5565b811461365a57600080fd5b50565b60008135905061366c81613646565b92915050565b600060a0828403121561368857613687613334565b5b61369260a06133aa565b905060006136a28482850161365d565b60008301525060206136b68482850161365d565b60208301525060406136ca8482850161365d565b60408301525060606136de8482850161365d565b60608301525060806136f28482850161365d565b60808301525092915050565b600060a082840312156137145761371361332f565b5b600061372284828501613672565b91505092915050565b600063ffffffff82169050919050565b6137448161372b565b82525050565b600060208201905061375f600083018461373b565b92915050565b61376e816134c4565b811461377957600080fd5b50565b60008135905061378b81613765565b92915050565b600080604083850312156137a8576137a761332f565b5b60006137b68582860161377c565b92505060206137c78582860161377c565b9150509250929050565b6137da816133c5565b81146137e557600080fd5b50565b6000813590506137f7816137d1565b92915050565b6000610100828403121561381457613813613334565b5b61381f6101006133aa565b9050600061382f848285016137e8565b6000830152506020613843848285016137e8565b6020830152506040613857848285016133e6565b604083015250606061386b848285016133e6565b606083015250608061387f8482850161365d565b60808301525060a06138938482850161365d565b60a08301525060c06138a784828501613512565b60c08301525060e06138bb84828501613512565b60e08301525092915050565b600080600061014084860312156138e1576138e061332f565b5b60006138ef868287016137fd565b9350506101006139018682870161377c565b9250506101206139138682870161377c565b9150509250925092565b600082825260208201905092915050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b60006139b060468361391d565b91506139bb8261392e565b606082019050919050565b600060208201905081810360008301526139df816139a3565b9050919050565b7f6d696e546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000613a1c60178361391d565b9150613a27826139e6565b602082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f6d696e546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000613a8860178361391d565b9150613a9382613a52565b602082019050919050565b60006020820190508181036000830152613ab781613a7b565b9050919050565b7f6d696e546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000613af460178361391d565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f6d696e546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000613b8660278361391d565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f6d696e546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613c1860288361391d565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f6d696e546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613caa60288361391d565b9150613cb582613c4e565b604082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b7f6d696e546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613d3c60288361391d565b9150613d4782613ce0565b604082019050919050565b60006020820190508181036000830152613d6b81613d2f565b9050919050565b7f6d6178546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000613da860178361391d565b9150613db382613d72565b602082019050919050565b60006020820190508181036000830152613dd781613d9b565b9050919050565b7f6d6178546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000613e1460178361391d565b9150613e1f82613dde565b602082019050919050565b60006020820190508181036000830152613e4381613e07565b9050919050565b7f6d6178546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000613e8060178361391d565b9150613e8b82613e4a565b602082019050919050565b60006020820190508181036000830152613eaf81613e73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613f1a81613ee5565b82525050565b613f29816133c5565b82525050565b6000604082019050613f446000830185613f11565b613f516020830184613f20565b9392505050565b613f61816133c5565b8114613f6c57600080fd5b50565b600081519050613f7e81613f58565b92915050565b600060208284031215613f9a57613f9961332f565b5b6000613fa884828501613f6f565b91505092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b613fe681613fb1565b82525050565b60006060820190506140016000830186613fdd565b61400e6020830185613f20565b61401b6040830184613f20565b94935050505056fea2646970667358221220c3ebea5c8ab2b8200d08d5dde2bc3e9b44cc18e9fb64c729eec21c00584dabb664736f6c63430008140033";
286
299
 
287
300
  type MinMaxTestsContractConstructorParams =
288
301
  | [signer?: Signer]
@@ -122,6 +122,32 @@ const _abi = [
122
122
  stateMutability: "view",
123
123
  type: "function",
124
124
  },
125
+ {
126
+ inputs: [],
127
+ name: "getRandomBounded",
128
+ outputs: [
129
+ {
130
+ internalType: "uint64",
131
+ name: "",
132
+ type: "uint64",
133
+ },
134
+ ],
135
+ stateMutability: "view",
136
+ type: "function",
137
+ },
138
+ {
139
+ inputs: [],
140
+ name: "getValidateCiphertextResult",
141
+ outputs: [
142
+ {
143
+ internalType: "uint8",
144
+ name: "",
145
+ type: "uint8",
146
+ },
147
+ ],
148
+ stateMutability: "view",
149
+ type: "function",
150
+ },
125
151
  {
126
152
  inputs: [
127
153
  {
@@ -178,10 +204,49 @@ const _abi = [
178
204
  stateMutability: "nonpayable",
179
205
  type: "function",
180
206
  },
207
+ {
208
+ inputs: [
209
+ {
210
+ internalType: "ctUint8",
211
+ name: "ct8",
212
+ type: "uint256",
213
+ },
214
+ {
215
+ internalType: "ctUint16",
216
+ name: "ct16",
217
+ type: "uint256",
218
+ },
219
+ {
220
+ internalType: "ctUint32",
221
+ name: "ct32",
222
+ type: "uint256",
223
+ },
224
+ {
225
+ internalType: "ctUint64",
226
+ name: "ct64",
227
+ type: "uint256",
228
+ },
229
+ {
230
+ internalType: "bytes",
231
+ name: "signature",
232
+ type: "bytes",
233
+ },
234
+ ],
235
+ name: "validateCiphertextTest",
236
+ outputs: [
237
+ {
238
+ internalType: "uint8",
239
+ name: "",
240
+ type: "uint8",
241
+ },
242
+ ],
243
+ stateMutability: "nonpayable",
244
+ type: "function",
245
+ },
181
246
  ] as const;
182
247
 
183
248
  const _bytecode =
184
- "0x608060405260008060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555034801561003957600080fd5b50611fc5806100496000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063926605781161005b57806392660578146100f5578063aacc5a1714610111578063dbc221d01461012f578063dfbba08f1461014b5761007d565b8063103bdb8714610082578063598f9579146100a75780635adb5778146100d7575b600080fd5b61008a61017b565b60405161009e9897969594939291906117d7565b60405180910390f35b6100c160048036038101906100bc919061189d565b610221565b6040516100ce91906118ed565b60405180910390f35b6100df610235565b6040516100ec91906118ed565b60405180910390f35b61010f600480360381019061010a9190611934565b610247565b005b6101196103db565b60405161012691906118ed565b60405180910390f35b61014960048036038101906101449190611b30565b6103f8565b005b61016560048036038101906101609190611b86565b610486565b60405161017291906118ed565b60405180910390f35b600080600080600080600080600060089054906101000a900460ff16600060099054906101000a900460ff166000600a9054906101000a900460ff166000600b9054906101000a900460ff166000600c9054906101000a900460ff166000600d9054906101000a900460ff166000600e9054906101000a900460ff166000600f9054906101000a900460ff16975097509750975097509750975097509091929394959697565b600061022e600183610486565b9050919050565b6000610242600080610486565b905090565b600061025284610858565b9050600061025f84610858565b9050600061026c84610858565b905061028061027b848461090c565b6109a3565b600060086101000a81548160ff0219169083151502179055506102ab6102a68484610a4a565b6109a3565b600060096101000a81548160ff0219169083151502179055506102d66102d18484610ae1565b6109a3565b6000600a6101000a81548160ff0219169083151502179055506103006102fb84610b78565b6109a3565b6000600b6101000a81548160ff02191690831515021790555061032b6103268484610c16565b6109a3565b6000600c6101000a81548160ff0219169083151502179055506103566103518484610cad565b6109a3565b6000600d6101000a81548160ff02191690831515021790555061038261037d828585610d44565b6109a3565b6000600e6101000a81548160ff02191690831515021790555060006103a684610dde565b90506103b96103b482610e7c565b6109a3565b6000600f6101000a81548160ff02191690831515021790555050505050505050565b60008060009054906101000a900467ffffffffffffffff16905090565b60005b82811015610480578160ff166001901b8482600a811061041e5761041d611bc6565b5b602002015167ffffffffffffffff161061046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046490611c78565b60405180910390fd5b808061047890611cc7565b9150506103fb565b50505050565b600080600a9050610495611799565b60005b8281101561054957856104ef576104b56104b0610f1a565b610fb4565b60ff168282600a81106104cb576104ca611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610536565b6105006104fb86611052565b610fb4565b60ff168282600a811061051657610515611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061054190611cc7565b915050610498565b50806000600a811061055e5761055d611bc6565b5b60200201516000806101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550841561059c5761059b8183866103f8565b5b6105a681836110f0565b846105b057600391505b60005b82811015610666578561060b576105d06105cb6111b9565b611253565b61ffff168282600a81106105e7576105e6611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610653565b61061c610617866112f1565b611253565b61ffff168282600a811061063357610632611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061065e90611cc7565b9150506105b3565b508415610679576106788183866103f8565b5b61068381836110f0565b8461068d57600391505b60005b8281101561074757856106ea576106ad6106a861138f565b611429565b63ffffffff168282600a81106106c6576106c5611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610734565b6106fb6106f6866114c7565b611429565b63ffffffff168282600a811061071457610713611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061073f90611cc7565b915050610690565b50841561075a576107598183866103f8565b5b61076481836110f0565b8461076e57600291505b60005b8281101561081c57856107c55761078e610789611565565b6115fe565b8282600a81106107a1576107a0611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610809565b6107d66107d18661169b565b6115fe565b8282600a81106107e9576107e8611bc6565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061081490611cc7565b915050610771565b50841561082f5761082e8183866103f8565b5b61083981836110f0565b60008054906101000a900467ffffffffffffffff169250505092915050565b6000808261086757600061086a565b60015b60ff169050606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600060048111156108a05761089f611d0f565b5b60f81b836040518363ffffffff1660e01b81526004016108c1929190611d88565b6020604051808303816000875af11580156108e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109049190611dc6565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fe9c73d16109386000806000611738565b85856040518463ffffffff1660e01b815260040161095893929190611e2e565b6020604051808303816000875af1158015610977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099b9190611dc6565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600060048111156109d7576109d6611d0f565b5b60f81b856040518363ffffffff1660e01b81526004016109f8929190611d88565b6020604051808303816000875af1158015610a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3b9190611dc6565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fb7da35f610a766000806000611738565b85856040518463ffffffff1660e01b8152600401610a9693929190611e2e565b6020604051808303816000875af1158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190611dc6565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636f962e2c610b0d6000806000611738565b85856040518463ffffffff1660e01b8152600401610b2d93929190611e2e565b6020604051808303816000875af1158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190611dc6565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16631d79e49a60006004811115610bab57610baa611d0f565b5b60f81b846040518363ffffffff1660e01b8152600401610bcc929190611d88565b6020604051808303816000875af1158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb610c426000806000611738565b85856040518463ffffffff1660e01b8152600401610c6293929190611e2e565b6020604051808303816000875af1158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca59190611dc6565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56610cd96000806000611738565b85856040518463ffffffff1660e01b8152600401610cf993929190611e2e565b6020604051808303816000875af1158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190611dc6565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166320cc408d610d706000806000611738565b8686866040518563ffffffff1660e01b8152600401610d929493929190611e65565b6020604051808303816000875af1158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190611dc6565b90509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c0260006004811115610e1157610e10611d0f565b5b60f81b846040518363ffffffff1660e01b8152600401610e32929190611d88565b6020604051808303816000875af1158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e759190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e560006004811115610eaf57610eae611d0f565b5b60f81b846040518363ffffffff1660e01b8152600401610ed0929190611d88565b6020604051808303816000875af1158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f139190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060016004811115610f4d57610f4c611d0f565b5b60f81b6040518263ffffffff1660e01b8152600401610f6c9190611eaa565b6020604051808303816000875af1158015610f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faf9190611dc6565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160016004811115610fe757610fe6611d0f565b5b60f81b846040518363ffffffff1660e01b8152600401611008929190611d88565b6020604051808303816000875af1158015611027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104b9190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc6001600481111561108557611084611d0f565b5b60f81b846040518363ffffffff1660e01b81526004016110a6929190611ed4565b6020604051808303816000875af11580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e99190611dc6565b9050919050565b6000600190506000600190505b82811015611171578381600a811061111857611117611bc6565b5b602002015167ffffffffffffffff16846000600a811061113b5761113a611bc6565b5b602002015167ffffffffffffffff160361115e57818061115a90611cc7565b9250505b808061116990611cc7565b9150506110fd565b508181036111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab90611f6f565b60405180910390fd5b505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb890600260048111156111ec576111eb611d0f565b5b60f81b6040518263ffffffff1660e01b815260040161120b9190611eaa565b6020604051808303816000875af115801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190611dc6565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616002600481111561128657611285611d0f565b5b60f81b846040518363ffffffff1660e01b81526004016112a7929190611d88565b6020604051808303816000875af11580156112c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ea9190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc6002600481111561132457611323611d0f565b5b60f81b846040518363ffffffff1660e01b8152600401611345929190611ed4565b6020604051808303816000875af1158015611364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113889190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb890600360048111156113c2576113c1611d0f565b5b60f81b6040518263ffffffff1660e01b81526004016113e19190611eaa565b6020604051808303816000875af1158015611400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114249190611dc6565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616003600481111561145c5761145b611d0f565b5b60f81b846040518363ffffffff1660e01b815260040161147d929190611d88565b6020604051808303816000875af115801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc600360048111156114fa576114f9611d0f565b5b60f81b846040518363ffffffff1660e01b815260040161151b929190611ed4565b6020604051808303816000875af115801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060048081111561159757611596611d0f565b5b60f81b6040518263ffffffff1660e01b81526004016115b69190611eaa565b6020604051808303816000875af11580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f99190611dc6565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616004808111156116305761162f611d0f565b5b60f81b846040518363ffffffff1660e01b8152600401611651929190611d88565b6020604051808303816000875af1158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116949190611dc6565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc6004808111156116cd576116cc611d0f565b5b60f81b846040518363ffffffff1660e01b81526004016116ee929190611ed4565b6020604051808303816000875af115801561170d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117319190611dc6565b9050919050565b600081600281111561174d5761174c611d0f565b5b60ff16600884600481111561176557611764611d0f565b5b61ffff16901b61ffff16601086600481111561178457611783611d0f565b5b62ffffff16901b171760e81b90509392505050565b604051806101400160405280600a90602082028036833780820191505090505090565b60008115159050919050565b6117d1816117bc565b82525050565b6000610100820190506117ed600083018b6117c8565b6117fa602083018a6117c8565b61180760408301896117c8565b61181460608301886117c8565b61182160808301876117c8565b61182e60a08301866117c8565b61183b60c08301856117c8565b61184860e08301846117c8565b9998505050505050505050565b6000604051905090565b600080fd5b600060ff82169050919050565b61187a81611864565b811461188557600080fd5b50565b60008135905061189781611871565b92915050565b6000602082840312156118b3576118b261185f565b5b60006118c184828501611888565b91505092915050565b600067ffffffffffffffff82169050919050565b6118e7816118ca565b82525050565b600060208201905061190260008301846118de565b92915050565b611911816117bc565b811461191c57600080fd5b50565b60008135905061192e81611908565b92915050565b60008060006060848603121561194d5761194c61185f565b5b600061195b8682870161191f565b935050602061196c8682870161191f565b925050604061197d8682870161191f565b9150509250925092565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6119d58261198c565b810181811067ffffffffffffffff821117156119f4576119f361199d565b5b80604052505050565b6000611a07611855565b9050611a1382826119cc565b919050565b600067ffffffffffffffff821115611a3357611a3261199d565b5b602082029050919050565b600080fd5b611a4c816118ca565b8114611a5757600080fd5b50565b600081359050611a6981611a43565b92915050565b6000611a82611a7d84611a18565b6119fd565b90508060208402830185811115611a9c57611a9b611a3e565b5b835b81811015611ac55780611ab18882611a5a565b845260208401935050602081019050611a9e565b5050509392505050565b600082601f830112611ae457611ae3611987565b5b600a611af1848285611a6f565b91505092915050565b6000819050919050565b611b0d81611afa565b8114611b1857600080fd5b50565b600081359050611b2a81611b04565b92915050565b60008060006101808486031215611b4a57611b4961185f565b5b6000611b5886828701611acf565b935050610140611b6a86828701611b1b565b925050610160611b7c86828701611888565b9150509250925092565b60008060408385031215611b9d57611b9c61185f565b5b6000611bab8582860161191f565b9250506020611bbc85828601611888565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f72616e646f6d546573743a2072616e646f6d206661696c65642c206f7574206f60008201527f6620626f756e6473000000000000000000000000000000000000000000000000602082015250565b6000611c62602883611bf5565b9150611c6d82611c06565b604082019050919050565b60006020820190508181036000830152611c9181611c55565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611cd282611afa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0457611d03611c98565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611d7381611d3e565b82525050565b611d8281611afa565b82525050565b6000604082019050611d9d6000830185611d6a565b611daa6020830184611d79565b9392505050565b600081519050611dc081611b04565b92915050565b600060208284031215611ddc57611ddb61185f565b5b6000611dea84828501611db1565b91505092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b611e2881611df3565b82525050565b6000606082019050611e436000830186611e1f565b611e506020830185611d79565b611e5d6040830184611d79565b949350505050565b6000608082019050611e7a6000830187611e1f565b611e876020830186611d79565b611e946040830185611d79565b611ea16060830184611d79565b95945050505050565b6000602082019050611ebf6000830184611d6a565b92915050565b611ece81611864565b82525050565b6000604082019050611ee96000830185611d6a565b611ef66020830184611ec5565b9392505050565b7f72616e646f6d546573743a2072616e646f6d206661696c65642c20616c6c207660008201527f616c75657320617265207468652073616d650000000000000000000000000000602082015250565b6000611f59603283611bf5565b9150611f6482611efd565b604082019050919050565b60006020820190508181036000830152611f8881611f4c565b905091905056fea2646970667358221220f20996b8e6f5adfd164a85027d33fe534d931940f9c4a8e8896c3eb452bc4cbd64736f6c63430008140033";
249
+ "0x608060405260008060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008060086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555034801561006257600080fd5b50612b25806100726000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806392660578116100665780639266057814610164578063aacc5a1714610180578063d3d8aff41461019e578063dbc221d0146101bc578063dfbba08f146101d85761009e565b8063103bdb87146100a3578063276b8288146100c857806334c7c817146100f8578063598f9579146101165780635adb577814610146575b600080fd5b6100ab610208565b6040516100bf989796959493929190611eff565b60405180910390f35b6100e260048036038101906100dd91906120b0565b6102ae565b6040516100ef9190612166565b60405180910390f35b6101006105c9565b60405161010d9190612166565b60405180910390f35b610130600480360381019061012b91906121ad565b6105df565b60405161013d91906121fd565b60405180910390f35b61014e6105f3565b60405161015b91906121fd565b60405180910390f35b61017e60048036038101906101799190612244565b610605565b005b610188610799565b60405161019591906121fd565b60405180910390f35b6101a66107b6565b6040516101b391906121fd565b60405180910390f35b6101d660048036038101906101d1919061242c565b6107d3565b005b6101f260048036038101906101ed9190612482565b610861565b6040516101ff91906121fd565b60405180910390f35b600080600080600080600080600060109054906101000a900460ff16600060119054906101000a900460ff16600060129054906101000a900460ff16600060139054906101000a900460ff16600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900460ff16600060179054906101000a900460ff16975097509750975097509750975097509091929394959697565b60006102b8611e59565b8781600001818152505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250610317611e73565b8781600001818152505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250610376611e8d565b8781600001818152505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081602001819052506103d5611ea7565b8781600001818152505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816020018190525061043d61043885610c79565b610d21565b600060186101000a81548160ff021916908360ff160217905550600061046a61046585610dbf565b610e67565b9050600060189054906101000a900460ff1660ff168161ffff16146104c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bb90612545565b60405180910390fd5b60006104d76104d285610f05565b610fad565b9050600060189054906101000a900460ff1660ff168163ffffffff1614610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a906125d7565b60405180910390fd5b60006105466105418561104b565b6110f2565b9050600060189054906101000a900460ff1660ff168167ffffffffffffffff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059d90612669565b60405180910390fd5b600060189054906101000a900460ff169750505050505050509695505050505050565b60008060189054906101000a900460ff16905090565b60006105ec600183610861565b9050919050565b6000610600600080610861565b905090565b60006106108461118f565b9050600061061d8461118f565b9050600061062a8461118f565b905061063e6106398484611243565b6112da565b600060106101000a81548160ff0219169083151502179055506106696106648484611381565b6112da565b600060116101000a81548160ff02191690831515021790555061069461068f8484611418565b6112da565b600060126101000a81548160ff0219169083151502179055506106be6106b9846114af565b6112da565b600060136101000a81548160ff0219169083151502179055506106e96106e4848461154d565b6112da565b600060146101000a81548160ff02191690831515021790555061071461070f84846115e4565b6112da565b600060156101000a81548160ff02191690831515021790555061074061073b82858561167b565b6112da565b600060166101000a81548160ff021916908315150217905550600061076484611715565b9050610777610772826117b3565b6112da565b600060176101000a81548160ff02191690831515021790555050505050505050565b60008060009054906101000a900467ffffffffffffffff16905090565b60008060089054906101000a900467ffffffffffffffff16905090565b60005b8281101561085b578160ff166001901b8482600a81106107f9576107f8612689565b5b602002015167ffffffffffffffff1610610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f9061272a565b60405180910390fd5b808061085390612779565b9150506107d6565b50505050565b600080600a9050610870611ec1565b60005b8281101561092457856108ca5761089061088b611851565b610d21565b60ff168282600a81106108a6576108a5612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610911565b6108db6108d6866118eb565b610d21565b60ff168282600a81106108f1576108f0612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061091c90612779565b915050610873565b508415610937576109368183866107d3565b5b6109418183611989565b8461094b57600391505b60005b82811015610a0157856109a65761096b610966611a52565b610e67565b61ffff168282600a811061098257610981612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250506109ee565b6109b76109b286611aec565b610e67565b61ffff168282600a81106109ce576109cd612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b80806109f990612779565b91505061094e565b508415610a1457610a138183866107d3565b5b610a1e8183611989565b84610a2857600391505b60005b82811015610ae25785610a8557610a48610a43611b8a565b610fad565b63ffffffff168282600a8110610a6157610a60612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610acf565b610a96610a9186611c24565b610fad565b63ffffffff168282600a8110610aaf57610aae612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b8080610ada90612779565b915050610a2b565b508415610af557610af48183866107d3565b5b610aff8183611989565b84610b0957600291505b60005b82811015610bb75785610b6057610b29610b24611cc2565b6110f2565b8282600a8110610b3c57610b3b612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610ba4565b610b71610b6c86611d5b565b6110f2565b8282600a8110610b8457610b83612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b8080610baf90612779565b915050610b0c565b508415610c0f57610bc98183866107d3565b806000600a8110610bdd57610bdc612689565b5b6020020151600060086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c50565b806000600a8110610c2357610c22612689565b5b60200201516000806101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610c5a8183611989565b60008054906101000a900467ffffffffffffffff169250505092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060016004811115610cac57610cab6127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610cd7939291906128b9565b6020604051808303816000875af1158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160016004811115610d5457610d536127c1565b5b60f81b846040518363ffffffff1660e01b8152600401610d75929190612939565b6020604051808303816000875af1158015610d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db8919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060026004811115610df257610df16127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610e1d939291906128b9565b6020604051808303816000875af1158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e60919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160026004811115610e9a57610e996127c1565b5b60f81b846040518363ffffffff1660e01b8152600401610ebb929190612939565b6020604051808303816000875af1158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060036004811115610f3857610f376127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610f63939291906128b9565b6020604051808303816000875af1158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa6919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160036004811115610fe057610fdf6127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611001929190612939565b6020604051808303816000875af1158015611020573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611044919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060048081111561107d5761107c6127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b81526004016110a8939291906128b9565b6020604051808303816000875af11580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600480811115611124576111236127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611145929190612939565b6020604051808303816000875af1158015611164573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611188919061290c565b9050919050565b6000808261119e5760006111a1565b60015b60ff169050606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600060048111156111d7576111d66127c1565b5b60f81b836040518363ffffffff1660e01b81526004016111f8929190612939565b6020604051808303816000875af1158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b919061290c565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fe9c73d161126f6000806000611df8565b85856040518463ffffffff1660e01b815260040161128f9392919061299d565b6020604051808303816000875af11580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d2919061290c565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616000600481111561130e5761130d6127c1565b5b60f81b856040518363ffffffff1660e01b815260040161132f929190612939565b6020604051808303816000875af115801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061290c565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fb7da35f6113ad6000806000611df8565b85856040518463ffffffff1660e01b81526004016113cd9392919061299d565b6020604051808303816000875af11580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636f962e2c6114446000806000611df8565b85856040518463ffffffff1660e01b81526004016114649392919061299d565b6020604051808303816000875af1158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16631d79e49a600060048111156114e2576114e16127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611503929190612939565b6020604051808303816000875af1158015611522573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611546919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6115796000806000611df8565b85856040518463ffffffff1660e01b81526004016115999392919061299d565b6020604051808303816000875af11580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566116106000806000611df8565b85856040518463ffffffff1660e01b81526004016116309392919061299d565b6020604051808303816000875af115801561164f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611673919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166320cc408d6116a76000806000611df8565b8686866040518563ffffffff1660e01b81526004016116c994939291906129d4565b6020604051808303816000875af11580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c919061290c565b90509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c0260006004811115611748576117476127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611769929190612939565b6020604051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e5600060048111156117e6576117e56127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611807929190612939565b6020604051808303816000875af1158015611826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184a919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060016004811115611884576118836127c1565b5b60f81b6040518263ffffffff1660e01b81526004016118a39190612a19565b6020604051808303816000875af11580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e6919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc6001600481111561191e5761191d6127c1565b5b60f81b846040518363ffffffff1660e01b815260040161193f929190612a34565b6020604051808303816000875af115801561195e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611982919061290c565b9050919050565b6000600190506000600190505b82811015611a0a578381600a81106119b1576119b0612689565b5b602002015167ffffffffffffffff16846000600a81106119d4576119d3612689565b5b602002015167ffffffffffffffff16036119f75781806119f390612779565b9250505b8080611a0290612779565b915050611996565b50818103611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490612acf565b60405180910390fd5b505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060026004811115611a8557611a846127c1565b5b60f81b6040518263ffffffff1660e01b8152600401611aa49190612a19565b6020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae7919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc60026004811115611b1f57611b1e6127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611b40929190612a34565b6020604051808303816000875af1158015611b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b83919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060036004811115611bbd57611bbc6127c1565b5b60f81b6040518263ffffffff1660e01b8152600401611bdc9190612a19565b6020604051808303816000875af1158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc60036004811115611c5757611c566127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611c78929190612a34565b6020604051808303816000875af1158015611c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbb919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb890600480811115611cf457611cf36127c1565b5b60f81b6040518263ffffffff1660e01b8152600401611d139190612a19565b6020604051808303816000875af1158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d56919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc600480811115611d8d57611d8c6127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611dae929190612a34565b6020604051808303816000875af1158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df1919061290c565b9050919050565b6000816002811115611e0d57611e0c6127c1565b5b60ff166008846004811115611e2557611e246127c1565b5b61ffff16901b61ffff166010866004811115611e4457611e436127c1565b5b62ffffff16901b171760e81b90509392505050565b604051806040016040528060008152602001606081525090565b604051806040016040528060008152602001606081525090565b604051806040016040528060008152602001606081525090565b604051806040016040528060008152602001606081525090565b604051806101400160405280600a90602082028036833780820191505090505090565b60008115159050919050565b611ef981611ee4565b82525050565b600061010082019050611f15600083018b611ef0565b611f22602083018a611ef0565b611f2f6040830189611ef0565b611f3c6060830188611ef0565b611f496080830187611ef0565b611f5660a0830186611ef0565b611f6360c0830185611ef0565b611f7060e0830184611ef0565b9998505050505050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b611fa481611f91565b8114611faf57600080fd5b50565b600081359050611fc181611f9b565b92915050565b611fd081611f91565b8114611fdb57600080fd5b50565b600081359050611fed81611fc7565b92915050565b611ffc81611f91565b811461200757600080fd5b50565b60008135905061201981611ff3565b92915050565b61202881611f91565b811461203357600080fd5b50565b6000813590506120458161201f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126120705761206f61204b565b5b8235905067ffffffffffffffff81111561208d5761208c612050565b5b6020830191508360018202830111156120a9576120a8612055565b5b9250929050565b60008060008060008060a087890312156120cd576120cc611f87565b5b60006120db89828a01611fb2565b96505060206120ec89828a01611fde565b95505060406120fd89828a0161200a565b945050606061210e89828a01612036565b935050608087013567ffffffffffffffff81111561212f5761212e611f8c565b5b61213b89828a0161205a565b92509250509295509295509295565b600060ff82169050919050565b6121608161214a565b82525050565b600060208201905061217b6000830184612157565b92915050565b61218a8161214a565b811461219557600080fd5b50565b6000813590506121a781612181565b92915050565b6000602082840312156121c3576121c2611f87565b5b60006121d184828501612198565b91505092915050565b600067ffffffffffffffff82169050919050565b6121f7816121da565b82525050565b600060208201905061221260008301846121ee565b92915050565b61222181611ee4565b811461222c57600080fd5b50565b60008135905061223e81612218565b92915050565b60008060006060848603121561225d5761225c611f87565b5b600061226b8682870161222f565b935050602061227c8682870161222f565b925050604061228d8682870161222f565b9150509250925092565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122e082612297565b810181811067ffffffffffffffff821117156122ff576122fe6122a8565b5b80604052505050565b6000612312611f7d565b905061231e82826122d7565b919050565b600067ffffffffffffffff82111561233e5761233d6122a8565b5b602082029050919050565b612352816121da565b811461235d57600080fd5b50565b60008135905061236f81612349565b92915050565b600061238861238384612323565b612308565b905080602084028301858111156123a2576123a1612055565b5b835b818110156123cb57806123b78882612360565b8452602084019350506020810190506123a4565b5050509392505050565b600082601f8301126123ea576123e961204b565b5b600a6123f7848285612375565b91505092915050565b61240981611f91565b811461241457600080fd5b50565b60008135905061242681612400565b92915050565b6000806000610180848603121561244657612445611f87565b5b6000612454868287016123d5565b93505061014061246686828701612417565b92505061016061247886828701612198565b9150509250925092565b6000806040838503121561249957612498611f87565b5b60006124a78582860161222f565b92505060206124b885828601612198565b9150509250929050565b600082825260208201905092915050565b7f76616c696461746543697068657274657874546573743a2076616c696461746560008201527f4369706865727465787420776974682031362062697473206661696c65640000602082015250565b600061252f603e836124c2565b915061253a826124d3565b604082019050919050565b6000602082019050818103600083015261255e81612522565b9050919050565b7f76616c696461746543697068657274657874546573743a2076616c696461746560008201527f4369706865727465787420776974682033322062697473206661696c65640000602082015250565b60006125c1603e836124c2565b91506125cc82612565565b604082019050919050565b600060208201905081810360008301526125f0816125b4565b9050919050565b7f76616c696461746543697068657274657874546573743a2076616c696461746560008201527f4369706865727465787420776974682036342062697473206661696c65640000602082015250565b6000612653603e836124c2565b915061265e826125f7565b604082019050919050565b6000602082019050818103600083015261268281612646565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f72616e646f6d546573743a2072616e646f6d206661696c65642c206f7574206f60008201527f6620626f756e6473000000000000000000000000000000000000000000000000602082015250565b60006127146028836124c2565b915061271f826126b8565b604082019050919050565b6000602082019050818103600083015261274381612707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061278482611f91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127b6576127b561274a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612825816127f0565b82525050565b61283481611f91565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612874578082015181840152602081019050612859565b60008484015250505050565b600061288b8261283a565b6128958185612845565b93506128a5818560208601612856565b6128ae81612297565b840191505092915050565b60006060820190506128ce600083018661281c565b6128db602083018561282b565b81810360408301526128ed8184612880565b9050949350505050565b60008151905061290681612400565b92915050565b60006020828403121561292257612921611f87565b5b6000612930848285016128f7565b91505092915050565b600060408201905061294e600083018561281c565b61295b602083018461282b565b9392505050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61299781612962565b82525050565b60006060820190506129b2600083018661298e565b6129bf602083018561282b565b6129cc604083018461282b565b949350505050565b60006080820190506129e9600083018761298e565b6129f6602083018661282b565b612a03604083018561282b565b612a10606083018461282b565b95945050505050565b6000602082019050612a2e600083018461281c565b92915050565b6000604082019050612a49600083018561281c565b612a566020830184612157565b9392505050565b7f72616e646f6d546573743a2072616e646f6d206661696c65642c20616c6c207660008201527f616c75657320617265207468652073616d650000000000000000000000000000602082015250565b6000612ab96032836124c2565b9150612ac482612a5d565b604082019050919050565b60006020820190508181036000830152612ae881612aac565b905091905056fea2646970667358221220037d1b5cbfb930824555d1d36942f71d543a221e0e26ea9a53edea8e7c2aa02364736f6c63430008140033";
185
250
 
186
251
  type Miscellaneous1TestsContractConstructorParams =
187
252
  | [signer?: Signer]