@coti-io/coti-contracts 1.0.2 → 1.0.3

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 (42) hide show
  1. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +112 -0
  2. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +126 -0
  3. package/contracts/utils/mpc/MpcCore.sol +40 -0
  4. package/contracts/utils/mpc/MpcInterface.sol +2 -0
  5. package/package.json +1 -1
  6. package/test/onboard/AccountOnboard.test.ts +2 -2
  7. package/test/utils/accounts.ts +2 -2
  8. package/test/utils/mpc/Precompile.test.ts +8 -0
  9. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +0 -2
  10. package/typechain-types/contracts/GasTest.ts +91 -0
  11. package/typechain-types/contracts/mocks/utils/mpc/index.ts +1 -0
  12. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +38 -0
  13. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +0 -1
  14. package/typechain-types/factories/contracts/GasTest__factory.ts +75 -0
  15. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  16. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  17. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  18. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  19. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  20. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  21. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  22. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  23. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  24. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  25. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  26. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  27. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  28. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  29. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  30. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  31. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  32. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  33. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  34. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  35. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +1 -0
  36. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  37. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  38. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  39. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +58 -0
  40. package/typechain-types/hardhat.d.ts +18 -54
  41. package/typechain-types/index.ts +4 -6
  42. package/contracts/onboard/README.md +0 -65
@@ -566,7 +566,7 @@ const _abi = [
566
566
  ] as const;
567
567
 
568
568
  const _bytecode =
569
- "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f5072697661746545524332304d6f636b60801b81525060405180604001604052806005815260200164504532304d60d81b81525081600490816200006a919062000127565b50600562000079828262000127565b505050620001f3565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ad57607f821691505b602082108103620000ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012257600081815260208120601f850160051c81016020861015620000fd5750805b601f850160051c820191505b818110156200011e5782815560010162000109565b5050505b505050565b81516001600160401b0381111562000143576200014362000082565b6200015b8162000154845462000098565b84620000d4565b602080601f8311600181146200019357600084156200017a5750858301515b600019600386901b1c1916600185901b1785556200011e565b600085815260208120601f198616915b82811015620001c457888601518255948401946001909101908401620001a3565b5085821015620001e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61197380620002036000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063313ce567116100cd57806396b2db3811610081578063a7d9ad6a11610066578063a7d9ad6a146102f9578063a9059cbb1461030c578063dd62ed3e1461031f57600080fd5b806396b2db38146102d3578063a42c0af9146102e657600080fd5b8063722713f7116100b2578063722713f7146102b05780638269bcc3146102b857806395d89b41146102cb57600080fd5b8063313ce5671461026757806370a082311461027657600080fd5b806313691c761161012457806323b872dd1161010957806323b872dd1461022e57806326a9b3f1146102415780632893c5b01461025457600080fd5b806313691c761461021257806318160ddd1461022757600080fd5b8063043d20851461015657806306fdde03146101b957806308a2032a146101ce578063095ea7b3146101ef575b600080fd5b61018f61016436600461146b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101c1610354565b6040516101b091906114ea565b6101e16101dc366004611515565b6103e6565b6040519081526020016101b0565b6102026101fd366004611573565b61041d565b60405190151581526020016101b0565b61022561022036600461159d565b610437565b005b60006101e1565b6101e161023c3660046115e1565b61044e565b61020261024f36600461161d565b610470565b61022561026236600461159d565b610524565b604051600681526020016101b0565b6101e161028436600461146b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120015490565b6101e1610536565b6102026102c636600461146b565b610546565b6101c16105ca565b6101e16102e136600461161d565b6105d9565b6102026102f436600461164e565b61065c565b6101e161030736600461164e565b610684565b6101e161031a366004611573565b6106a1565b61033261032d36600461169c565b6106b7565b60408051825181526020808401519082015291810151908201526060016101b0565b606060048054610363906116cf565b80601f016020809104026020016040519081016040528092919081815260200182805461038f906116cf565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b600033816103fb6103f6856117c3565b610736565b90506104088683836107e2565b6104138686836108cf565b9695505050505050565b60003361042b818585610981565b60019150505b92915050565b6104498261044483610b93565b610c03565b505050565b60003361045c8582856107e2565b6104678585856108cf565b95945050505050565b60008061047c33610c68565b905082156104d45733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080546104c9906104c390610c9e565b83610cbb565b60019091015561042b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290208054610513906104c390610c9e565b600290910155600191505092915050565b6104498261053183610b93565b610da0565b600061054133610dfe565b905090565b60008061055233610dfe565b33600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905590506105ab8184610cbb565b3360009081526001602081905260409091208101919091559392505050565b606060058054610363906116cf565b600081156106225733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461061b90610c9e565b9050610431565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205461061b90610c9e565b6000338161066c6103f6856117c3565b9050610679828683610981565b506001949350505050565b600033816106946103f6856117c3565b90506104678286836108cf565b6000336106af8185856108cf565b949350505050565b6106db60405180606001604052806000815260200160008152602001600081525090565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529283529083902083516060810185528154815260018201549381019390935201549181019190915290565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e109261079f927f04000000000000000000000000000000000000000000000000000000000000009290916004016118b5565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043191906118f6565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205461081190610c9e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602090815260408083209388168352929052908120549192509061085390610c9e565b905060006108718261086c67ffffffffffffffff610b93565b610e2d565b9050600061087f8486610ead565b9050600061088d8487610ead565b905060006108b76108a7856108a28686610ec2565b610ec2565b6108b1878a610ed6565b87610eeb565b90506108c4898983610981565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416610926576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610976576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6106af848484610fb0565b73ffffffffffffffffffffffffffffffffffffffff83166109d1576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b73ffffffffffffffffffffffffffffffffffffffff8216610a21576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6000610a2c82611142565b90506000610a3985610c68565b90506000610a478483610cbb565b9050610a5285610c68565b91506000610a608584610cbb565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a78484604051610b82929190918252602082015260400190565b60405180910390a350505050505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b609060440161079f565b600073ffffffffffffffffffffffffffffffffffffffff8316610c55576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6183600084610fb0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610431575090919050565b600081600003610cb2576104316000610b93565b6104318261119c565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891610d5d917f04000000000000000000000000000000000000000000000000000000000000009188916038016118b5565b6020604051808303816000875af1158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906118f6565b600073ffffffffffffffffffffffffffffffffffffffff8316610df2576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6160008484610fb0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610c6181610c9e565b60006064637c12a1eb610e42600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610d5d565b6000606463dd148693610e42600480856111ac565b6000606463fb7da35f610e428380806111ac565b6000606463371d1bf2610e42600480856111ac565b600060646320cc408d610f00600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906118f6565b6000808281610fbf6001611209565b905073ffffffffffffffffffffffffffffffffffffffff8716611023576000610fe9600354610c9e565b9050610ff58187611268565b905061100081611142565b600355600061100e88610dfe565b905061101a8188611268565b9450505061106b565b600061102e88610dfe565b9050600061103b88610dfe565b9050600061104a83838a61127d565b9097509450905061105b8a8261133b565b6110658683610ed6565b94505050505b73ffffffffffffffffffffffffffffffffffffffff86166110b3576000611093600354610c9e565b905061109f8184610ed6565b90506110aa81611142565b600355506110bd565b6110bd868461133b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611116858b610cbb565b611120868b610cbb565b6040805192835260208301919091520160405180910390a39695505050505050565b6000606463c50c9c0260045b60f81b846040518363ffffffff1660e01b815260040161079f9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e5600461114e565b60008160028111156111c0576111c0611886565b60ff1660088460048111156111d7576111d7611886565b61ffff16901b61ffff1660108660048111156111f5576111f5611886565b62ffffff16901b171760e81b949350505050565b6000808261121857600061121b565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610d5d565b60006064638c5d0150610e42600480856111ac565b6000808080808060646356c72d28611298600480808661138e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b81168252919091166004820152602481018c9052604481018b9052606481018a90526084016060604051808303816000875af1158015611305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611329919061190f565b919b909a509098509650505050505050565b600061134683610c68565b9050611352828261140e565b73ffffffffffffffffffffffffffffffffffffffff90931660009081526001602081815260409092208551815594909101519301929092555050565b60008160028111156113a2576113a2611886565b60ff1660088460048111156113b9576113b9611886565b61ffff16901b61ffff1660108660048111156113d7576113d7611886565b62ffffff16901b62ffffff1660188860048111156113f7576113f7611886565b63ffffffff16901b17171760e01b95945050505050565b604080518082019091526000808252602082015261142b83611142565b81526114378383610cbb565b602082015292915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461146657600080fd5b919050565b60006020828403121561147d57600080fd5b610c6182611442565b6000815180845260005b818110156114ac57602081850181015186830182015201611490565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c616020830184611486565b60006040828403121561150f57600080fd5b50919050565b60008060006060848603121561152a57600080fd5b61153384611442565b925061154160208501611442565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114fd565b9150509250925092565b6000806040838503121561158657600080fd5b61158f83611442565b946020939093013593505050565b600080604083850312156115b057600080fd5b6115b983611442565b9150602083013567ffffffffffffffff811681146115d657600080fd5b809150509250929050565b6000806000606084860312156115f657600080fd5b6115ff84611442565b925061160d60208501611442565b9150604084013590509250925092565b6000806040838503121561163057600080fd5b61163983611442565b9150602083013580151581146115d657600080fd5b6000806040838503121561166157600080fd5b61166a83611442565b9150602083013567ffffffffffffffff81111561168657600080fd5b611692858286016114fd565b9150509250929050565b600080604083850312156116af57600080fd5b6116b883611442565b91506116c660208401611442565b90509250929050565b600181811c908216806116e357607f821691505b60208210810361150f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176e5761176e61171c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117bb576117bb61171c565b604052919050565b6000604082360312156117d557600080fd5b6117dd61174b565b8235815260208084013567ffffffffffffffff808211156117fd57600080fd5b9085019036601f83011261181057600080fd5b8135818111156118225761182261171c565b611852847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611774565b9150808252368482850101111561186857600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006104676060830184611486565b60006020828403121561190857600080fd5b5051919050565b60008060006060848603121561192457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b225bdd80f2600281144c22cdfc914271367a373835d5fdb760649d1ad4f52a764736f6c63430008130033";
569
+ "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f5072697661746545524332304d6f636b60801b81525060405180604001604052806005815260200164504532304d60d81b81525081600490816200006a919062000127565b50600562000079828262000127565b505050620001f3565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ad57607f821691505b602082108103620000ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012257600081815260208120601f850160051c81016020861015620000fd5750805b601f850160051c820191505b818110156200011e5782815560010162000109565b5050505b505050565b81516001600160401b0381111562000143576200014362000082565b6200015b8162000154845462000098565b84620000d4565b602080601f8311600181146200019357600084156200017a5750858301515b600019600386901b1c1916600185901b1785556200011e565b600085815260208120601f198616915b82811015620001c457888601518255948401946001909101908401620001a3565b5085821015620001e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61197380620002036000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063313ce567116100cd57806396b2db3811610081578063a7d9ad6a11610066578063a7d9ad6a146102f9578063a9059cbb1461030c578063dd62ed3e1461031f57600080fd5b806396b2db38146102d3578063a42c0af9146102e657600080fd5b8063722713f7116100b2578063722713f7146102b05780638269bcc3146102b857806395d89b41146102cb57600080fd5b8063313ce5671461026757806370a082311461027657600080fd5b806313691c761161012457806323b872dd1161010957806323b872dd1461022e57806326a9b3f1146102415780632893c5b01461025457600080fd5b806313691c761461021257806318160ddd1461022757600080fd5b8063043d20851461015657806306fdde03146101b957806308a2032a146101ce578063095ea7b3146101ef575b600080fd5b61018f61016436600461146b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101c1610354565b6040516101b091906114ea565b6101e16101dc366004611515565b6103e6565b6040519081526020016101b0565b6102026101fd366004611573565b61041d565b60405190151581526020016101b0565b61022561022036600461159d565b610437565b005b60006101e1565b6101e161023c3660046115e1565b61044e565b61020261024f36600461161d565b610470565b61022561026236600461159d565b610524565b604051600681526020016101b0565b6101e161028436600461146b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120015490565b6101e1610536565b6102026102c636600461146b565b610546565b6101c16105ca565b6101e16102e136600461161d565b6105d9565b6102026102f436600461164e565b61065c565b6101e161030736600461164e565b610684565b6101e161031a366004611573565b6106a1565b61033261032d36600461169c565b6106b7565b60408051825181526020808401519082015291810151908201526060016101b0565b606060048054610363906116cf565b80601f016020809104026020016040519081016040528092919081815260200182805461038f906116cf565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b600033816103fb6103f6856117c3565b610736565b90506104088683836107e2565b6104138686836108cf565b9695505050505050565b60003361042b818585610981565b60019150505b92915050565b6104498261044483610b93565b610c03565b505050565b60003361045c8582856107e2565b6104678585856108cf565b95945050505050565b60008061047c33610c68565b905082156104d45733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080546104c9906104c390610c9e565b83610cbb565b60019091015561042b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290208054610513906104c390610c9e565b600290910155600191505092915050565b6104498261053183610b93565b610da0565b600061054133610dfe565b905090565b60008061055233610dfe565b33600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905590506105ab8184610cbb565b3360009081526001602081905260409091208101919091559392505050565b606060058054610363906116cf565b600081156106225733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461061b90610c9e565b9050610431565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205461061b90610c9e565b6000338161066c6103f6856117c3565b9050610679828683610981565b506001949350505050565b600033816106946103f6856117c3565b90506104678286836108cf565b6000336106af8185856108cf565b949350505050565b6106db60405180606001604052806000815260200160008152602001600081525090565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529283529083902083516060810185528154815260018201549381019390935201549181019190915290565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e109261079f927f04000000000000000000000000000000000000000000000000000000000000009290916004016118b5565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043191906118f6565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205461081190610c9e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602090815260408083209388168352929052908120549192509061085390610c9e565b905060006108718261086c67ffffffffffffffff610b93565b610e2d565b9050600061087f8486610ead565b9050600061088d8487610ead565b905060006108b76108a7856108a28686610ec2565b610ec2565b6108b1878a610ed6565b87610eeb565b90506108c4898983610981565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416610926576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610976576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6106af848484610fb0565b73ffffffffffffffffffffffffffffffffffffffff83166109d1576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b73ffffffffffffffffffffffffffffffffffffffff8216610a21576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6000610a2c82611142565b90506000610a3985610c68565b90506000610a478483610cbb565b9050610a5285610c68565b91506000610a608584610cbb565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a78484604051610b82929190918252602082015260400190565b60405180910390a350505050505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b609060440161079f565b600073ffffffffffffffffffffffffffffffffffffffff8316610c55576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6183600084610fb0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610431575090919050565b600081600003610cb2576104316000610b93565b6104318261119c565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891610d5d917f04000000000000000000000000000000000000000000000000000000000000009188916038016118b5565b6020604051808303816000875af1158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906118f6565b600073ffffffffffffffffffffffffffffffffffffffff8316610df2576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6160008484610fb0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610c6181610c9e565b60006064637c12a1eb610e42600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610d5d565b6000606463dd148693610e42600480856111ac565b6000606463fb7da35f610e428380806111ac565b6000606463371d1bf2610e42600480856111ac565b600060646320cc408d610f00600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906118f6565b6000808281610fbf6001611209565b905073ffffffffffffffffffffffffffffffffffffffff8716611023576000610fe9600354610c9e565b9050610ff58187611268565b905061100081611142565b600355600061100e88610dfe565b905061101a8188611268565b9450505061106b565b600061102e88610dfe565b9050600061103b88610dfe565b9050600061104a83838a61127d565b9097509450905061105b8a8261133b565b6110658683610ed6565b94505050505b73ffffffffffffffffffffffffffffffffffffffff86166110b3576000611093600354610c9e565b905061109f8184610ed6565b90506110aa81611142565b600355506110bd565b6110bd868461133b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611116858b610cbb565b611120868b610cbb565b6040805192835260208301919091520160405180910390a39695505050505050565b6000606463c50c9c0260045b60f81b846040518363ffffffff1660e01b815260040161079f9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e5600461114e565b60008160028111156111c0576111c0611886565b60ff1660088460048111156111d7576111d7611886565b61ffff16901b61ffff1660108660048111156111f5576111f5611886565b62ffffff16901b171760e81b949350505050565b6000808261121857600061121b565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610d5d565b60006064638c5d0150610e42600480856111ac565b6000808080808060646356c72d28611298600480808661138e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b81168252919091166004820152602481018c9052604481018b9052606481018a90526084016060604051808303816000875af1158015611305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611329919061190f565b919b909a509098509650505050505050565b600061134683610c68565b9050611352828261140e565b73ffffffffffffffffffffffffffffffffffffffff90931660009081526001602081815260409092208551815594909101519301929092555050565b60008160028111156113a2576113a2611886565b60ff1660088460048111156113b9576113b9611886565b61ffff16901b61ffff1660108660048111156113d7576113d7611886565b62ffffff16901b62ffffff1660188860048111156113f7576113f7611886565b63ffffffff16901b17171760e01b95945050505050565b604080518082019091526000808252602082015261142b83611142565b81526114378383610cbb565b602082015292915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461146657600080fd5b919050565b60006020828403121561147d57600080fd5b610c6182611442565b6000815180845260005b818110156114ac57602081850181015186830182015201611490565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c616020830184611486565b60006040828403121561150f57600080fd5b50919050565b60008060006060848603121561152a57600080fd5b61153384611442565b925061154160208501611442565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114fd565b9150509250925092565b6000806040838503121561158657600080fd5b61158f83611442565b946020939093013593505050565b600080604083850312156115b057600080fd5b6115b983611442565b9150602083013567ffffffffffffffff811681146115d657600080fd5b809150509250929050565b6000806000606084860312156115f657600080fd5b6115ff84611442565b925061160d60208501611442565b9150604084013590509250925092565b6000806040838503121561163057600080fd5b61163983611442565b9150602083013580151581146115d657600080fd5b6000806040838503121561166157600080fd5b61166a83611442565b9150602083013567ffffffffffffffff81111561168657600080fd5b611692858286016114fd565b9150509250929050565b600080604083850312156116af57600080fd5b6116b883611442565b91506116c660208401611442565b90509250929050565b600181811c908216806116e357607f821691505b60208210810361150f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176e5761176e61171c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117bb576117bb61171c565b604052919050565b6000604082360312156117d557600080fd5b6117dd61174b565b8235815260208084013567ffffffffffffffff808211156117fd57600080fd5b9085019036601f83011261181057600080fd5b8135818111156118225761182261171c565b611852847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611774565b9150808252368482850101111561186857600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006104676060830184611486565b60006020828403121561190857600080fd5b5051919050565b60008060006060848603121561192457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220220cf53a1998e9498c27c1e74b75c235e6a79759017e55807ea7d8f015a6329664736f6c63430008130033";
570
570
 
571
571
  type PrivateERC20MockConstructorParams =
572
572
  | [signer?: Signer]
@@ -575,7 +575,7 @@ const _abi = [
575
575
  ] as const;
576
576
 
577
577
  const _bytecode =
578
- "0x60806040523480156200001157600080fd5b50604051806040016040528060078152602001664578616d706c6560c81b8152506040518060400160405280600381526020016211561360ea1b81525081600090816200005f91906200011c565b5060016200006e82826200011c565b505050620001e8565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a257607f821691505b602082108103620000c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011757600081815260208120601f850160051c81016020861015620000f25750805b601f850160051c820191505b818110156200011357828155600101620000fe565b5050505b505050565b81516001600160401b0381111562000138576200013862000077565b62000150816200014984546200008d565b84620000c9565b602080601f8311600181146200018857600084156200016f5750858301515b600019600386901b1c1916600185901b17855562000113565b600085815260208120601f198616915b82811015620001b95788860151825594840194600190910190840162000198565b5085821015620001d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611fee80620001f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb465146101fd578063b88d4fde14610210578063c87b56dd14610223578063e985e9c51461024357600080fd5b80636352211e146101bc57806368862e1b146101cf57806370a08231146101e257806395d89b41146101f557600080fd5b8063095ea7b3116100d3578063095ea7b31461016f57806318160ddd1461018457806323b872dd1461019657806342842e0e146101a957600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d610108366004611843565b61028c565b60405190151581526020015b60405180910390f35b61012a6102c7565b60405161011991906118c4565b61014a6101453660046118d7565b610359565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61018261017d366004611919565b61038f565b005b6007545b604051908152602001610119565b6101826101a4366004611943565b61039e565b6101826101b7366004611943565b610494565b61014a6101ca3660046118d7565b6104b4565b6101826101dd36600461197f565b6104bf565b6101886101f03660046119d4565b610537565b61012a6105b2565b61018261020b3660046119ef565b6105c1565b61018261021e366004611b78565b6105cc565b6102366102313660046118d7565b6105e3565b6040516101199190611be0565b61010d610251366004611c30565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff00000000000000000000000000000000000000000000000000000000821615806102c157506102c182610660565b92915050565b6060600080546102d690611c63565b80601f016020809104026020016040519081016040528092919081815260200182805461030290611c63565b801561034f5780601f106103245761010080835404028352916020019161034f565b820191906000526020600020905b81548152906001019060200180831161033257829003601f168201915b5050505050905090565b6000610364826106f7565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166102c1565b61039a828233610756565b5050565b73ffffffffffffffffffffffffffffffffffffffff82166103f3576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610400838333610763565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461048e576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016103ea565b50505050565b6104af838383604051806020016040528060008152506105cc565b505050565b60006102c1826106f7565b6007546104cc83826107f9565b6104d73382846108aa565b6001600760008282546104ea9190611ce5565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8516907f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe90600090a3505050565b600073ffffffffffffffffffffffffffffffffffffffff8216610589576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546102d690611c63565b61039a3383836108cc565b6105d784848461039e565b61048e848484846109c9565b604080516020808201835260608252600084815260068252839020835160019091018054808402830186018652928201838152939491939092849284919084018282801561065057602002820191906000526020600020905b81548152602001906001019080831161063c575b5050505050815250509050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102c157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c1565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806102c1576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016103ea565b6104af8383836001610bc0565b60008281526006602090815260408083208151815480850282018401845293810184815285946107d29492939284929184918401828280156107c457602002820191906000526020600020905b8154815260200190600101908083116107b0575b505050505081525050610d8b565b905060006107e1868686610e5b565b90506107f08686846000610fd8565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610849576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b600061085783836000610763565b905073ffffffffffffffffffffffffffffffffffffffff8116156104af576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b60006108bd6108b883611da1565b6110d4565b905061048e8484836001610fd8565b73ffffffffffffffffffffffffffffffffffffffff8216610931576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016103ea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b1561048e576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290610a3e903390889087908790600401611e91565b6020604051808303816000875af1925050508015610a97575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a9491810190611eda565b60015b610b26573d808015610ac5576040519150601f19603f3d011682016040523d82523d6000602084013e610aca565b606091505b508051600003610b1e576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016103ea565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014610bb9576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016103ea565b5050505050565b8080610be1575073ffffffffffffffffffffffffffffffffffffffff821615155b15610d36576000610bf1846106f7565b905073ffffffffffffffffffffffffffffffffffffffff831615801590610c4457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610c83575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b15610cd2576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016103ea565b8115610d3457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff811115610dc557610dc5611a20565b604051908082528060200260200182016040528015610dee578160200160208202803683370190505b509052905060005b82811015610e5357610e2485600001518281518110610e1757610e17611ef7565b6020026020010151611254565b8251805183908110610e3857610e38611ef7565b6020908102919091010152610e4c81611f26565b9050610df6565b509392505050565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615610e9557610e958184866112f1565b73ffffffffffffffffffffffffffffffffffffffff811615610f0b57610ebf600085600080610bc0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615610f545773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000610fe3846104b4565b73ffffffffffffffffffffffffffffffffffffffff1603611033576040517f86843913000000000000000000000000000000000000000000000000000000008152600481018490526024016103ea565b600061103f83866113a1565b9050811561109e5760008481526006602090815260409091208251805180518594849261107292849291909101906117b2565b505050602082810151805180519192600185019261109392849201906117b2565b505050905050610bb9565b602080820151600086815260068352604090208151805192936001909201926110ca92849201906117b2565b5050505050505050565b604080516020810190915260608152602082015151825151518114611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d50435f434f52453a20494e56414c49445f494e5055545f544558540000000060448201526064016103ea565b600060405180602001604052808367ffffffffffffffff81111561117b5761117b611a20565b6040519080825280602002602001820160405280156111a4578160200160208202803683370190505b50905260408051808201909152600081526060602082015290915060005b8381101561124a578551518051829081106111df576111df611ef7565b602090810291909101810151835286015180518290811061120257611202611ef7565b6020026020010151826020018190525061121b826113ec565b835180518390811061122f5761122f611ef7565b602090810291909101015261124381611f26565b90506111c2565b5090949350505050565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016112ae9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c19190611f5e565b6112fc838383611455565b6104af5773ffffffffffffffffffffffffffffffffffffffff8316611350576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016103ea565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044016103ea565b6113cc6040805160608082018352818301818152825282516020818101909452908152909182015290565b6113d58361151c565b81526113e183836115e4565b602082015292915050565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926112ae927f0400000000000000000000000000000000000000000000000000000000000000929091600401611f77565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061151457508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114e3575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b80611514575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff81111561155657611556611a20565b60405190808252806020026020018201604052801561157f578160200160208202803683370190505b509052905060005b82811015610e53576115b5856000015182815181106115a8576115a8611ef7565b60200260200101516116b6565b82518051839081106115c9576115c9611ef7565b60209081029190910101526115dd81611f26565b9050611587565b6040805160208101909152606081528251516040805160208101909152600090808367ffffffffffffffff81111561161e5761161e611a20565b604051908082528060200260200182016040528015611647578160200160208202803683370190505b509052905060005b828110156116ad5761167e8660000151828151811061167057611670611ef7565b6020026020010151866116c6565b825180518390811061169257611692611ef7565b60209081029190910101526116a681611f26565b905061164f565b50949350505050565b6000606463c50c9c026004611260565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891611768917f0400000000000000000000000000000000000000000000000000000000000000918891603801611f77565b6020604051808303816000875af1158015611787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ab9190611f5e565b9392505050565b8280548282559060005260206000209081019282156117ed579160200282015b828111156117ed5782518255916020019190600101906117d2565b506117f99291506117fd565b5090565b5b808211156117f957600081556001016117fe565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461184057600080fd5b50565b60006020828403121561185557600080fd5b81356117ab81611812565b6000815180845260005b818110156118865760208185018101518683018201520161186a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006117ab6020830184611860565b6000602082840312156118e957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461191457600080fd5b919050565b6000806040838503121561192c57600080fd5b611935836118f0565b946020939093013593505050565b60008060006060848603121561195857600080fd5b611961846118f0565b925061196f602085016118f0565b9150604084013590509250925092565b6000806040838503121561199257600080fd5b61199b836118f0565b9150602083013567ffffffffffffffff8111156119b757600080fd5b8301604081860312156119c957600080fd5b809150509250929050565b6000602082840312156119e657600080fd5b6117ab826118f0565b60008060408385031215611a0257600080fd5b611a0b836118f0565b9150602083013580151581146119c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a7257611a72611a20565b60405290565b6040516020810167ffffffffffffffff81118282101715611a7257611a72611a20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ae257611ae2611a20565b604052919050565b600082601f830112611afb57600080fd5b813567ffffffffffffffff811115611b1557611b15611a20565b611b4660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a9b565b818152846020838601011115611b5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611b8e57600080fd5b611b97856118f0565b9350611ba5602086016118f0565b925060408501359150606085013567ffffffffffffffff811115611bc857600080fd5b611bd487828801611aea565b91505092959194509250565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015611c255783518252928401926001929092019190840190611c05565b509695505050505050565b60008060408385031215611c4357600080fd5b611c4c836118f0565b9150611c5a602084016118f0565b90509250929050565b600181811c90821680611c7757607f821691505b602082108103611cb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102c1576102c1611cb6565b600067ffffffffffffffff821115611d1257611d12611a20565b5060051b60200190565b600082601f830112611d2d57600080fd5b81356020611d42611d3d83611cf8565b611a9b565b82815260059290921b84018101918181019086841115611d6157600080fd5b8286015b84811015611c2557803567ffffffffffffffff811115611d855760008081fd5b611d938986838b0101611aea565b845250918301918301611d65565b600060408236031215611db357600080fd5b611dbb611a4f565b823567ffffffffffffffff80821115611dd357600080fd5b81850191506020808336031215611de957600080fd5b611df1611a78565b833583811115611e0057600080fd5b939093019236601f850112611e1457600080fd5b8335611e22611d3d82611cf8565b81815260059190911b85018301908381019036831115611e4157600080fd5b958401955b82871015611e5f57863582529584019590840190611e46565b83525050845285810135925081831115611e7857600080fd5b611e8436848801611d1c565b9084015250909392505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611ed06080830184611860565b9695505050505050565b600060208284031215611eec57600080fd5b81516117ab81611812565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f5757611f57611cb6565b5060010190565b600060208284031215611f7057600080fd5b5051919050565b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006107f0606083018461186056fea2646970667358221220cc26bc6d9ced9e4744a3233a9a5d9431b62ca1cc8dcc9da7b21c718be4de44fa64736f6c63430008130033";
578
+ "0x60806040523480156200001157600080fd5b50604051806040016040528060078152602001664578616d706c6560c81b8152506040518060400160405280600381526020016211561360ea1b81525081600090816200005f91906200011c565b5060016200006e82826200011c565b505050620001e8565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a257607f821691505b602082108103620000c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011757600081815260208120601f850160051c81016020861015620000f25750805b601f850160051c820191505b818110156200011357828155600101620000fe565b5050505b505050565b81516001600160401b0381111562000138576200013862000077565b62000150816200014984546200008d565b84620000c9565b602080601f8311600181146200018857600084156200016f5750858301515b600019600386901b1c1916600185901b17855562000113565b600085815260208120601f198616915b82811015620001b95788860151825594840194600190910190840162000198565b5085821015620001d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611fee80620001f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb465146101fd578063b88d4fde14610210578063c87b56dd14610223578063e985e9c51461024357600080fd5b80636352211e146101bc57806368862e1b146101cf57806370a08231146101e257806395d89b41146101f557600080fd5b8063095ea7b3116100d3578063095ea7b31461016f57806318160ddd1461018457806323b872dd1461019657806342842e0e146101a957600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d610108366004611843565b61028c565b60405190151581526020015b60405180910390f35b61012a6102c7565b60405161011991906118c4565b61014a6101453660046118d7565b610359565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61018261017d366004611919565b61038f565b005b6007545b604051908152602001610119565b6101826101a4366004611943565b61039e565b6101826101b7366004611943565b610494565b61014a6101ca3660046118d7565b6104b4565b6101826101dd36600461197f565b6104bf565b6101886101f03660046119d4565b610537565b61012a6105b2565b61018261020b3660046119ef565b6105c1565b61018261021e366004611b78565b6105cc565b6102366102313660046118d7565b6105e3565b6040516101199190611be0565b61010d610251366004611c30565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff00000000000000000000000000000000000000000000000000000000821615806102c157506102c182610660565b92915050565b6060600080546102d690611c63565b80601f016020809104026020016040519081016040528092919081815260200182805461030290611c63565b801561034f5780601f106103245761010080835404028352916020019161034f565b820191906000526020600020905b81548152906001019060200180831161033257829003601f168201915b5050505050905090565b6000610364826106f7565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166102c1565b61039a828233610756565b5050565b73ffffffffffffffffffffffffffffffffffffffff82166103f3576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610400838333610763565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461048e576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016103ea565b50505050565b6104af838383604051806020016040528060008152506105cc565b505050565b60006102c1826106f7565b6007546104cc83826107f9565b6104d73382846108aa565b6001600760008282546104ea9190611ce5565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8516907f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe90600090a3505050565b600073ffffffffffffffffffffffffffffffffffffffff8216610589576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546102d690611c63565b61039a3383836108cc565b6105d784848461039e565b61048e848484846109c9565b604080516020808201835260608252600084815260068252839020835160019091018054808402830186018652928201838152939491939092849284919084018282801561065057602002820191906000526020600020905b81548152602001906001019080831161063c575b5050505050815250509050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102c157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c1565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806102c1576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016103ea565b6104af8383836001610bc0565b60008281526006602090815260408083208151815480850282018401845293810184815285946107d29492939284929184918401828280156107c457602002820191906000526020600020905b8154815260200190600101908083116107b0575b505050505081525050610d8b565b905060006107e1868686610e5b565b90506107f08686846000610fd8565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610849576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b600061085783836000610763565b905073ffffffffffffffffffffffffffffffffffffffff8116156104af576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b60006108bd6108b883611da1565b6110d4565b905061048e8484836001610fd8565b73ffffffffffffffffffffffffffffffffffffffff8216610931576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016103ea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b1561048e576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290610a3e903390889087908790600401611e91565b6020604051808303816000875af1925050508015610a97575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a9491810190611eda565b60015b610b26573d808015610ac5576040519150601f19603f3d011682016040523d82523d6000602084013e610aca565b606091505b508051600003610b1e576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016103ea565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014610bb9576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016103ea565b5050505050565b8080610be1575073ffffffffffffffffffffffffffffffffffffffff821615155b15610d36576000610bf1846106f7565b905073ffffffffffffffffffffffffffffffffffffffff831615801590610c4457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610c83575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b15610cd2576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016103ea565b8115610d3457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff811115610dc557610dc5611a20565b604051908082528060200260200182016040528015610dee578160200160208202803683370190505b509052905060005b82811015610e5357610e2485600001518281518110610e1757610e17611ef7565b6020026020010151611254565b8251805183908110610e3857610e38611ef7565b6020908102919091010152610e4c81611f26565b9050610df6565b509392505050565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615610e9557610e958184866112f1565b73ffffffffffffffffffffffffffffffffffffffff811615610f0b57610ebf600085600080610bc0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615610f545773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000610fe3846104b4565b73ffffffffffffffffffffffffffffffffffffffff1603611033576040517f86843913000000000000000000000000000000000000000000000000000000008152600481018490526024016103ea565b600061103f83866113a1565b9050811561109e5760008481526006602090815260409091208251805180518594849261107292849291909101906117b2565b505050602082810151805180519192600185019261109392849201906117b2565b505050905050610bb9565b602080820151600086815260068352604090208151805192936001909201926110ca92849201906117b2565b5050505050505050565b604080516020810190915260608152602082015151825151518114611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d50435f434f52453a20494e56414c49445f494e5055545f544558540000000060448201526064016103ea565b600060405180602001604052808367ffffffffffffffff81111561117b5761117b611a20565b6040519080825280602002602001820160405280156111a4578160200160208202803683370190505b50905260408051808201909152600081526060602082015290915060005b8381101561124a578551518051829081106111df576111df611ef7565b602090810291909101810151835286015180518290811061120257611202611ef7565b6020026020010151826020018190525061121b826113ec565b835180518390811061122f5761122f611ef7565b602090810291909101015261124381611f26565b90506111c2565b5090949350505050565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016112ae9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c19190611f5e565b6112fc838383611455565b6104af5773ffffffffffffffffffffffffffffffffffffffff8316611350576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016103ea565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044016103ea565b6113cc6040805160608082018352818301818152825282516020818101909452908152909182015290565b6113d58361151c565b81526113e183836115e4565b602082015292915050565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926112ae927f0400000000000000000000000000000000000000000000000000000000000000929091600401611f77565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061151457508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114e3575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b80611514575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff81111561155657611556611a20565b60405190808252806020026020018201604052801561157f578160200160208202803683370190505b509052905060005b82811015610e53576115b5856000015182815181106115a8576115a8611ef7565b60200260200101516116b6565b82518051839081106115c9576115c9611ef7565b60209081029190910101526115dd81611f26565b9050611587565b6040805160208101909152606081528251516040805160208101909152600090808367ffffffffffffffff81111561161e5761161e611a20565b604051908082528060200260200182016040528015611647578160200160208202803683370190505b509052905060005b828110156116ad5761167e8660000151828151811061167057611670611ef7565b6020026020010151866116c6565b825180518390811061169257611692611ef7565b60209081029190910101526116a681611f26565b905061164f565b50949350505050565b6000606463c50c9c026004611260565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891611768917f0400000000000000000000000000000000000000000000000000000000000000918891603801611f77565b6020604051808303816000875af1158015611787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ab9190611f5e565b9392505050565b8280548282559060005260206000209081019282156117ed579160200282015b828111156117ed5782518255916020019190600101906117d2565b506117f99291506117fd565b5090565b5b808211156117f957600081556001016117fe565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461184057600080fd5b50565b60006020828403121561185557600080fd5b81356117ab81611812565b6000815180845260005b818110156118865760208185018101518683018201520161186a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006117ab6020830184611860565b6000602082840312156118e957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461191457600080fd5b919050565b6000806040838503121561192c57600080fd5b611935836118f0565b946020939093013593505050565b60008060006060848603121561195857600080fd5b611961846118f0565b925061196f602085016118f0565b9150604084013590509250925092565b6000806040838503121561199257600080fd5b61199b836118f0565b9150602083013567ffffffffffffffff8111156119b757600080fd5b8301604081860312156119c957600080fd5b809150509250929050565b6000602082840312156119e657600080fd5b6117ab826118f0565b60008060408385031215611a0257600080fd5b611a0b836118f0565b9150602083013580151581146119c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a7257611a72611a20565b60405290565b6040516020810167ffffffffffffffff81118282101715611a7257611a72611a20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ae257611ae2611a20565b604052919050565b600082601f830112611afb57600080fd5b813567ffffffffffffffff811115611b1557611b15611a20565b611b4660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a9b565b818152846020838601011115611b5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611b8e57600080fd5b611b97856118f0565b9350611ba5602086016118f0565b925060408501359150606085013567ffffffffffffffff811115611bc857600080fd5b611bd487828801611aea565b91505092959194509250565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015611c255783518252928401926001929092019190840190611c05565b509695505050505050565b60008060408385031215611c4357600080fd5b611c4c836118f0565b9150611c5a602084016118f0565b90509250929050565b600181811c90821680611c7757607f821691505b602082108103611cb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102c1576102c1611cb6565b600067ffffffffffffffff821115611d1257611d12611a20565b5060051b60200190565b600082601f830112611d2d57600080fd5b81356020611d42611d3d83611cf8565b611a9b565b82815260059290921b84018101918181019086841115611d6157600080fd5b8286015b84811015611c2557803567ffffffffffffffff811115611d855760008081fd5b611d938986838b0101611aea565b845250918301918301611d65565b600060408236031215611db357600080fd5b611dbb611a4f565b823567ffffffffffffffff80821115611dd357600080fd5b81850191506020808336031215611de957600080fd5b611df1611a78565b833583811115611e0057600080fd5b939093019236601f850112611e1457600080fd5b8335611e22611d3d82611cf8565b81815260059190911b85018301908381019036831115611e4157600080fd5b958401955b82871015611e5f57863582529584019590840190611e46565b83525050845285810135925081831115611e7857600080fd5b611e8436848801611d1c565b9084015250909392505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611ed06080830184611860565b9695505050505050565b600060208284031215611eec57600080fd5b81516117ab81611812565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f5757611f57611cb6565b5060010190565b600060208284031215611f7057600080fd5b5051919050565b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006107f0606083018461186056fea264697066735822122051d021c490641d3965c29600295664b975a012f27aec1d9e9e3095bbf428190f64736f6c63430008130033";
579
579
 
580
580
  type PrivateERC721URIStorageMockConstructorParams =
581
581
  | [signer?: Signer]
@@ -404,7 +404,7 @@ const _abi = [
404
404
  ] as const;
405
405
 
406
406
  const _bytecode =
407
- "0x608060405234801561001057600080fd5b5061495f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806380f937bc1161008c578063acb3816911610066578063acb38169146101c7578063d3e4744d146101ef578063e1a1936e14610200578063ebb571fd1461021357600080fd5b806380f937bc14610178578063971bbe6f146101a45780639bc8bbb1146101b457600080fd5b80632e544aa0116100bd5780632e544aa01461012c5780634f5941bc146101525780635e60e5c01461016557600080fd5b80630d1d0635146100e4578063202cdc8f1461010e57806324ad7b3014610121575b600080fd5b6100f76100f23660046145d1565b610228565b60405160ff90911681526020015b60405180910390f35b6100f761011c3660046145d1565b6108be565b60005460ff166100f7565b61013f61013a366004614655565b610fa5565b60405161ffff9091168152602001610105565b6100f76101603660046145d1565b61108b565b6100f76101733660046145d1565b6116fd565b61018b6101863660046146d8565b611cfe565b60405167ffffffffffffffff9091168152602001610105565b600054610100900460ff166100f7565b6100f76101c23660046145d1565b611ea1565b6101da6101d5366004614783565b6124a6565b60405163ffffffff9091168152602001610105565b60005462010000900460ff166100f7565b6100f761020e3660046145d1565b6125d3565b61022661022136600461481a565b612c27565b005b600061027260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61029660405180606001604052806000815260200160008152602001600081525090565b6102c86040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6103086040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610313848888612c27565b600061032f61032a86600001518760200151612cae565b612d85565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061037291612e22565b8452845160608601516103859190612e39565b8460200181815250506103a085604001518660200151612e51565b604085015260006103b085610fa5565b90508160ff168161ffff161461040d5760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203136206661696c656400000000000000000060448201526064015b60405180910390fd5b61041f86608001518760a00151612e69565b8452855160a08701516104329190612e80565b84602001818152505061044d86608001518760200151612e98565b84604001818152505061046886604001518760a00151612eb0565b84606001818152505061048386608001518760600151612ec8565b60808501526000610493856124a6565b90508063ffffffff168360ff16146104ed5760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b6104ff8760c001518860e00151612ee0565b8452865160e08801516105129190612ef7565b84602001818152505061052d8760c001518860200151612f0f565b84604001818152505061054887604001518860e00151612f27565b8460600181815250506105638760c001518860600151612f3f565b84608001818152505061057e87608001518860e00151612f57565b8460a00181815250506105998760c001518860a00151612f6f565b60c085015260006105a985611cfe565b90508067ffffffffffffffff168460ff16146106075760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b61061861032a8c8a60200151612f87565b60ff168460ff16148015610641575061063861032a89600001518c61300b565b60ff168460ff16145b6106b35760405162461bcd60e51b815260206004820152602760248201527f616464546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b6106cc6106c78c60ff168a60600151613090565b613116565b61ffff168460ff161480156106fa57506106f06106c789604001518c60ff16613126565b61ffff168460ff16145b6107575760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b61077061076b8c60ff168a60a001516131ab565b613233565b63ffffffff168460ff161480156107a2575061079661076b89608001518c60ff16613243565b63ffffffff168460ff16145b6107ff5760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6108186108138c60ff168a60e001516132cb565b613357565b67ffffffffffffffff168460ff1614801561085257506108426108138960c001518c60ff16613367565b67ffffffffffffffff168460ff16145b6108af5760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420363420626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b50919998505050505050505050565b600061090860405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61092c60405180606001604052806000815260200160008152602001600081525090565b61095e6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61099e6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109a9848888612c27565b6109be61032a856000015186602001516133f3565b600060026101000a81548160ff021916908360ff1602179055506109ea846040015185606001516134b9565b8352835160608501516109fd91906134ce565b836020018181525050610a18846040015185602001516134e4565b60408401526000610a2884610fa5565b60005490915060ff620100009091041661ffff821614610a8a5760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b610a9c85608001518660a001516134fa565b8352845160a0860151610aaf919061350f565b836020018181525050610aca85608001518660200151613525565b836040018181525050610ae585604001518660a0015161353b565b836060018181525050610b0085608001518660600151613551565b60808401526000610b10846124a6565b60005490915060ff620100009091041663ffffffff821614610b745760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b610b868660c001518760e00151613567565b8352855160e0870151610b99919061357c565b836020018181525050610bb48660c001518760200151613592565b836040018181525050610bcf86604001518760e001516135a8565b836060018181525050610bea8660c0015187606001516135be565b836080018181525050610c0586608001518760e001516135d4565b8360a0018181525050610c208660c001518760a001516135ea565b60c08401526000610c3084611cfe565b60005490915060ff620100009091041667ffffffffffffffff821614610c985760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b610ca961032a8b8960200151613600565b60005462010000900460ff9081169116148015610ce45750610cd261032a88600001518b613682565b60005462010000900460ff9081169116145b610d565760405162461bcd60e51b815260206004820152602760248201527f6d756c546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b610d6a6106c78b60ff168960600151613705565b60005460ff620100009091041661ffff91909116148015610db05750610d9a6106c788604001518b60ff16613789565b60005460ff620100009091041661ffff91909116145b610e0d5760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b610e2161076b8b60ff168960a0015161380c565b60005460ff620100009091041663ffffffff91909116148015610e6b5750610e5361076b88608001518b60ff16613892565b60005460ff620100009091041663ffffffff91909116145b610ec85760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b610edc6108138b60ff168960e00151613918565b60005460ff620100009091041667ffffffffffffffff91909116148015610f2e5750610f126108138860c001518b60ff166139a2565b60005460ff620100009091041667ffffffffffffffff91909116145b610f8b5760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420363420626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b505060005462010000900460ff1698975050505050505050565b600080610fb58360000151613116565b9050610fc48360200151613116565b61ffff168161ffff16148015610fed5750610fe28360400151613116565b61ffff168161ffff16145b6110855760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610404565b92915050565b60006110d560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110f960405180606001604052806000815260200160008152602001600081525090565b61112b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61116b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611176848888612c27565b600061118d61032a86600001518760200151613a2c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff841602179055604086015160608701519192506111d491613a41565b8452845160608601516111e79190613a56565b84602001818152505061120285604001518660200151613a6c565b6040850152600061121285610fa5565b90508160ff168161ffff161461126a5760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b61127c86608001518760a00151613a82565b8452855160a087015161128f9190613a97565b8460200181815250506112aa86608001518760200151613aad565b8460400181815250506112c586604001518760a00151613ac3565b8460600181815250506112e086608001518760600151613ad9565b608085015260006112f0856124a6565b90508063ffffffff168360ff161461134a5760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b61135c8760c001518860e00151613aef565b8452865160e088015161136f9190613b04565b84602001818152505061138a8760c001518860200151613b1a565b8460400181815250506113a587604001518860e00151613b30565b8460600181815250506113c08760c001518860600151613b46565b8460800181815250506113db87608001518860e00151613b5c565b8460a00181815250506113f68760c001518860a00151613b72565b60c0850152600061140685611cfe565b90508067ffffffffffffffff168460ff16146114645760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b61147561032a8c8a60200151613b88565b60ff168460ff1614801561149e575061149561032a89600001518c613b9d565b60ff168460ff16145b6115105760405162461bcd60e51b815260206004820152602760248201527f737562546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b6115246106c78c60ff168a60600151613bb3565b61ffff168460ff1614801561155257506115486106c789604001518c60ff16613bc9565b61ffff168460ff16145b6115af5760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6115c361076b8c60ff168a60a00151613bde565b63ffffffff168460ff161480156115f557506115e961076b89608001518c60ff16613bf4565b63ffffffff168460ff16145b6116525760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6116666108138c60ff168a60e00151613c0a565b67ffffffffffffffff168460ff161480156116a057506116906108138960c001518c60ff16613c20565b67ffffffffffffffff168460ff16145b6108af5760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420363420626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b600061174760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61176b60405180606001604052806000815260200160008152602001600081525090565b61179d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6117dd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6117e8848888612c27565b60006117ff61032a86600001518760200151613c36565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061184291613c4b565b8452845160608601516118559190613c60565b84602001818152505061187085604001518660200151613c76565b6040850152600061188085610fa5565b90508160ff168161ffff16146118d85760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b6118ea86608001518760a00151613c8c565b8452855160a08701516118fd9190613ca1565b84602001818152505061191886608001518760200151613cb7565b84604001818152505061193386604001518760a00151613ccd565b84606001818152505061194e86608001518760600151613ce3565b6080850152600061195e856124a6565b90508063ffffffff168360ff16146119b85760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b6119ca8760c001518860e00151613cf9565b8452865160e08801516119dd9190613d0e565b8460200181815250506119f88760c001518860200151613d24565b846040018181525050611a1387604001518860e00151613d3a565b846060018181525050611a2e8760c001518860600151613d50565b846080018181525050611a4987608001518860e00151613d66565b8460a0018181525050611a648760c001518860a00151613d7c565b60c08501526000611a7485611cfe565b90508067ffffffffffffffff168460ff1614611ad25760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b611ae361032a8c8a60200151613d92565b60ff168460ff16148015611b0c5750611b0361032a89600001518c613da7565b60ff168460ff16145b611b7e5760405162461bcd60e51b815260206004820152602760248201527f616464546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b611b926106c78c60ff168a60600151613dbd565b61ffff168460ff16148015611bc05750611bb66106c789604001518c60ff16613dd3565b61ffff168460ff16145b611c1d5760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b611c3161076b8c60ff168a60a00151613de8565b63ffffffff168460ff16148015611c635750611c5761076b89608001518c60ff16613dfe565b63ffffffff168460ff16145b611cc05760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b611cd46108138c60ff168a60e00151613e14565b67ffffffffffffffff168460ff1614801561085257506108426108138960c001518c60ff16613e2a565b600080611d0e8360000151613357565b9050611d1d8360200151613357565b67ffffffffffffffff168167ffffffffffffffff16148015611d5e5750611d478360400151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015611d895750611d728360800151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015611db45750611d9d8360600151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015611ddf5750611dc88360c00151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015610fed5750611df38360a00151613357565b67ffffffffffffffff168167ffffffffffffffff16146110855760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610404565b6000611eeb60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611f0f60405180606001604052806000815260200160008152602001600081525090565b611f416040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b611f816040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611f8c848888612c27565b6000611fa361032a86600001518760200151613e40565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250611fea91613e57565b845284516060860151611ffd9190613e6e565b84602001818152505061201885604001518660200151613e86565b6040850152600061202885610fa5565b90508160ff168161ffff16146120805760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b61209286608001518760a00151613e9e565b8452855160a08701516120a59190613eb5565b8460200181815250506120c086608001518760200151613ecd565b8460400181815250506120db86604001518760a00151613ee5565b8460600181815250506120f686608001518760600151613efd565b60808501526000612106856124a6565b90508063ffffffff168360ff16146121605760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b6121728760c001518860e00151613f15565b8452865160e08801516121859190613f2c565b8460200181815250506121a08760c001518860200151613f44565b8460400181815250506121bb87604001518860e00151613f5c565b8460600181815250506121d68760c001518860600151613f74565b8460800181815250506121f187608001518860e00151613f8c565b8460a001818152505061220c8760c001518860a00151613fa4565b60c0850152600061221c85611cfe565b90508067ffffffffffffffff168460ff161461227a5760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b61228b61032a8c8a60200151613fbc565b60ff168460ff161480156122b457506122ab61032a89600001518c613fd3565b60ff168460ff16145b6123265760405162461bcd60e51b815260206004820152602760248201527f737562546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b61233a6106c78c60ff168a60600151613feb565b61ffff168460ff16148015612368575061235e6106c789604001518c60ff16614003565b61ffff168460ff16145b6123c55760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6123d961076b8c60ff168a60a0015161401a565b63ffffffff168460ff1614801561240b57506123ff61076b89608001518c60ff16614032565b63ffffffff168460ff16145b6124685760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b61247c6108138c60ff168a60e0015161404a565b67ffffffffffffffff168460ff161480156116a057506116906108138960c001518c60ff16614062565b6000806124b68360000151613233565b90506124c58360200151613233565b63ffffffff168163ffffffff161480156124f657506124e78360400151613233565b63ffffffff168163ffffffff16145b8015612519575061250a8360800151613233565b63ffffffff168163ffffffff16145b8015610fed575061252d8360600151613233565b63ffffffff168163ffffffff16146110855760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610404565b600061261d60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61264160405180606001604052806000815260200160008152602001600081525090565b6126736040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6126b36040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6126be848888612c27565b6126d361032a8560000151866020015161407a565b600060026101000a81548160ff021916908360ff1602179055506126ff84604001518560600151614091565b83528351606085015161271291906140a8565b83602001818152505061272d846040015185602001516140c0565b6040840152600061273d84610fa5565b60005490915060ff620100009091041661ffff82161461279f5760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b6127b185608001518660a001516140d8565b8352845160a08601516127c491906140ef565b8360200181815250506127df85608001518660200151614107565b8360400181815250506127fa85604001518660a0015161411f565b83606001818152505061281585608001518660600151614137565b60808401526000612825846124a6565b60005490915060ff620100009091041663ffffffff8216146128895760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b61289b8660c001518760e0015161414f565b8352855160e08701516128ae9190614166565b8360200181815250506128c98660c00151876020015161417e565b8360400181815250506128e486604001518760e00151614196565b8360600181815250506128ff8660c0015187606001516141ae565b83608001818152505061291a86608001518760e001516141c6565b8360a00181815250506129358660c001518760a001516141de565b60c0840152600061294584611cfe565b60005490915060ff620100009091041667ffffffffffffffff8216146129ad5760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b6129be61032a8b89602001516141f6565b60005462010000900460ff90811691161480156129f957506129e761032a88600001518b61420d565b60005462010000900460ff9081169116145b612a6b5760405162461bcd60e51b815260206004820152602760248201527f6d756c546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b612a7f6106c78b60ff168960600151614225565b60005460ff620100009091041661ffff91909116148015612ac55750612aaf6106c788604001518b60ff1661423d565b60005460ff620100009091041661ffff91909116145b612b225760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b612b3661076b8b60ff168960a00151614254565b60005460ff620100009091041663ffffffff91909116148015612b805750612b6861076b88608001518b60ff1661426c565b60005460ff620100009091041663ffffffff91909116145b612bdd5760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b612bf16108138b60ff168960e00151614284565b60005460ff620100009091041667ffffffffffffffff91909116148015610f2e5750610f126108138860c001518b60ff1661429c565b612c30826142b4565b8352612c3b816142b4565b6020840152612c4c60ff831661431d565b6040840152612c5d60ff821661431d565b6060840152612c6e60ff8316614387565b6080840152612c7f60ff8216614387565b60a0840152612c9060ff83166143f3565b60c0840152612ca160ff82166143f3565b60e0909301929092525050565b60008080606463f581fa20612cc560018085614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101889052604481018790526064015b60408051808303816000875af1158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e91906148bd565b91509150612d7c82826144c0565b95945050505050565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401612ddf9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015612dfe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190614910565b60008080606463f581fa20612cc560028085614463565b60008080606463f581fa20612cc56001600285614463565b60008080606463f581fa20612cc56002600185614463565b60008080606463f581fa20612cc560038085614463565b60008080606463f581fa20612cc56001600385614463565b60008080606463f581fa20612cc56003600185614463565b60008080606463f581fa20612cc56002600385614463565b60008080606463f581fa20612cc56003600285614463565b60008080606463f581fa20612cc560048085614463565b60008080606463f581fa20612cc56001600485614463565b60008080606463f581fa20612cc56004600185614463565b60008080606463f581fa20612cc56002600485614463565b60008080606463f581fa20612cc56004600285614463565b60008080606463f581fa20612cc56003600485614463565b60008080606463f581fa20612cc56004600385614463565b60008080606463f581fa20612f9e60018080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8816602482015260448101879052606401612d2c565b60008080606463f581fa206130236001806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905260ff87166044820152606401612d2c565b60008080606463f581fa206130a86002806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8816602482015260448101879052606401612d2c565b60006064630cfed5616002612d91565b60008080606463f581fa2061313d60028080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905261ffff87166044820152606401612d2c565b60008080606463f581fa206131c36003806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8816602482015260448101879052606401612d2c565b60006064630cfed5616003612d91565b60008080606463f581fa2061325b6003806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905263ffffffff87166044820152606401612d2c565b60008080606463f581fa206132e36004806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8816602482015260448101879052606401612d2c565b60006064630cfed5616004612d91565b60008080606463f581fa2061337f6004806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905267ffffffffffffffff87166044820152606401612d2c565b6000606463f1d21bb461340860018085614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561348e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b29190614910565b9392505050565b6000606463f1d21bb461340860028085614463565b6000606463f1d21bb46134086001600285614463565b6000606463f1d21bb46134086002600185614463565b6000606463f1d21bb461340860038085614463565b6000606463f1d21bb46134086001600385614463565b6000606463f1d21bb46134086003600185614463565b6000606463f1d21bb46134086002600385614463565b6000606463f1d21bb46134086003600285614463565b6000606463f1d21bb461340860048085614463565b6000606463f1d21bb46134086001600485614463565b6000606463f1d21bb46134086004600185614463565b6000606463f1d21bb46134086002600485614463565b6000606463f1d21bb46134086004600285614463565b6000606463f1d21bb46134086003600485614463565b6000606463f1d21bb46134086004600385614463565b6000606463f1d21bb461361560018080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff861660248201526044810185905260640161346f565b6000606463f1d21bb46136986001806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff8516604482015260640161346f565b6000606463f1d21bb461371b6002806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff861660248201526044810185905260640161346f565b6000606463f1d21bb461379e60028080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff8516604482015260640161346f565b6000606463f1d21bb46138226003806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff861660248201526044810185905260640161346f565b6000606463f1d21bb46138a86003806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff8516604482015260640161346f565b6000606463f1d21bb461392e6004806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff861660248201526044810185905260640161346f565b6000606463f1d21bb46139b86004806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff8516604482015260640161346f565b6000606463371d1bf261340860018085614463565b6000606463371d1bf261340860028085614463565b6000606463371d1bf26134086001600285614463565b6000606463371d1bf26134086002600185614463565b6000606463371d1bf261340860038085614463565b6000606463371d1bf26134086001600385614463565b6000606463371d1bf26134086003600185614463565b6000606463371d1bf26134086002600385614463565b6000606463371d1bf26134086003600285614463565b6000606463371d1bf261340860048085614463565b6000606463371d1bf26134086001600485614463565b6000606463371d1bf26134086004600185614463565b6000606463371d1bf26134086002600485614463565b6000606463371d1bf26134086004600285614463565b6000606463371d1bf26134086003600485614463565b6000606463371d1bf26134086004600385614463565b6000606463371d1bf261361560018080614463565b6000606463371d1bf26136986001806002614463565b6000606463371d1bf261371b6002806001614463565b6000606463371d1bf261379e60028080614463565b6000606463371d1bf26138226003806001614463565b6000606463371d1bf26138a86003806002614463565b6000606463371d1bf261392e6004806001614463565b6000606463371d1bf26139b86004806002614463565b60006064638c5d015061340860018085614463565b60006064638c5d015061340860028085614463565b60006064638c5d01506134086001600285614463565b60006064638c5d01506134086002600185614463565b60006064638c5d015061340860038085614463565b60006064638c5d01506134086001600385614463565b60006064638c5d01506134086003600185614463565b60006064638c5d01506134086002600385614463565b60006064638c5d01506134086003600285614463565b60006064638c5d015061340860048085614463565b60006064638c5d01506134086001600485614463565b60006064638c5d01506134086004600185614463565b60006064638c5d01506134086002600485614463565b60006064638c5d01506134086004600285614463565b60006064638c5d01506134086003600485614463565b60006064638c5d01506134086004600385614463565b60006064638c5d015061361560018080614463565b60006064638c5d01506136986001806002614463565b60006064638c5d015061371b6002806001614463565b60006064638c5d015061379e60028080614463565b60006064638c5d01506138226003806001614463565b60006064638c5d01506138a86003806002614463565b60006064638c5d015061392e6004806001614463565b60006064638c5d01506139b86004806002614463565b60008080606463ce8c713d612cc560018085614463565b60008080606463ce8c713d612cc560028085614463565b60008080606463ce8c713d612cc56001600285614463565b60008080606463ce8c713d612cc56002600185614463565b60008080606463ce8c713d612cc560038085614463565b60008080606463ce8c713d612cc56001600385614463565b60008080606463ce8c713d612cc56003600185614463565b60008080606463ce8c713d612cc56002600385614463565b60008080606463ce8c713d612cc56003600285614463565b60008080606463ce8c713d612cc560048085614463565b60008080606463ce8c713d612cc56001600485614463565b60008080606463ce8c713d612cc56004600185614463565b60008080606463ce8c713d612cc56002600485614463565b60008080606463ce8c713d612cc56004600285614463565b60008080606463ce8c713d612cc56003600485614463565b60008080606463ce8c713d612cc56004600385614463565b60008080606463ce8c713d612f9e60018080614463565b60008080606463ce8c713d6130236001806002614463565b60008080606463ce8c713d6130a86002806001614463565b60008080606463ce8c713d61313d60028080614463565b60008080606463ce8c713d6131c36003806001614463565b60008080606463ce8c713d61325b6003806002614463565b60008080606463ce8c713d6132e36004806001614463565b60008080606463ce8c713d61337f6004806002614463565b600080806064630915497f612cc560018085614463565b600080806064630915497f612cc560028085614463565b600080806064630915497f612cc56001600285614463565b600080806064630915497f612cc56002600185614463565b600080806064630915497f612cc560038085614463565b600080806064630915497f612cc56001600385614463565b600080806064630915497f612cc56003600185614463565b600080806064630915497f612cc56002600385614463565b600080806064630915497f612cc56003600285614463565b600080806064630915497f612cc560048085614463565b600080806064630915497f612cc56001600485614463565b600080806064630915497f612cc56004600185614463565b600080806064630915497f612cc56002600485614463565b600080806064630915497f612cc56004600285614463565b600080806064630915497f612cc56003600485614463565b600080806064630915497f612cc56004600385614463565b600080806064630915497f612f9e60018080614463565b600080806064630915497f6130236001806002614463565b600080806064630915497f6130a86002806001614463565b600080806064630915497f61313d60028080614463565b600080806064630915497f6131c36003806001614463565b600080806064630915497f61325b6003806002614463565b600080806064630915497f6132e36004806001614463565b600080806064630915497f61337f6004806002614463565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401612ddf565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401612ddf565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401612ddf565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401612ddf565b6000816002811115614477576144776148e1565b60ff16600884600481111561448e5761448e6148e1565b61ffff16901b61ffff1660108660048111156144ac576144ac6148e1565b62ffffff16901b171760e81b949350505050565b60006144cb836144d1565b50919050565b6144da8161452a565b156145275760405162461bcd60e51b815260206004820152600e60248201527f6f766572666c6f77206572726f720000000000000000000000000000000000006044820152606401610404565b50565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af115801561458e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b29190614910565b15159392505050565b803560ff811681146145cc57600080fd5b919050565b600080604083850312156145e457600080fd5b6145ed836145bb565b91506145fb602084016145bb565b90509250929050565b604051610100810167ffffffffffffffff8111828210171561464f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561466757600080fd5b6040516060810181811067ffffffffffffffff821117156146b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156146ea57600080fd5b60405160e0810181811067ffffffffffffffff82111715614734577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561479557600080fd5b60405160a0810181811067ffffffffffffffff821117156147df577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561483157600080fd5b6101008082121561484157600080fd5b614849614604565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506148a38187016145bb565b935050506148b461012085016145bb565b90509250925092565b600080604083850312156148d057600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561492257600080fd5b505191905056fea26469706673582212208eefd214f71795546d3917e4f1c36ea93feee04dcfdeda5ddb3b2db708b7ef3164736f6c63430008130033";
407
+ "0x608060405234801561001057600080fd5b5061495f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806380f937bc1161008c578063acb3816911610066578063acb38169146101c7578063d3e4744d146101ef578063e1a1936e14610200578063ebb571fd1461021357600080fd5b806380f937bc14610178578063971bbe6f146101a45780639bc8bbb1146101b457600080fd5b80632e544aa0116100bd5780632e544aa01461012c5780634f5941bc146101525780635e60e5c01461016557600080fd5b80630d1d0635146100e4578063202cdc8f1461010e57806324ad7b3014610121575b600080fd5b6100f76100f23660046145d1565b610228565b60405160ff90911681526020015b60405180910390f35b6100f761011c3660046145d1565b6108be565b60005460ff166100f7565b61013f61013a366004614655565b610fa5565b60405161ffff9091168152602001610105565b6100f76101603660046145d1565b61108b565b6100f76101733660046145d1565b6116fd565b61018b6101863660046146d8565b611cfe565b60405167ffffffffffffffff9091168152602001610105565b600054610100900460ff166100f7565b6100f76101c23660046145d1565b611ea1565b6101da6101d5366004614783565b6124a6565b60405163ffffffff9091168152602001610105565b60005462010000900460ff166100f7565b6100f761020e3660046145d1565b6125d3565b61022661022136600461481a565b612c27565b005b600061027260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61029660405180606001604052806000815260200160008152602001600081525090565b6102c86040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6103086040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610313848888612c27565b600061032f61032a86600001518760200151612cae565b612d85565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061037291612e22565b8452845160608601516103859190612e39565b8460200181815250506103a085604001518660200151612e51565b604085015260006103b085610fa5565b90508160ff168161ffff161461040d5760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203136206661696c656400000000000000000060448201526064015b60405180910390fd5b61041f86608001518760a00151612e69565b8452855160a08701516104329190612e80565b84602001818152505061044d86608001518760200151612e98565b84604001818152505061046886604001518760a00151612eb0565b84606001818152505061048386608001518760600151612ec8565b60808501526000610493856124a6565b90508063ffffffff168360ff16146104ed5760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b6104ff8760c001518860e00151612ee0565b8452865160e08801516105129190612ef7565b84602001818152505061052d8760c001518860200151612f0f565b84604001818152505061054887604001518860e00151612f27565b8460600181815250506105638760c001518860600151612f3f565b84608001818152505061057e87608001518860e00151612f57565b8460a00181815250506105998760c001518860a00151612f6f565b60c085015260006105a985611cfe565b90508067ffffffffffffffff168460ff16146106075760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b61061861032a8c8a60200151612f87565b60ff168460ff16148015610641575061063861032a89600001518c61300b565b60ff168460ff16145b6106b35760405162461bcd60e51b815260206004820152602760248201527f616464546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b6106cc6106c78c60ff168a60600151613090565b613116565b61ffff168460ff161480156106fa57506106f06106c789604001518c60ff16613126565b61ffff168460ff16145b6107575760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b61077061076b8c60ff168a60a001516131ab565b613233565b63ffffffff168460ff161480156107a2575061079661076b89608001518c60ff16613243565b63ffffffff168460ff16145b6107ff5760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6108186108138c60ff168a60e001516132cb565b613357565b67ffffffffffffffff168460ff1614801561085257506108426108138960c001518c60ff16613367565b67ffffffffffffffff168460ff16145b6108af5760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420363420626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b50919998505050505050505050565b600061090860405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61092c60405180606001604052806000815260200160008152602001600081525090565b61095e6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61099e6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109a9848888612c27565b6109be61032a856000015186602001516133f3565b600060026101000a81548160ff021916908360ff1602179055506109ea846040015185606001516134b9565b8352835160608501516109fd91906134ce565b836020018181525050610a18846040015185602001516134e4565b60408401526000610a2884610fa5565b60005490915060ff620100009091041661ffff821614610a8a5760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b610a9c85608001518660a001516134fa565b8352845160a0860151610aaf919061350f565b836020018181525050610aca85608001518660200151613525565b836040018181525050610ae585604001518660a0015161353b565b836060018181525050610b0085608001518660600151613551565b60808401526000610b10846124a6565b60005490915060ff620100009091041663ffffffff821614610b745760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b610b868660c001518760e00151613567565b8352855160e0870151610b99919061357c565b836020018181525050610bb48660c001518760200151613592565b836040018181525050610bcf86604001518760e001516135a8565b836060018181525050610bea8660c0015187606001516135be565b836080018181525050610c0586608001518760e001516135d4565b8360a0018181525050610c208660c001518760a001516135ea565b60c08401526000610c3084611cfe565b60005490915060ff620100009091041667ffffffffffffffff821614610c985760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b610ca961032a8b8960200151613600565b60005462010000900460ff9081169116148015610ce45750610cd261032a88600001518b613682565b60005462010000900460ff9081169116145b610d565760405162461bcd60e51b815260206004820152602760248201527f6d756c546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b610d6a6106c78b60ff168960600151613705565b60005460ff620100009091041661ffff91909116148015610db05750610d9a6106c788604001518b60ff16613789565b60005460ff620100009091041661ffff91909116145b610e0d5760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b610e2161076b8b60ff168960a0015161380c565b60005460ff620100009091041663ffffffff91909116148015610e6b5750610e5361076b88608001518b60ff16613892565b60005460ff620100009091041663ffffffff91909116145b610ec85760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b610edc6108138b60ff168960e00151613918565b60005460ff620100009091041667ffffffffffffffff91909116148015610f2e5750610f126108138860c001518b60ff166139a2565b60005460ff620100009091041667ffffffffffffffff91909116145b610f8b5760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420363420626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b505060005462010000900460ff1698975050505050505050565b600080610fb58360000151613116565b9050610fc48360200151613116565b61ffff168161ffff16148015610fed5750610fe28360400151613116565b61ffff168161ffff16145b6110855760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610404565b92915050565b60006110d560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110f960405180606001604052806000815260200160008152602001600081525090565b61112b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61116b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611176848888612c27565b600061118d61032a86600001518760200151613a2c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff841602179055604086015160608701519192506111d491613a41565b8452845160608601516111e79190613a56565b84602001818152505061120285604001518660200151613a6c565b6040850152600061121285610fa5565b90508160ff168161ffff161461126a5760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b61127c86608001518760a00151613a82565b8452855160a087015161128f9190613a97565b8460200181815250506112aa86608001518760200151613aad565b8460400181815250506112c586604001518760a00151613ac3565b8460600181815250506112e086608001518760600151613ad9565b608085015260006112f0856124a6565b90508063ffffffff168360ff161461134a5760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b61135c8760c001518860e00151613aef565b8452865160e088015161136f9190613b04565b84602001818152505061138a8760c001518860200151613b1a565b8460400181815250506113a587604001518860e00151613b30565b8460600181815250506113c08760c001518860600151613b46565b8460800181815250506113db87608001518860e00151613b5c565b8460a00181815250506113f68760c001518860a00151613b72565b60c0850152600061140685611cfe565b90508067ffffffffffffffff168460ff16146114645760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b61147561032a8c8a60200151613b88565b60ff168460ff1614801561149e575061149561032a89600001518c613b9d565b60ff168460ff16145b6115105760405162461bcd60e51b815260206004820152602760248201527f737562546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b6115246106c78c60ff168a60600151613bb3565b61ffff168460ff1614801561155257506115486106c789604001518c60ff16613bc9565b61ffff168460ff16145b6115af5760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6115c361076b8c60ff168a60a00151613bde565b63ffffffff168460ff161480156115f557506115e961076b89608001518c60ff16613bf4565b63ffffffff168460ff16145b6116525760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6116666108138c60ff168a60e00151613c0a565b67ffffffffffffffff168460ff161480156116a057506116906108138960c001518c60ff16613c20565b67ffffffffffffffff168460ff16145b6108af5760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420363420626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b600061174760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61176b60405180606001604052806000815260200160008152602001600081525090565b61179d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6117dd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6117e8848888612c27565b60006117ff61032a86600001518760200151613c36565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061184291613c4b565b8452845160608601516118559190613c60565b84602001818152505061187085604001518660200151613c76565b6040850152600061188085610fa5565b90508160ff168161ffff16146118d85760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b6118ea86608001518760a00151613c8c565b8452855160a08701516118fd9190613ca1565b84602001818152505061191886608001518760200151613cb7565b84604001818152505061193386604001518760a00151613ccd565b84606001818152505061194e86608001518760600151613ce3565b6080850152600061195e856124a6565b90508063ffffffff168360ff16146119b85760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b6119ca8760c001518860e00151613cf9565b8452865160e08801516119dd9190613d0e565b8460200181815250506119f88760c001518860200151613d24565b846040018181525050611a1387604001518860e00151613d3a565b846060018181525050611a2e8760c001518860600151613d50565b846080018181525050611a4987608001518860e00151613d66565b8460a0018181525050611a648760c001518860a00151613d7c565b60c08501526000611a7485611cfe565b90508067ffffffffffffffff168460ff1614611ad25760405162461bcd60e51b815260206004820152601760248201527f616464546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b611ae361032a8c8a60200151613d92565b60ff168460ff16148015611b0c5750611b0361032a89600001518c613da7565b60ff168460ff16145b611b7e5760405162461bcd60e51b815260206004820152602760248201527f616464546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b611b926106c78c60ff168a60600151613dbd565b61ffff168460ff16148015611bc05750611bb66106c789604001518c60ff16613dd3565b61ffff168460ff16145b611c1d5760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b611c3161076b8c60ff168a60a00151613de8565b63ffffffff168460ff16148015611c635750611c5761076b89608001518c60ff16613dfe565b63ffffffff168460ff16145b611cc05760405162461bcd60e51b815260206004820152602860248201527f616464546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b611cd46108138c60ff168a60e00151613e14565b67ffffffffffffffff168460ff1614801561085257506108426108138960c001518c60ff16613e2a565b600080611d0e8360000151613357565b9050611d1d8360200151613357565b67ffffffffffffffff168167ffffffffffffffff16148015611d5e5750611d478360400151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015611d895750611d728360800151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015611db45750611d9d8360600151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015611ddf5750611dc88360c00151613357565b67ffffffffffffffff168167ffffffffffffffff16145b8015610fed5750611df38360a00151613357565b67ffffffffffffffff168167ffffffffffffffff16146110855760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610404565b6000611eeb60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611f0f60405180606001604052806000815260200160008152602001600081525090565b611f416040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b611f816040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611f8c848888612c27565b6000611fa361032a86600001518760200151613e40565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250611fea91613e57565b845284516060860151611ffd9190613e6e565b84602001818152505061201885604001518660200151613e86565b6040850152600061202885610fa5565b90508160ff168161ffff16146120805760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b61209286608001518760a00151613e9e565b8452855160a08701516120a59190613eb5565b8460200181815250506120c086608001518760200151613ecd565b8460400181815250506120db86604001518760a00151613ee5565b8460600181815250506120f686608001518760600151613efd565b60808501526000612106856124a6565b90508063ffffffff168360ff16146121605760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b6121728760c001518860e00151613f15565b8452865160e08801516121859190613f2c565b8460200181815250506121a08760c001518860200151613f44565b8460400181815250506121bb87604001518860e00151613f5c565b8460600181815250506121d68760c001518860600151613f74565b8460800181815250506121f187608001518860e00151613f8c565b8460a001818152505061220c8760c001518860a00151613fa4565b60c0850152600061221c85611cfe565b90508067ffffffffffffffff168460ff161461227a5760405162461bcd60e51b815260206004820152601760248201527f737562546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b61228b61032a8c8a60200151613fbc565b60ff168460ff161480156122b457506122ab61032a89600001518c613fd3565b60ff168460ff16145b6123265760405162461bcd60e51b815260206004820152602760248201527f737562546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b61233a6106c78c60ff168a60600151613feb565b61ffff168460ff16148015612368575061235e6106c789604001518c60ff16614003565b61ffff168460ff16145b6123c55760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b6123d961076b8c60ff168a60a0015161401a565b63ffffffff168460ff1614801561240b57506123ff61076b89608001518c60ff16614032565b63ffffffff168460ff16145b6124685760405162461bcd60e51b815260206004820152602860248201527f737562546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b61247c6108138c60ff168a60e0015161404a565b67ffffffffffffffff168460ff161480156116a057506116906108138960c001518c60ff16614062565b6000806124b68360000151613233565b90506124c58360200151613233565b63ffffffff168163ffffffff161480156124f657506124e78360400151613233565b63ffffffff168163ffffffff16145b8015612519575061250a8360800151613233565b63ffffffff168163ffffffff16145b8015610fed575061252d8360600151613233565b63ffffffff168163ffffffff16146110855760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610404565b600061261d60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61264160405180606001604052806000815260200160008152602001600081525090565b6126736040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6126b36040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6126be848888612c27565b6126d361032a8560000151866020015161407a565b600060026101000a81548160ff021916908360ff1602179055506126ff84604001518560600151614091565b83528351606085015161271291906140a8565b83602001818152505061272d846040015185602001516140c0565b6040840152600061273d84610fa5565b60005490915060ff620100009091041661ffff82161461279f5760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203136206661696c65640000000000000000006044820152606401610404565b6127b185608001518660a001516140d8565b8352845160a08601516127c491906140ef565b8360200181815250506127df85608001518660200151614107565b8360400181815250506127fa85604001518660a0015161411f565b83606001818152505061281585608001518660600151614137565b60808401526000612825846124a6565b60005490915060ff620100009091041663ffffffff8216146128895760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203332206661696c65640000000000000000006044820152606401610404565b61289b8660c001518760e0015161414f565b8352855160e08701516128ae9190614166565b8360200181815250506128c98660c00151876020015161417e565b8360400181815250506128e486604001518760e00151614196565b8360600181815250506128ff8660c0015187606001516141ae565b83608001818152505061291a86608001518760e001516141c6565b8360a00181815250506129358660c001518760a001516141de565b60c0840152600061294584611cfe565b60005490915060ff620100009091041667ffffffffffffffff8216146129ad5760405162461bcd60e51b815260206004820152601760248201527f6d756c546573743a2063617374203634206661696c65640000000000000000006044820152606401610404565b6129be61032a8b89602001516141f6565b60005462010000900460ff90811691161480156129f957506129e761032a88600001518b61420d565b60005462010000900460ff9081169116145b612a6b5760405162461bcd60e51b815260206004820152602760248201527f6d756c546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610404565b612a7f6106c78b60ff168960600151614225565b60005460ff620100009091041661ffff91909116148015612ac55750612aaf6106c788604001518b60ff1661423d565b60005460ff620100009091041661ffff91909116145b612b225760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420313620626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b612b3661076b8b60ff168960a00151614254565b60005460ff620100009091041663ffffffff91909116148015612b805750612b6861076b88608001518b60ff1661426c565b60005460ff620100009091041663ffffffff91909116145b612bdd5760405162461bcd60e51b815260206004820152602860248201527f6d756c546573743a207465737420333220626974732077697468207363616c616044820152671c8819985a5b195960c21b6064820152608401610404565b612bf16108138b60ff168960e00151614284565b60005460ff620100009091041667ffffffffffffffff91909116148015610f2e5750610f126108138860c001518b60ff1661429c565b612c30826142b4565b8352612c3b816142b4565b6020840152612c4c60ff831661431d565b6040840152612c5d60ff821661431d565b6060840152612c6e60ff8316614387565b6080840152612c7f60ff8216614387565b60a0840152612c9060ff83166143f3565b60c0840152612ca160ff82166143f3565b60e0909301929092525050565b60008080606463f581fa20612cc560018085614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101889052604481018790526064015b60408051808303816000875af1158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e91906148bd565b91509150612d7c82826144c0565b95945050505050565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401612ddf9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015612dfe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190614910565b60008080606463f581fa20612cc560028085614463565b60008080606463f581fa20612cc56001600285614463565b60008080606463f581fa20612cc56002600185614463565b60008080606463f581fa20612cc560038085614463565b60008080606463f581fa20612cc56001600385614463565b60008080606463f581fa20612cc56003600185614463565b60008080606463f581fa20612cc56002600385614463565b60008080606463f581fa20612cc56003600285614463565b60008080606463f581fa20612cc560048085614463565b60008080606463f581fa20612cc56001600485614463565b60008080606463f581fa20612cc56004600185614463565b60008080606463f581fa20612cc56002600485614463565b60008080606463f581fa20612cc56004600285614463565b60008080606463f581fa20612cc56003600485614463565b60008080606463f581fa20612cc56004600385614463565b60008080606463f581fa20612f9e60018080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8816602482015260448101879052606401612d2c565b60008080606463f581fa206130236001806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905260ff87166044820152606401612d2c565b60008080606463f581fa206130a86002806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8816602482015260448101879052606401612d2c565b60006064630cfed5616002612d91565b60008080606463f581fa2061313d60028080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905261ffff87166044820152606401612d2c565b60008080606463f581fa206131c36003806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8816602482015260448101879052606401612d2c565b60006064630cfed5616003612d91565b60008080606463f581fa2061325b6003806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905263ffffffff87166044820152606401612d2c565b60008080606463f581fa206132e36004806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8816602482015260448101879052606401612d2c565b60006064630cfed5616004612d91565b60008080606463f581fa2061337f6004806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905267ffffffffffffffff87166044820152606401612d2c565b6000606463f1d21bb461340860018085614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561348e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b29190614910565b9392505050565b6000606463f1d21bb461340860028085614463565b6000606463f1d21bb46134086001600285614463565b6000606463f1d21bb46134086002600185614463565b6000606463f1d21bb461340860038085614463565b6000606463f1d21bb46134086001600385614463565b6000606463f1d21bb46134086003600185614463565b6000606463f1d21bb46134086002600385614463565b6000606463f1d21bb46134086003600285614463565b6000606463f1d21bb461340860048085614463565b6000606463f1d21bb46134086001600485614463565b6000606463f1d21bb46134086004600185614463565b6000606463f1d21bb46134086002600485614463565b6000606463f1d21bb46134086004600285614463565b6000606463f1d21bb46134086003600485614463565b6000606463f1d21bb46134086004600385614463565b6000606463f1d21bb461361560018080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff861660248201526044810185905260640161346f565b6000606463f1d21bb46136986001806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff8516604482015260640161346f565b6000606463f1d21bb461371b6002806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff861660248201526044810185905260640161346f565b6000606463f1d21bb461379e60028080614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff8516604482015260640161346f565b6000606463f1d21bb46138226003806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff861660248201526044810185905260640161346f565b6000606463f1d21bb46138a86003806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff8516604482015260640161346f565b6000606463f1d21bb461392e6004806001614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff861660248201526044810185905260640161346f565b6000606463f1d21bb46139b86004806002614463565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff8516604482015260640161346f565b6000606463371d1bf261340860018085614463565b6000606463371d1bf261340860028085614463565b6000606463371d1bf26134086001600285614463565b6000606463371d1bf26134086002600185614463565b6000606463371d1bf261340860038085614463565b6000606463371d1bf26134086001600385614463565b6000606463371d1bf26134086003600185614463565b6000606463371d1bf26134086002600385614463565b6000606463371d1bf26134086003600285614463565b6000606463371d1bf261340860048085614463565b6000606463371d1bf26134086001600485614463565b6000606463371d1bf26134086004600185614463565b6000606463371d1bf26134086002600485614463565b6000606463371d1bf26134086004600285614463565b6000606463371d1bf26134086003600485614463565b6000606463371d1bf26134086004600385614463565b6000606463371d1bf261361560018080614463565b6000606463371d1bf26136986001806002614463565b6000606463371d1bf261371b6002806001614463565b6000606463371d1bf261379e60028080614463565b6000606463371d1bf26138226003806001614463565b6000606463371d1bf26138a86003806002614463565b6000606463371d1bf261392e6004806001614463565b6000606463371d1bf26139b86004806002614463565b60006064638c5d015061340860018085614463565b60006064638c5d015061340860028085614463565b60006064638c5d01506134086001600285614463565b60006064638c5d01506134086002600185614463565b60006064638c5d015061340860038085614463565b60006064638c5d01506134086001600385614463565b60006064638c5d01506134086003600185614463565b60006064638c5d01506134086002600385614463565b60006064638c5d01506134086003600285614463565b60006064638c5d015061340860048085614463565b60006064638c5d01506134086001600485614463565b60006064638c5d01506134086004600185614463565b60006064638c5d01506134086002600485614463565b60006064638c5d01506134086004600285614463565b60006064638c5d01506134086003600485614463565b60006064638c5d01506134086004600385614463565b60006064638c5d015061361560018080614463565b60006064638c5d01506136986001806002614463565b60006064638c5d015061371b6002806001614463565b60006064638c5d015061379e60028080614463565b60006064638c5d01506138226003806001614463565b60006064638c5d01506138a86003806002614463565b60006064638c5d015061392e6004806001614463565b60006064638c5d01506139b86004806002614463565b60008080606463ce8c713d612cc560018085614463565b60008080606463ce8c713d612cc560028085614463565b60008080606463ce8c713d612cc56001600285614463565b60008080606463ce8c713d612cc56002600185614463565b60008080606463ce8c713d612cc560038085614463565b60008080606463ce8c713d612cc56001600385614463565b60008080606463ce8c713d612cc56003600185614463565b60008080606463ce8c713d612cc56002600385614463565b60008080606463ce8c713d612cc56003600285614463565b60008080606463ce8c713d612cc560048085614463565b60008080606463ce8c713d612cc56001600485614463565b60008080606463ce8c713d612cc56004600185614463565b60008080606463ce8c713d612cc56002600485614463565b60008080606463ce8c713d612cc56004600285614463565b60008080606463ce8c713d612cc56003600485614463565b60008080606463ce8c713d612cc56004600385614463565b60008080606463ce8c713d612f9e60018080614463565b60008080606463ce8c713d6130236001806002614463565b60008080606463ce8c713d6130a86002806001614463565b60008080606463ce8c713d61313d60028080614463565b60008080606463ce8c713d6131c36003806001614463565b60008080606463ce8c713d61325b6003806002614463565b60008080606463ce8c713d6132e36004806001614463565b60008080606463ce8c713d61337f6004806002614463565b600080806064630915497f612cc560018085614463565b600080806064630915497f612cc560028085614463565b600080806064630915497f612cc56001600285614463565b600080806064630915497f612cc56002600185614463565b600080806064630915497f612cc560038085614463565b600080806064630915497f612cc56001600385614463565b600080806064630915497f612cc56003600185614463565b600080806064630915497f612cc56002600385614463565b600080806064630915497f612cc56003600285614463565b600080806064630915497f612cc560048085614463565b600080806064630915497f612cc56001600485614463565b600080806064630915497f612cc56004600185614463565b600080806064630915497f612cc56002600485614463565b600080806064630915497f612cc56004600285614463565b600080806064630915497f612cc56003600485614463565b600080806064630915497f612cc56004600385614463565b600080806064630915497f612f9e60018080614463565b600080806064630915497f6130236001806002614463565b600080806064630915497f6130a86002806001614463565b600080806064630915497f61313d60028080614463565b600080806064630915497f6131c36003806001614463565b600080806064630915497f61325b6003806002614463565b600080806064630915497f6132e36004806001614463565b600080806064630915497f61337f6004806002614463565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401612ddf565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401612ddf565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401612ddf565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401612ddf565b6000816002811115614477576144776148e1565b60ff16600884600481111561448e5761448e6148e1565b61ffff16901b61ffff1660108660048111156144ac576144ac6148e1565b62ffffff16901b171760e81b949350505050565b60006144cb836144d1565b50919050565b6144da8161452a565b156145275760405162461bcd60e51b815260206004820152600e60248201527f6f766572666c6f77206572726f720000000000000000000000000000000000006044820152606401610404565b50565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af115801561458e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b29190614910565b15159392505050565b803560ff811681146145cc57600080fd5b919050565b600080604083850312156145e457600080fd5b6145ed836145bb565b91506145fb602084016145bb565b90509250929050565b604051610100810167ffffffffffffffff8111828210171561464f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561466757600080fd5b6040516060810181811067ffffffffffffffff821117156146b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156146ea57600080fd5b60405160e0810181811067ffffffffffffffff82111715614734577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561479557600080fd5b60405160a0810181811067ffffffffffffffff821117156147df577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561483157600080fd5b6101008082121561484157600080fd5b614849614604565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506148a38187016145bb565b935050506148b461012085016145bb565b90509250925092565b600080604083850312156148d057600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561492257600080fd5b505191905056fea2646970667358221220011cd79a5d598de815c8c6fe179c2fc42a41c02a6d24da9dd3055df157cf8c0764736f6c63430008130033";
408
408
 
409
409
  type ArithmeticTestsContractConstructorParams =
410
410
  | [signer?: Signer]
@@ -342,7 +342,7 @@ const _abi = [
342
342
  ] as const;
343
343
 
344
344
  const _bytecode =
345
- "0x608060405234801561001057600080fd5b50612ccb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80636b04608f11610076578063991e65321161005b578063991e653214610180578063acb3816914610193578063f3367ccb146101bb57600080fd5b80636b04608f1461013f57806380f937bc1461015457600080fd5b80632e544aa0116100a75780632e544aa0146100fd578063535e40d114610123578063538301e81461012e57600080fd5b80631e977321146100c357806325a3b580146100ed575b600080fd5b6100d66100d1366004612949565b6101ce565b60405160ff90911681526020015b60405180910390f35b600054610100900460ff166100d6565b61011061010b3660046129cd565b6108d1565b60405161ffff90911681526020016100e4565b60005460ff166100d6565b60005462010000900460ff166100d6565b61015261014d366004612a50565b6109b7565b005b610167610162366004612b0b565b610a6c565b60405167ffffffffffffffff90911681526020016100e4565b6100d661018e366004612949565b610c0f565b6101a66101a1366004612bb6565b6112e6565b60405163ffffffff90911681526020016100e4565b6100d66101c9366004612949565b611413565b6000610226604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61024a60405180606001604052806000815260200160008152602001600081525090565b61027c6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6102bc6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102c78488886109b7565b6102e16102dc85600001518660200151611ae5565b611baa565b5060006102fe6102f986604001518760600151611c3b565b611c50565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff841602179055608086015160a087015191925061034591611ced565b8452604085015160a086015161035b9190611d02565b6020850152608085015160608601516103749190611d18565b60408501526000610384856108d1565b90508160ff168161ffff16146103e15760405162461bcd60e51b815260206004820152601660248201527f6f72546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b6103f38660c001518760e00151611d2e565b8452604086015160e08701516104099190611d43565b602085015260c086015160608701516104229190611d59565b6040850152608086015160e087015161043b9190611d6f565b606085015260c086015160a08701516104549190611d85565b60808501526000610464856112e6565b90508063ffffffff168360ff16146104be5760405162461bcd60e51b815260206004820152601660248201527f6f72546573743a2063617374203332206661696c65640000000000000000000060448201526064016103d8565b6104d2876101000151886101200151611d9b565b845260408701516101208801516104e99190611db0565b602085015261010087015160608801516105039190611dc6565b6040850152608087015161012088015161051d9190611ddc565b606085015261010087015160a08801516105379190611df2565b608085015260c08701516101208801516105519190611e08565b60a085015261010087015160e088015161056b9190611e1e565b60c0850152600061057b85610a6c565b90508067ffffffffffffffff168460ff16146105d95760405162461bcd60e51b815260206004820152601660248201527f6f72546573743a2063617374203634206661696c65640000000000000000000060448201526064016103d8565b6105ea6102f98c8a60600151611e34565b60ff168460ff16148015610613575061060a6102f989604001518c611eb6565b60ff168460ff16145b6106855760405162461bcd60e51b815260206004820152602660248201527f6f72546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c6564000000000000000000000000000000000000000000000000000060648201526084016103d8565b61069e6106998c60ff168a60a00151611f39565b611fbd565b61ffff168460ff161480156106cc57506106c261069989608001518c60ff16611fcd565b61ffff168460ff16145b61073e5760405162461bcd60e51b815260206004820152602760248201527f6f72546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6107576107528c60ff168a60e00151612050565b6120d6565b63ffffffff168460ff16148015610789575061077d6107528960c001518c60ff166120e6565b63ffffffff168460ff16145b6107fb5760405162461bcd60e51b815260206004820152602760248201527f6f72546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6108156108108c60ff168a610120015161216c565b6121f6565b67ffffffffffffffff168460ff1614801561085057506108406108108961010001518c60ff16612206565b67ffffffffffffffff168460ff16145b6108c25760405162461bcd60e51b815260206004820152602760248201527f6f72546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b50919998505050505050505050565b6000806108e18360000151611fbd565b90506108f08360200151611fbd565b61ffff168161ffff16148015610919575061090e8360400151611fbd565b61ffff168161ffff16145b6109b15760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016103d8565b92915050565b6109c88160ff168360ff1611612290565b83526109db60ff80841690831611612290565b60208401526109e9826122ef565b60408401526109f7816122ef565b6060840152610a0860ff8316612358565b6080840152610a1960ff8216612358565b60a0840152610a2a60ff83166123c2565b60c0840152610a3b60ff82166123c2565b60e0840152610a4c60ff831661242e565b610100840152610a5e60ff821661242e565b610120909301929092525050565b600080610a7c83600001516121f6565b9050610a8b83602001516121f6565b67ffffffffffffffff168167ffffffffffffffff16148015610acc5750610ab583604001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b8015610af75750610ae083608001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b225750610b0b83606001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b4d5750610b368360c001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b80156109195750610b618360a001516121f6565b67ffffffffffffffff168167ffffffffffffffff16146109b15760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016103d8565b6000610c67604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c8b60405180606001604052806000815260200160008152602001600081525090565b610cbd6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610cfd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610d088488886109b7565b610d1d6102dc8560000151866020015161249e565b506000610d356102f9866040015187606001516124b2565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff841602179055608086015160a0870151919250610d7d916124c7565b8452604085015160a0860151610d9391906124dc565b602085015260808501516060860151610dac91906124f2565b60408501526000610dbc856108d1565b90508160ff168161ffff1614610e145760405162461bcd60e51b815260206004820152601760248201527f786f72546573743a2063617374203136206661696c656400000000000000000060448201526064016103d8565b610e268660c001518760e00151612508565b8452604086015160e0870151610e3c919061251d565b602085015260c08601516060870151610e559190612533565b6040850152608086015160e0870151610e6e9190612549565b606085015260c086015160a0870151610e87919061255f565b60808501526000610e97856112e6565b90508063ffffffff168360ff1614610ef15760405162461bcd60e51b815260206004820152601760248201527f786f72546573743a2063617374203332206661696c656400000000000000000060448201526064016103d8565b610f05876101000151886101200151612575565b84526040870151610120880151610f1c919061258a565b60208501526101008701516060880151610f3691906125a0565b60408501526080870151610120880151610f5091906125b6565b606085015261010087015160a0880151610f6a91906125cc565b608085015260c0870151610120880151610f8491906125e2565b60a085015261010087015160e0880151610f9e91906125f8565b60c08501526000610fae85610a6c565b90508067ffffffffffffffff168460ff161461100c5760405162461bcd60e51b815260206004820152601760248201527f786f72546573743a2063617374203634206661696c656400000000000000000060448201526064016103d8565b61101d6102f98c8a6060015161260e565b60ff168460ff16148015611046575061103d6102f989604001518c612623565b60ff168460ff16145b6110b85760405162461bcd60e51b815260206004820152602760248201527f786f72546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6110cc6106998c60ff168a60a00151612639565b61ffff168460ff161480156110fa57506110f061069989608001518c60ff1661264f565b61ffff168460ff16145b61116c5760405162461bcd60e51b815260206004820152602860248201527f786f72546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6111806107528c60ff168a60e00151612664565b63ffffffff168460ff161480156111b257506111a66107528960c001518c60ff1661267a565b63ffffffff168460ff16145b6112245760405162461bcd60e51b815260206004820152602860248201527f786f72546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6112396108108c60ff168a6101200151612690565b67ffffffffffffffff168460ff1614801561127457506112646108108961010001518c60ff166126a6565b67ffffffffffffffff168460ff16145b6108c25760405162461bcd60e51b815260206004820152602860248201527f786f72546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6000806112f683600001516120d6565b905061130583602001516120d6565b63ffffffff168163ffffffff16148015611336575061132783604001516120d6565b63ffffffff168163ffffffff16145b8015611359575061134a83608001516120d6565b63ffffffff168163ffffffff16145b8015610919575061136d83606001516120d6565b63ffffffff168163ffffffff16146109b15760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016103d8565b600061146b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61148f60405180606001604052806000815260200160008152602001600081525090565b6114c16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6115016040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61150c8488886109b7565b6115216102dc856000015186602001516126bc565b5060006115396102f9866040015187606001516126d0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316179055608086015160a087015191925061157c916126e5565b8452604085015160a086015161159291906126fa565b6020850152608085015160608601516115ab9190612710565b604085015260006115bb856108d1565b90508160ff168161ffff16146116135760405162461bcd60e51b815260206004820152601760248201527f616e64546573743a2063617374203136206661696c656400000000000000000060448201526064016103d8565b6116258660c001518760e00151612726565b8452604086015160e087015161163b919061273b565b602085015260c086015160608701516116549190612751565b6040850152608086015160e087015161166d9190612767565b606085015260c086015160a0870151611686919061277d565b60808501526000611696856112e6565b90508063ffffffff168360ff16146116f05760405162461bcd60e51b815260206004820152601760248201527f616e64546573743a2063617374203332206661696c656400000000000000000060448201526064016103d8565b611704876101000151886101200151612793565b8452604087015161012088015161171b91906127a8565b6020850152610100870151606088015161173591906127be565b6040850152608087015161012088015161174f91906127d4565b606085015261010087015160a088015161176991906127ea565b608085015260c08701516101208801516117839190612800565b60a085015261010087015160e088015161179d9190612816565b60c085015260006117ad85610a6c565b90508067ffffffffffffffff168460ff161461180b5760405162461bcd60e51b815260206004820152601760248201527f616e64546573743a2063617374203634206661696c656400000000000000000060448201526064016103d8565b61181c6102f98c8a6060015161282c565b60ff168460ff16148015611845575061183c6102f989604001518c612841565b60ff168460ff16145b6118b75760405162461bcd60e51b815260206004820152602760248201527f616e64546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6118cb6106998c60ff168a60a00151612857565b61ffff168460ff161480156118f957506118ef61069989608001518c60ff1661286d565b61ffff168460ff16145b61196b5760405162461bcd60e51b815260206004820152602860248201527f616e64546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b61197f6107528c60ff168a60e00151612882565b63ffffffff168460ff161480156119b157506119a56107528960c001518c60ff16612898565b63ffffffff168460ff16145b611a235760405162461bcd60e51b815260206004820152602860248201527f616e64546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b611a386108108c60ff168a61012001516128ae565b67ffffffffffffffff168460ff16148015611a735750611a636108108961010001518c60ff166128c4565b67ffffffffffffffff168460ff16145b6108c25760405162461bcd60e51b815260206004820152602860248201527f616e64546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6000606463fb7da35f611af98380806128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af1158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba39190612c4d565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190612c4d565b15159392505050565b6000606463fb7da35f611af9600180856128d6565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401611caa9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015611cc9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190612c4d565b6000606463fb7da35f611af9600280856128d6565b6000606463fb7da35f611af960016002856128d6565b6000606463fb7da35f611af960026001856128d6565b6000606463fb7da35f611af9600380856128d6565b6000606463fb7da35f611af960016003856128d6565b6000606463fb7da35f611af960036001856128d6565b6000606463fb7da35f611af960026003856128d6565b6000606463fb7da35f611af960036002856128d6565b6000606463fb7da35f611af9600480856128d6565b6000606463fb7da35f611af960016004856128d6565b6000606463fb7da35f611af960046001856128d6565b6000606463fb7da35f611af960026004856128d6565b6000606463fb7da35f611af960046002856128d6565b6000606463fb7da35f611af960036004856128d6565b6000606463fb7da35f611af960046003856128d6565b6000606463fb7da35f611e49600180806128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611b60565b6000606463fb7da35f611ecc60018060026128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611b60565b6000606463fb7da35f611f4f60028060016128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611b60565b60006064630cfed5616002611c5c565b6000606463fb7da35f611fe2600280806128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611b60565b6000606463fb7da35f61206660038060016128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611b60565b60006064630cfed5616003611c5c565b6000606463fb7da35f6120fc60038060026128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611b60565b6000606463fb7da35f61218260048060016128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611b60565b60006064630cfed5616004611c5c565b6000606463fb7da35f61221c60048060026128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611b60565b6000808261229f5760006122a2565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401611b60565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611caa565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611caa565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611caa565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611caa565b60006064636f962e2c611af98380806128d6565b60006064636f962e2c611af9600180856128d6565b60006064636f962e2c611af9600280856128d6565b60006064636f962e2c611af960016002856128d6565b60006064636f962e2c611af960026001856128d6565b60006064636f962e2c611af9600380856128d6565b60006064636f962e2c611af960016003856128d6565b60006064636f962e2c611af960036001856128d6565b60006064636f962e2c611af960026003856128d6565b60006064636f962e2c611af960036002856128d6565b60006064636f962e2c611af9600480856128d6565b60006064636f962e2c611af960016004856128d6565b60006064636f962e2c611af960046001856128d6565b60006064636f962e2c611af960026004856128d6565b60006064636f962e2c611af960046002856128d6565b60006064636f962e2c611af960036004856128d6565b60006064636f962e2c611af960046003856128d6565b60006064636f962e2c611e49600180806128d6565b60006064636f962e2c611ecc60018060026128d6565b60006064636f962e2c611f4f60028060016128d6565b60006064636f962e2c611fe2600280806128d6565b60006064636f962e2c61206660038060016128d6565b60006064636f962e2c6120fc60038060026128d6565b60006064636f962e2c61218260048060016128d6565b60006064636f962e2c61221c60048060026128d6565b6000606463fe9c73d1611af98380806128d6565b6000606463fe9c73d1611af9600180856128d6565b6000606463fe9c73d1611af9600280856128d6565b6000606463fe9c73d1611af960016002856128d6565b6000606463fe9c73d1611af960026001856128d6565b6000606463fe9c73d1611af9600380856128d6565b6000606463fe9c73d1611af960016003856128d6565b6000606463fe9c73d1611af960036001856128d6565b6000606463fe9c73d1611af960026003856128d6565b6000606463fe9c73d1611af960036002856128d6565b6000606463fe9c73d1611af9600480856128d6565b6000606463fe9c73d1611af960016004856128d6565b6000606463fe9c73d1611af960046001856128d6565b6000606463fe9c73d1611af960026004856128d6565b6000606463fe9c73d1611af960046002856128d6565b6000606463fe9c73d1611af960036004856128d6565b6000606463fe9c73d1611af960046003856128d6565b6000606463fe9c73d1611e49600180806128d6565b6000606463fe9c73d1611ecc60018060026128d6565b6000606463fe9c73d1611f4f60028060016128d6565b6000606463fe9c73d1611fe2600280806128d6565b6000606463fe9c73d161206660038060016128d6565b6000606463fe9c73d16120fc60038060026128d6565b6000606463fe9c73d161218260048060016128d6565b6000606463fe9c73d161221c60048060025b60008160028111156128ea576128ea612c66565b60ff16600884600481111561290157612901612c66565b61ffff16901b61ffff16601086600481111561291f5761291f612c66565b62ffffff16901b171760e81b949350505050565b803560ff8116811461294457600080fd5b919050565b6000806040838503121561295c57600080fd5b61296583612933565b915061297360208401612933565b90509250929050565b604051610140810167ffffffffffffffff811182821017156129c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000606082840312156129df57600080fd5b6040516060810181811067ffffffffffffffff82111715612a29577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b6000806000838503610180811215612a6757600080fd5b61014080821215612a7757600080fd5b612a7f61297c565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e0830152610100808701358184015250610120808701358184015250819450612af1818701612933565b93505050612b026101608501612933565b90509250925092565b600060e08284031215612b1d57600080fd5b60405160e0810181811067ffffffffffffffff82111715612b67577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a08284031215612bc857600080fd5b60405160a0810181811067ffffffffffffffff82111715612c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215612c5f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122066b98a9cec7adde360a7fda723228f62506ae8b8b1fc2e3c358ec0c95b80d3af64736f6c63430008130033";
345
+ "0x608060405234801561001057600080fd5b50612ccb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80636b04608f11610076578063991e65321161005b578063991e653214610180578063acb3816914610193578063f3367ccb146101bb57600080fd5b80636b04608f1461013f57806380f937bc1461015457600080fd5b80632e544aa0116100a75780632e544aa0146100fd578063535e40d114610123578063538301e81461012e57600080fd5b80631e977321146100c357806325a3b580146100ed575b600080fd5b6100d66100d1366004612949565b6101ce565b60405160ff90911681526020015b60405180910390f35b600054610100900460ff166100d6565b61011061010b3660046129cd565b6108d1565b60405161ffff90911681526020016100e4565b60005460ff166100d6565b60005462010000900460ff166100d6565b61015261014d366004612a50565b6109b7565b005b610167610162366004612b0b565b610a6c565b60405167ffffffffffffffff90911681526020016100e4565b6100d661018e366004612949565b610c0f565b6101a66101a1366004612bb6565b6112e6565b60405163ffffffff90911681526020016100e4565b6100d66101c9366004612949565b611413565b6000610226604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61024a60405180606001604052806000815260200160008152602001600081525090565b61027c6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6102bc6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102c78488886109b7565b6102e16102dc85600001518660200151611ae5565b611baa565b5060006102fe6102f986604001518760600151611c3b565b611c50565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff841602179055608086015160a087015191925061034591611ced565b8452604085015160a086015161035b9190611d02565b6020850152608085015160608601516103749190611d18565b60408501526000610384856108d1565b90508160ff168161ffff16146103e15760405162461bcd60e51b815260206004820152601660248201527f6f72546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b6103f38660c001518760e00151611d2e565b8452604086015160e08701516104099190611d43565b602085015260c086015160608701516104229190611d59565b6040850152608086015160e087015161043b9190611d6f565b606085015260c086015160a08701516104549190611d85565b60808501526000610464856112e6565b90508063ffffffff168360ff16146104be5760405162461bcd60e51b815260206004820152601660248201527f6f72546573743a2063617374203332206661696c65640000000000000000000060448201526064016103d8565b6104d2876101000151886101200151611d9b565b845260408701516101208801516104e99190611db0565b602085015261010087015160608801516105039190611dc6565b6040850152608087015161012088015161051d9190611ddc565b606085015261010087015160a08801516105379190611df2565b608085015260c08701516101208801516105519190611e08565b60a085015261010087015160e088015161056b9190611e1e565b60c0850152600061057b85610a6c565b90508067ffffffffffffffff168460ff16146105d95760405162461bcd60e51b815260206004820152601660248201527f6f72546573743a2063617374203634206661696c65640000000000000000000060448201526064016103d8565b6105ea6102f98c8a60600151611e34565b60ff168460ff16148015610613575061060a6102f989604001518c611eb6565b60ff168460ff16145b6106855760405162461bcd60e51b815260206004820152602660248201527f6f72546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c6564000000000000000000000000000000000000000000000000000060648201526084016103d8565b61069e6106998c60ff168a60a00151611f39565b611fbd565b61ffff168460ff161480156106cc57506106c261069989608001518c60ff16611fcd565b61ffff168460ff16145b61073e5760405162461bcd60e51b815260206004820152602760248201527f6f72546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6107576107528c60ff168a60e00151612050565b6120d6565b63ffffffff168460ff16148015610789575061077d6107528960c001518c60ff166120e6565b63ffffffff168460ff16145b6107fb5760405162461bcd60e51b815260206004820152602760248201527f6f72546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6108156108108c60ff168a610120015161216c565b6121f6565b67ffffffffffffffff168460ff1614801561085057506108406108108961010001518c60ff16612206565b67ffffffffffffffff168460ff16145b6108c25760405162461bcd60e51b815260206004820152602760248201527f6f72546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b50919998505050505050505050565b6000806108e18360000151611fbd565b90506108f08360200151611fbd565b61ffff168161ffff16148015610919575061090e8360400151611fbd565b61ffff168161ffff16145b6109b15760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016103d8565b92915050565b6109c88160ff168360ff1611612290565b83526109db60ff80841690831611612290565b60208401526109e9826122ef565b60408401526109f7816122ef565b6060840152610a0860ff8316612358565b6080840152610a1960ff8216612358565b60a0840152610a2a60ff83166123c2565b60c0840152610a3b60ff82166123c2565b60e0840152610a4c60ff831661242e565b610100840152610a5e60ff821661242e565b610120909301929092525050565b600080610a7c83600001516121f6565b9050610a8b83602001516121f6565b67ffffffffffffffff168167ffffffffffffffff16148015610acc5750610ab583604001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b8015610af75750610ae083608001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b225750610b0b83606001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b4d5750610b368360c001516121f6565b67ffffffffffffffff168167ffffffffffffffff16145b80156109195750610b618360a001516121f6565b67ffffffffffffffff168167ffffffffffffffff16146109b15760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016103d8565b6000610c67604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c8b60405180606001604052806000815260200160008152602001600081525090565b610cbd6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610cfd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610d088488886109b7565b610d1d6102dc8560000151866020015161249e565b506000610d356102f9866040015187606001516124b2565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff841602179055608086015160a0870151919250610d7d916124c7565b8452604085015160a0860151610d9391906124dc565b602085015260808501516060860151610dac91906124f2565b60408501526000610dbc856108d1565b90508160ff168161ffff1614610e145760405162461bcd60e51b815260206004820152601760248201527f786f72546573743a2063617374203136206661696c656400000000000000000060448201526064016103d8565b610e268660c001518760e00151612508565b8452604086015160e0870151610e3c919061251d565b602085015260c08601516060870151610e559190612533565b6040850152608086015160e0870151610e6e9190612549565b606085015260c086015160a0870151610e87919061255f565b60808501526000610e97856112e6565b90508063ffffffff168360ff1614610ef15760405162461bcd60e51b815260206004820152601760248201527f786f72546573743a2063617374203332206661696c656400000000000000000060448201526064016103d8565b610f05876101000151886101200151612575565b84526040870151610120880151610f1c919061258a565b60208501526101008701516060880151610f3691906125a0565b60408501526080870151610120880151610f5091906125b6565b606085015261010087015160a0880151610f6a91906125cc565b608085015260c0870151610120880151610f8491906125e2565b60a085015261010087015160e0880151610f9e91906125f8565b60c08501526000610fae85610a6c565b90508067ffffffffffffffff168460ff161461100c5760405162461bcd60e51b815260206004820152601760248201527f786f72546573743a2063617374203634206661696c656400000000000000000060448201526064016103d8565b61101d6102f98c8a6060015161260e565b60ff168460ff16148015611046575061103d6102f989604001518c612623565b60ff168460ff16145b6110b85760405162461bcd60e51b815260206004820152602760248201527f786f72546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6110cc6106998c60ff168a60a00151612639565b61ffff168460ff161480156110fa57506110f061069989608001518c60ff1661264f565b61ffff168460ff16145b61116c5760405162461bcd60e51b815260206004820152602860248201527f786f72546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6111806107528c60ff168a60e00151612664565b63ffffffff168460ff161480156111b257506111a66107528960c001518c60ff1661267a565b63ffffffff168460ff16145b6112245760405162461bcd60e51b815260206004820152602860248201527f786f72546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6112396108108c60ff168a6101200151612690565b67ffffffffffffffff168460ff1614801561127457506112646108108961010001518c60ff166126a6565b67ffffffffffffffff168460ff16145b6108c25760405162461bcd60e51b815260206004820152602860248201527f786f72546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6000806112f683600001516120d6565b905061130583602001516120d6565b63ffffffff168163ffffffff16148015611336575061132783604001516120d6565b63ffffffff168163ffffffff16145b8015611359575061134a83608001516120d6565b63ffffffff168163ffffffff16145b8015610919575061136d83606001516120d6565b63ffffffff168163ffffffff16146109b15760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016103d8565b600061146b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61148f60405180606001604052806000815260200160008152602001600081525090565b6114c16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6115016040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61150c8488886109b7565b6115216102dc856000015186602001516126bc565b5060006115396102f9866040015187606001516126d0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316179055608086015160a087015191925061157c916126e5565b8452604085015160a086015161159291906126fa565b6020850152608085015160608601516115ab9190612710565b604085015260006115bb856108d1565b90508160ff168161ffff16146116135760405162461bcd60e51b815260206004820152601760248201527f616e64546573743a2063617374203136206661696c656400000000000000000060448201526064016103d8565b6116258660c001518760e00151612726565b8452604086015160e087015161163b919061273b565b602085015260c086015160608701516116549190612751565b6040850152608086015160e087015161166d9190612767565b606085015260c086015160a0870151611686919061277d565b60808501526000611696856112e6565b90508063ffffffff168360ff16146116f05760405162461bcd60e51b815260206004820152601760248201527f616e64546573743a2063617374203332206661696c656400000000000000000060448201526064016103d8565b611704876101000151886101200151612793565b8452604087015161012088015161171b91906127a8565b6020850152610100870151606088015161173591906127be565b6040850152608087015161012088015161174f91906127d4565b606085015261010087015160a088015161176991906127ea565b608085015260c08701516101208801516117839190612800565b60a085015261010087015160e088015161179d9190612816565b60c085015260006117ad85610a6c565b90508067ffffffffffffffff168460ff161461180b5760405162461bcd60e51b815260206004820152601760248201527f616e64546573743a2063617374203634206661696c656400000000000000000060448201526064016103d8565b61181c6102f98c8a6060015161282c565b60ff168460ff16148015611845575061183c6102f989604001518c612841565b60ff168460ff16145b6118b75760405162461bcd60e51b815260206004820152602760248201527f616e64546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016103d8565b6118cb6106998c60ff168a60a00151612857565b61ffff168460ff161480156118f957506118ef61069989608001518c60ff1661286d565b61ffff168460ff16145b61196b5760405162461bcd60e51b815260206004820152602860248201527f616e64546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b61197f6107528c60ff168a60e00151612882565b63ffffffff168460ff161480156119b157506119a56107528960c001518c60ff16612898565b63ffffffff168460ff16145b611a235760405162461bcd60e51b815260206004820152602860248201527f616e64546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b611a386108108c60ff168a61012001516128ae565b67ffffffffffffffff168460ff16148015611a735750611a636108108961010001518c60ff166128c4565b67ffffffffffffffff168460ff16145b6108c25760405162461bcd60e51b815260206004820152602860248201527f616e64546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016103d8565b6000606463fb7da35f611af98380806128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af1158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba39190612c4d565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190612c4d565b15159392505050565b6000606463fb7da35f611af9600180856128d6565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401611caa9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015611cc9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190612c4d565b6000606463fb7da35f611af9600280856128d6565b6000606463fb7da35f611af960016002856128d6565b6000606463fb7da35f611af960026001856128d6565b6000606463fb7da35f611af9600380856128d6565b6000606463fb7da35f611af960016003856128d6565b6000606463fb7da35f611af960036001856128d6565b6000606463fb7da35f611af960026003856128d6565b6000606463fb7da35f611af960036002856128d6565b6000606463fb7da35f611af9600480856128d6565b6000606463fb7da35f611af960016004856128d6565b6000606463fb7da35f611af960046001856128d6565b6000606463fb7da35f611af960026004856128d6565b6000606463fb7da35f611af960046002856128d6565b6000606463fb7da35f611af960036004856128d6565b6000606463fb7da35f611af960046003856128d6565b6000606463fb7da35f611e49600180806128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611b60565b6000606463fb7da35f611ecc60018060026128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611b60565b6000606463fb7da35f611f4f60028060016128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611b60565b60006064630cfed5616002611c5c565b6000606463fb7da35f611fe2600280806128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611b60565b6000606463fb7da35f61206660038060016128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611b60565b60006064630cfed5616003611c5c565b6000606463fb7da35f6120fc60038060026128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611b60565b6000606463fb7da35f61218260048060016128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611b60565b60006064630cfed5616004611c5c565b6000606463fb7da35f61221c60048060026128d6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611b60565b6000808261229f5760006122a2565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401611b60565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611caa565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611caa565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611caa565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611caa565b60006064636f962e2c611af98380806128d6565b60006064636f962e2c611af9600180856128d6565b60006064636f962e2c611af9600280856128d6565b60006064636f962e2c611af960016002856128d6565b60006064636f962e2c611af960026001856128d6565b60006064636f962e2c611af9600380856128d6565b60006064636f962e2c611af960016003856128d6565b60006064636f962e2c611af960036001856128d6565b60006064636f962e2c611af960026003856128d6565b60006064636f962e2c611af960036002856128d6565b60006064636f962e2c611af9600480856128d6565b60006064636f962e2c611af960016004856128d6565b60006064636f962e2c611af960046001856128d6565b60006064636f962e2c611af960026004856128d6565b60006064636f962e2c611af960046002856128d6565b60006064636f962e2c611af960036004856128d6565b60006064636f962e2c611af960046003856128d6565b60006064636f962e2c611e49600180806128d6565b60006064636f962e2c611ecc60018060026128d6565b60006064636f962e2c611f4f60028060016128d6565b60006064636f962e2c611fe2600280806128d6565b60006064636f962e2c61206660038060016128d6565b60006064636f962e2c6120fc60038060026128d6565b60006064636f962e2c61218260048060016128d6565b60006064636f962e2c61221c60048060026128d6565b6000606463fe9c73d1611af98380806128d6565b6000606463fe9c73d1611af9600180856128d6565b6000606463fe9c73d1611af9600280856128d6565b6000606463fe9c73d1611af960016002856128d6565b6000606463fe9c73d1611af960026001856128d6565b6000606463fe9c73d1611af9600380856128d6565b6000606463fe9c73d1611af960016003856128d6565b6000606463fe9c73d1611af960036001856128d6565b6000606463fe9c73d1611af960026003856128d6565b6000606463fe9c73d1611af960036002856128d6565b6000606463fe9c73d1611af9600480856128d6565b6000606463fe9c73d1611af960016004856128d6565b6000606463fe9c73d1611af960046001856128d6565b6000606463fe9c73d1611af960026004856128d6565b6000606463fe9c73d1611af960046002856128d6565b6000606463fe9c73d1611af960036004856128d6565b6000606463fe9c73d1611af960046003856128d6565b6000606463fe9c73d1611e49600180806128d6565b6000606463fe9c73d1611ecc60018060026128d6565b6000606463fe9c73d1611f4f60028060016128d6565b6000606463fe9c73d1611fe2600280806128d6565b6000606463fe9c73d161206660038060016128d6565b6000606463fe9c73d16120fc60038060026128d6565b6000606463fe9c73d161218260048060016128d6565b6000606463fe9c73d161221c60048060025b60008160028111156128ea576128ea612c66565b60ff16600884600481111561290157612901612c66565b61ffff16901b61ffff16601086600481111561291f5761291f612c66565b62ffffff16901b171760e81b949350505050565b803560ff8116811461294457600080fd5b919050565b6000806040838503121561295c57600080fd5b61296583612933565b915061297360208401612933565b90509250929050565b604051610140810167ffffffffffffffff811182821017156129c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000606082840312156129df57600080fd5b6040516060810181811067ffffffffffffffff82111715612a29577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b6000806000838503610180811215612a6757600080fd5b61014080821215612a7757600080fd5b612a7f61297c565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e0830152610100808701358184015250610120808701358184015250819450612af1818701612933565b93505050612b026101608501612933565b90509250925092565b600060e08284031215612b1d57600080fd5b60405160e0810181811067ffffffffffffffff82111715612b67577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a08284031215612bc857600080fd5b60405160a0810181811067ffffffffffffffff82111715612c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215612c5f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220c91aa638fa098a431b5d5bda0440a472b11adf36d1726ffcdafdf2c9d70d96ac64736f6c63430008130033";
346
346
 
347
347
  type BitwiseTestsContractConstructorParams =
348
348
  | [signer?: Signer]
@@ -332,7 +332,7 @@ const _abi = [
332
332
  ] as const;
333
333
 
334
334
  const _bytecode =
335
- "0x608060405234801561001057600080fd5b5061282d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637d2e0f48116100765780638b6e7a8c1161005b5780638b6e7a8c1461014f578063acb3816914610162578063ebb571fd1461017557600080fd5b80637d2e0f481461013157806380f937bc1461013c57600080fd5b80632e544aa0116100a75780632e544aa0146100fa5780632e5950eb1461010d578063791175491461011e57600080fd5b806308c90f0d146100c357806329875348146100ea575b600080fd5b6100d66100d13660046124c3565b61018a565b604051901515815260200160405180910390f35b600054610100900460ff166100d6565b6100d6610108366004612547565b610818565b60005462010000900460ff166100d6565b6100d661012c3660046124c3565b6108f6565b60005460ff166100d6565b6100d661014a3660046125ca565b610f6f565b6100d661015d3660046124c3565b611014565b6100d6610170366004612675565b61168e565b61018861018336600461270c565b6116fd565b005b60006101d460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6101f860405180606001604052806000815260200160008152602001600081525090565b61022a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61026a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102758488886116fd565b600061029161028c86600001518760200151611784565b61184a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055604086015160608701519192506102d3916118db565b8452845160608601516102e691906118f0565b84602001818152505061030185604001518660200151611906565b6040850152600061031185610818565b90508115158115151461036b5760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61037d86608001518760a0015161191c565b8452855160a08701516103909190611931565b8460200181815250506103ab86608001518760200151611947565b8460400181815250506103c686604001518760a0015161195d565b8460600181815250506103e186608001518760600151611973565b608085015260006103f18561168e565b9050801515831515146104465760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b6104588760c001518860e00151611989565b8452865160e088015161046b919061199e565b8460200181815250506104868760c0015188602001516119b4565b8460400181815250506104a187604001518860e001516119ca565b8460600181815250506104bc8760c0015188606001516119e0565b8460800181815250506104d787608001518860e001516119f6565b8460a00181815250506104f28760c001518860a00151611a0c565b60c0850152600061050285610f6f565b9050801515841515146105575760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b61056861028c8c8a60200151611a22565b151584151514801561058d575061058661028c89600001518c611aa4565b1515841515145b6105ff5760405162461bcd60e51b815260206004820152602660248201527f6774546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b61061361028c8c60ff168a60600151611b27565b151584151514801561063b575061063461028c89604001518c60ff16611bab565b1515841515145b6106ad5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b6106c161028c8c60ff168a60a00151611c2e565b15158415151480156106e957506106e261028c89608001518c60ff16611cb4565b1515841515145b61075b5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61076f61028c8c60ff168a60e00151611d3a565b1515841515148015610797575061079061028c8960c001518c60ff16611dc4565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b50919998505050505050505050565b600080610828836000015161184a565b9050610837836020015161184a565b15158115151480156108585750610851836040015161184a565b1515811515145b6108f05760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610362565b92915050565b600061094060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61096460405180606001604052806000815260200160008152602001600081525090565b6109966040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6109d66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109e18488886116fd565b60006109f861028c86600001518760200151611e4e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008315150217905560408601516060870151919250610a3e91611e63565b845284516060860151610a519190611e78565b846020018181525050610a6c85604001518660200151611e8e565b60408501526000610a7c85610818565b905081151581151514610ad15760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610362565b610ae386608001518760a00151611ea4565b8452855160a0870151610af69190611eb9565b846020018181525050610b1186608001518760200151611ecf565b846040018181525050610b2c86604001518760a00151611ee5565b846060018181525050610b4786608001518760600151611efb565b60808501526000610b578561168e565b905080151583151514610bac5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b610bbe8760c001518860e00151611f11565b8452865160e0880151610bd19190611f26565b846020018181525050610bec8760c001518860200151611f3c565b846040018181525050610c0787604001518860e00151611f52565b846060018181525050610c228760c001518860600151611f68565b846080018181525050610c3d87608001518860e00151611f7e565b8460a0018181525050610c588760c001518860a00151611f94565b60c08501526000610c6885610f6f565b905080151584151514610cbd5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b610cce61028c8c8a60200151611faa565b1515841515148015610cf35750610cec61028c89600001518c611fbf565b1515841515145b610d655760405162461bcd60e51b815260206004820152602660248201527f6c65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b610d7961028c8c60ff168a60600151611fd5565b1515841515148015610da15750610d9a61028c89604001518c60ff16611feb565b1515841515145b610e135760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610e2761028c8c60ff168a60a00151612000565b1515841515148015610e4f5750610e4861028c89608001518c60ff16612016565b1515841515145b610ec15760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610ed561028c8c60ff168a60e0015161202c565b1515841515148015610efd5750610ef661028c8960c001518c60ff16612042565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b600080610f7f836000015161184a565b9050610f8e836020015161184a565b1515811515148015610faf5750610fa8836040015161184a565b1515811515145b8015610fca5750610fc3836080015161184a565b1515811515145b8015610fe55750610fde836060015161184a565b1515811515145b80156110005750610ff98360c0015161184a565b1515811515145b801561085857506108518360a0015161184a565b600061105e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61108260405180606001604052806000815260200160008152602001600081525090565b6110b46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6110f46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110ff8488886116fd565b600061111661028c86600001518760200151612058565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000831515021790556040860151606087015191925061115d9161206d565b8452845160608601516111709190612082565b84602001818152505061118b85604001518660200151612098565b6040850152600061119b85610818565b9050811515811515146111f05760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203136206661696c65640000000000000000006044820152606401610362565b61120286608001518760a001516120ae565b8452855160a087015161121591906120c3565b846020018181525050611230866080015187602001516120d9565b84604001818152505061124b86604001518760a001516120ef565b84606001818152505061126686608001518760600151612105565b608085015260006112768561168e565b9050801515831515146112cb5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203332206661696c65640000000000000000006044820152606401610362565b6112dd8760c001518860e0015161211b565b8452865160e08801516112f09190612130565b84602001818152505061130b8760c001518860200151612146565b84604001818152505061132687604001518860e0015161215c565b8460600181815250506113418760c001518860600151612172565b84608001818152505061135c87608001518860e00151612188565b8460a00181815250506113778760c001518860a0015161219e565b60c0850152600061138785610f6f565b9050801515841515146113dc5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203634206661696c65640000000000000000006044820152606401610362565b6113ed61028c8c8a602001516121b4565b1515841515148015611412575061140b61028c89600001518c6121c9565b1515841515145b6114845760405162461bcd60e51b815260206004820152602760248201527f6c6574546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61149861028c8c60ff168a606001516121df565b15158415151480156114c057506114b961028c89604001518c60ff166121f5565b1515841515145b6115325760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b61154661028c8c60ff168a60a0015161220a565b151584151514801561156e575061156761028c89608001518c60ff16612220565b1515841515145b6115e05760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b6115f461028c8c60ff168a60e00151612236565b151584151514801561161c575061161561028c8960c001518c60ff1661224c565b1515841515145b6108095760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b60008061169e836000015161184a565b90506116ad836020015161184a565b15158115151480156116ce57506116c7836040015161184a565b1515811515145b80156116e957506116e2836080015161184a565b1515811515145b80156108585750610851836060015161184a565b61170682612262565b835261171181612262565b602084015261172260ff831661230a565b604084015261173360ff821661230a565b606084015261174460ff8316612374565b608084015261175560ff8216612374565b60a084015261176660ff83166123e0565b60c084015261177760ff82166123e0565b60e0909301929092525050565b60006064636d82e45e61179960018085612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906127af565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906127af565b15159392505050565b60006064636d82e45e61179960028085612450565b60006064636d82e45e6117996001600285612450565b60006064636d82e45e6117996002600185612450565b60006064636d82e45e61179960038085612450565b60006064636d82e45e6117996001600385612450565b60006064636d82e45e6117996003600185612450565b60006064636d82e45e6117996002600385612450565b60006064636d82e45e6117996003600285612450565b60006064636d82e45e61179960048085612450565b60006064636d82e45e6117996001600485612450565b60006064636d82e45e6117996004600185612450565b60006064636d82e45e6117996002600485612450565b60006064636d82e45e6117996004600285612450565b60006064636d82e45e6117996003600485612450565b60006064636d82e45e6117996004600385612450565b60006064636d82e45e611a3760018080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611800565b60006064636d82e45e611aba6001806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611800565b60006064636d82e45e611b3d6002806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611800565b60006064636d82e45e611bc060028080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611800565b60006064636d82e45e611c446003806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611cca6003806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611800565b60006064636d82e45e611d506004806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611dda6004806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611800565b6000606463145fca2c61179960018085612450565b6000606463145fca2c61179960028085612450565b6000606463145fca2c6117996001600285612450565b6000606463145fca2c6117996002600185612450565b6000606463145fca2c61179960038085612450565b6000606463145fca2c6117996001600385612450565b6000606463145fca2c6117996003600185612450565b6000606463145fca2c6117996002600385612450565b6000606463145fca2c6117996003600285612450565b6000606463145fca2c61179960048085612450565b6000606463145fca2c6117996001600485612450565b6000606463145fca2c6117996004600185612450565b6000606463145fca2c6117996002600485612450565b6000606463145fca2c6117996004600285612450565b6000606463145fca2c6117996003600485612450565b6000606463145fca2c6117996004600385612450565b6000606463145fca2c611a3760018080612450565b6000606463145fca2c611aba6001806002612450565b6000606463145fca2c611b3d6002806001612450565b6000606463145fca2c611bc060028080612450565b6000606463145fca2c611c446003806001612450565b6000606463145fca2c611cca6003806002612450565b6000606463145fca2c611d506004806001612450565b6000606463145fca2c611dda6004806002612450565b6000606463dd14869361179960018085612450565b6000606463dd14869361179960028085612450565b6000606463dd1486936117996001600285612450565b6000606463dd1486936117996002600185612450565b6000606463dd14869361179960038085612450565b6000606463dd1486936117996001600385612450565b6000606463dd1486936117996003600185612450565b6000606463dd1486936117996002600385612450565b6000606463dd1486936117996003600285612450565b6000606463dd14869361179960048085612450565b6000606463dd1486936117996001600485612450565b6000606463dd1486936117996004600185612450565b6000606463dd1486936117996002600485612450565b6000606463dd1486936117996004600285612450565b6000606463dd1486936117996003600485612450565b6000606463dd1486936117996004600385612450565b6000606463dd148693611a3760018080612450565b6000606463dd148693611aba6001806002612450565b6000606463dd148693611b3d6002806001612450565b6000606463dd148693611bc060028080612450565b6000606463dd148693611c446003806001612450565b6000606463dd148693611cca6003806002612450565b6000606463dd148693611d506004806001612450565b6000606463dd148693611dda6004806002612450565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f091906127af565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016122c7565b6000816002811115612464576124646127c8565b60ff16600884600481111561247b5761247b6127c8565b61ffff16901b61ffff166010866004811115612499576124996127c8565b62ffffff16901b171760e81b949350505050565b803560ff811681146124be57600080fd5b919050565b600080604083850312156124d657600080fd5b6124df836124ad565b91506124ed602084016124ad565b90509250929050565b604051610100810167ffffffffffffffff81118282101715612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561255957600080fd5b6040516060810181811067ffffffffffffffff821117156125a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156125dc57600080fd5b60405160e0810181811067ffffffffffffffff82111715612626577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561268757600080fd5b60405160a0810181811067ffffffffffffffff821117156126d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561272357600080fd5b6101008082121561273357600080fd5b61273b6124f6565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506127958187016124ad565b935050506127a661012085016124ad565b90509250925092565b6000602082840312156127c157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220b4a1ad6be9b02e029ed993eaeda7a38c500ad12c7ba3d12cc29adee633fbfef664736f6c63430008130033";
335
+ "0x608060405234801561001057600080fd5b5061282d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637d2e0f48116100765780638b6e7a8c1161005b5780638b6e7a8c1461014f578063acb3816914610162578063ebb571fd1461017557600080fd5b80637d2e0f481461013157806380f937bc1461013c57600080fd5b80632e544aa0116100a75780632e544aa0146100fa5780632e5950eb1461010d578063791175491461011e57600080fd5b806308c90f0d146100c357806329875348146100ea575b600080fd5b6100d66100d13660046124c3565b61018a565b604051901515815260200160405180910390f35b600054610100900460ff166100d6565b6100d6610108366004612547565b610818565b60005462010000900460ff166100d6565b6100d661012c3660046124c3565b6108f6565b60005460ff166100d6565b6100d661014a3660046125ca565b610f6f565b6100d661015d3660046124c3565b611014565b6100d6610170366004612675565b61168e565b61018861018336600461270c565b6116fd565b005b60006101d460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6101f860405180606001604052806000815260200160008152602001600081525090565b61022a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61026a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102758488886116fd565b600061029161028c86600001518760200151611784565b61184a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055604086015160608701519192506102d3916118db565b8452845160608601516102e691906118f0565b84602001818152505061030185604001518660200151611906565b6040850152600061031185610818565b90508115158115151461036b5760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61037d86608001518760a0015161191c565b8452855160a08701516103909190611931565b8460200181815250506103ab86608001518760200151611947565b8460400181815250506103c686604001518760a0015161195d565b8460600181815250506103e186608001518760600151611973565b608085015260006103f18561168e565b9050801515831515146104465760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b6104588760c001518860e00151611989565b8452865160e088015161046b919061199e565b8460200181815250506104868760c0015188602001516119b4565b8460400181815250506104a187604001518860e001516119ca565b8460600181815250506104bc8760c0015188606001516119e0565b8460800181815250506104d787608001518860e001516119f6565b8460a00181815250506104f28760c001518860a00151611a0c565b60c0850152600061050285610f6f565b9050801515841515146105575760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b61056861028c8c8a60200151611a22565b151584151514801561058d575061058661028c89600001518c611aa4565b1515841515145b6105ff5760405162461bcd60e51b815260206004820152602660248201527f6774546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b61061361028c8c60ff168a60600151611b27565b151584151514801561063b575061063461028c89604001518c60ff16611bab565b1515841515145b6106ad5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b6106c161028c8c60ff168a60a00151611c2e565b15158415151480156106e957506106e261028c89608001518c60ff16611cb4565b1515841515145b61075b5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61076f61028c8c60ff168a60e00151611d3a565b1515841515148015610797575061079061028c8960c001518c60ff16611dc4565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b50919998505050505050505050565b600080610828836000015161184a565b9050610837836020015161184a565b15158115151480156108585750610851836040015161184a565b1515811515145b6108f05760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610362565b92915050565b600061094060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61096460405180606001604052806000815260200160008152602001600081525090565b6109966040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6109d66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109e18488886116fd565b60006109f861028c86600001518760200151611e4e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008315150217905560408601516060870151919250610a3e91611e63565b845284516060860151610a519190611e78565b846020018181525050610a6c85604001518660200151611e8e565b60408501526000610a7c85610818565b905081151581151514610ad15760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610362565b610ae386608001518760a00151611ea4565b8452855160a0870151610af69190611eb9565b846020018181525050610b1186608001518760200151611ecf565b846040018181525050610b2c86604001518760a00151611ee5565b846060018181525050610b4786608001518760600151611efb565b60808501526000610b578561168e565b905080151583151514610bac5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b610bbe8760c001518860e00151611f11565b8452865160e0880151610bd19190611f26565b846020018181525050610bec8760c001518860200151611f3c565b846040018181525050610c0787604001518860e00151611f52565b846060018181525050610c228760c001518860600151611f68565b846080018181525050610c3d87608001518860e00151611f7e565b8460a0018181525050610c588760c001518860a00151611f94565b60c08501526000610c6885610f6f565b905080151584151514610cbd5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b610cce61028c8c8a60200151611faa565b1515841515148015610cf35750610cec61028c89600001518c611fbf565b1515841515145b610d655760405162461bcd60e51b815260206004820152602660248201527f6c65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b610d7961028c8c60ff168a60600151611fd5565b1515841515148015610da15750610d9a61028c89604001518c60ff16611feb565b1515841515145b610e135760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610e2761028c8c60ff168a60a00151612000565b1515841515148015610e4f5750610e4861028c89608001518c60ff16612016565b1515841515145b610ec15760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610ed561028c8c60ff168a60e0015161202c565b1515841515148015610efd5750610ef661028c8960c001518c60ff16612042565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b600080610f7f836000015161184a565b9050610f8e836020015161184a565b1515811515148015610faf5750610fa8836040015161184a565b1515811515145b8015610fca5750610fc3836080015161184a565b1515811515145b8015610fe55750610fde836060015161184a565b1515811515145b80156110005750610ff98360c0015161184a565b1515811515145b801561085857506108518360a0015161184a565b600061105e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61108260405180606001604052806000815260200160008152602001600081525090565b6110b46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6110f46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110ff8488886116fd565b600061111661028c86600001518760200151612058565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000831515021790556040860151606087015191925061115d9161206d565b8452845160608601516111709190612082565b84602001818152505061118b85604001518660200151612098565b6040850152600061119b85610818565b9050811515811515146111f05760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203136206661696c65640000000000000000006044820152606401610362565b61120286608001518760a001516120ae565b8452855160a087015161121591906120c3565b846020018181525050611230866080015187602001516120d9565b84604001818152505061124b86604001518760a001516120ef565b84606001818152505061126686608001518760600151612105565b608085015260006112768561168e565b9050801515831515146112cb5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203332206661696c65640000000000000000006044820152606401610362565b6112dd8760c001518860e0015161211b565b8452865160e08801516112f09190612130565b84602001818152505061130b8760c001518860200151612146565b84604001818152505061132687604001518860e0015161215c565b8460600181815250506113418760c001518860600151612172565b84608001818152505061135c87608001518860e00151612188565b8460a00181815250506113778760c001518860a0015161219e565b60c0850152600061138785610f6f565b9050801515841515146113dc5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203634206661696c65640000000000000000006044820152606401610362565b6113ed61028c8c8a602001516121b4565b1515841515148015611412575061140b61028c89600001518c6121c9565b1515841515145b6114845760405162461bcd60e51b815260206004820152602760248201527f6c6574546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61149861028c8c60ff168a606001516121df565b15158415151480156114c057506114b961028c89604001518c60ff166121f5565b1515841515145b6115325760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b61154661028c8c60ff168a60a0015161220a565b151584151514801561156e575061156761028c89608001518c60ff16612220565b1515841515145b6115e05760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b6115f461028c8c60ff168a60e00151612236565b151584151514801561161c575061161561028c8960c001518c60ff1661224c565b1515841515145b6108095760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b60008061169e836000015161184a565b90506116ad836020015161184a565b15158115151480156116ce57506116c7836040015161184a565b1515811515145b80156116e957506116e2836080015161184a565b1515811515145b80156108585750610851836060015161184a565b61170682612262565b835261171181612262565b602084015261172260ff831661230a565b604084015261173360ff821661230a565b606084015261174460ff8316612374565b608084015261175560ff8216612374565b60a084015261176660ff83166123e0565b60c084015261177760ff82166123e0565b60e0909301929092525050565b60006064636d82e45e61179960018085612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906127af565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906127af565b15159392505050565b60006064636d82e45e61179960028085612450565b60006064636d82e45e6117996001600285612450565b60006064636d82e45e6117996002600185612450565b60006064636d82e45e61179960038085612450565b60006064636d82e45e6117996001600385612450565b60006064636d82e45e6117996003600185612450565b60006064636d82e45e6117996002600385612450565b60006064636d82e45e6117996003600285612450565b60006064636d82e45e61179960048085612450565b60006064636d82e45e6117996001600485612450565b60006064636d82e45e6117996004600185612450565b60006064636d82e45e6117996002600485612450565b60006064636d82e45e6117996004600285612450565b60006064636d82e45e6117996003600485612450565b60006064636d82e45e6117996004600385612450565b60006064636d82e45e611a3760018080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611800565b60006064636d82e45e611aba6001806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611800565b60006064636d82e45e611b3d6002806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611800565b60006064636d82e45e611bc060028080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611800565b60006064636d82e45e611c446003806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611cca6003806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611800565b60006064636d82e45e611d506004806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611dda6004806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611800565b6000606463145fca2c61179960018085612450565b6000606463145fca2c61179960028085612450565b6000606463145fca2c6117996001600285612450565b6000606463145fca2c6117996002600185612450565b6000606463145fca2c61179960038085612450565b6000606463145fca2c6117996001600385612450565b6000606463145fca2c6117996003600185612450565b6000606463145fca2c6117996002600385612450565b6000606463145fca2c6117996003600285612450565b6000606463145fca2c61179960048085612450565b6000606463145fca2c6117996001600485612450565b6000606463145fca2c6117996004600185612450565b6000606463145fca2c6117996002600485612450565b6000606463145fca2c6117996004600285612450565b6000606463145fca2c6117996003600485612450565b6000606463145fca2c6117996004600385612450565b6000606463145fca2c611a3760018080612450565b6000606463145fca2c611aba6001806002612450565b6000606463145fca2c611b3d6002806001612450565b6000606463145fca2c611bc060028080612450565b6000606463145fca2c611c446003806001612450565b6000606463145fca2c611cca6003806002612450565b6000606463145fca2c611d506004806001612450565b6000606463145fca2c611dda6004806002612450565b6000606463dd14869361179960018085612450565b6000606463dd14869361179960028085612450565b6000606463dd1486936117996001600285612450565b6000606463dd1486936117996002600185612450565b6000606463dd14869361179960038085612450565b6000606463dd1486936117996001600385612450565b6000606463dd1486936117996003600185612450565b6000606463dd1486936117996002600385612450565b6000606463dd1486936117996003600285612450565b6000606463dd14869361179960048085612450565b6000606463dd1486936117996001600485612450565b6000606463dd1486936117996004600185612450565b6000606463dd1486936117996002600485612450565b6000606463dd1486936117996004600285612450565b6000606463dd1486936117996003600485612450565b6000606463dd1486936117996004600385612450565b6000606463dd148693611a3760018080612450565b6000606463dd148693611aba6001806002612450565b6000606463dd148693611b3d6002806001612450565b6000606463dd148693611bc060028080612450565b6000606463dd148693611c446003806001612450565b6000606463dd148693611cca6003806002612450565b6000606463dd148693611d506004806001612450565b6000606463dd148693611dda6004806002612450565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f091906127af565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016122c7565b6000816002811115612464576124646127c8565b60ff16600884600481111561247b5761247b6127c8565b61ffff16901b61ffff166010866004811115612499576124996127c8565b62ffffff16901b171760e81b949350505050565b803560ff811681146124be57600080fd5b919050565b600080604083850312156124d657600080fd5b6124df836124ad565b91506124ed602084016124ad565b90509250929050565b604051610100810167ffffffffffffffff81118282101715612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561255957600080fd5b6040516060810181811067ffffffffffffffff821117156125a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156125dc57600080fd5b60405160e0810181811067ffffffffffffffff82111715612626577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561268757600080fd5b60405160a0810181811067ffffffffffffffff821117156126d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561272357600080fd5b6101008082121561273357600080fd5b61273b6124f6565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506127958187016124ad565b935050506127a661012085016124ad565b90509250925092565b6000602082840312156127c157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220087cd92e434ff2aa59e2d3775048ef76f83cdb8fb111e5e5d84fcb56df26fcf964736f6c63430008130033";
336
336
 
337
337
  type Comparison1TestsContractConstructorParams =
338
338
  | [signer?: Signer]