// This file was autogenerated by Hardhat, do not edit it. // prettier-ignore // tslint:disable // eslint-disable // biome-ignore format: see above export interface BaseZKHonkVerifier$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "BaseZKHonkVerifier"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: [{"inputs":[],"name":"ConsistencyCheckFailed","type":"error"},{"inputs":[],"name":"GeminiChallengeInSubgroup","type":"error"},{"inputs":[],"name":"ProofLengthWrong","type":"error"},{"inputs":[{"internalType":"uint256","name":"logN","type":"uint256"},{"internalType":"uint256","name":"actualLength","type":"uint256"},{"internalType":"uint256","name":"expectedLength","type":"uint256"}],"name":"ProofLengthWrongWithLogN","type":"error"},{"inputs":[],"name":"PublicInputsLengthWrong","type":"error"},{"inputs":[],"name":"ShpleminiFailed","type":"error"},{"inputs":[],"name":"SumcheckFailed","type":"error"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}],"name":"verify","outputs":[{"internalType":"bool","name":"verified","type":"bool"}],"stateMutability":"view","type":"function"}]; readonly bytecode: "0x"; readonly deployedBytecode: "0x"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface CommitmentSchemeLib$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "CommitmentSchemeLib"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: []; readonly bytecode: "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface DkgAggregatorVerifier$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "DkgAggregatorVerifier"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: [{"inputs":[],"name":"ConsistencyCheckFailed","type":"error"},{"inputs":[],"name":"GeminiChallengeInSubgroup","type":"error"},{"inputs":[],"name":"ProofLengthWrong","type":"error"},{"inputs":[{"internalType":"uint256","name":"logN","type":"uint256"},{"internalType":"uint256","name":"actualLength","type":"uint256"},{"internalType":"uint256","name":"expectedLength","type":"uint256"}],"name":"ProofLengthWrongWithLogN","type":"error"},{"inputs":[],"name":"PublicInputsLengthWrong","type":"error"},{"inputs":[],"name":"ShpleminiFailed","type":"error"},{"inputs":[],"name":"SumcheckFailed","type":"error"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}],"name":"verify","outputs":[{"internalType":"bool","name":"verified","type":"bool"}],"stateMutability":"view","type":"function"}]; readonly bytecode: "0x61012060405234801561001157600080fd5b50622000006080819052601560a08190527f1c0a60837c2a1d7cc5e62a5a531d6d1e4e9685388506a78f7c0bb201eef5ad9660c0819052601f60e081905260038361005e6001602461008b565b610068919061008b565b610072919061008b565b61007d90600261008b565b61010052506100b292505050565b808201808211156100ac57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05160c05160e05161010051615dab61015360003960008181610c7601528181610cdc0152612eba0152600081816101b6015261091301526000610194015260008181605f01528181609801528181610106015281816101d801528181610a4601528181610bad01528181610c4c0152818161154f0152818161160c015281816116400152818161184b0152612bb4015260005050615dab6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ea50d0e414610030575b600080fd5b61004361003e366004615555565b610057565b604051901515815260200160405180910390f35b6000806100837f00000000000000000000000000000000000000000000000000000000000000006102f7565b905061009081602061563a565b85146100f1577f0000000000000000000000000000000000000000000000000000000000000000856100c383602061563a565b6040516359895a5360e01b815260048101939093526024830191909152604482015260640160405180910390fd5b60006100fb610405565b9050600061012a88887f000000000000000000000000000000000000000000000000000000000000000061041a565b90506010826040015161013d9190615651565b851461015c5760405163fa06659360e01b815260040160405180910390fd5b60405163995bf45760e01b815260009073__$10134447bc2c864421ebc5815937d45ef9$__9063995bf457906102009085908b908b907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906004016157d9565b610be060405180830381865af415801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190615aef565b905061029387878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050855185516060810151608090910151919350915060016108ba565b815160a001526102a38282610a27565b6102c0576040516313f8744360e31b815260040160405180910390fd5b6102cb828483610c36565b6102e8576040516352ec174560e11b815260040160405180910390fd5b50600198975050505050505050565b600080600261030860016008615b9f565b610312919061563a565b90506103206002600361563a565b61032a9082615b9f565b9050600161033960098561563a565b610343919061563a565b61034d9082615b9f565b9050600161035c816029615b9f565b610366919061563a565b6103709082615b9f565b905061037e6001600261563a565b6103889082615b9f565b905061039560018461563a565b61039f9082615b9f565b90506103ad6001600461563a565b6103b79082615b9f565b905060026103c6600185615651565b6103d0919061563a565b6103da9082615b9f565b90506103e760028061563a565b6103f19082615b9f565b90506103fe601082615b9f565b9392505050565b61040d615071565b610415611c4d565b905090565b6104226151fe565b6000805b601081101561048557610452868387610440602083615b9f565b9261044d93929190615bb2565b612587565b8351826010811061046557610465615bdc565b60200201818152505060208261047b9190615b9f565b9150600101610426565b506104a9858286610497604083615b9f565b926104a493929190615bb2565b61259b565b60208301526104b9604082615b9f565b90506104cc858286610497604083615b9f565b6040808401919091526104df9082615b9f565b90506104f2858286610497604083615b9f565b6060830152610502604082615b9f565b9050610515858286610497604083615b9f565b6080830152610525604082615b9f565b9050610538858286610497604083615b9f565b60c0830152610548604082615b9f565b905061055b858286610497604083615b9f565b60e083015261056b604082615b9f565b905061057e858286610497604083615b9f565b60a083015261058e604082615b9f565b90506105a1858286610497604083615b9f565b6101008301526105b2604082615b9f565b90506105c5858286610497604083615b9f565b6101208301526105d6604082615b9f565b90506105e9858286610497604083615b9f565b610140830151526105fb604082615b9f565b905061060e858286610440602083615b9f565b61016083015261061f602082615b9f565b905060005b8381101561069f5760005b600981101561069657610649878488610440602083615b9f565b84610180015183601c811061066057610660615bdc565b6020020151826009811061067657610676615bdc565b60200201818152505060208361068c9190615b9f565b925060010161062f565b50600101610624565b5060005b6106af60016029615b9f565b8110156106fe576106c7868387610440602083615b9f565b836101c0015182602a81106106de576106de615bdc565b6020020181815250506020826106f49190615b9f565b91506001016106a3565b50610710858286610440602083615b9f565b6101a0830152610721602082615b9f565b9050610734858286610497604083615b9f565b61014083015160200152610749604082615b9f565b905061075c858286610497604083615b9f565b61014083015160026020020152610774604082615b9f565b905060005b610784600185615651565b8110156107cd5761079c868387610497604083615b9f565b836101e0015182601b81106107b3576107b3615bdc565b60200201526107c3604083615b9f565b9150600101610779565b5060005b83811015610821576107ea868387610440602083615b9f565b83610200015182601c811061080157610801615bdc565b6020020181815250506020826108179190615b9f565b91506001016107d1565b5060005b60048110156108765761083f868387610440602083615b9f565b836102200151826004811061085657610856615bdc565b60200201818152505060208261086c9190615b9f565b9150600101610825565b50610888858286610497604083615b9f565b610240830152610899604082615b9f565b90506108ac858286610497604083615b9f565b610260830152509392505050565b6000600180826108e8866108e3896108de6108d98a6310000000615b9f565b612620565b61263a565b612657565b90506000610907876109028a6108de6108d98b6001615b9f565b612672565b905060005b61093760107f0000000000000000000000000000000000000000000000000000000000000000615651565b8110156109a55760006109628c838151811061095557610955615bdc565b602002602001015161269d565b9050610972866108de8684612657565b9550610982856108de8584612657565b945061098e848b612657565b935061099a838b612672565b92505060010161090c565b5060005b6010811015610a0e5760008a82601081106109c6576109c6615bdc565b602002015190506109db866108de8684612657565b95506109eb856108de8584612657565b94506109f7848b612657565b9350610a03838b612672565b9250506001016109a9565b50610a1984846126b4565b9a9950505050505050505050565b600080610a3d836060015185610160015161263a565b9050600160005b7f0000000000000000000000000000000000000000000000000000000000000000811015610b3357600086610180015182601c8110610a8557610a85615bdc565b60200201518051909150600090610aa4908360015b6020020151612657565b9050848114610ac6576040516313f8744360e31b815260040160405180910390fd5b6000876080015184601c8110610ade57610ade615bdc565b60200201519050610aef83826126c3565b9550610b23856108de60016108e3856108de8e604001518b601c8110610b1757610b17615bdc565b60200201516001612672565b9450505050806001019050610a44565b50610b3c6152e3565b60005b6029811015610b8d576101c0870151610b59600183615b9f565b602a8110610b6957610b69615bdc565b6020020151828260298110610b8057610b80615bdc565b6020020152600101610b3f565b506000610ba482876000015188602001518661282b565b9050600160025b7f0000000000000000000000000000000000000000000000000000000000000000811015610c0157610bf782896080015183601c8110610bed57610bed615bdc565b602002015161263a565b9150600101610bab565b50610c27610c14836108de600185612672565b6108e38a6101a001518a6060015161263a565b94909414979650505050505050565b6000610c40615302565b6000610c708460c001517f00000000000000000000000000000000000000000000000000000000000000006128a5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160401b03811115610cac57610cac615995565b604051908082528060200260200182016040528015610cd5578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160401b03811115610d1257610d12615995565b604051908082528060200260200182016040528015610d4b57816020015b610d3861537d565b815260200190600190039081610d305790505b509050610d7f610d7a87610100015185600081518110610d6d57610d6d615bdc565b6020026020010151612672565b612970565b84610120018181525050610db5610d7a87610100015185600081518110610da857610da8615bdc565b6020026020010151612657565b610140850181905261012085015160e0880151610dd6926108e3919061263a565b845260c0860151610e0690610dea90612970565b6108de8661012001516109028a60e0015189610140015161263a565b602085015281516001908390600090610e2157610e21615bdc565b60200260200101818152505087610240015181600081518110610e4657610e46615bdc565b6020908102919091010152600160a0850152600060c08501528351610e6a906129e7565b60408501526020840151610e7d906129e7565b606085015260015b610e9160016024615b9f565b8111610f3257610ea985604001518660a0015161263a565b838281518110610ebb57610ebb615bdc565b602002602001018181525050610f048560c001516108e38b6101c00151600185610ee59190615651565b602a8110610ef557610ef5615bdc565b60200201518860a0015161263a565b60c086015260a08086015190880151610f1d919061263a565b60a0860152610f2b81615bf2565b9050610e85565b5060005b600581101561100e576000610f4c601e83615b9f565b90506000610f5c60016024615b9f565b610f669084615b9f565b9050610f97858381518110610f7d57610f7d615bdc565b60200260200101516108e389606001518a60a0015161263a565b858381518110610fa957610fa9615bdc565b602002602001018181525050610fe68760c001516108e38d6101c0015184602a8110610fd757610fd7615bdc565b60200201518a60a0015161263a565b60c088015260a080880151908a0151610fff919061263a565b60a08801525050600101610f36565b5087602001518160018151811061102757611027615bdc565b602002602001018190525086606001518160028151811061104a5761104a615bdc565b602002602001018190525086608001518160038151811061106d5761106d615bdc565b60200260200101819052508660a001518160048151811061109057611090615bdc565b60200260200101819052508660c00151816005815181106110b3576110b3615bdc565b60200260200101819052508660e00151816006815181106110d6576110d6615bdc565b6020026020010181905250866101000151816007815181106110fa576110fa615bdc565b60200260200101819052508661012001518160088151811061111e5761111e615bdc565b60200260200101819052508661014001518160098151811061114257611142615bdc565b602002602001018190525086610160015181600a8151811061116657611166615bdc565b6020026020010181905250866101c0015181600b8151811061118a5761118a615bdc565b602002602001018190525086610180015181600c815181106111ae576111ae615bdc565b6020026020010181905250866101a0015181600d815181106111d2576111d2615bdc565b6020026020010181905250866101e0015181600e815181106111f6576111f6615bdc565b602002602001018190525086610200015181600f8151811061121a5761121a615bdc565b60200260200101819052508661022001518160108151811061123e5761123e615bdc565b60200260200101819052508661024001518160118151811061126257611262615bdc565b60200260200101819052508661026001518160128151811061128657611286615bdc565b6020026020010181905250866102800151816013815181106112aa576112aa615bdc565b6020026020010181905250866102a00151816014815181106112ce576112ce615bdc565b6020026020010181905250866102c00151816015815181106112f2576112f2615bdc565b6020026020010181905250866102e001518160168151811061131657611316615bdc565b60200260200101819052508661030001518160178151811061133a5761133a615bdc565b60200260200101819052508661032001518160188151811061135e5761135e615bdc565b60200260200101819052508661034001518160198151811061138257611382615bdc565b602002602001018190525086610360015181601a815181106113a6576113a6615bdc565b602002602001018190525086610380015181601b815181106113ca576113ca615bdc565b6020026020010181905250866103a0015181601c815181106113ee576113ee615bdc565b6020026020010181905250866103c0015181601d8151811061141257611412615bdc565b6020026020010181905250876040015181601e8151811061143557611435615bdc565b6020026020010181905250876060015181601f8151811061145857611458615bdc565b602002602001018190525087608001518160208151811061147b5761147b615bdc565b60200260200101819052508760a001518160218151811061149e5761149e615bdc565b6020026020010181905250876101200151816022815181106114c2576114c2615bdc565b6020026020010181905250876101000151816023815181106114e6576114e6615bdc565b60200260200101819052508760c001518160248151811061150957611509615bdc565b60200260200101819052508760e001518160258151811061152c5761152c615bdc565b6020026020010181905250600061157387608001518660c001518b6102000151877f00000000000000000000000000000000000000000000000000000000000000006129fa565b905061159e8160008151811061158b5761158b615bdc565b602002602001015186610120015161263a565b608086018190526102008a01515160e08901516115cf92916108e3916115c4919061263a565b88610140015161263a565b608086015260e08701516115e290612b5c565b60a086015260006115f560016024615b9f565b611600906001615b9f565b905060005b61163060017f0000000000000000000000000000000000000000000000000000000000000000615651565b81101561184357600061166460017f0000000000000000000000000000000000000000000000000000000000000000615651565b8210159050806117d457611698610d7a8b6101000151898560016116889190615b9f565b81518110610d6d57610d6d615bdc565b6101208901526101008a01516116c890610d7a90896116b8866001615b9f565b81518110610da857610da8615bdc565b61014089015260a08801516101208901516116e3919061263a565b61016089015260a088015160e08b015161170b916117009161263a565b89610140015161263a565b610180890181905261172e90611720906129e7565b6108e38a61016001516129e7565b866117398486615b9f565b8151811061174957611749615bdc565b60200260200101818152505060006117838961018001518e61020001518560016117739190615b9f565b601c8110610bed57610bed615bdc565b90506117bd816108e38b6101600151888760016117a09190615b9f565b815181106117b0576117b0615bdc565b602002602001015161263a565b90506117cd896080015182612657565b60808a0152505b6117f36117e98960a001518c60e0015161263a565b8b60e0015161263a565b60a08901526101e08c015182601b811061180f5761180f615bdc565b60200201518561181f8486615b9f565b8151811061182f5761182f615bdc565b602090810291909101015250600101611605565b5061186f60017f0000000000000000000000000000000000000000000000000000000000000000615651565b6118799082615b9f565b90506118996118918961010001518a60c00151612672565b6001906126b4565b60e08701515261010088015160c08901516118dd9161189191610902907f07b0c561a6148404f086204a9f36ffb0617942546750f230c893619174a57a769061263a565b60e0878101805160200192909252815180516040909101529051805160609091015260a08701519089015161191f916119159161263a565b8960e0015161263a565b60a087015260005b60048110156119cf57600061195a8860e00151836004811061194b5761194b615bdc565b60200201518960a0015161263a565b9050611965816129e7565b886101000151836004811061197c5761197c615bdc565b602002015260a088015160e08b0151611995919061263a565b8860a00181815250506119c188608001516108e3838f61022001518660048110610bed57610bed615bdc565b608089015250600101611927565b506101008601515184518590839081106119eb576119eb615bdc565b60209081029190910181019190915261010087015190810151611a0f916002610a9a565b84611a1b836001615b9f565b81518110611a2b57611a2b615bdc565b60209081029190910101526101008601516060015184611a4c836002615b9f565b81518110611a5c57611a5c615bdc565b60200260200101818152505060005b6003811015611ac0578a61014001518160038110611a8b57611a8b615bdc565b60200201518483611a9b81615bf2565b945081518110611aad57611aad615bdc565b6020908102919091010152600101611a6b565b506040518060400160405280600181526020016002815250838281518110611aea57611aea615bdc565b60200260200101819052508560800151848280611b0690615bf2565b935081518110611b1857611b18615bdc565b602002602001018181525050611b428a61022001518960c001518a608001518d6101a00151612b68565b611b5f5760405163a2a2ac8360e01b815260040160405180910390fd5b60008a6102600151905080848381518110611b7c57611b7c615bdc565b6020026020010181905250886101000151858381518110611b9f57611b9f615bdc565b602002602001018181525050611bb3615397565b611bbd8587612eb0565b8152611bc882612fa9565b602082018190528c518251600092611be1929190612ff1565b9050600080611bf38f60000151613084565b91509150611c0082613145565b611c0981613145565b8351611c169083856131aa565b84526020840151611c289082856131aa565b602085018190528451611c3a916131d9565b9f9e505050505050505050505050505050565b611c55615071565b50604080516103e0810182526220000081526015602080830191909152601f82840152825180840184527f104aa9b4476927b9c3df51c532b1cae7b87f5b7ab9373da43777be83108dbca781527f1cd279d089fb417574bdfff9320b8ef459196f7841d15f10ef03e78999520fe6818301526060830152825180840184527f2749c7c3188e135b4baacb08abda70578c43ba2793c2e376adebc8f5e092a1cb81527f02e6a616a7cd3b2c2107c830a18f766f558c5a56e2fe560de4216cb42bbe4095818301526080830152825180840184527f1d906d083872617485399605e6b8d7e0eea0a10f71271b8c59adf24cc8339be781527f26cad07a2734aa9aee4ce7b358d3043b357b9c91a96529d54f52520050342e9a8183015260a0830152825180840184527f246cfefd937a61df24c91a5f3fe31de8e7ce3f17837637c0e1f55e5889f58c7781527f11bed90de8b7c6acb3b363d70850528c89b62b73d9f9b83a2ca30bce346bad948183015260c0830152825180840184527f0e932b810103be7429befc3ade0b3c06617473d69778daad01d4b62e6ea8950781527f1b808239e3a1eca0011029525cc8fbfa471341d8d94df76b1c17718216f5eeda8183015260e0830152825180840184527f0c18563d13b6db7effc22340fc74a2e7b2f9dbb0b42d3f0acc47331f3558dae981527f2ff93536486524c1c58a883b55284b278c7efdafc5b41808d88fce3243b11d6981830152610100830152825180840184527f182070aa2b03de9e8b4cada6a0760a0c6c72852783e7db97b4cd91281c03d3ea81527f08c55ecc2b52f5393505462ae16474727d81f865b293adee900644436146a8e181830152610120830152825180840184527f2efb699f4c4dbbd9ec2552bfd41f42f8a5e958cc50ff9dc953be33140272458a81527f06c6d7d7d0a685224f444ac30d3fa678760361d759abc9e7a229ea8979703e6181830152610140830152825180840184527f019002e97cd41dd882e373b2bc79c3cad6a400244ff1e80aae06c0b1186b1e2081527f1fef3eed64626bfd4a793a5330d1eebc6af338a1814c237fae0dc532abe6203a81830152610160830152825180840184527f1954e635e980037fb7bc3c25c450d12a9a19837e01e3f1d479d51728bb70af6b81527f2ce76f6c6fe16633bf7c675281759908490fed6ff2829e8997513eb4fcf56f5381830152610180830152825180840184527f077d3f2336940aec76438f6c30edddd2e751c56a72ffaf64e9ef476f524daa2c81527f04b61eb1f9b0837bcc0714bb3c00c190349dacb7ccaab86a6027b910dd2309e0818301526101a0830152825180840184527f2d867487b60acfaa537feeae0185cfbcb84315e1f9d8eb13e33fcee51e35cc4d81527f231c0fe3f3de4990752e61ac8897498223d1cc527808376a7ab250c61b48e170818301526101c0830152825180840184527f24a3cef3397bef0d207ce03d64d77ea0a7dabde143471d98cd7360b7685a90b781527f165894aaaf725b36f72e71880ff23c78ffa1b757304b00b94c56f7e9886936ce818301526101e0830152825180840184527f24bf2806f2e4fdb9a4728a47a888038a8602f1a564cce5439d8a0c89eb04b35181527f21002a27f9d4cb5b284ad2b3c83e2956e1ecdef6ab8ad07b085a429f82374a7781830152610200830152825180840184527f1b1656cadd0b2ab6f8a6e5e22d0dec012d95f87e22432d4acfa44d027259618981527f283c907c7278fa3fce6eeadeaaa9c48f7ab8211c94882f851c9fdcabdbac1bdc81830152610220830152825180840184527f23f558a747590ffc98f1cec61982a939c17078fb8597d196c5f71436f613539381527f0bb3abcbf063633ba4de4a51dec092e6f79c64cf48340c2bb149bd340cc95e9c81830152610240830152825180840184527f120874be1571c176bdb51bf3357b34f678084ba91f8d644019ce9cf69f81953781527f0b28eef919110795820b3818e697556033489a739c2056801c36b3e15b7a16ea81830152610260830152825180840184527f2face01c0f73016a476cdae4e8825f315ed329847cf15c2f1c46a270cf1cdbab81527f09d51e6255090c8a48ef74e1d2f20a6becf2b22811e77308559545471bbf9f9281830152610280830152825180840184527eefe1593a923558e7779f10e4753794a59ad0dcc02df6790b72346175b1b7b981527f28b0744e7ea51d27a2624e7ffe4ccae8f3c9c6350131555ceedb42078a229a3c818301526102a0830152825180840184527f0f28ce7d149491697d292002785ff24f6089b458ea01234e4af8eda65b9dd26681527f24519d3dab7ba27bcf50279756292c7052edff4183446b2ae85617e6dff01883818301526102c0830152825180840184527f27ae1958d5100a4fbe5ae016fdac9ea54c5c4172cc798a38d3f8730c5f481a5d81527f2e28100a9463b43a586fb70dfe15c841ddbd30703149bd5d9fb7273d520554c5818301526102e0830152825180840184527f072921e4c634152a135b6fcd0c5cadfa66f780284592d1f3262fa04128f7ba6a81527f0bfd2eec92d6aad31ca352447ca9a9e69eb7a2465f9741f67ea75c5622d14e0281830152610300830152825180840184527f0bed9c3687f3524dbbb6410842f20eb0d87d1915348d97dd74ce9df8681fb03c81527f061cf87194c9b570a8d060c9dfed139083f2aedc80da0d97d390d72f5cc7557981830152610320830152825180840184527f0441aaeda5bb8ccbef2c72be215aacd45db72650f5a9855820447b241f57c88781527f27e4f80d4673c2dc9bc21386edf443e8f74d4cff7b89fb2c34c0bcca5008d9d881830152610340830152825180840184527f17161957b5bea1c4b6cd7dd7a0b530aae4907cffac5801fff85ba8e4c3fa3f2f81527f14669badaf49b0e6aaa983ac2a20378e7c5ac3b4141284ca01124c3dd33589f781830152610360830152825180840184527f1e10d6c8482b99a03f78a2028bb33719c19bc62fa08e1d548059b139388532e681527f0139852d1968d8a0c11ba44db1553094224570b77f987b01a73781e265365cea8183015261038083015282518084018452600181526002818301526103a083015282518084019093527f1f248647726750901d3e276b8a1d386600b913a3924d5bbc43cb896f4002440083527f20c67ede3b2a84a692458ecf65ad55a687027c57f4eca98eb419ea3b79f669c1908301526103c081019190915290565b60006103fe6125968385615c0b565b61269d565b6125a361537d565b6040805180820190915280600080516020615d1f8339815191526125cb602060008789615bb2565b6125d491615c0b565b6125de9190615c29565b8152602090810190600080516020615d1f83398151915290612604906040908789615bb2565b61260d91615c0b565b6126179190615c29565b90529392505050565b6000600080516020615d5f833981519152825b0692915050565b6000600080516020615d5f83398151915282840990505b92915050565b6000600080516020615d5f8339815191528284089392505050565b6000600080516020615d5f83398151915282600080516020615d5f8339815191520384089392505050565b6000600080516020615d5f83398151915282612633565b60006103fe836108de84612970565b600080604051806101200160405280619d808152602001600080516020615d7f83398151915281526020016105a08152602001600080516020615cff83398151915281526020016102408152602001600080516020615cff83398151915281526020016105a08152602001600080516020615d7f8339815191528152602001619d80815250905060006001905060005b60098110156127745761276a826108de8784612672565b9150600101612753565b5061277d6153aa565b60005b60098110156127cf576127b0610d7a8583600981106127a1576127a1615bdc565b60200201516108de8985612672565b8282600981106127c2576127c2615bdc565b6020020152600101612780565b5060005b60098110156128165761280c856108e38984600981106127f5576127f5615bdc565b6020020151858560098110610bed57610bed615bdc565b94506001016127d3565b50612821848361263a565b9695505050505050565b60006128356153c9565b6128408682856133d2565b61284c86868386613583565b61285886868386613774565b6128638682856139a6565b61286e868285613ba4565b61287a86868386613f09565b6128858682856143cb565b6128908682856147e8565b61289b868285614bba565b6128218185614ec7565b60606000826001600160401b038111156128c1576128c1615995565b6040519080825280602002602001820160405280156128ea578160200160208202803683370190505b509050838160008151811061290157612901615bdc565b602090810291909101015260015b838110156129685761294382612926600184615651565b8151811061293657612936615bdc565b6020026020010151612b5c565b82828151811061295557612955615bdc565b602090810291909101015260010161290f565b509392505050565b600080829050600060405160208152602080820152602060408201528260608201526002600080516020615d5f833981519152036080820152600080516020615d5f83398151915260a08201526020600060c08360055afa806129d257600080fd5b50600051608091909101604052949350505050565b600080516020615d5f8339815191520390565b60606000826001600160401b03811115612a1657612a16615995565b604051908082528060200260200182016040528015612a3f578160200160208202803683370190505b509050825b8015612b5157600085612a58600184615651565b81518110612a6857612a68615bdc565b60200260200101519050600089600184612a829190615651565b601c8110612a9257612a92615bdc565b602002015190506000612aee612ab2612aab858d61263a565b600261263a565b6109028b612ac1600189615651565b601c8110612ad157612ad1615bdc565b60200201516108de612ae8886108de60018a612672565b87612672565b9050612b0f816108de610d7a612b09876108de600189612672565b86612657565b99508990508085612b21600187615651565b81518110612b3157612b31615bdc565b60200260200101818152505050505080612b4a90615c4b565b9050612a44565b509695505050505050565b6000612651828361263a565b6000600181612b82612b7c87610100614f20565b83612672565b905080612ba25760405163835eb8f760e01b815260040160405180910390fd5b612baa6153e8565b805183905260005b7f0000000000000000000000000000000000000000000000000000000000000000811015612c97576000612be782600961563a565b612bf2906001615b9f565b9050848360000151826101008110612c0c57612c0c615bdc565b60200201526000612c1e826001615b9f565b90505b612c2c600983615b9f565b811015612c8d578351612c6c90612c44600184615651565b6101008110612c5557612c55615bdc565b60200201518a85601c8110610bed57610bed615bdc565b8451826101008110612c8057612c80615bdc565b6020020152600101612c21565b5050600101612bb2565b50608081018390526000602082018190525b610100811015612d9857612cca612cc483608001518a61263a565b85612672565b8260a00151826101008110612ce157612ce1615bdc565b602002015260a0820151612d0b90826101008110612d0157612d01615bdc565b6020020151612970565b8260a00151826101008110612d2257612d22615bdc565b602002018181525050612d6982602001516108e38460000151846101008110612d4d57612d4d615bdc565b60200201518560a00151856101008110610bed57610bed615bdc565b60208301526080820151612d8b90600080516020615d3f83398151915261263a565b6080830152600101612ca9565b506000612daa836108de610100612970565b9050612dba82602001518261263a565b602083015260a0820151612dd69060005b60200201518261263a565b604083015260a0820151612e0290612df16001610100615651565b6101008110612dcb57612dcb615bdc565b60608301526040820151612e18908a6002610bed565b60c08301819052612e66906108e3612e3e8b600080516020615d3f833981519152612672565b60208d015160408e01516108de91612e5591612672565b8e516020890151610902919061263a565b60c083018190526060830151612e9b91612e8f916108e3906108de8e600260200201518c612672565b610902858c6003610bed565b60c08301819052159998505050505050505050565b612eb861537d565b7f000000000000000000000000000000000000000000000000000000000000000060005b81811015612f0e57612f06858281518110612ef957612ef9615bdc565b6020026020010151613145565b600101612edc565b50604051600190815b60018401811015612f735760208102870160208202870181515160408501528151602001516060850152805160808501525050604080830160606040850160075afa8316925060408260808460065afa90921691600101612f17565b5080518452602081015160208501525080612fa1576040516352ec174560e11b815260040160405180910390fd5b505092915050565b612fb161537d565b600080516020615d1f8339815191528260200151600080516020615d1f833981519152612fde9190615651565b612fe89190615c29565b60208301525090565b6000806000612fff86613084565b9150915061300b615431565b82518152602080840151818301528251604080840191909152838201516060840152875160808401528782015160a0840152865160c08401528682015160e0840152516130799161305e91849101615c62565b6040516020818303038152906040528051906020012061269d565b979650505050505050565b61308c61537d565b61309461537d565b82516020808501516040860151606087015160cc90811b608892831b604494851b90961795909517949094178652608087015160a088015160c089015160e08a0151871b90841b91851b9092171717868401526101008701516101208801516101408901516101608a0151871b90841b91851b909217171785526101808701516101a08801516101c08901516101e09099015190951b9790911b9390911b1791909117939093179281019290925291565b805160208201516000600080516020615d1f833981519152838009600080516020615d1f8339815191526003600080516020615d1f83398151915283870908600080516020615d1f83398151915284850914915050806131a457600080fd5b50505050565b6131b261537d565b6131ba61537d565b6131c48386614f87565b90506131d08185614fde565b95945050505050565b81516020808401518351848301516040805194850195909552938301919091527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c260608301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60808301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60a08301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60c083015260e08201526101008101919091527f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c16101208201527f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b06101408201527f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe46101608201527f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5561018082015260009081906101a001604051602081830303815290604052905060008060086001600160a01b0316836040516133719190615c97565b600060405180830381855afa9150503d80600081146133ac576040519150601f19603f3d011682016040523d82523d6000602084013e6133b1565b606091505b50915091508180156128215750808060200190518101906128219190615cc6565b60006133df846007615040565b90507f183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000000600061344261343c613415856003612672565b6108de6134316134268b6000615040565b6108de8c601d615040565b6108de8b601c615040565b8361263a565b90506134c36134b861349f61348661346d856108e36134628d6002615040565b6108de8e601c615040565b6108e361347b8c6003615040565b6108de8d601d615040565b6108e36134948b6004615040565b6108de8c601e615040565b6108e36134ad8a6005615040565b6108de8b601f615040565b6108e3886001615040565b90506134e2816108e36134d7866001612672565b6108de8a6027615040565b90506134ee818461263a565b90506134fa818561263a565b8552506000905061353661352b61352061351588601c615040565b6108e389601f615040565b610902886024615040565b6108e3876000615040565b9050613547816108de846002612672565b9050613558816108de846001612672565b9050613564818361263a565b9050613570818461263a565b9050808460015b60200201525050505050565b60008060006135bb6135b161359989601c615040565b6108e36135a78b6012615040565b8a6060015161263a565b8760800151612657565b90506135f4816108de6135ea6135d28b601d615040565b6108e36135e08d6013615040565b8c6060015161263a565b8960800151612657565b9050613619816108de6135ea61360b8b601e615040565b6108e36135e08d6014615040565b905061363e816108de6135ea6136308b601f615040565b6108e36135e08d6015615040565b9250600090506136636135b161365589601c615040565b6108e36135a78b600e615040565b9050613688816108de6135ea61367a8b601d615040565b6108e36135e08d600f615040565b90506136ad816108de6135ea61369f8b601e615040565b6108e36135e08d6010615040565b90506136d2816108de6135ea6136c48b601f615040565b6108e36135e08d6011615040565b9150600090506136fa6136f46136e9896020615040565b6108e38a601a615040565b8461263a565b905061372f816109026137296137118b6028615040565b6108e361371f8d601b615040565b8c60a0015161263a565b8561263a565b905061373b818561263a565b604086015250600061375f61372961375489601b615040565b6108de8a6028615040565b9050808560035b602002015250505050505050565b6000806137d36137bb6137a361378e6135ea8a6016615040565b6108e361379c8b6017615040565b8a5161263a565b6108e36137b18a6018615040565b896020015161263a565b6108e36137c9896019615040565b886040015161263a565b9150600061380b6137f26137e889601c615040565b8860800151612657565b6108e36138008a6003615040565b6108de8b6024615040565b9050600061383661381d89601d615040565b6108e361382b8b6000615040565b6108de8c6025615040565b905060006138616138488a601e615040565b6108e36138568c6001615040565b6108de8d6026615040565b90506138a161388961387b856108e3868d6000015161263a565b6108e3848c6020015161263a565b6108e36138978c6004615040565b8b6040015161263a565b935050505060006138b66136f4886021615040565b905060006138c86136f4896021615040565b905060006139016138e86138dd8b6023615040565b6108e38c6006615040565b6109026138f68c6023615040565b6108de8d6006615040565b90506000613920612b7c613915878961263a565b6108de8d6021615040565b905061392c818861263a565b905060006139556139476139418d6006615040565b8761263a565b6109026139418e6022615040565b905060006139648c6023615040565b90506000613975612b7c838461263a565b60808c0185905260a08c01849052905061398f818b61263a565b8b6006602002015250505050505050505050505050565b60006139b460006001612672565b905060006139c460006002612672565b905060006139d460006003612672565b905060006139f16139e688601d615040565b61090289601c615040565b90506000613a0e613a0389601e615040565b6109028a601d615040565b90506000613a2b613a208a601f615040565b6109028b601e615040565b90506000613a48613a3d8b6024615040565b6109028c601f615040565b905083613a59816108de818b612657565b9050613a69816108de878a612657565b9050613a79816108de8789612657565b9050613a8a816108de8d6008615040565b9050613a96818a61263a565b60e08b01525082613aab816108de818b612657565b9050613abb816108de868a612657565b9050613acb816108de8689612657565b9050613adc816108de8d6008615040565b9050613ae8818a61263a565b6101008b01525081613afe816108de818b612657565b9050613b0e816108de858a612657565b9050613b1e816108de8589612657565b9050613b2f816108de8d6008615040565b9050613b3b818a61263a565b6101208b01525080613b51816108de818b612657565b9050613b61816108de848a612657565b9050613b71816108de8489612657565b9050613b82816108de8d6008615040565b9050613b8e818a61263a565b610140909a019990995250505050505050505050565b613be46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613bef84601d615040565b8152613bfc84601e615040565b6020820152613c0c846024615040565b6040820152613c1c846027615040565b6060820152613c2c846026615040565b6080820152613c3c846025615040565b60a08201526000613c4e856002615040565b90506000613c5d866000615040565b90506000613c7384604001518560000151612672565b90506000613c898560200151866020015161263a565b60608601519091508690600090613ca0908061263a565b90506000613cbf613cb989602001518a6060015161263a565b8861263a565b90506000613cdf613cd88a60a001518b60400151612657565b8a51612657565b9050613cee613941828861263a565b9050613d15613d0f613d09613d038487612672565b88612672565b84612657565b83612657565b9050613d3d613d32613d27838761263a565b6108de8f6009615040565b6108de60018a612672565b6101608c01525050505060208501516080860151600091613d5d91612657565b90506000613d7c613d7288606001518861263a565b8860200151612672565b90506000613da2613d8d848761263a565b6108e36137298b60a001518c60000151612672565b9050613dca613dbf613db4838c61263a565b6108de8e6009615040565b6108de600189612672565b6101808b01525060009150613dec9050613de5836011612657565b875161263a565b90506000613dfa8384612657565b9050613e068182612657565b90506000613e1583600961263a565b9050613e3f613e396136f4613e328b60a001518c60000151612657565b8b51612657565b82612672565b60c08901819052600090613e5b90613cb990613d27908d61263a565b9050613e6e8b600b602002015182612657565b6101608c01525050865160009250613e969150613de590613e8f9080612657565b8851612657565b90506000613ed8613eb3836108de8a600001518b60a00151612672565b602089015161090290613ec69080612657565b6108de8b602001518c60800151612657565b9050613ef589600c60200201516108e3613cb9613d27858d61263a565b89600c602002015250505050505050505050565b613f82604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613f9a613f9086601e615040565b856040015161263a565b808252613fb9906108e3613faf88601d615040565b876020015161263a565b808252613fce906108e3613de588601c615040565b808252613fe0906108e3876001615040565b80825260208201819052613ff99061090287601f615040565b8152614014614009866024615040565b61090287601c615040565b6080820152614032614027866027615040565b61090287601f615040565b6060820152608081015161404b906108de816001612672565b6101c0820152608081015161408c906140829061407b906108de6001600080516020615d5f833981519152615651565b6001612657565b826060015161263a565b60a082018190526140c2906140b4906108de6140a9896002615040565b6108de8a6003615040565b6108de61372988600a615040565b83600e60200201526101c08101516140e6906140b4906108de6140a9896002615040565b6101e0840152805161410b906108de614100886002615040565b6108de896003615040565b610120820152600061412b61412187601f615040565b8360200151612672565b905061413c816108de836001612672565b60e083015261415961414f876026615040565b866040015161263a565b6040830181905261417c906108e3614172896025615040565b886020015161263a565b6040830181905261419c906108e3614195896024615040565b885161263a565b60408301526141b96141af876027615040565b8360400151612672565b604083015260006141d96141ce886026615040565b61090289601e615040565b905061422d61420761343c61407b86608001516001600080516020615d5f8339815191526108de9190615651565b6108de61407b86604001516001600080516020615d5f8339815191526108de9190615651565b60c0840152604083015161424f90614245908061263a565b8460400151612672565b61010084015260c083015161427b9061426d906108de8a6004615040565b6108de6139418a600a615040565b6102008601526101c083015161429a9061426d906108de8a6004615040565b6102208601526101008301516142b99061426d906108de8a6004615040565b61024086015260e08301516142d3906108de896004615040565b6101408401526142f26142e7886025615040565b61090289601d615040565b6101608401526080830151614331906141ce906143269061407b906108de6001600080516020615d5f833981519152615651565b85610160015161263a565b61018084018190526101208401516101a08501819052614368916108e3906108de61435d8c6005615040565b6108de8d6002615040565b6101a08401819052835161438991906108e3906108de61435d8c6000615040565b6101a084018190526101408401516143a19190612657565b6101a084018190526143bb906108de6139418a600a615040565b6101a0840181905285600d613766565b61440b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61444061442761441c86601c615040565b6108de876025615040565b6108e3614435876024615040565b6108de88601d615040565b815261448561447a61446161445687601c615040565b6108de88601f615040565b6108e361446f88601d615040565b6108de89601e615040565b610902866026615040565b6040820181905261449a90600160441b61263a565b604082018190526144b090610902866027615040565b6040820181905281516144c39190612657565b604082018190526144d9906108de866005615040565b604082015280516144ee90600160441b61263a565b80825261450e906108e3614503876024615040565b6108de886025615040565b808252602082018190526145359061090261452a87601e615040565b6108e388601f615040565b6020820181905261454b906108de866004615040565b6020820152805160608201819052614568906108e386601f615040565b6060820181905261458c90610902614581876026615040565b6108e3886027615040565b606082018190526145a2906108de866000615040565b81606001818152505060006145cc6145c283602001518460400151612657565b8360600151612657565b90506145dd816108de876003615040565b90506145f56145ed866025615040565b61400061263a565b6080830181905261460b906108e3876024615040565b6080830181905261461e9061400061263a565b60808301819052614634906108e387601e615040565b608083018190526146479061400061263a565b6080830181905261465d906108e387601d615040565b608083018190526146709061400061263a565b60808301819052614686906108e387601c615040565b6080830181905261469c9061090287601f615040565b608083018190526146b2906108de876005615040565b60808301526146c56145ed866026615040565b60a083018190526146db906108e3876025615040565b60a083018190526146ee9061400061263a565b60a08301819052614704906108e3876024615040565b60a083018190526147179061400061263a565b60a0830181905261472d906108e387601f615040565b60a083018190526147409061400061263a565b60a08301819052614756906108e387601e615040565b60a0830181905261476c90610902876027615040565b60a08301819052614782906108de876000615040565b60a08301819052608083015160009161479b9190612657565b90506147ac816108de886004615040565b90506147b88282612657565b60c084018190526147d1906108de61394189600b615040565b60c084018190528560136020020152505050505050565b61486f60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61488861487d85601c615040565b6108e3866002615040565b81526148a361489885601d615040565b6108e3866003615040565b60208201526148c16148b685601e615040565b6108e3866004615040565b60408201526148df6148d485601f615040565b6108e3866005615040565b606082015280516149119061490a90614903906148fc908061263a565b845161263a565b835161263a565b825161263a565b6080820152602081015161494f906149459061493b90614931908061263a565b846020015161263a565b836020015161263a565b826020015161263a565b60a0820152604081015161498d90614983906149799061496f908061263a565b846040015161263a565b836040015161263a565b826040015161263a565b60c082015260608101516149c190614082906149b7906149ad908061263a565b846060015161263a565b836060015161263a565b60e0820152608081015160a08201516149da9190612657565b61010082015260c081015160e08201516149f49190612657565b61012082015260a0810151614a1890614a0d9080612657565b826101200151612657565b61014082015260e0810151614a3c90614a319080612657565b826101000151612657565b610160820152610120810151614a529080612657565b6101e08201819052614a7390614a689080612657565b826101600151612657565b6101e0820152610100810151614a899080612657565b6101a08201819052614aaa90614a9f9080612657565b826101400151612657565b6101a08201819052610160820151614ac191612657565b6101808201526101408101516101e0820151614add9190612657565b6101c0820152614af161343c85600c615040565b6102008201819052610280840151610180830151614b1c926108e3916108de906109028a6024615040565b8360146020020152614b4c83601560200201516108e38361020001516108de856101a001516109028a6025615040565b8360156020020152614b7c83601660200201516108e38361020001516108de856101c001516109028a6026615040565b8360166020020152614bac83601760200201516108e38361020001516108de856101e001516109028a6027615040565b836017602002015250505050565b614c1760405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006040518060800160405280614c4d7f10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e7612620565b8152602001614c7b7f0c28145b6a44df3e0149b3d0a30b3bb599df9756d4dd9b84a86b38cfb45a740b612620565b8152602001614ca87e544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac15612620565b8152602001614cd67f222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428b612620565b90529050614cf3614ce886601c615040565b6108e3876002615040565b6101208301819052614d3290614d2790614d1c90614d11908061263a565b85610120015161263a565b84610120015161263a565b83610120015161263a565b8252614d3f85601d615040565b6020830152614d4f85601e615040565b6040830152614d5f85601f615040565b606083015281516020830151614d87916145c291614d7d9190612657565b8460400151612657565b6080830152614d9a6136f486600d615040565b6101408301528151614dbc90614db290836000610bed565b8360800151612657565b60a0830152614de884601860200201516108e38461014001516108de8660a001516109028b6024615040565b6103008501526020820151614e0390614db290836001610bed565b60c0830152614e2f84601960200201516108e38461014001516108de8660c001516109028b6025615040565b6103208501526040820151614e4a90614db290836002610bed565b60e0830152614e7684601a60200201516108e38461014001516108de8660e001516109028b6026615040565b6103408501526060820151614e9190614db290836003610bed565b610100830152614ebf84601b60200201516108e38461014001516108de8661010001516109028b6027615040565b84601b613577565b815160015b601c811015614f1957614f0f826108e38684601c8110614eee57614eee615bdc565b602002015186614eff600187615651565b601b8110610bed57610bed615bdc565b9150600101614ecc565b5092915050565b60008083905060006040516020815260208082015260206040820152826060820152846080820152600080516020615d5f83398151915260a08201526020600060c08360055afa80614f7157600080fd5b5060005160809190910160405295945050505050565b614f8f61537d565b614f9761537d565b604051835181526020840151602082015284604082015260408160608360075afa80614fc257600080fd5b5080518252602080820151908301526060016040529392505050565b614fe661537d565b614fee61537d565b6040518451815260208501516020820152835160408201526020840151606082015260408160808360065afa8061502457600080fd5b5080518252602080820151908301526080016040529392505050565b60008282602881111561505557615055615ce8565b6029811061506557615065615bdc565b60200201519392505050565b604051806103e0016040528060008152602001600081526020016000815260200161509a61537d565b81526020016150a761537d565b81526020016150b461537d565b81526020016150c161537d565b81526020016150ce61537d565b81526020016150db61537d565b81526020016150e861537d565b81526020016150f561537d565b815260200161510261537d565b815260200161510f61537d565b815260200161511c61537d565b815260200161512961537d565b815260200161513661537d565b815260200161514361537d565b815260200161515061537d565b815260200161515d61537d565b815260200161516a61537d565b815260200161517761537d565b815260200161518461537d565b815260200161519161537d565b815260200161519e61537d565b81526020016151ab61537d565b81526020016151b861537d565b81526020016151c561537d565b81526020016151d261537d565b81526020016151df61537d565b81526020016151ec61537d565b81526020016151f961537d565b905290565b604051806102800160405280615212615450565b815260200161521f61537d565b815260200161522c61537d565b815260200161523961537d565b815260200161524661537d565b815260200161525361537d565b815260200161526061537d565b815260200161526d61537d565b815260200161527a61537d565b815260200161528761537d565b815260200161529461546f565b8152602001600081526020016152a861549c565b8152602001600081526020016152bc6154ca565b81526020016152c96154e9565b81526020016152d66153c9565b81526020016151df615517565b6040518061052001604052806029906020820280368337509192915050565b604051806101c0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001615347615517565b8152602001615354615517565b815260200160008152602001600081526020016000815260200160008152602001606081525090565b604051806040016040528060008152602001600081525090565b60405180604001604052806151ec61537d565b6040518061012001604052806009906020820280368337509192915050565b604051806103800160405280601c906020820280368337509192915050565b6040518060e001604052806153fb615535565b815260200160008152602001600081526020016000815260200160008152602001615424615535565b8152602001600081525090565b6040518061010001604052806008906020820280368337509192915050565b6040518061020001604052806010906020820280368337509192915050565b60405180606001604052806003905b61548661537d565b81526020019060019003908161547e5790505090565b604051806103800160405280601c905b6154b46153aa565b8152602001906001900390816154ac5790505090565b604051806105400160405280602a906020820280368337509192915050565b604051806103600160405280601b905b61550161537d565b8152602001906001900390816154f95790505090565b60405180608001604052806004906020820280368337509192915050565b604051806120000160405280610100906020820280368337509192915050565b6000806000806040858703121561556b57600080fd5b84356001600160401b0381111561558157600080fd5b8501601f8101871361559257600080fd5b80356001600160401b038111156155a857600080fd5b8760208284010111156155ba57600080fd5b6020918201955093508501356001600160401b038111156155da57600080fd5b8501601f810187136155eb57600080fd5b80356001600160401b0381111561560157600080fd5b8760208260051b840101111561561657600080fd5b949793965060200194505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761265157612651615624565b8181038181111561265157612651615624565b8060005b60108110156131a4578151845260209384019390910190600101615668565b80518252602090810151910152565b8060005b60038110156131a4576156ae848351615687565b604093909301926020919091019060010161569a565b8060005b601c8110156131a45781518460005b60098110156156f65782518252602092830192909101906001016156d7565b5050506101209390930192602091909101906001016156c8565b8060005b602a8110156131a4578151845260209384019390910190600101615714565b8060005b601b8110156131a45761574b848351615687565b6040939093019260209190910190600101615737565b8060005b601c8110156131a4578151845260209384019390910190600101615765565b8060005b60048110156131a4578151845260209384019390910190600101615788565b81835260006001600160fb1b038311156157c057600080fd5b8260051b80836020870137939093016020019392505050565b6157e4818851615664565b600060208801516157f9610200840182615687565b50604088015161580d610240840182615687565b506060880151615821610280840182615687565b5060808801516158356102c0840182615687565b5060a0880151615849610300840182615687565b5060c088015161585d610340840182615687565b5060e0880151615871610380840182615687565b506101008801516158866103c0840182615687565b5061012088015161589b610400840182615687565b506101408801516158b0610440840182615696565b506101608801516105008301526101808801516158d16105208401826156c4565b506101a08801516124a08301526101c08801516158f26124c0840182615710565b506101e0880151615907612a00840182615733565b5061020088015161591c6130c0840182615761565b50610220880151615931613440840182615784565b506102408801516159466134c0840182615687565b5061026088015161595b613500840182615687565b506135c06135408301526159746135c0830187896157a7565b613560830195909552506135808101929092526135a0909101529392505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156159ce576159ce615995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156159fc576159fc615995565b604052919050565b600060c08284031215615a1657600080fd5b60405160c081016001600160401b0381118282101715615a3857615a38615995565b604090815283518252602080850151908301528381015190820152606080840151908201526080808401519082015260a0928301519281019290925250919050565b600082601f830112615a8b57600080fd5b6000610360615a99816159d4565b915083018185821115615aab57600080fd5b845b82811015615ac5578051825260209182019101615aad565b509195945050505050565b600082601f830112615ae157600080fd5b6000610380615a99816159d4565b6000610be0828403128015615b0357600080fd5b506000615b0e6159ab565b615b188585615a04565b8152615b278560c08601615a7a565b6020820152615b3a856104208601615ad0565b60408201526107a08401516060820152615b58856107c08601615ad0565b6080820152610b4084015160a0820152610b6084015160c0820152610b8084015160e0820152610ba0840151610100820152610bc090930151610120840152509092915050565b8082018082111561265157612651615624565b60008085851115615bc257600080fd5b83861115615bcf57600080fd5b5050820193919092039150565b634e487b7160e01b600052603260045260246000fd5b600060018201615c0457615c04615624565b5060010190565b8035602083101561265157600019602084900360031b1b1692915050565b600082615c4657634e487b7160e01b600052601260045260246000fd5b500690565b600081615c5a57615c5a615624565b506000190190565b60008183825b6008811015615c87578151835260209283019290910190600101615c68565b5050506101008201905092915050565b6000825160005b81811015615cb85760208186018101518583015201615c9e565b506000920191825250919050565b600060208284031215615cd857600080fd5b815180151581146103fe57600080fd5b634e487b7160e01b600052602160045260246000fdfe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593effffd3130644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47204bd3277422fad364751ad938e2b5e6a54cf8c68712848a692c553d0329f5d630644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000130644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffec51a164736f6c634300081c000a"; readonly deployedBytecode: "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ea50d0e414610030575b600080fd5b61004361003e366004615555565b610057565b604051901515815260200160405180910390f35b6000806100837f00000000000000000000000000000000000000000000000000000000000000006102f7565b905061009081602061563a565b85146100f1577f0000000000000000000000000000000000000000000000000000000000000000856100c383602061563a565b6040516359895a5360e01b815260048101939093526024830191909152604482015260640160405180910390fd5b60006100fb610405565b9050600061012a88887f000000000000000000000000000000000000000000000000000000000000000061041a565b90506010826040015161013d9190615651565b851461015c5760405163fa06659360e01b815260040160405180910390fd5b60405163995bf45760e01b815260009073__$10134447bc2c864421ebc5815937d45ef9$__9063995bf457906102009085908b908b907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906004016157d9565b610be060405180830381865af415801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190615aef565b905061029387878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050855185516060810151608090910151919350915060016108ba565b815160a001526102a38282610a27565b6102c0576040516313f8744360e31b815260040160405180910390fd5b6102cb828483610c36565b6102e8576040516352ec174560e11b815260040160405180910390fd5b50600198975050505050505050565b600080600261030860016008615b9f565b610312919061563a565b90506103206002600361563a565b61032a9082615b9f565b9050600161033960098561563a565b610343919061563a565b61034d9082615b9f565b9050600161035c816029615b9f565b610366919061563a565b6103709082615b9f565b905061037e6001600261563a565b6103889082615b9f565b905061039560018461563a565b61039f9082615b9f565b90506103ad6001600461563a565b6103b79082615b9f565b905060026103c6600185615651565b6103d0919061563a565b6103da9082615b9f565b90506103e760028061563a565b6103f19082615b9f565b90506103fe601082615b9f565b9392505050565b61040d615071565b610415611c4d565b905090565b6104226151fe565b6000805b601081101561048557610452868387610440602083615b9f565b9261044d93929190615bb2565b612587565b8351826010811061046557610465615bdc565b60200201818152505060208261047b9190615b9f565b9150600101610426565b506104a9858286610497604083615b9f565b926104a493929190615bb2565b61259b565b60208301526104b9604082615b9f565b90506104cc858286610497604083615b9f565b6040808401919091526104df9082615b9f565b90506104f2858286610497604083615b9f565b6060830152610502604082615b9f565b9050610515858286610497604083615b9f565b6080830152610525604082615b9f565b9050610538858286610497604083615b9f565b60c0830152610548604082615b9f565b905061055b858286610497604083615b9f565b60e083015261056b604082615b9f565b905061057e858286610497604083615b9f565b60a083015261058e604082615b9f565b90506105a1858286610497604083615b9f565b6101008301526105b2604082615b9f565b90506105c5858286610497604083615b9f565b6101208301526105d6604082615b9f565b90506105e9858286610497604083615b9f565b610140830151526105fb604082615b9f565b905061060e858286610440602083615b9f565b61016083015261061f602082615b9f565b905060005b8381101561069f5760005b600981101561069657610649878488610440602083615b9f565b84610180015183601c811061066057610660615bdc565b6020020151826009811061067657610676615bdc565b60200201818152505060208361068c9190615b9f565b925060010161062f565b50600101610624565b5060005b6106af60016029615b9f565b8110156106fe576106c7868387610440602083615b9f565b836101c0015182602a81106106de576106de615bdc565b6020020181815250506020826106f49190615b9f565b91506001016106a3565b50610710858286610440602083615b9f565b6101a0830152610721602082615b9f565b9050610734858286610497604083615b9f565b61014083015160200152610749604082615b9f565b905061075c858286610497604083615b9f565b61014083015160026020020152610774604082615b9f565b905060005b610784600185615651565b8110156107cd5761079c868387610497604083615b9f565b836101e0015182601b81106107b3576107b3615bdc565b60200201526107c3604083615b9f565b9150600101610779565b5060005b83811015610821576107ea868387610440602083615b9f565b83610200015182601c811061080157610801615bdc565b6020020181815250506020826108179190615b9f565b91506001016107d1565b5060005b60048110156108765761083f868387610440602083615b9f565b836102200151826004811061085657610856615bdc565b60200201818152505060208261086c9190615b9f565b9150600101610825565b50610888858286610497604083615b9f565b610240830152610899604082615b9f565b90506108ac858286610497604083615b9f565b610260830152509392505050565b6000600180826108e8866108e3896108de6108d98a6310000000615b9f565b612620565b61263a565b612657565b90506000610907876109028a6108de6108d98b6001615b9f565b612672565b905060005b61093760107f0000000000000000000000000000000000000000000000000000000000000000615651565b8110156109a55760006109628c838151811061095557610955615bdc565b602002602001015161269d565b9050610972866108de8684612657565b9550610982856108de8584612657565b945061098e848b612657565b935061099a838b612672565b92505060010161090c565b5060005b6010811015610a0e5760008a82601081106109c6576109c6615bdc565b602002015190506109db866108de8684612657565b95506109eb856108de8584612657565b94506109f7848b612657565b9350610a03838b612672565b9250506001016109a9565b50610a1984846126b4565b9a9950505050505050505050565b600080610a3d836060015185610160015161263a565b9050600160005b7f0000000000000000000000000000000000000000000000000000000000000000811015610b3357600086610180015182601c8110610a8557610a85615bdc565b60200201518051909150600090610aa4908360015b6020020151612657565b9050848114610ac6576040516313f8744360e31b815260040160405180910390fd5b6000876080015184601c8110610ade57610ade615bdc565b60200201519050610aef83826126c3565b9550610b23856108de60016108e3856108de8e604001518b601c8110610b1757610b17615bdc565b60200201516001612672565b9450505050806001019050610a44565b50610b3c6152e3565b60005b6029811015610b8d576101c0870151610b59600183615b9f565b602a8110610b6957610b69615bdc565b6020020151828260298110610b8057610b80615bdc565b6020020152600101610b3f565b506000610ba482876000015188602001518661282b565b9050600160025b7f0000000000000000000000000000000000000000000000000000000000000000811015610c0157610bf782896080015183601c8110610bed57610bed615bdc565b602002015161263a565b9150600101610bab565b50610c27610c14836108de600185612672565b6108e38a6101a001518a6060015161263a565b94909414979650505050505050565b6000610c40615302565b6000610c708460c001517f00000000000000000000000000000000000000000000000000000000000000006128a5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160401b03811115610cac57610cac615995565b604051908082528060200260200182016040528015610cd5578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160401b03811115610d1257610d12615995565b604051908082528060200260200182016040528015610d4b57816020015b610d3861537d565b815260200190600190039081610d305790505b509050610d7f610d7a87610100015185600081518110610d6d57610d6d615bdc565b6020026020010151612672565b612970565b84610120018181525050610db5610d7a87610100015185600081518110610da857610da8615bdc565b6020026020010151612657565b610140850181905261012085015160e0880151610dd6926108e3919061263a565b845260c0860151610e0690610dea90612970565b6108de8661012001516109028a60e0015189610140015161263a565b602085015281516001908390600090610e2157610e21615bdc565b60200260200101818152505087610240015181600081518110610e4657610e46615bdc565b6020908102919091010152600160a0850152600060c08501528351610e6a906129e7565b60408501526020840151610e7d906129e7565b606085015260015b610e9160016024615b9f565b8111610f3257610ea985604001518660a0015161263a565b838281518110610ebb57610ebb615bdc565b602002602001018181525050610f048560c001516108e38b6101c00151600185610ee59190615651565b602a8110610ef557610ef5615bdc565b60200201518860a0015161263a565b60c086015260a08086015190880151610f1d919061263a565b60a0860152610f2b81615bf2565b9050610e85565b5060005b600581101561100e576000610f4c601e83615b9f565b90506000610f5c60016024615b9f565b610f669084615b9f565b9050610f97858381518110610f7d57610f7d615bdc565b60200260200101516108e389606001518a60a0015161263a565b858381518110610fa957610fa9615bdc565b602002602001018181525050610fe68760c001516108e38d6101c0015184602a8110610fd757610fd7615bdc565b60200201518a60a0015161263a565b60c088015260a080880151908a0151610fff919061263a565b60a08801525050600101610f36565b5087602001518160018151811061102757611027615bdc565b602002602001018190525086606001518160028151811061104a5761104a615bdc565b602002602001018190525086608001518160038151811061106d5761106d615bdc565b60200260200101819052508660a001518160048151811061109057611090615bdc565b60200260200101819052508660c00151816005815181106110b3576110b3615bdc565b60200260200101819052508660e00151816006815181106110d6576110d6615bdc565b6020026020010181905250866101000151816007815181106110fa576110fa615bdc565b60200260200101819052508661012001518160088151811061111e5761111e615bdc565b60200260200101819052508661014001518160098151811061114257611142615bdc565b602002602001018190525086610160015181600a8151811061116657611166615bdc565b6020026020010181905250866101c0015181600b8151811061118a5761118a615bdc565b602002602001018190525086610180015181600c815181106111ae576111ae615bdc565b6020026020010181905250866101a0015181600d815181106111d2576111d2615bdc565b6020026020010181905250866101e0015181600e815181106111f6576111f6615bdc565b602002602001018190525086610200015181600f8151811061121a5761121a615bdc565b60200260200101819052508661022001518160108151811061123e5761123e615bdc565b60200260200101819052508661024001518160118151811061126257611262615bdc565b60200260200101819052508661026001518160128151811061128657611286615bdc565b6020026020010181905250866102800151816013815181106112aa576112aa615bdc565b6020026020010181905250866102a00151816014815181106112ce576112ce615bdc565b6020026020010181905250866102c00151816015815181106112f2576112f2615bdc565b6020026020010181905250866102e001518160168151811061131657611316615bdc565b60200260200101819052508661030001518160178151811061133a5761133a615bdc565b60200260200101819052508661032001518160188151811061135e5761135e615bdc565b60200260200101819052508661034001518160198151811061138257611382615bdc565b602002602001018190525086610360015181601a815181106113a6576113a6615bdc565b602002602001018190525086610380015181601b815181106113ca576113ca615bdc565b6020026020010181905250866103a0015181601c815181106113ee576113ee615bdc565b6020026020010181905250866103c0015181601d8151811061141257611412615bdc565b6020026020010181905250876040015181601e8151811061143557611435615bdc565b6020026020010181905250876060015181601f8151811061145857611458615bdc565b602002602001018190525087608001518160208151811061147b5761147b615bdc565b60200260200101819052508760a001518160218151811061149e5761149e615bdc565b6020026020010181905250876101200151816022815181106114c2576114c2615bdc565b6020026020010181905250876101000151816023815181106114e6576114e6615bdc565b60200260200101819052508760c001518160248151811061150957611509615bdc565b60200260200101819052508760e001518160258151811061152c5761152c615bdc565b6020026020010181905250600061157387608001518660c001518b6102000151877f00000000000000000000000000000000000000000000000000000000000000006129fa565b905061159e8160008151811061158b5761158b615bdc565b602002602001015186610120015161263a565b608086018190526102008a01515160e08901516115cf92916108e3916115c4919061263a565b88610140015161263a565b608086015260e08701516115e290612b5c565b60a086015260006115f560016024615b9f565b611600906001615b9f565b905060005b61163060017f0000000000000000000000000000000000000000000000000000000000000000615651565b81101561184357600061166460017f0000000000000000000000000000000000000000000000000000000000000000615651565b8210159050806117d457611698610d7a8b6101000151898560016116889190615b9f565b81518110610d6d57610d6d615bdc565b6101208901526101008a01516116c890610d7a90896116b8866001615b9f565b81518110610da857610da8615bdc565b61014089015260a08801516101208901516116e3919061263a565b61016089015260a088015160e08b015161170b916117009161263a565b89610140015161263a565b610180890181905261172e90611720906129e7565b6108e38a61016001516129e7565b866117398486615b9f565b8151811061174957611749615bdc565b60200260200101818152505060006117838961018001518e61020001518560016117739190615b9f565b601c8110610bed57610bed615bdc565b90506117bd816108e38b6101600151888760016117a09190615b9f565b815181106117b0576117b0615bdc565b602002602001015161263a565b90506117cd896080015182612657565b60808a0152505b6117f36117e98960a001518c60e0015161263a565b8b60e0015161263a565b60a08901526101e08c015182601b811061180f5761180f615bdc565b60200201518561181f8486615b9f565b8151811061182f5761182f615bdc565b602090810291909101015250600101611605565b5061186f60017f0000000000000000000000000000000000000000000000000000000000000000615651565b6118799082615b9f565b90506118996118918961010001518a60c00151612672565b6001906126b4565b60e08701515261010088015160c08901516118dd9161189191610902907f07b0c561a6148404f086204a9f36ffb0617942546750f230c893619174a57a769061263a565b60e0878101805160200192909252815180516040909101529051805160609091015260a08701519089015161191f916119159161263a565b8960e0015161263a565b60a087015260005b60048110156119cf57600061195a8860e00151836004811061194b5761194b615bdc565b60200201518960a0015161263a565b9050611965816129e7565b886101000151836004811061197c5761197c615bdc565b602002015260a088015160e08b0151611995919061263a565b8860a00181815250506119c188608001516108e3838f61022001518660048110610bed57610bed615bdc565b608089015250600101611927565b506101008601515184518590839081106119eb576119eb615bdc565b60209081029190910181019190915261010087015190810151611a0f916002610a9a565b84611a1b836001615b9f565b81518110611a2b57611a2b615bdc565b60209081029190910101526101008601516060015184611a4c836002615b9f565b81518110611a5c57611a5c615bdc565b60200260200101818152505060005b6003811015611ac0578a61014001518160038110611a8b57611a8b615bdc565b60200201518483611a9b81615bf2565b945081518110611aad57611aad615bdc565b6020908102919091010152600101611a6b565b506040518060400160405280600181526020016002815250838281518110611aea57611aea615bdc565b60200260200101819052508560800151848280611b0690615bf2565b935081518110611b1857611b18615bdc565b602002602001018181525050611b428a61022001518960c001518a608001518d6101a00151612b68565b611b5f5760405163a2a2ac8360e01b815260040160405180910390fd5b60008a6102600151905080848381518110611b7c57611b7c615bdc565b6020026020010181905250886101000151858381518110611b9f57611b9f615bdc565b602002602001018181525050611bb3615397565b611bbd8587612eb0565b8152611bc882612fa9565b602082018190528c518251600092611be1929190612ff1565b9050600080611bf38f60000151613084565b91509150611c0082613145565b611c0981613145565b8351611c169083856131aa565b84526020840151611c289082856131aa565b602085018190528451611c3a916131d9565b9f9e505050505050505050505050505050565b611c55615071565b50604080516103e0810182526220000081526015602080830191909152601f82840152825180840184527f104aa9b4476927b9c3df51c532b1cae7b87f5b7ab9373da43777be83108dbca781527f1cd279d089fb417574bdfff9320b8ef459196f7841d15f10ef03e78999520fe6818301526060830152825180840184527f2749c7c3188e135b4baacb08abda70578c43ba2793c2e376adebc8f5e092a1cb81527f02e6a616a7cd3b2c2107c830a18f766f558c5a56e2fe560de4216cb42bbe4095818301526080830152825180840184527f1d906d083872617485399605e6b8d7e0eea0a10f71271b8c59adf24cc8339be781527f26cad07a2734aa9aee4ce7b358d3043b357b9c91a96529d54f52520050342e9a8183015260a0830152825180840184527f246cfefd937a61df24c91a5f3fe31de8e7ce3f17837637c0e1f55e5889f58c7781527f11bed90de8b7c6acb3b363d70850528c89b62b73d9f9b83a2ca30bce346bad948183015260c0830152825180840184527f0e932b810103be7429befc3ade0b3c06617473d69778daad01d4b62e6ea8950781527f1b808239e3a1eca0011029525cc8fbfa471341d8d94df76b1c17718216f5eeda8183015260e0830152825180840184527f0c18563d13b6db7effc22340fc74a2e7b2f9dbb0b42d3f0acc47331f3558dae981527f2ff93536486524c1c58a883b55284b278c7efdafc5b41808d88fce3243b11d6981830152610100830152825180840184527f182070aa2b03de9e8b4cada6a0760a0c6c72852783e7db97b4cd91281c03d3ea81527f08c55ecc2b52f5393505462ae16474727d81f865b293adee900644436146a8e181830152610120830152825180840184527f2efb699f4c4dbbd9ec2552bfd41f42f8a5e958cc50ff9dc953be33140272458a81527f06c6d7d7d0a685224f444ac30d3fa678760361d759abc9e7a229ea8979703e6181830152610140830152825180840184527f019002e97cd41dd882e373b2bc79c3cad6a400244ff1e80aae06c0b1186b1e2081527f1fef3eed64626bfd4a793a5330d1eebc6af338a1814c237fae0dc532abe6203a81830152610160830152825180840184527f1954e635e980037fb7bc3c25c450d12a9a19837e01e3f1d479d51728bb70af6b81527f2ce76f6c6fe16633bf7c675281759908490fed6ff2829e8997513eb4fcf56f5381830152610180830152825180840184527f077d3f2336940aec76438f6c30edddd2e751c56a72ffaf64e9ef476f524daa2c81527f04b61eb1f9b0837bcc0714bb3c00c190349dacb7ccaab86a6027b910dd2309e0818301526101a0830152825180840184527f2d867487b60acfaa537feeae0185cfbcb84315e1f9d8eb13e33fcee51e35cc4d81527f231c0fe3f3de4990752e61ac8897498223d1cc527808376a7ab250c61b48e170818301526101c0830152825180840184527f24a3cef3397bef0d207ce03d64d77ea0a7dabde143471d98cd7360b7685a90b781527f165894aaaf725b36f72e71880ff23c78ffa1b757304b00b94c56f7e9886936ce818301526101e0830152825180840184527f24bf2806f2e4fdb9a4728a47a888038a8602f1a564cce5439d8a0c89eb04b35181527f21002a27f9d4cb5b284ad2b3c83e2956e1ecdef6ab8ad07b085a429f82374a7781830152610200830152825180840184527f1b1656cadd0b2ab6f8a6e5e22d0dec012d95f87e22432d4acfa44d027259618981527f283c907c7278fa3fce6eeadeaaa9c48f7ab8211c94882f851c9fdcabdbac1bdc81830152610220830152825180840184527f23f558a747590ffc98f1cec61982a939c17078fb8597d196c5f71436f613539381527f0bb3abcbf063633ba4de4a51dec092e6f79c64cf48340c2bb149bd340cc95e9c81830152610240830152825180840184527f120874be1571c176bdb51bf3357b34f678084ba91f8d644019ce9cf69f81953781527f0b28eef919110795820b3818e697556033489a739c2056801c36b3e15b7a16ea81830152610260830152825180840184527f2face01c0f73016a476cdae4e8825f315ed329847cf15c2f1c46a270cf1cdbab81527f09d51e6255090c8a48ef74e1d2f20a6becf2b22811e77308559545471bbf9f9281830152610280830152825180840184527eefe1593a923558e7779f10e4753794a59ad0dcc02df6790b72346175b1b7b981527f28b0744e7ea51d27a2624e7ffe4ccae8f3c9c6350131555ceedb42078a229a3c818301526102a0830152825180840184527f0f28ce7d149491697d292002785ff24f6089b458ea01234e4af8eda65b9dd26681527f24519d3dab7ba27bcf50279756292c7052edff4183446b2ae85617e6dff01883818301526102c0830152825180840184527f27ae1958d5100a4fbe5ae016fdac9ea54c5c4172cc798a38d3f8730c5f481a5d81527f2e28100a9463b43a586fb70dfe15c841ddbd30703149bd5d9fb7273d520554c5818301526102e0830152825180840184527f072921e4c634152a135b6fcd0c5cadfa66f780284592d1f3262fa04128f7ba6a81527f0bfd2eec92d6aad31ca352447ca9a9e69eb7a2465f9741f67ea75c5622d14e0281830152610300830152825180840184527f0bed9c3687f3524dbbb6410842f20eb0d87d1915348d97dd74ce9df8681fb03c81527f061cf87194c9b570a8d060c9dfed139083f2aedc80da0d97d390d72f5cc7557981830152610320830152825180840184527f0441aaeda5bb8ccbef2c72be215aacd45db72650f5a9855820447b241f57c88781527f27e4f80d4673c2dc9bc21386edf443e8f74d4cff7b89fb2c34c0bcca5008d9d881830152610340830152825180840184527f17161957b5bea1c4b6cd7dd7a0b530aae4907cffac5801fff85ba8e4c3fa3f2f81527f14669badaf49b0e6aaa983ac2a20378e7c5ac3b4141284ca01124c3dd33589f781830152610360830152825180840184527f1e10d6c8482b99a03f78a2028bb33719c19bc62fa08e1d548059b139388532e681527f0139852d1968d8a0c11ba44db1553094224570b77f987b01a73781e265365cea8183015261038083015282518084018452600181526002818301526103a083015282518084019093527f1f248647726750901d3e276b8a1d386600b913a3924d5bbc43cb896f4002440083527f20c67ede3b2a84a692458ecf65ad55a687027c57f4eca98eb419ea3b79f669c1908301526103c081019190915290565b60006103fe6125968385615c0b565b61269d565b6125a361537d565b6040805180820190915280600080516020615d1f8339815191526125cb602060008789615bb2565b6125d491615c0b565b6125de9190615c29565b8152602090810190600080516020615d1f83398151915290612604906040908789615bb2565b61260d91615c0b565b6126179190615c29565b90529392505050565b6000600080516020615d5f833981519152825b0692915050565b6000600080516020615d5f83398151915282840990505b92915050565b6000600080516020615d5f8339815191528284089392505050565b6000600080516020615d5f83398151915282600080516020615d5f8339815191520384089392505050565b6000600080516020615d5f83398151915282612633565b60006103fe836108de84612970565b600080604051806101200160405280619d808152602001600080516020615d7f83398151915281526020016105a08152602001600080516020615cff83398151915281526020016102408152602001600080516020615cff83398151915281526020016105a08152602001600080516020615d7f8339815191528152602001619d80815250905060006001905060005b60098110156127745761276a826108de8784612672565b9150600101612753565b5061277d6153aa565b60005b60098110156127cf576127b0610d7a8583600981106127a1576127a1615bdc565b60200201516108de8985612672565b8282600981106127c2576127c2615bdc565b6020020152600101612780565b5060005b60098110156128165761280c856108e38984600981106127f5576127f5615bdc565b6020020151858560098110610bed57610bed615bdc565b94506001016127d3565b50612821848361263a565b9695505050505050565b60006128356153c9565b6128408682856133d2565b61284c86868386613583565b61285886868386613774565b6128638682856139a6565b61286e868285613ba4565b61287a86868386613f09565b6128858682856143cb565b6128908682856147e8565b61289b868285614bba565b6128218185614ec7565b60606000826001600160401b038111156128c1576128c1615995565b6040519080825280602002602001820160405280156128ea578160200160208202803683370190505b509050838160008151811061290157612901615bdc565b602090810291909101015260015b838110156129685761294382612926600184615651565b8151811061293657612936615bdc565b6020026020010151612b5c565b82828151811061295557612955615bdc565b602090810291909101015260010161290f565b509392505050565b600080829050600060405160208152602080820152602060408201528260608201526002600080516020615d5f833981519152036080820152600080516020615d5f83398151915260a08201526020600060c08360055afa806129d257600080fd5b50600051608091909101604052949350505050565b600080516020615d5f8339815191520390565b60606000826001600160401b03811115612a1657612a16615995565b604051908082528060200260200182016040528015612a3f578160200160208202803683370190505b509050825b8015612b5157600085612a58600184615651565b81518110612a6857612a68615bdc565b60200260200101519050600089600184612a829190615651565b601c8110612a9257612a92615bdc565b602002015190506000612aee612ab2612aab858d61263a565b600261263a565b6109028b612ac1600189615651565b601c8110612ad157612ad1615bdc565b60200201516108de612ae8886108de60018a612672565b87612672565b9050612b0f816108de610d7a612b09876108de600189612672565b86612657565b99508990508085612b21600187615651565b81518110612b3157612b31615bdc565b60200260200101818152505050505080612b4a90615c4b565b9050612a44565b509695505050505050565b6000612651828361263a565b6000600181612b82612b7c87610100614f20565b83612672565b905080612ba25760405163835eb8f760e01b815260040160405180910390fd5b612baa6153e8565b805183905260005b7f0000000000000000000000000000000000000000000000000000000000000000811015612c97576000612be782600961563a565b612bf2906001615b9f565b9050848360000151826101008110612c0c57612c0c615bdc565b60200201526000612c1e826001615b9f565b90505b612c2c600983615b9f565b811015612c8d578351612c6c90612c44600184615651565b6101008110612c5557612c55615bdc565b60200201518a85601c8110610bed57610bed615bdc565b8451826101008110612c8057612c80615bdc565b6020020152600101612c21565b5050600101612bb2565b50608081018390526000602082018190525b610100811015612d9857612cca612cc483608001518a61263a565b85612672565b8260a00151826101008110612ce157612ce1615bdc565b602002015260a0820151612d0b90826101008110612d0157612d01615bdc565b6020020151612970565b8260a00151826101008110612d2257612d22615bdc565b602002018181525050612d6982602001516108e38460000151846101008110612d4d57612d4d615bdc565b60200201518560a00151856101008110610bed57610bed615bdc565b60208301526080820151612d8b90600080516020615d3f83398151915261263a565b6080830152600101612ca9565b506000612daa836108de610100612970565b9050612dba82602001518261263a565b602083015260a0820151612dd69060005b60200201518261263a565b604083015260a0820151612e0290612df16001610100615651565b6101008110612dcb57612dcb615bdc565b60608301526040820151612e18908a6002610bed565b60c08301819052612e66906108e3612e3e8b600080516020615d3f833981519152612672565b60208d015160408e01516108de91612e5591612672565b8e516020890151610902919061263a565b60c083018190526060830151612e9b91612e8f916108e3906108de8e600260200201518c612672565b610902858c6003610bed565b60c08301819052159998505050505050505050565b612eb861537d565b7f000000000000000000000000000000000000000000000000000000000000000060005b81811015612f0e57612f06858281518110612ef957612ef9615bdc565b6020026020010151613145565b600101612edc565b50604051600190815b60018401811015612f735760208102870160208202870181515160408501528151602001516060850152805160808501525050604080830160606040850160075afa8316925060408260808460065afa90921691600101612f17565b5080518452602081015160208501525080612fa1576040516352ec174560e11b815260040160405180910390fd5b505092915050565b612fb161537d565b600080516020615d1f8339815191528260200151600080516020615d1f833981519152612fde9190615651565b612fe89190615c29565b60208301525090565b6000806000612fff86613084565b9150915061300b615431565b82518152602080840151818301528251604080840191909152838201516060840152875160808401528782015160a0840152865160c08401528682015160e0840152516130799161305e91849101615c62565b6040516020818303038152906040528051906020012061269d565b979650505050505050565b61308c61537d565b61309461537d565b82516020808501516040860151606087015160cc90811b608892831b604494851b90961795909517949094178652608087015160a088015160c089015160e08a0151871b90841b91851b9092171717868401526101008701516101208801516101408901516101608a0151871b90841b91851b909217171785526101808701516101a08801516101c08901516101e09099015190951b9790911b9390911b1791909117939093179281019290925291565b805160208201516000600080516020615d1f833981519152838009600080516020615d1f8339815191526003600080516020615d1f83398151915283870908600080516020615d1f83398151915284850914915050806131a457600080fd5b50505050565b6131b261537d565b6131ba61537d565b6131c48386614f87565b90506131d08185614fde565b95945050505050565b81516020808401518351848301516040805194850195909552938301919091527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c260608301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60808301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60a08301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60c083015260e08201526101008101919091527f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c16101208201527f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b06101408201527f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe46101608201527f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5561018082015260009081906101a001604051602081830303815290604052905060008060086001600160a01b0316836040516133719190615c97565b600060405180830381855afa9150503d80600081146133ac576040519150601f19603f3d011682016040523d82523d6000602084013e6133b1565b606091505b50915091508180156128215750808060200190518101906128219190615cc6565b60006133df846007615040565b90507f183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000000600061344261343c613415856003612672565b6108de6134316134268b6000615040565b6108de8c601d615040565b6108de8b601c615040565b8361263a565b90506134c36134b861349f61348661346d856108e36134628d6002615040565b6108de8e601c615040565b6108e361347b8c6003615040565b6108de8d601d615040565b6108e36134948b6004615040565b6108de8c601e615040565b6108e36134ad8a6005615040565b6108de8b601f615040565b6108e3886001615040565b90506134e2816108e36134d7866001612672565b6108de8a6027615040565b90506134ee818461263a565b90506134fa818561263a565b8552506000905061353661352b61352061351588601c615040565b6108e389601f615040565b610902886024615040565b6108e3876000615040565b9050613547816108de846002612672565b9050613558816108de846001612672565b9050613564818361263a565b9050613570818461263a565b9050808460015b60200201525050505050565b60008060006135bb6135b161359989601c615040565b6108e36135a78b6012615040565b8a6060015161263a565b8760800151612657565b90506135f4816108de6135ea6135d28b601d615040565b6108e36135e08d6013615040565b8c6060015161263a565b8960800151612657565b9050613619816108de6135ea61360b8b601e615040565b6108e36135e08d6014615040565b905061363e816108de6135ea6136308b601f615040565b6108e36135e08d6015615040565b9250600090506136636135b161365589601c615040565b6108e36135a78b600e615040565b9050613688816108de6135ea61367a8b601d615040565b6108e36135e08d600f615040565b90506136ad816108de6135ea61369f8b601e615040565b6108e36135e08d6010615040565b90506136d2816108de6135ea6136c48b601f615040565b6108e36135e08d6011615040565b9150600090506136fa6136f46136e9896020615040565b6108e38a601a615040565b8461263a565b905061372f816109026137296137118b6028615040565b6108e361371f8d601b615040565b8c60a0015161263a565b8561263a565b905061373b818561263a565b604086015250600061375f61372961375489601b615040565b6108de8a6028615040565b9050808560035b602002015250505050505050565b6000806137d36137bb6137a361378e6135ea8a6016615040565b6108e361379c8b6017615040565b8a5161263a565b6108e36137b18a6018615040565b896020015161263a565b6108e36137c9896019615040565b886040015161263a565b9150600061380b6137f26137e889601c615040565b8860800151612657565b6108e36138008a6003615040565b6108de8b6024615040565b9050600061383661381d89601d615040565b6108e361382b8b6000615040565b6108de8c6025615040565b905060006138616138488a601e615040565b6108e36138568c6001615040565b6108de8d6026615040565b90506138a161388961387b856108e3868d6000015161263a565b6108e3848c6020015161263a565b6108e36138978c6004615040565b8b6040015161263a565b935050505060006138b66136f4886021615040565b905060006138c86136f4896021615040565b905060006139016138e86138dd8b6023615040565b6108e38c6006615040565b6109026138f68c6023615040565b6108de8d6006615040565b90506000613920612b7c613915878961263a565b6108de8d6021615040565b905061392c818861263a565b905060006139556139476139418d6006615040565b8761263a565b6109026139418e6022615040565b905060006139648c6023615040565b90506000613975612b7c838461263a565b60808c0185905260a08c01849052905061398f818b61263a565b8b6006602002015250505050505050505050505050565b60006139b460006001612672565b905060006139c460006002612672565b905060006139d460006003612672565b905060006139f16139e688601d615040565b61090289601c615040565b90506000613a0e613a0389601e615040565b6109028a601d615040565b90506000613a2b613a208a601f615040565b6109028b601e615040565b90506000613a48613a3d8b6024615040565b6109028c601f615040565b905083613a59816108de818b612657565b9050613a69816108de878a612657565b9050613a79816108de8789612657565b9050613a8a816108de8d6008615040565b9050613a96818a61263a565b60e08b01525082613aab816108de818b612657565b9050613abb816108de868a612657565b9050613acb816108de8689612657565b9050613adc816108de8d6008615040565b9050613ae8818a61263a565b6101008b01525081613afe816108de818b612657565b9050613b0e816108de858a612657565b9050613b1e816108de8589612657565b9050613b2f816108de8d6008615040565b9050613b3b818a61263a565b6101208b01525080613b51816108de818b612657565b9050613b61816108de848a612657565b9050613b71816108de8489612657565b9050613b82816108de8d6008615040565b9050613b8e818a61263a565b610140909a019990995250505050505050505050565b613be46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613bef84601d615040565b8152613bfc84601e615040565b6020820152613c0c846024615040565b6040820152613c1c846027615040565b6060820152613c2c846026615040565b6080820152613c3c846025615040565b60a08201526000613c4e856002615040565b90506000613c5d866000615040565b90506000613c7384604001518560000151612672565b90506000613c898560200151866020015161263a565b60608601519091508690600090613ca0908061263a565b90506000613cbf613cb989602001518a6060015161263a565b8861263a565b90506000613cdf613cd88a60a001518b60400151612657565b8a51612657565b9050613cee613941828861263a565b9050613d15613d0f613d09613d038487612672565b88612672565b84612657565b83612657565b9050613d3d613d32613d27838761263a565b6108de8f6009615040565b6108de60018a612672565b6101608c01525050505060208501516080860151600091613d5d91612657565b90506000613d7c613d7288606001518861263a565b8860200151612672565b90506000613da2613d8d848761263a565b6108e36137298b60a001518c60000151612672565b9050613dca613dbf613db4838c61263a565b6108de8e6009615040565b6108de600189612672565b6101808b01525060009150613dec9050613de5836011612657565b875161263a565b90506000613dfa8384612657565b9050613e068182612657565b90506000613e1583600961263a565b9050613e3f613e396136f4613e328b60a001518c60000151612657565b8b51612657565b82612672565b60c08901819052600090613e5b90613cb990613d27908d61263a565b9050613e6e8b600b602002015182612657565b6101608c01525050865160009250613e969150613de590613e8f9080612657565b8851612657565b90506000613ed8613eb3836108de8a600001518b60a00151612672565b602089015161090290613ec69080612657565b6108de8b602001518c60800151612657565b9050613ef589600c60200201516108e3613cb9613d27858d61263a565b89600c602002015250505050505050505050565b613f82604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613f9a613f9086601e615040565b856040015161263a565b808252613fb9906108e3613faf88601d615040565b876020015161263a565b808252613fce906108e3613de588601c615040565b808252613fe0906108e3876001615040565b80825260208201819052613ff99061090287601f615040565b8152614014614009866024615040565b61090287601c615040565b6080820152614032614027866027615040565b61090287601f615040565b6060820152608081015161404b906108de816001612672565b6101c0820152608081015161408c906140829061407b906108de6001600080516020615d5f833981519152615651565b6001612657565b826060015161263a565b60a082018190526140c2906140b4906108de6140a9896002615040565b6108de8a6003615040565b6108de61372988600a615040565b83600e60200201526101c08101516140e6906140b4906108de6140a9896002615040565b6101e0840152805161410b906108de614100886002615040565b6108de896003615040565b610120820152600061412b61412187601f615040565b8360200151612672565b905061413c816108de836001612672565b60e083015261415961414f876026615040565b866040015161263a565b6040830181905261417c906108e3614172896025615040565b886020015161263a565b6040830181905261419c906108e3614195896024615040565b885161263a565b60408301526141b96141af876027615040565b8360400151612672565b604083015260006141d96141ce886026615040565b61090289601e615040565b905061422d61420761343c61407b86608001516001600080516020615d5f8339815191526108de9190615651565b6108de61407b86604001516001600080516020615d5f8339815191526108de9190615651565b60c0840152604083015161424f90614245908061263a565b8460400151612672565b61010084015260c083015161427b9061426d906108de8a6004615040565b6108de6139418a600a615040565b6102008601526101c083015161429a9061426d906108de8a6004615040565b6102208601526101008301516142b99061426d906108de8a6004615040565b61024086015260e08301516142d3906108de896004615040565b6101408401526142f26142e7886025615040565b61090289601d615040565b6101608401526080830151614331906141ce906143269061407b906108de6001600080516020615d5f833981519152615651565b85610160015161263a565b61018084018190526101208401516101a08501819052614368916108e3906108de61435d8c6005615040565b6108de8d6002615040565b6101a08401819052835161438991906108e3906108de61435d8c6000615040565b6101a084018190526101408401516143a19190612657565b6101a084018190526143bb906108de6139418a600a615040565b6101a0840181905285600d613766565b61440b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61444061442761441c86601c615040565b6108de876025615040565b6108e3614435876024615040565b6108de88601d615040565b815261448561447a61446161445687601c615040565b6108de88601f615040565b6108e361446f88601d615040565b6108de89601e615040565b610902866026615040565b6040820181905261449a90600160441b61263a565b604082018190526144b090610902866027615040565b6040820181905281516144c39190612657565b604082018190526144d9906108de866005615040565b604082015280516144ee90600160441b61263a565b80825261450e906108e3614503876024615040565b6108de886025615040565b808252602082018190526145359061090261452a87601e615040565b6108e388601f615040565b6020820181905261454b906108de866004615040565b6020820152805160608201819052614568906108e386601f615040565b6060820181905261458c90610902614581876026615040565b6108e3886027615040565b606082018190526145a2906108de866000615040565b81606001818152505060006145cc6145c283602001518460400151612657565b8360600151612657565b90506145dd816108de876003615040565b90506145f56145ed866025615040565b61400061263a565b6080830181905261460b906108e3876024615040565b6080830181905261461e9061400061263a565b60808301819052614634906108e387601e615040565b608083018190526146479061400061263a565b6080830181905261465d906108e387601d615040565b608083018190526146709061400061263a565b60808301819052614686906108e387601c615040565b6080830181905261469c9061090287601f615040565b608083018190526146b2906108de876005615040565b60808301526146c56145ed866026615040565b60a083018190526146db906108e3876025615040565b60a083018190526146ee9061400061263a565b60a08301819052614704906108e3876024615040565b60a083018190526147179061400061263a565b60a0830181905261472d906108e387601f615040565b60a083018190526147409061400061263a565b60a08301819052614756906108e387601e615040565b60a0830181905261476c90610902876027615040565b60a08301819052614782906108de876000615040565b60a08301819052608083015160009161479b9190612657565b90506147ac816108de886004615040565b90506147b88282612657565b60c084018190526147d1906108de61394189600b615040565b60c084018190528560136020020152505050505050565b61486f60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61488861487d85601c615040565b6108e3866002615040565b81526148a361489885601d615040565b6108e3866003615040565b60208201526148c16148b685601e615040565b6108e3866004615040565b60408201526148df6148d485601f615040565b6108e3866005615040565b606082015280516149119061490a90614903906148fc908061263a565b845161263a565b835161263a565b825161263a565b6080820152602081015161494f906149459061493b90614931908061263a565b846020015161263a565b836020015161263a565b826020015161263a565b60a0820152604081015161498d90614983906149799061496f908061263a565b846040015161263a565b836040015161263a565b826040015161263a565b60c082015260608101516149c190614082906149b7906149ad908061263a565b846060015161263a565b836060015161263a565b60e0820152608081015160a08201516149da9190612657565b61010082015260c081015160e08201516149f49190612657565b61012082015260a0810151614a1890614a0d9080612657565b826101200151612657565b61014082015260e0810151614a3c90614a319080612657565b826101000151612657565b610160820152610120810151614a529080612657565b6101e08201819052614a7390614a689080612657565b826101600151612657565b6101e0820152610100810151614a899080612657565b6101a08201819052614aaa90614a9f9080612657565b826101400151612657565b6101a08201819052610160820151614ac191612657565b6101808201526101408101516101e0820151614add9190612657565b6101c0820152614af161343c85600c615040565b6102008201819052610280840151610180830151614b1c926108e3916108de906109028a6024615040565b8360146020020152614b4c83601560200201516108e38361020001516108de856101a001516109028a6025615040565b8360156020020152614b7c83601660200201516108e38361020001516108de856101c001516109028a6026615040565b8360166020020152614bac83601760200201516108e38361020001516108de856101e001516109028a6027615040565b836017602002015250505050565b614c1760405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006040518060800160405280614c4d7f10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e7612620565b8152602001614c7b7f0c28145b6a44df3e0149b3d0a30b3bb599df9756d4dd9b84a86b38cfb45a740b612620565b8152602001614ca87e544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac15612620565b8152602001614cd67f222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428b612620565b90529050614cf3614ce886601c615040565b6108e3876002615040565b6101208301819052614d3290614d2790614d1c90614d11908061263a565b85610120015161263a565b84610120015161263a565b83610120015161263a565b8252614d3f85601d615040565b6020830152614d4f85601e615040565b6040830152614d5f85601f615040565b606083015281516020830151614d87916145c291614d7d9190612657565b8460400151612657565b6080830152614d9a6136f486600d615040565b6101408301528151614dbc90614db290836000610bed565b8360800151612657565b60a0830152614de884601860200201516108e38461014001516108de8660a001516109028b6024615040565b6103008501526020820151614e0390614db290836001610bed565b60c0830152614e2f84601960200201516108e38461014001516108de8660c001516109028b6025615040565b6103208501526040820151614e4a90614db290836002610bed565b60e0830152614e7684601a60200201516108e38461014001516108de8660e001516109028b6026615040565b6103408501526060820151614e9190614db290836003610bed565b610100830152614ebf84601b60200201516108e38461014001516108de8661010001516109028b6027615040565b84601b613577565b815160015b601c811015614f1957614f0f826108e38684601c8110614eee57614eee615bdc565b602002015186614eff600187615651565b601b8110610bed57610bed615bdc565b9150600101614ecc565b5092915050565b60008083905060006040516020815260208082015260206040820152826060820152846080820152600080516020615d5f83398151915260a08201526020600060c08360055afa80614f7157600080fd5b5060005160809190910160405295945050505050565b614f8f61537d565b614f9761537d565b604051835181526020840151602082015284604082015260408160608360075afa80614fc257600080fd5b5080518252602080820151908301526060016040529392505050565b614fe661537d565b614fee61537d565b6040518451815260208501516020820152835160408201526020840151606082015260408160808360065afa8061502457600080fd5b5080518252602080820151908301526080016040529392505050565b60008282602881111561505557615055615ce8565b6029811061506557615065615bdc565b60200201519392505050565b604051806103e0016040528060008152602001600081526020016000815260200161509a61537d565b81526020016150a761537d565b81526020016150b461537d565b81526020016150c161537d565b81526020016150ce61537d565b81526020016150db61537d565b81526020016150e861537d565b81526020016150f561537d565b815260200161510261537d565b815260200161510f61537d565b815260200161511c61537d565b815260200161512961537d565b815260200161513661537d565b815260200161514361537d565b815260200161515061537d565b815260200161515d61537d565b815260200161516a61537d565b815260200161517761537d565b815260200161518461537d565b815260200161519161537d565b815260200161519e61537d565b81526020016151ab61537d565b81526020016151b861537d565b81526020016151c561537d565b81526020016151d261537d565b81526020016151df61537d565b81526020016151ec61537d565b81526020016151f961537d565b905290565b604051806102800160405280615212615450565b815260200161521f61537d565b815260200161522c61537d565b815260200161523961537d565b815260200161524661537d565b815260200161525361537d565b815260200161526061537d565b815260200161526d61537d565b815260200161527a61537d565b815260200161528761537d565b815260200161529461546f565b8152602001600081526020016152a861549c565b8152602001600081526020016152bc6154ca565b81526020016152c96154e9565b81526020016152d66153c9565b81526020016151df615517565b6040518061052001604052806029906020820280368337509192915050565b604051806101c0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001615347615517565b8152602001615354615517565b815260200160008152602001600081526020016000815260200160008152602001606081525090565b604051806040016040528060008152602001600081525090565b60405180604001604052806151ec61537d565b6040518061012001604052806009906020820280368337509192915050565b604051806103800160405280601c906020820280368337509192915050565b6040518060e001604052806153fb615535565b815260200160008152602001600081526020016000815260200160008152602001615424615535565b8152602001600081525090565b6040518061010001604052806008906020820280368337509192915050565b6040518061020001604052806010906020820280368337509192915050565b60405180606001604052806003905b61548661537d565b81526020019060019003908161547e5790505090565b604051806103800160405280601c905b6154b46153aa565b8152602001906001900390816154ac5790505090565b604051806105400160405280602a906020820280368337509192915050565b604051806103600160405280601b905b61550161537d565b8152602001906001900390816154f95790505090565b60405180608001604052806004906020820280368337509192915050565b604051806120000160405280610100906020820280368337509192915050565b6000806000806040858703121561556b57600080fd5b84356001600160401b0381111561558157600080fd5b8501601f8101871361559257600080fd5b80356001600160401b038111156155a857600080fd5b8760208284010111156155ba57600080fd5b6020918201955093508501356001600160401b038111156155da57600080fd5b8501601f810187136155eb57600080fd5b80356001600160401b0381111561560157600080fd5b8760208260051b840101111561561657600080fd5b949793965060200194505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761265157612651615624565b8181038181111561265157612651615624565b8060005b60108110156131a4578151845260209384019390910190600101615668565b80518252602090810151910152565b8060005b60038110156131a4576156ae848351615687565b604093909301926020919091019060010161569a565b8060005b601c8110156131a45781518460005b60098110156156f65782518252602092830192909101906001016156d7565b5050506101209390930192602091909101906001016156c8565b8060005b602a8110156131a4578151845260209384019390910190600101615714565b8060005b601b8110156131a45761574b848351615687565b6040939093019260209190910190600101615737565b8060005b601c8110156131a4578151845260209384019390910190600101615765565b8060005b60048110156131a4578151845260209384019390910190600101615788565b81835260006001600160fb1b038311156157c057600080fd5b8260051b80836020870137939093016020019392505050565b6157e4818851615664565b600060208801516157f9610200840182615687565b50604088015161580d610240840182615687565b506060880151615821610280840182615687565b5060808801516158356102c0840182615687565b5060a0880151615849610300840182615687565b5060c088015161585d610340840182615687565b5060e0880151615871610380840182615687565b506101008801516158866103c0840182615687565b5061012088015161589b610400840182615687565b506101408801516158b0610440840182615696565b506101608801516105008301526101808801516158d16105208401826156c4565b506101a08801516124a08301526101c08801516158f26124c0840182615710565b506101e0880151615907612a00840182615733565b5061020088015161591c6130c0840182615761565b50610220880151615931613440840182615784565b506102408801516159466134c0840182615687565b5061026088015161595b613500840182615687565b506135c06135408301526159746135c0830187896157a7565b613560830195909552506135808101929092526135a0909101529392505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156159ce576159ce615995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156159fc576159fc615995565b604052919050565b600060c08284031215615a1657600080fd5b60405160c081016001600160401b0381118282101715615a3857615a38615995565b604090815283518252602080850151908301528381015190820152606080840151908201526080808401519082015260a0928301519281019290925250919050565b600082601f830112615a8b57600080fd5b6000610360615a99816159d4565b915083018185821115615aab57600080fd5b845b82811015615ac5578051825260209182019101615aad565b509195945050505050565b600082601f830112615ae157600080fd5b6000610380615a99816159d4565b6000610be0828403128015615b0357600080fd5b506000615b0e6159ab565b615b188585615a04565b8152615b278560c08601615a7a565b6020820152615b3a856104208601615ad0565b60408201526107a08401516060820152615b58856107c08601615ad0565b6080820152610b4084015160a0820152610b6084015160c0820152610b8084015160e0820152610ba0840151610100820152610bc090930151610120840152509092915050565b8082018082111561265157612651615624565b60008085851115615bc257600080fd5b83861115615bcf57600080fd5b5050820193919092039150565b634e487b7160e01b600052603260045260246000fd5b600060018201615c0457615c04615624565b5060010190565b8035602083101561265157600019602084900360031b1b1692915050565b600082615c4657634e487b7160e01b600052601260045260246000fd5b500690565b600081615c5a57615c5a615624565b506000190190565b60008183825b6008811015615c87578151835260209283019290910190600101615c68565b5050506101008201905092915050565b6000825160005b81811015615cb85760208186018101518583015201615c9e565b506000920191825250919050565b600060208284031215615cd857600080fd5b815180151581146103fe57600080fd5b634e487b7160e01b600052602160045260246000fdfe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593effffd3130644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47204bd3277422fad364751ad938e2b5e6a54cf8c68712848a692c553d0329f5d630644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000130644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffec51a164736f6c634300081c000a"; readonly linkReferences: {"project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol":{"ZKTranscriptLib":[{"length":20,"start":705}]}}; readonly deployedLinkReferences: {"project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol":{"ZKTranscriptLib":[{"length":20,"start":366}]}}; readonly immutableReferences: {"54301":[{"length":32,"start":95},{"length":32,"start":152},{"length":32,"start":262},{"length":32,"start":472},{"length":32,"start":2630},{"length":32,"start":2989},{"length":32,"start":3148},{"length":32,"start":5455},{"length":32,"start":5644},{"length":32,"start":5696},{"length":32,"start":6219},{"length":32,"start":11188}],"54303":[{"length":32,"start":404}],"54305":[{"length":32,"start":438},{"length":32,"start":2323}],"54307":[{"length":32,"start":3190},{"length":32,"start":3292},{"length":32,"start":11962}]}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface FrLib$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "FrLib"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: []; readonly bytecode: "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface Honk$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "Honk"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: []; readonly bytecode: "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface HonkVerificationKey$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "HonkVerificationKey"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: []; readonly bytecode: "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface IVerifier$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "IVerifier"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: [{"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"bytes32[]","name":"_publicInputs","type":"bytes32[]"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]; readonly bytecode: "0x"; readonly deployedBytecode: "0x"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface RelationsLib$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "RelationsLib"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: []; readonly bytecode: "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300081c000a"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; export interface ZKTranscriptLib$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "ZKTranscriptLib"; readonly sourceName: "contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly abi: [{"inputs":[{"components":[{"internalType":"Fr[16]","name":"pairingPointObject","type":"uint256[16]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"geminiMaskingPoly","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"w1","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"w2","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"w3","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"w4","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"lookupReadCounts","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"lookupReadTags","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"lookupInverses","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"zPerm","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point[3]","name":"libraCommitments","type":"tuple[3]"},{"internalType":"Fr","name":"libraSum","type":"uint256"},{"internalType":"Fr[9][28]","name":"sumcheckUnivariates","type":"uint256[9][28]"},{"internalType":"Fr","name":"libraEvaluation","type":"uint256"},{"internalType":"Fr[42]","name":"sumcheckEvaluations","type":"uint256[42]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point[27]","name":"geminiFoldComms","type":"tuple[27]"},{"internalType":"Fr[28]","name":"geminiAEvaluations","type":"uint256[28]"},{"internalType":"Fr[4]","name":"libraPolyEvals","type":"uint256[4]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"shplonkQ","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Honk.G1Point","name":"kzgQuotient","type":"tuple"}],"internalType":"struct Honk.ZKProof","name":"proof","type":"tuple"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"uint256","name":"vkHash","type":"uint256"},{"internalType":"uint256","name":"publicInputsSize","type":"uint256"},{"internalType":"uint256","name":"logN","type":"uint256"}],"name":"generateTranscript","outputs":[{"components":[{"components":[{"internalType":"Fr","name":"eta","type":"uint256"},{"internalType":"Fr","name":"etaTwo","type":"uint256"},{"internalType":"Fr","name":"etaThree","type":"uint256"},{"internalType":"Fr","name":"beta","type":"uint256"},{"internalType":"Fr","name":"gamma","type":"uint256"},{"internalType":"Fr","name":"publicInputsDelta","type":"uint256"}],"internalType":"struct Honk.RelationParameters","name":"relationParameters","type":"tuple"},{"internalType":"Fr[27]","name":"alphas","type":"uint256[27]"},{"internalType":"Fr[28]","name":"gateChallenges","type":"uint256[28]"},{"internalType":"Fr","name":"libraChallenge","type":"uint256"},{"internalType":"Fr[28]","name":"sumCheckUChallenges","type":"uint256[28]"},{"internalType":"Fr","name":"rho","type":"uint256"},{"internalType":"Fr","name":"geminiR","type":"uint256"},{"internalType":"Fr","name":"shplonkNu","type":"uint256"},{"internalType":"Fr","name":"shplonkZ","type":"uint256"},{"internalType":"Fr","name":"publicInputsDelta","type":"uint256"}],"internalType":"struct ZKTranscript","name":"t","type":"tuple"}],"stateMutability":"pure","type":"function"}]; readonly bytecode: "0x611750610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063995bf4571461003a575b600080fd5b61004d61004836600461123d565b610063565b60405161005a919061147b565b60405180910390f35b61006b610d6f565b600061007b88888888888661012b565b908352905061008a8189610180565b6020840191909152905061009e8184610272565b604084019190915290506100b2818961031c565b606084019190915290506100c788828561037e565b608084019190915290506100db888261044f565b60a084019190915290506100f08882856105d6565b60c0840191909152905061010588828561074c565b60e0840191909152905061011988826108d1565b50610100830152509695505050505050565b610133610dda565b6000610142888888888861090f565b6040860191909152602085019190915290835292506101618389610c83565b6080850191909152606084019190915291989197509095505050505050565b610188610e10565b6000610192610e2f565b8481526101008401805151602080840191909152905181015160408084019190915261012086018051516060850152518201516080840152516101f6916101db91849101611552565b60405160208183030381529060405280519060200120610d0d565b9150600061020383610d21565b50808552905060015b6102186001601c61159c565b811015610268576102498561022e60018461159c565b601b811061023e5761023e61153c565b602002015183610d52565b8582601b811061025b5761025b61153c565b602002015260010161020c565b5050509250929050565b61027a610e4d565b6000610292846040516020016101db91815260200190565b935061029d84610d21565b50825260015b83811015610314576102f5836102ba60018461159c565b601c81106102ca576102ca61153c565b6020020151846102db60018561159c565b601c81106102eb576102eb61153c565b6020020151610d52565b8382601c81106103075761030761153c565b60200201526001016102a3565b509093915050565b600080610327610e6c565b848152610140840180515151602080840191909152905151810151604080840191909152610160860151606084015251610367916101db918491016115af565b915061037282610d21565b50959194509092505050565b610386610e4d565b6000805b838110156104455761039a610e8a565b85815260005b60098110156104045787610180015183601c81106103c0576103c061153c565b602002015181600981106103d6576103d661153c565b6020020151826103e78360016115e3565b600a81106103f7576103f761153c565b60200201526001016103a0565b50610419816040516020016101db91906115f6565b955061042486610d21565b508483601c81106104375761043761153c565b60200201525060010161038a565b5090949293505050565b60008061045a610ea9565b83815260015b61046c600160296115e3565b81116104c1576101c086015161048360018361159c565b602a81106104935761049361153c565b60200201518282603081106104aa576104aa61153c565b6020020152806104b98161162b565b915050610460565b856101a001518282603081106104d9576104d961153c565b60200201526104e96001826115e3565b61014087015160200151519091508282603081106105095761050961153c565b602002015261014086015160016020020151602001518282600161052d91906115e3565b6030811061053d5761053d61153c565b602002015261054d6002826115e3565b610140870151604001515190915082826030811061056d5761056d61153c565b602002015261014086015160026020020151602001518282600161059191906115e3565b603081106105a1576105a161153c565b6020020181815250506105be826040516020016101db9190611644565b92506105c983610d21565b5096929550919350505050565b600080806105e560018561159c565b6105f0906002611679565b6105fb9060016115e3565b6001600160401b0381111561061257610612610f04565b60405190808252806020026020018201604052801561063b578160200160208202803683370190505b50905084816000815181106106525761065261153c565b60200260200101818152505060005b61066c60018661159c565b81101561071f57866101e0015181601b811061068a5761068a61153c565b6020020151518261069c836002611679565b6106a79060016115e3565b815181106106b7576106b761153c565b602002602001018181525050866101e0015181601b81106106da576106da61153c565b602002015160200151828260026106f19190611679565b6106fc9060026115e3565b8151811061070c5761070c61153c565b6020908102919091010152600101610661565b50610734816040516020016101db9190611690565b915061073f82610d21565b5096919550909350505050565b6000808061075b8460016115e3565b6107669060046115e3565b6001600160401b0381111561077d5761077d610f04565b6040519080825280602002602001820160405280156107a6578160200160208202803683370190505b50905084816000815181106107bd576107bd61153c565b602090810291909101015260015b848111610827576102008701516107e360018361159c565b601c81106107f3576107f361153c565b602002015182828151811061080a5761080a61153c565b60209081029190910101528061081f8161162b565b9150506107cb565b506000806108368660016115e3565b90505b6108448660046115e3565b81116108a35787610220015182600481106108615761086161153c565b60200201518382815181106108785761087861153c565b60209081029190910101528161088d8161162b565b925050808061089b9061162b565b915050610839565b506108b8826040516020016101db9190611690565b92506108c383610d21565b509792965091945050505050565b6000806108dc610ec8565b8381526102408501805151602080840191909152905181015160408084019190915251610367916101db918491016116bb565b6000808080806109208660016115e3565b61092b9060086115e3565b6001600160401b0381111561094257610942610f04565b60405190808252806020026020018201604052801561096b578160200160208202803683370190505b5090508660001b816000815181106109855761098561153c565b60200260200101818152505060005b61099f60108861159c565b8110156109f0578989828181106109b8576109b861153c565b90506020020135828260016109cd91906115e3565b815181106109dd576109dd61153c565b6020908102919091010152600101610994565b5060005b6010811015610a62578a51610a1c908260108110610a1457610a1461153c565b602002015190565b82826010610a2b8b60016115e3565b610a35919061159c565b610a3f91906115e3565b81518110610a4f57610a4f61153c565b60209081029190910101526001016109f4565b5060208a01515181610a758860016115e3565b81518110610a8557610a8561153c565b6020908102919091018101919091528a810151015181610aa68860016115e3565b610ab19060016115e3565b81518110610ac157610ac161153c565b602090810291909101015260408a01515181610ade8860016115e3565b610ae99060026115e3565b81518110610af957610af961153c565b60209081029190910181019190915260408b0151015181610b1b8860016115e3565b610b269060036115e3565b81518110610b3657610b3661153c565b602090810291909101015260608a01515181610b538860016115e3565b610b5e9060046115e3565b81518110610b6e57610b6e61153c565b60209081029190910181019190915260608b0151015181610b908860016115e3565b610b9b9060056115e3565b81518110610bab57610bab61153c565b602090810291909101015260808a01515181610bc88860016115e3565b610bd39060066115e3565b81518110610be357610be361153c565b60209081029190910181019190915260808b0151015181610c058860016115e3565b610c109060076115e3565b81518110610c2057610c2061153c565b602002602001018181525050610c40816040516020016101db9190611690565b9150610c4b82610d21565b6040805160208101869052929750909550610c6691016101db565b9150610c7182610d21565b50809350505095509550955095915050565b6000806000610c90610ee6565b85815260c0858101805151602080850191909152905181015160408085019190915260e08801805151606086015251820151608085015260a08089018051519186019190915251820151928401929092529051610cf3916101db918491016116ef565b9150610cfe82610d21565b90979096509194509092505050565b600080516020611724833981519152900690565b6000808260016001607f1b038116607f82901c610d3d82610d0d565b9450610d4881610d0d565b9350505050915091565b600060008051602061172483398151915282840990505b92915050565b604051806101400160405280610d83610dda565b8152602001610d90610e10565b8152602001610d9d610e4d565b815260200160008152602001610db1610e4d565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806103600160405280601b906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b604051806103800160405280601c906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101400160405280600a906020820280368337509192915050565b6040518061060001604052806030906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060e001604052806007906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b60405161028081016001600160401b0381118282101715610f3d57610f3d610f04565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610f6b57610f6b610f04565b604052919050565b600082601f830112610f8457600080fd5b6000610200610f9281610f43565b915083018185821115610fa457600080fd5b845b82811015610fbe578035825260209182019101610fa6565b509195945050505050565b600060408284031215610fdb57600080fd5b604080519081016001600160401b0381118282101715610ffd57610ffd610f04565b604052823581526020928301359281019290925250919050565b600082601f83011261102857600080fd5b60006110346060610f43565b90508060c084018581111561104857600080fd5b845b81811015610fbe5761105c8782610fc9565b835260209092019160400161104a565b600082601f83011261107d57600080fd5b61038061108981610f43565b905080611f8084018581111561109e57600080fd5b845b818110156111055786601f8201126110b757600080fd5b60006101206110c581610f43565b9150820181898211156110d757600080fd5b835b828110156110f15780358252602091820191016110d9565b5050508452602090930192610120016110a0565b509095945050505050565b600082601f83011261112157600080fd5b6000610540610f9281610f43565b600082601f83011261114057600080fd5b600061036061114e81610f43565b915050806106c084018581111561116457600080fd5b845b81811015610fbe576111788782610fc9565b8352602090920191604001611166565b600082601f83011261119957600080fd5b6000610380610f9281610f43565b600082601f8301126111b857600080fd5b60006111c46080610f43565b90508060808401858111156111d857600080fd5b845b81811015610fbe5780358352602092830192016111da565b60008083601f84011261120457600080fd5b5081356001600160401b0381111561121b57600080fd5b6020830191508360208260051b850101111561123657600080fd5b9250929050565b6000806000806000808688036135c081121561125857600080fd5b61354081121561126757600080fd5b50611270610f1a565b61127a8989610f73565b815261128a896102008a01610fc9565b602082015261129d896102408a01610fc9565b60408201526112b0896102808a01610fc9565b60608201526112c3896102c08a01610fc9565b60808201526112d6896103008a01610fc9565b60a08201526112e9896103408a01610fc9565b60c08201526112fc896103808a01610fc9565b60e082015261130f896103c08a01610fc9565b610100820152611323896104008a01610fc9565b610120820152611337896104408a01611017565b610140820152610500880135610160820152611357896105208a0161106c565b6101808201526124a08801356101a0820152611377896124c08a01611110565b6101c082015261138b89612a008a0161112f565b6101e082015261139f896130c08a01611188565b6102008201526113b3896134408a016111a7565b6102208201526113c7896134c08a01610fc9565b6102408201526113db896135008a01610fc9565b61026082015295506135408701356001600160401b038111156113fd57600080fd5b61140989828a016111f2565b979a90995096976135608101359761358082013597506135a09091013595509350505050565b8060005b601b811015611452578151845260209384019390910190600101611433565b50505050565b8060005b601c81101561145257815184526020938401939091019060010161145c565b8151805182526020808201519083015260408082015190830152606080820151908301526080808201519083015260a09081015190820152610be0810160208301516114ca60c084018261142f565b5060408301516114de610420840182611458565b5060608301516107a083015260808301516114fd6107c0840182611458565b5060a0830151610b4083015260c0830151610b6083015260e0830151610b80830152610100830151610ba083015261012090920151610bc09091015290565b634e487b7160e01b600052603260045260246000fd5b60008183825b6005811015611577578151835260209283019290910190600101611558565b50505060a08201905092915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d6957610d69611586565b60008183825b60048110156115d45781518352602092830192909101906001016115b5565b50505060808201905092915050565b80820180821115610d6957610d69611586565b60008183825b600a81101561161b5781518352602092830192909101906001016115fc565b5050506101408201905092915050565b60006001820161163d5761163d611586565b5060010190565b60008183825b603081101561166957815183526020928301929091019060010161164a565b5050506106008201905092915050565b8082028115828204841417610d6957610d69611586565b8151600090829060208501835b82811015610fbe57815184526020938401939091019060010161169d565b60008183825b60038110156116e05781518352602092830192909101906001016116c1565b50505060608201905092915050565b60008183825b60078110156117145781518352602092830192909101906001016116f5565b50505060e0820190509291505056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a"; readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063995bf4571461003a575b600080fd5b61004d61004836600461123d565b610063565b60405161005a919061147b565b60405180910390f35b61006b610d6f565b600061007b88888888888661012b565b908352905061008a8189610180565b6020840191909152905061009e8184610272565b604084019190915290506100b2818961031c565b606084019190915290506100c788828561037e565b608084019190915290506100db888261044f565b60a084019190915290506100f08882856105d6565b60c0840191909152905061010588828561074c565b60e0840191909152905061011988826108d1565b50610100830152509695505050505050565b610133610dda565b6000610142888888888861090f565b6040860191909152602085019190915290835292506101618389610c83565b6080850191909152606084019190915291989197509095505050505050565b610188610e10565b6000610192610e2f565b8481526101008401805151602080840191909152905181015160408084019190915261012086018051516060850152518201516080840152516101f6916101db91849101611552565b60405160208183030381529060405280519060200120610d0d565b9150600061020383610d21565b50808552905060015b6102186001601c61159c565b811015610268576102498561022e60018461159c565b601b811061023e5761023e61153c565b602002015183610d52565b8582601b811061025b5761025b61153c565b602002015260010161020c565b5050509250929050565b61027a610e4d565b6000610292846040516020016101db91815260200190565b935061029d84610d21565b50825260015b83811015610314576102f5836102ba60018461159c565b601c81106102ca576102ca61153c565b6020020151846102db60018561159c565b601c81106102eb576102eb61153c565b6020020151610d52565b8382601c81106103075761030761153c565b60200201526001016102a3565b509093915050565b600080610327610e6c565b848152610140840180515151602080840191909152905151810151604080840191909152610160860151606084015251610367916101db918491016115af565b915061037282610d21565b50959194509092505050565b610386610e4d565b6000805b838110156104455761039a610e8a565b85815260005b60098110156104045787610180015183601c81106103c0576103c061153c565b602002015181600981106103d6576103d661153c565b6020020151826103e78360016115e3565b600a81106103f7576103f761153c565b60200201526001016103a0565b50610419816040516020016101db91906115f6565b955061042486610d21565b508483601c81106104375761043761153c565b60200201525060010161038a565b5090949293505050565b60008061045a610ea9565b83815260015b61046c600160296115e3565b81116104c1576101c086015161048360018361159c565b602a81106104935761049361153c565b60200201518282603081106104aa576104aa61153c565b6020020152806104b98161162b565b915050610460565b856101a001518282603081106104d9576104d961153c565b60200201526104e96001826115e3565b61014087015160200151519091508282603081106105095761050961153c565b602002015261014086015160016020020151602001518282600161052d91906115e3565b6030811061053d5761053d61153c565b602002015261054d6002826115e3565b610140870151604001515190915082826030811061056d5761056d61153c565b602002015261014086015160026020020151602001518282600161059191906115e3565b603081106105a1576105a161153c565b6020020181815250506105be826040516020016101db9190611644565b92506105c983610d21565b5096929550919350505050565b600080806105e560018561159c565b6105f0906002611679565b6105fb9060016115e3565b6001600160401b0381111561061257610612610f04565b60405190808252806020026020018201604052801561063b578160200160208202803683370190505b50905084816000815181106106525761065261153c565b60200260200101818152505060005b61066c60018661159c565b81101561071f57866101e0015181601b811061068a5761068a61153c565b6020020151518261069c836002611679565b6106a79060016115e3565b815181106106b7576106b761153c565b602002602001018181525050866101e0015181601b81106106da576106da61153c565b602002015160200151828260026106f19190611679565b6106fc9060026115e3565b8151811061070c5761070c61153c565b6020908102919091010152600101610661565b50610734816040516020016101db9190611690565b915061073f82610d21565b5096919550909350505050565b6000808061075b8460016115e3565b6107669060046115e3565b6001600160401b0381111561077d5761077d610f04565b6040519080825280602002602001820160405280156107a6578160200160208202803683370190505b50905084816000815181106107bd576107bd61153c565b602090810291909101015260015b848111610827576102008701516107e360018361159c565b601c81106107f3576107f361153c565b602002015182828151811061080a5761080a61153c565b60209081029190910101528061081f8161162b565b9150506107cb565b506000806108368660016115e3565b90505b6108448660046115e3565b81116108a35787610220015182600481106108615761086161153c565b60200201518382815181106108785761087861153c565b60209081029190910101528161088d8161162b565b925050808061089b9061162b565b915050610839565b506108b8826040516020016101db9190611690565b92506108c383610d21565b509792965091945050505050565b6000806108dc610ec8565b8381526102408501805151602080840191909152905181015160408084019190915251610367916101db918491016116bb565b6000808080806109208660016115e3565b61092b9060086115e3565b6001600160401b0381111561094257610942610f04565b60405190808252806020026020018201604052801561096b578160200160208202803683370190505b5090508660001b816000815181106109855761098561153c565b60200260200101818152505060005b61099f60108861159c565b8110156109f0578989828181106109b8576109b861153c565b90506020020135828260016109cd91906115e3565b815181106109dd576109dd61153c565b6020908102919091010152600101610994565b5060005b6010811015610a62578a51610a1c908260108110610a1457610a1461153c565b602002015190565b82826010610a2b8b60016115e3565b610a35919061159c565b610a3f91906115e3565b81518110610a4f57610a4f61153c565b60209081029190910101526001016109f4565b5060208a01515181610a758860016115e3565b81518110610a8557610a8561153c565b6020908102919091018101919091528a810151015181610aa68860016115e3565b610ab19060016115e3565b81518110610ac157610ac161153c565b602090810291909101015260408a01515181610ade8860016115e3565b610ae99060026115e3565b81518110610af957610af961153c565b60209081029190910181019190915260408b0151015181610b1b8860016115e3565b610b269060036115e3565b81518110610b3657610b3661153c565b602090810291909101015260608a01515181610b538860016115e3565b610b5e9060046115e3565b81518110610b6e57610b6e61153c565b60209081029190910181019190915260608b0151015181610b908860016115e3565b610b9b9060056115e3565b81518110610bab57610bab61153c565b602090810291909101015260808a01515181610bc88860016115e3565b610bd39060066115e3565b81518110610be357610be361153c565b60209081029190910181019190915260808b0151015181610c058860016115e3565b610c109060076115e3565b81518110610c2057610c2061153c565b602002602001018181525050610c40816040516020016101db9190611690565b9150610c4b82610d21565b6040805160208101869052929750909550610c6691016101db565b9150610c7182610d21565b50809350505095509550955095915050565b6000806000610c90610ee6565b85815260c0858101805151602080850191909152905181015160408085019190915260e08801805151606086015251820151608085015260a08089018051519186019190915251820151928401929092529051610cf3916101db918491016116ef565b9150610cfe82610d21565b90979096509194509092505050565b600080516020611724833981519152900690565b6000808260016001607f1b038116607f82901c610d3d82610d0d565b9450610d4881610d0d565b9350505050915091565b600060008051602061172483398151915282840990505b92915050565b604051806101400160405280610d83610dda565b8152602001610d90610e10565b8152602001610d9d610e4d565b815260200160008152602001610db1610e4d565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806103600160405280601b906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b604051806103800160405280601c906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101400160405280600a906020820280368337509192915050565b6040518061060001604052806030906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060e001604052806007906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b60405161028081016001600160401b0381118282101715610f3d57610f3d610f04565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610f6b57610f6b610f04565b604052919050565b600082601f830112610f8457600080fd5b6000610200610f9281610f43565b915083018185821115610fa457600080fd5b845b82811015610fbe578035825260209182019101610fa6565b509195945050505050565b600060408284031215610fdb57600080fd5b604080519081016001600160401b0381118282101715610ffd57610ffd610f04565b604052823581526020928301359281019290925250919050565b600082601f83011261102857600080fd5b60006110346060610f43565b90508060c084018581111561104857600080fd5b845b81811015610fbe5761105c8782610fc9565b835260209092019160400161104a565b600082601f83011261107d57600080fd5b61038061108981610f43565b905080611f8084018581111561109e57600080fd5b845b818110156111055786601f8201126110b757600080fd5b60006101206110c581610f43565b9150820181898211156110d757600080fd5b835b828110156110f15780358252602091820191016110d9565b5050508452602090930192610120016110a0565b509095945050505050565b600082601f83011261112157600080fd5b6000610540610f9281610f43565b600082601f83011261114057600080fd5b600061036061114e81610f43565b915050806106c084018581111561116457600080fd5b845b81811015610fbe576111788782610fc9565b8352602090920191604001611166565b600082601f83011261119957600080fd5b6000610380610f9281610f43565b600082601f8301126111b857600080fd5b60006111c46080610f43565b90508060808401858111156111d857600080fd5b845b81811015610fbe5780358352602092830192016111da565b60008083601f84011261120457600080fd5b5081356001600160401b0381111561121b57600080fd5b6020830191508360208260051b850101111561123657600080fd5b9250929050565b6000806000806000808688036135c081121561125857600080fd5b61354081121561126757600080fd5b50611270610f1a565b61127a8989610f73565b815261128a896102008a01610fc9565b602082015261129d896102408a01610fc9565b60408201526112b0896102808a01610fc9565b60608201526112c3896102c08a01610fc9565b60808201526112d6896103008a01610fc9565b60a08201526112e9896103408a01610fc9565b60c08201526112fc896103808a01610fc9565b60e082015261130f896103c08a01610fc9565b610100820152611323896104008a01610fc9565b610120820152611337896104408a01611017565b610140820152610500880135610160820152611357896105208a0161106c565b6101808201526124a08801356101a0820152611377896124c08a01611110565b6101c082015261138b89612a008a0161112f565b6101e082015261139f896130c08a01611188565b6102008201526113b3896134408a016111a7565b6102208201526113c7896134c08a01610fc9565b6102408201526113db896135008a01610fc9565b61026082015295506135408701356001600160401b038111156113fd57600080fd5b61140989828a016111f2565b979a90995096976135608101359761358082013597506135a09091013595509350505050565b8060005b601b811015611452578151845260209384019390910190600101611433565b50505050565b8060005b601c81101561145257815184526020938401939091019060010161145c565b8151805182526020808201519083015260408082015190830152606080820151908301526080808201519083015260a09081015190820152610be0810160208301516114ca60c084018261142f565b5060408301516114de610420840182611458565b5060608301516107a083015260808301516114fd6107c0840182611458565b5060a0830151610b4083015260c0830151610b6083015260e0830151610b80830152610100830151610ba083015261012090920151610bc09091015290565b634e487b7160e01b600052603260045260246000fd5b60008183825b6005811015611577578151835260209283019290910190600101611558565b50505060a08201905092915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d6957610d69611586565b60008183825b60048110156115d45781518352602092830192909101906001016115b5565b50505060808201905092915050565b80820180821115610d6957610d69611586565b60008183825b600a81101561161b5781518352602092830192909101906001016115fc565b5050506101408201905092915050565b60006001820161163d5761163d611586565b5060010190565b60008183825b603081101561166957815183526020928301929091019060010161164a565b5050506106008201905092915050565b8082028115828204841417610d6957610d69611586565b8151600090829060208501835b82811015610fbe57815184526020938401939091019060010161169d565b60008183825b60038110156116e05781518352602092830192909101906001016116c1565b50505060608201905092915050565b60008183825b60078110156117145781518352602092830192909101906001016116f5565b50505060e0820190509291505056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; import "hardhat/types/artifacts"; declare module "hardhat/types/artifacts" { interface ArtifactMap { ["BaseZKHonkVerifier"]: BaseZKHonkVerifier$Type ["CommitmentSchemeLib"]: CommitmentSchemeLib$Type ["DkgAggregatorVerifier"]: DkgAggregatorVerifier$Type ["FrLib"]: FrLib$Type ["Honk"]: Honk$Type ["HonkVerificationKey"]: HonkVerificationKey$Type ["IVerifier"]: IVerifier$Type ["RelationsLib"]: RelationsLib$Type ["ZKTranscriptLib"]: ZKTranscriptLib$Type; ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:BaseZKHonkVerifier"]: BaseZKHonkVerifier$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:CommitmentSchemeLib"]: CommitmentSchemeLib$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:DkgAggregatorVerifier"]: DkgAggregatorVerifier$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:FrLib"]: FrLib$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:Honk"]: Honk$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:HonkVerificationKey"]: HonkVerificationKey$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:IVerifier"]: IVerifier$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:RelationsLib"]: RelationsLib$Type ["contracts/verifiers/bfv/honk/DkgAggregatorVerifier.sol:ZKTranscriptLib"]: ZKTranscriptLib$Type; } }