UNPKG

@vocdoni/davinci-contracts

Version:

Smart contracts powering DAVINCI's digital voting protocol

1,204 lines 58.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProcessRegistry__factory = void 0; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ const ethers_1 = require("ethers"); const _abi = [ { inputs: [ { internalType: "uint32", name: "_chainID", type: "uint32", }, { internalType: "address", name: "_stVerifier", type: "address", }, { internalType: "address", name: "_rVerifier", type: "address", }, { internalType: "bool", name: "_blobsDA", type: "bool", }, ], stateMutability: "nonpayable", type: "constructor", }, { inputs: [], name: "CannotAcceptResult", type: "error", }, { inputs: [], name: "CensusNotUpdatable", type: "error", }, { inputs: [ { internalType: "uint8", name: "limbIndex", type: "uint8", }, ], name: "InvalidBlobCommitmentLimb", type: "error", }, { inputs: [], name: "InvalidBlockNumber", type: "error", }, { inputs: [], name: "InvalidCensusAddress", type: "error", }, { inputs: [], name: "InvalidCensusConfig", type: "error", }, { inputs: [], name: "InvalidCensusOrigin", type: "error", }, { inputs: [], name: "InvalidCensusRoot", type: "error", }, { inputs: [], name: "InvalidCensusURI", type: "error", }, { inputs: [], name: "InvalidDuration", type: "error", }, { inputs: [], name: "InvalidGroupSize", type: "error", }, { inputs: [], name: "InvalidMaxCount", type: "error", }, { inputs: [], name: "InvalidMaxMinValueBounds", type: "error", }, { inputs: [], name: "InvalidMaxValue", type: "error", }, { inputs: [], name: "InvalidMaxVoters", type: "error", }, { inputs: [], name: "InvalidMinTotalCost", type: "error", }, { inputs: [], name: "InvalidMinValue", type: "error", }, { inputs: [], name: "InvalidProcessId", type: "error", }, { inputs: [], name: "InvalidStartTime", type: "error", }, { inputs: [], name: "InvalidStateRoot", type: "error", }, { inputs: [], name: "InvalidStatus", type: "error", }, { inputs: [], name: "InvalidTimeBounds", type: "error", }, { inputs: [], name: "InvalidUniqueValues", type: "error", }, { inputs: [], name: "InvalidValueSumBounds", type: "error", }, { inputs: [], name: "MaxPossibleResultCapExceeded", type: "error", }, { inputs: [], name: "MaxVotersReached", type: "error", }, { inputs: [], name: "ProcessAlreadyExists", type: "error", }, { inputs: [], name: "ProcessNotEnded", type: "error", }, { inputs: [], name: "ProcessNotFound", type: "error", }, { inputs: [], name: "ProofInvalid", type: "error", }, { inputs: [], name: "ReentrancyGuardReentrantCall", type: "error", }, { inputs: [], name: "Unauthorized", type: "error", }, { inputs: [], name: "UnknownProcessIdPrefix", type: "error", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: false, internalType: "bytes32", name: "censusRoot", type: "bytes32", }, { indexed: false, internalType: "string", name: "censusURI", type: "string", }, ], name: "CensusUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: true, internalType: "address", name: "creator", type: "address", }, ], name: "ProcessCreated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: false, internalType: "uint256", name: "duration", type: "uint256", }, ], name: "ProcessDurationChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: false, internalType: "uint256", name: "maxVoters", type: "uint256", }, ], name: "ProcessMaxVotersChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: true, internalType: "address", name: "sender", type: "address", }, { indexed: false, internalType: "uint256[]", name: "result", type: "uint256[]", }, ], name: "ProcessResultsSet", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: true, internalType: "address", name: "sender", type: "address", }, { indexed: false, internalType: "uint256", name: "oldStateRoot", type: "uint256", }, { indexed: false, internalType: "uint256", name: "newStateRoot", type: "uint256", }, { indexed: false, internalType: "uint256", name: "newVotersCount", type: "uint256", }, { indexed: false, internalType: "uint256", name: "newOverwrittenVotesCount", type: "uint256", }, ], name: "ProcessStateTransitioned", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes31", name: "processId", type: "bytes31", }, { indexed: false, internalType: "enum DAVINCITypes.ProcessStatus", name: "oldStatus", type: "uint8", }, { indexed: false, internalType: "enum DAVINCITypes.ProcessStatus", name: "newStatus", type: "uint8", }, ], name: "ProcessStatusChanged", type: "event", }, { inputs: [], name: "BLOB_INDEX", outputs: [ { internalType: "uint8", name: "", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "MAX_CENSUS_ORIGIN", outputs: [ { internalType: "uint8", name: "", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "MAX_STATUS", outputs: [ { internalType: "uint8", name: "", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "blobsDA", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "chainID", outputs: [ { internalType: "uint32", name: "", type: "uint32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "organizationId", type: "address", }, ], name: "getNextProcessId", outputs: [ { internalType: "bytes31", name: "", type: "bytes31", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, ], name: "getProcess", outputs: [ { components: [ { internalType: "enum DAVINCITypes.ProcessStatus", name: "status", type: "uint8", }, { internalType: "address", name: "organizationId", type: "address", }, { components: [ { internalType: "uint256", name: "x", type: "uint256", }, { internalType: "uint256", name: "y", type: "uint256", }, ], internalType: "struct DAVINCITypes.EncryptionKey", name: "encryptionKey", type: "tuple", }, { internalType: "uint256", name: "latestStateRoot", type: "uint256", }, { internalType: "uint256[]", name: "result", type: "uint256[]", }, { internalType: "uint256", name: "startTime", type: "uint256", }, { internalType: "uint256", name: "duration", type: "uint256", }, { internalType: "uint256", name: "maxVoters", type: "uint256", }, { internalType: "uint256", name: "votersCount", type: "uint256", }, { internalType: "uint256", name: "overwrittenVotesCount", type: "uint256", }, { internalType: "uint256", name: "creationBlock", type: "uint256", }, { internalType: "uint256", name: "batchNumber", type: "uint256", }, { internalType: "string", name: "metadataURI", type: "string", }, { components: [ { internalType: "bool", name: "uniqueValues", type: "bool", }, { internalType: "uint8", name: "numFields", type: "uint8", }, { internalType: "uint8", name: "groupSize", type: "uint8", }, { internalType: "uint8", name: "costExponent", type: "uint8", }, { internalType: "uint256", name: "maxValue", type: "uint256", }, { internalType: "uint256", name: "minValue", type: "uint256", }, { internalType: "uint256", name: "maxValueSum", type: "uint256", }, { internalType: "uint256", name: "minValueSum", type: "uint256", }, ], internalType: "struct DAVINCITypes.BallotMode", name: "ballotMode", type: "tuple", }, { components: [ { internalType: "enum DAVINCITypes.CensusOrigin", name: "censusOrigin", type: "uint8", }, { internalType: "bytes32", name: "censusRoot", type: "bytes32", }, { internalType: "address", name: "contractAddress", type: "address", }, { internalType: "string", name: "censusURI", type: "string", }, { internalType: "bool", name: "onchainAllowAnyValidRoot", type: "bool", }, ], internalType: "struct DAVINCITypes.Census", name: "census", type: "tuple", }, ], internalType: "struct DAVINCITypes.Process", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, ], name: "getProcessEndTime", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getRVerifierVKeyHash", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getSTVerifierVKeyHash", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "enum DAVINCITypes.ProcessStatus", name: "status", type: "uint8", }, { internalType: "uint256", name: "startTime", type: "uint256", }, { internalType: "uint256", name: "duration", type: "uint256", }, { internalType: "uint256", name: "maxVoters", type: "uint256", }, { components: [ { internalType: "bool", name: "uniqueValues", type: "bool", }, { internalType: "uint8", name: "numFields", type: "uint8", }, { internalType: "uint8", name: "groupSize", type: "uint8", }, { internalType: "uint8", name: "costExponent", type: "uint8", }, { internalType: "uint256", name: "maxValue", type: "uint256", }, { internalType: "uint256", name: "minValue", type: "uint256", }, { internalType: "uint256", name: "maxValueSum", type: "uint256", }, { internalType: "uint256", name: "minValueSum", type: "uint256", }, ], internalType: "struct DAVINCITypes.BallotMode", name: "ballotMode", type: "tuple", }, { components: [ { internalType: "enum DAVINCITypes.CensusOrigin", name: "censusOrigin", type: "uint8", }, { internalType: "bytes32", name: "censusRoot", type: "bytes32", }, { internalType: "address", name: "contractAddress", type: "address", }, { internalType: "string", name: "censusURI", type: "string", }, { internalType: "bool", name: "onchainAllowAnyValidRoot", type: "bool", }, ], internalType: "struct DAVINCITypes.Census", name: "census", type: "tuple", }, { internalType: "string", name: "metadata", type: "string", }, { components: [ { internalType: "uint256", name: "x", type: "uint256", }, { internalType: "uint256", name: "y", type: "uint256", }, ], internalType: "struct DAVINCITypes.EncryptionKey", name: "encryptionKey", type: "tuple", }, ], name: "newProcess", outputs: [ { internalType: "bytes31", name: "", type: "bytes31", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "pidPrefix", outputs: [ { internalType: "uint32", name: "", type: "uint32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "processCount", outputs: [ { internalType: "uint32", name: "", type: "uint32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "processNonce", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes31", name: "", type: "bytes31", }, ], name: "processes", outputs: [ { internalType: "enum DAVINCITypes.ProcessStatus", name: "status", type: "uint8", }, { internalType: "address", name: "organizationId", type: "address", }, { components: [ { internalType: "uint256", name: "x", type: "uint256", }, { internalType: "uint256", name: "y", type: "uint256", }, ], internalType: "struct DAVINCITypes.EncryptionKey", name: "encryptionKey", type: "tuple", }, { internalType: "uint256", name: "latestStateRoot", type: "uint256", }, { internalType: "uint256", name: "startTime", type: "uint256", }, { internalType: "uint256", name: "duration", type: "uint256", }, { internalType: "uint256", name: "maxVoters", type: "uint256", }, { internalType: "uint256", name: "votersCount", type: "uint256", }, { internalType: "uint256", name: "overwrittenVotesCount", type: "uint256", }, { internalType: "uint256", name: "creationBlock", type: "uint256", }, { internalType: "uint256", name: "batchNumber", type: "uint256", }, { internalType: "string", name: "metadataURI", type: "string", }, { components: [ { internalType: "bool", name: "uniqueValues", type: "bool", }, { internalType: "uint8", name: "numFields", type: "uint8", }, { internalType: "uint8", name: "groupSize", type: "uint8", }, { internalType: "uint8", name: "costExponent", type: "uint8", }, { internalType: "uint256", name: "maxValue", type: "uint256", }, { internalType: "uint256", name: "minValue", type: "uint256", }, { internalType: "uint256", name: "maxValueSum", type: "uint256", }, { internalType: "uint256", name: "minValueSum", type: "uint256", }, ], internalType: "struct DAVINCITypes.BallotMode", name: "ballotMode", type: "tuple", }, { components: [ { internalType: "enum DAVINCITypes.CensusOrigin", name: "censusOrigin", type: "uint8", }, { internalType: "bytes32", name: "censusRoot", type: "bytes32", }, { internalType: "address", name: "contractAddress", type: "address", }, { internalType: "string", name: "censusURI", type: "string", }, { internalType: "bool", name: "onchainAllowAnyValidRoot", type: "bool", }, ], internalType: "struct DAVINCITypes.Census", name: "census", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "rVerifier", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, { components: [ { internalType: "enum DAVINCITypes.CensusOrigin", name: "censusOrigin", type: "uint8", }, { internalType: "bytes32", name: "censusRoot", type: "bytes32", }, { internalType: "address", name: "contractAddress", type: "address", }, { internalType: "string", name: "censusURI", type: "string", }, { internalType: "bool", name: "onchainAllowAnyValidRoot", type: "bool", }, ], internalType: "struct DAVINCITypes.Census", name: "census", type: "tuple", }, ], name: "setProcessCensus", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, { internalType: "uint256", name: "_duration", type: "uint256", }, ], name: "setProcessDuration", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, { internalType: "uint256", name: "_maxVoters", type: "uint256", }, ], name: "setProcessMaxVoters", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, { internalType: "bytes", name: "proof", type: "bytes", }, { internalType: "bytes", name: "input", type: "bytes", }, ], name: "setProcessResults", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, { internalType: "enum DAVINCITypes.ProcessStatus", name: "newStatus", type: "uint8", }, ], name: "setProcessStatus", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "stVerifier", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes31", name: "processId", type: "bytes31", }, { internalType: "bytes", name: "proof", type: "bytes", }, { internalType: "bytes", name: "input", type: "bytes", }, ], name: "submitStateTransition", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x6080806040523461017d57608081612e46803803809161001f8285610194565b83398101031261017d57610032816101cb565b9061003f602082016101dc565b606061004d604084016101dc565b92015180151580910361017d5760015f556003805460048054600160201b600160e01b0319909216604095861b600160401b600160e01b031617602088811b67ffffffff000000001691909117909355600164ff0000000160a01b03199091166001600160a01b039095169490941760c09290921b60ff60c01b16919091178355905163342e1df160e21b815263ffffffff909316918301919091523060248301528160448173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af4908115610189575f9161014b575b506004805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055604051612c5590816101f18239f35b90506020813d602011610181575b8161016660209383610194565b8101031261017d57610177906101cb565b5f610118565b5f80fd5b3d9150610159565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b038211908210176101b757604052565b634e487b7160e01b5f52604160045260245ffd5b519063ffffffff8216820361017d57565b51906001600160a01b038216820361017d5756fe6080806040526004361015610012575f80fd5b5f905f3560e01c908163026cdee81461244b5750806302cc919a1461243057806304ed00fa146122d7578063082b642e1461211757806309706392146120ed57806326795bc3146120d357806335aeb98c1461182e5780634c0acc56146117de57806359d821c4146114cf57806362fa11fc1461148a57806368141f2c146113a85780636c7aff7f14610ff357806372c628ef14610fd8578063766422e014610bc5578063784df74a14610a97578063848df54014610a735780639b464994146108855780639c18deaf1461085c578063adc879e914610836578063c557fb4b146101fc578063cddf08bc146101d5578063cdf497c8146101af5763f9aa44991461011b575f80fd5b346101ac57806003193601126101ac576004805460405163233ace1160e01b8152929160209184919082906001600160a01b03165afa9081156101a05790610169575b602090604051908152f35b506020813d602011610198575b8161018360209383612797565b81010312610194576020905161015e565b5f80fd5b3d9150610176565b604051903d90823e3d90fd5b80fd5b50346101ac57806003193601126101ac57602060ff60045460c01c166040519015158152f35b50346101ac57806003193601126101ac57602063ffffffff60045460a01c16604051908152f35b50346101ac5761020b366126c9565b610219949394929192612c01565b60ff1984169384156108275760048054604051632145bb8f60e01b815260ff199093169183019190915260a01c63ffffffff1660248201526020818060448101038173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af49081156106975787916107f8575b50156107e9578386526001602052604086208054909390600881901c6001600160a01b0316156107da5760ff166102b6816125e0565b6107cb5760058401546102cd600686015482612984565b4210156107bc5742106107ad576102e2612a59565b5081810192610100828503126105415783601f83011215610541576040519361030d61010086612797565b8461010084019182116107955783905b8282106107855750505083519260208501519760408601519360608701519360808801519760a0810151988d60c08301519260e00151916040519a6103618c61277b565b8b5260208b019e8f5260408b01998a5260608b0198895260808b0190815260a08b019b8c5260c08b0193845260e08b0192835260128d015460ff166103a5816125e0565b6003036107695760148d0154905160405163650e5fcf60e01b8152600481019190915290602090829060249082906001600160a01b03165afa9182156101a05791610737575b5060ff60168d015416159081610729575b811561071f575b50610710575b88519760038c019889540361070157518751610424916129a9565b998a1515806106ef575b6106e057908e96959493929160ff60045460c01c16610554575b505060035460401c6001600160a01b0316919050813b1561055057859361048560405196879586948594635c73957b60e11b865260048601612ab5565b03915afa80156105455761052c575b5050600b91875190556104ac60088601948554612984565b80945551936104c060098201958654612984565b8095550180545f1981146105185760010190555193516040519485526020850152604084015260608301527f7156cf1102d86d870b69eed151febab016e34063d74c714b17538efccfd9d01960803393a36001815580f35b634e487b7160e01b88526011600452602488fd5b8161053691612797565b61054157875f610494565b8780fd5b6040513d84823e3d90fd5b8580fd5b909192939495965051915190519060405192610571606085612797565b60308452602084019060403683378060801c6106ca5760801b90528060801c6106b65760801b60308301528060801c6106a257908d959493929160801b60408201526105ef602073__$176218451d0b397034f549dcd265d6db5e$__926040518093819263da23b04d60e01b835284600484015260248301906125fe565b0381855af4908115610697578791610662575b50813b1561065e578690602460405180948193634e733ef560e11b835260048301525af490811561065357869161063a575b80610448565b8161064491612797565b61064f57845f610634565b8480fd5b6040513d88823e3d90fd5b8680fd5b9650506020863d60201161068f575b8161067e60209383612797565b81010312610194578d95515f610602565b3d9150610671565b6040513d89823e3d90fd5b6316416a3d60e01b8e52600260045260248efd5b6316416a3d60e01b8f52600160045260248ffd5b50506316416a3d60e01b8f5260048f905260248ffd5b6357d18d5360e11b8f5260048ffd5b5060088c015460078d0154111561042e565b630b6fac0360e41b8f5260048ffd5b635e32eadd60e01b8e5260048efd5b905043105f610403565b600a8d0154811091506103fc565b90506020813d602011610761575b8161075260209383612797565b8101031261019457515f6103eb565b3d9150610745565b90505160138c01541461040957635e32eadd60e01b8e5260048efd5b813581526020918201910161031d565b8980fd5b634e487b7160e01b5f52604160045260245ffd5b63e843c5eb60e01b8752600487fd5b63e843c5eb60e01b8852600488fd5b6307a92f1960e51b8752600487fd5b634d36eb6960e01b8852600488fd5b632299770d60e11b8652600486fd5b61081a915060203d602011610820575b6108128183612797565b81019061296c565b5f610280565b503d610808565b63cbf4a64560e01b8752600487fd5b50346101ac57806003193601126101ac57602063ffffffff600354821c16604051908152f35b50346101ac57806003193601126101ac576004546040516001600160a01b039091168152602090f35b50346101ac5760403660031901126101ac5761089f6125a2565b60243560ff198216918215610a645760048054604051632145bb8f60e01b815260ff199093169183019190915260a01c63ffffffff1660248201526020818060448101038173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af4908115610a59578491610a3a575b5015610a2b578183526001602052604083208054600881901c6001600160a01b03168015610a1c573303610a0e5760ff16610943816125e0565b80151590816109f9575b506109ea576006600582015491019081549083159182156109d5575b82156109b6575b50506109a757817f45edf61f525089c4937f17d4abc513c0a865c52ff2f704d35bb9a5e207af41ba9260209255604051908152a280f35b637616640160e01b8452600484fd5b8192506109c6856109cc93612984565b92612984565b10155f80610970565b91506109e18482612984565b42101591610969565b6307a92f1960e51b8452600484fd5b60039150610a06816125e0565b14155f61094d565b6282b42960e81b8552600485fd5b634d36eb6960e01b8652600486fd5b632299770d60e11b8352600483fd5b610a53915060203d602011610820576108128183612797565b5f610909565b6040513d86823e3d90fd5b63cbf4a64560e01b8452600484fd5b50346101ac57806003193601126101ac57602063ffffffff60035416604051908152f35b50346101ac5760203660031901126101ac5760ff19610ab46125a2565b16815260016020526040902080549060ff82169060018101610ad5906127b8565b9060038101546005820154600683015460078401546008850154600986015491600a87015493600b88015495600c8901610b0e9061280e565b97610b1b600d8b016128ae565b99601201610b2890612910565b9a604051809e8e829f610b3a906125e0565b825260081c6001600160a01b0316602091820152815160408f0152015160608d015260808c015260a08b015260c08a015260e08901526101008801526101208701526101408601526101608501526102c06101808501819052610ba091908501906125fe565b906101a08401610baf91612622565b8281036102a0840152610bc191612678565b0390f35b503461019457610bd4366126c9565b949293610be2929192612c01565b60ff198116908115610fc95760048054604051632145bb8f60e01b815260ff199093169183019190915260a01c63ffffffff1660248201526020818060448101038173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af4908115610f35575f91610faa575b5015610f9b57805f52600160205260405f209586549560018060a01b038760081c1615610f8c5760ff871693610c7e856125e0565b600285148015610f79575b610f6a57610c96856125e0565b600185141580610f4f575b610f40576004546001600160a01b031691823b156101945783925f928892610cdf60405196879586948594635c73957b60e11b865260048601612ab5565b03915afa8015610f3557610f20575b5083016101208482031261064f5780601f8501121561064f5760405193610d1761012086612797565b8490610120810192831161065e57905b828210610f10575050508251600387015403610f01576101209160405196610d4f8489612797565b600888526020880193601f190136853760015b6009811015610dbf578060051b8601515f198201828111610dab578a51811015610d975760051b8a0160200152600101610d62565b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b89526011600452602489fd5b8685858b86600487818f60ff1916178155018251906001600160401b038211610eed57680100000000000000008211610eed578054828255808310610ed2575b50908492918690885260208820885b838110610ebb575050505060407f56f95be551d4235ff95edcee7dca6f56f66968ed1b176f73ffd899721aa19abf91815190610e49816125e0565b815260046020820152a26040519060208201906020835251809152604082019390855b818110610ea557505050807fdf1be195647bf0f039490311aa7fd2242eb64a0eb3844c37f174b8d7c25d448e9133940390a36001815580f35b8251865260209586019590920191600101610e6c565b825181830155879550602090920191600101610e0e565b81885260208820610ee79181019084016129d0565b87610dff565b634e487b7160e01b87526041600452602487fd5b630b6fac0360e41b8452600484fd5b8135815260209182019101610d27565b610f2d9195505f90612797565b5f935f610cee565b6040513d5f823e3d90fd5b63e843c5eb60e01b5f5260045ffd5b50610f6360058a015460068b015490612984565b4210610ca1565b6307a92f1960e51b5f5260045ffd5b50610f83856125e0565b60048514610c89565b634d36eb6960e01b5f5260045ffd5b632299770d60e11b5f5260045ffd5b610fc3915060203d602011610820576108128183612797565b5f610c49565b63cbf4a64560e01b5f5260045ffd5b34610194575f36600319011261019457602060405160048152f35b346101945760403660031901126101945761100c6125a2565b6024356001600160401b038111610194578060040160a060031983360301126101945760ff198316928315610fc95760048054604051632145bb8f60e01b815260ff199093169183019190915260a01c63ffffffff1660248201526020818060448101038173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af4908115610f35575f91611389575b5015610f9b575f83815260016020526040902080549190600883901c6001600160a01b03168015610f8c57330361137b5760ff601282015416926110d9846125e0565b6002840361136c5782356005811015610194576110f5816125e0565b6110fe856125e0565b840361135d57602485013594851561134e57606481019461111f8686612a27565b90501561133f57600390611132816125e0565b149081611321575b506113125760ff1661114b816125e0565b80151590816112fd575b50610f6a5761116d6005820154600683015490612984565b421015610f405783601382015560156111868484612a27565b91909201916001600160401b038211610799576111a383546127d6565b601f81116112c2575b505f90601f831160011461123357928261122396937f660d494893b9a2e6c617bc5137fb9bac10f3cf87e7c43125657872f2a1959ed2989693611208965f92611228575b50508160011b915f199060031b1c1916179055612a27565b92906040519384938452604060208501526040840191612a95565b0390a2005b013590508a806111f0565b601f19831691845f5260205f20925f5b8181106112aa5750937f660d494893b9a2e6c617bc5137fb9bac10f3cf87e7c43125657872f2a1959ed29896936112089693600193836112239b9810611291575b505050811b019055612a27565b01355f19600384901b60f8161c191690558a8080611284565b91936020600181928787013581550195019201611243565b6112ed90845f5260205f20601f850160051c810191602086106112f3575b601f0160051c01906129d0565b876111ac565b90915081906112e0565b6003915061130a816125e0565b141586611155565b63562e597160e11b5f5260045ffd5b6001600160a01b03915061133790604401612a13565b16158761113a565b630f8b932160e11b5f5260045ffd5b635e32eadd60e01b5f5260045ffd5b63f37f7b5d60e01b5f5260045ffd5b63050b77c760e21b5f5260045ffd5b6282b42960e81b5f5260045ffd5b6113a2915060203d602011610820576108128183612797565b84611096565b34610194576020366003190112610194576004356001600160a01b0381169081810361019457600480545f93845260026020908152604094859020549451636846b35160e11b815260a09290921c63ffffffff16928201929092526001600160a01b039290921660248301526001600160401b039092166044820152908160648173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af48015610f35576020915f9161145d575b506040519060ff19168152f35b61147d9150823d8411611483575b6114758183612797565b8101906129b6565b82611450565b503d61146b565b34610194576020366003190112610194576004356001600160a01b03811690819003610194575f52600260205260206001600160401b0360405f205416604051908152f35b34610194576020366003190112610194576114e86125a2565b6040516114f481612729565b5f81525f602082015260405161150981612745565b5f81525f602082015260408201525f6060820152606060808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201526060610180820152611562612a59565b6101a08201526101c06040519161157883612760565b5f83525f60208401525f60408401526060808401525f6080840152015260ff19165f52600160205260405f206040516115b081612729565b81549160ff83166115c0816125e0565b825260089290921c6001600160a01b031660208201908152916115e5600182016127b8565b9160408101928352600382015460608201908152600483016040519081602082549182815201915f5260205f20905f5b8181106117c85750505081900361162c9082612797565b60808301908152600584015460a08401908152600685015460c08501908152600786015460e0860190815260088701549061010087019182526009880154926101208801938452600a890154946101408901958652600b8a0154966101608a01978852600c8b0161169c9061280e565b6101808b01908152986116b1600d8d016128ae565b9b6101a08c019c8d526012016116c690612910565b9d6101c08c019e8f526040519d8e916020835261030083019d516116e9816125e0565b6020840152600160a01b60019003905116604083015251805160608301526020015190608001525160a08d0152519860c08c016102e0905289518091526103208c0199602001905f5b8181106117b2575050905160e08c015250516101008a015251610120890152516101408801525161016087015251610180860152516101a085015251838203601f19016101c085015292938493610bc1939261179f9161179291906125fe565b92516101e0860190612622565b51838203601f19016102e0850152612678565b82518c5260209b8c019b90920191600101611732565b8254845260209093019260019283019201611615565b34610194575f366003190112610194576003546040805163233ace1160e01b81529160209183916004918391901c6001600160a01b03165afa8015610f35575f9061016957602090604051908152f35b346101945761020036600319011261019457600435600581101561019457602435606435610100366083190112610194576001600160401b0361018435116101945760a06101843536036003190112610194576101a4356001600160401b038111610194576118a19036906004016125b3565b9290916040366101c31901126101945760048054335f81815260026020908152604091829020549151636846b35160e11b815260a09490941c63ffffffff169484019490945260248301919091526001600160401b031660448201529293849390918160648173__$3dc519e8cd588db0d942d0eb61ec77f7fa$__5af4908115610f35575f916120b4575b5060ff19165f8181526001602052604090205490959060081c6001600160a01b031633146120a55760ff61195e6129f3565b16158015612091575b61208257611973612a03565b60ff8061197e6129f3565b169116116120735761012435926101043584116120645761016435956101443595868811612055578215612046576119b96101043584612adf565b600561018435600401351015610194576119d961018435600401356125e0565b600560ff6101843560040135161161135d576119fb61018435600401356125e0565b6004610184350135600314158080612031575b61202257611a2261018435600401356125e0565b15611ff75760246101843501351561134e575b611a4b6064610184350161018435600401612a27565b90501561133f57611a5b8a6125e0565b600460ff8b16118015611fd0575b610f6a5715611fc9575b428110611fba5742611a8760443583612984565b1115611fab57875f526001602052611aa360405f20998a612991565b6005890155604435600689015560078801558654610100600160a81b0319163360081b610100600160a81b03161787556101c435600188018190556101e43560028901819055604051631044f8bb60e11b815260048181018a9052919492939291611b13906101843501356125e0565b610184356004013560248201526084359485151580870361019457604483015260a43560ff811680910361019457606483015260c43560ff811680910361019457608483015260e4359460ff86168087036101945760a48401526101043560c48401528760e484015288610104840152896101248401526101448301526101648201526020816101848173__$4e0a7d2578f6e358dccb8beebb7c720d9f$__5af4908115610f35575f91611f79575b5060038a01556001600160401b038211610799578190611be5600c8b01546127d6565b601f8111611f46575b505f90601f8311600114611ed9575f92611ece575b50508160011b915f199060031b1c191617600c8801555b611c34600d880192839060ff801983541691151516179055565b611c3c6129f3565b90825461ff0063ff00000062ff0000611c53612a03565b60101b169360181b169360081b169063ffffff001916171717905561010435600e860155600f8501556010840155601183015560128201611c9a61018435600401356125e0565b60ff61018435600401351660ff19825416179055602461018435013560138301556014820160018060a01b03611cd560446101843501612a13565b82546001600160a01b03191691161790556015820191611cff610184356064810190600401612a27565b6001600160401b03819592951161079957611d1a82546127d6565b601f8111611e9e575b505f601f8211600114611e3b5781929394955f92611e30575b50508160011b915f199060031b1c19161790555b611d77611d62608461018435016129e6565b601683019060ff801983541691151516179055565b600a4391015560035463ffffffff811663ffffffff8114611e1c57600163ffffffff9101169063ffffffff191617600355335f52600260205260405f20908154916001600160401b038316926001600160401b038414611e1c576001600160401b0360016020950116906001600160401b0319161790556040519033817feefcd49abfaf7291d2e1c15f581f85a3610d4f103666e075bd536faef609e1d15f80a38152f35b634e487b7160e01b5f52601160045260245ffd5b013590508580611d3c565b601f19821695835f5260205f20915f5b888110611e8657508360019596979810611e6d575b505050811b019055611d50565b01355f19600384901b60f8161c19169055858080611e60565b90926020600181928686013581550194019101611e4b565b611ec890835f5260205f20601f840160051c810191602085106112f357601f0160051c01906129d0565b85611d23565b013590508980611c03565b909150601f19831691600c8b015f5260205f20925f5b818110611f2e5750908460019594939210611f15575b505050811b01600c8