0 txs
1 call
constructor
constructor(address vault, uint32 pauseWindowDuration, string factoryVersion, string poolVersion)
functions
getActionId
viewfunction getActionId(bytes4 selector) view returns (bytes32)
getAkronWeightedLVRFeeHook
viewfunction getAkronWeightedLVRFeeHook() view returns (address)
getAuthorizer
viewfunction getAuthorizer() view returns (address)
getDefaultLiquidityManagement
purefunction getDefaultLiquidityManagement() pure returns (tuple liquidityManagement)
getDefaultPoolHooksContract
purefunction getDefaultPoolHooksContract() pure returns (address)
getDeploymentAddress
viewfunction getDeploymentAddress(bytes constructorArgs, bytes32 salt) view returns (address)
getNewPoolPauseWindowEndTime
viewfunction getNewPoolPauseWindowEndTime() view returns (uint32)
getOriginalPauseWindowEndTime
viewfunction getOriginalPauseWindowEndTime() view returns (uint32)
getPauseWindowDuration
viewfunction getPauseWindowDuration() view returns (uint32)
getPoolCount
viewfunction getPoolCount() view returns (uint256)
getPools
viewfunction getPools() view returns (address[])
getPoolsInRange
viewfunction getPoolsInRange(uint256 start, uint256 count) view returns (address[] pools)
getPoolVersion
viewfunction getPoolVersion() view returns (string)
getVault
viewfunction getVault() view returns (address)
isDisabled
viewfunction isDisabled() view returns (bool)
isPoolFromFactory
viewfunction isPoolFromFactory(address pool) view returns (bool)
owner
viewfunction owner() view returns (address)
version
viewfunction version() view returns (string)
create
nonpayablefunction create(string name, string symbol, tuple[] tokens, uint256[] normalizedWeights, bool enableDonation, bool disableUnbalancedLiquidity, bytes32 salt) returns (address pool)
disable
nonpayablefunction disable()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
FactoryDisabled
event FactoryDisabled()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolCreated
event PoolCreated(address indexed pool)
errors
Create2EmptyBytecode
error Create2EmptyBytecode()
Create2FailedDeployment
error Create2FailedDeployment()
Create2InsufficientBalance
error Create2InsufficientBalance(uint256 balance, uint256 needed)
Disabled
error Disabled()
IndexOutOfBounds
error IndexOutOfBounds()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PoolPauseWindowDurationOverflow
error PoolPauseWindowDurationOverflow()
SenderNotAllowed
error SenderNotAllowed()
StandardPoolWithCreator
error StandardPoolWithCreator()
creation bytecode
0x610120604052348015610010575f80fd5b506040516186f23803806186f283398101604081905261002f91610279565b3382858560405180602001610043906101c2565b601f1982820381018352601f90910116604052306080526001600160a01b03831660a052815f61007963ffffffff831642610317565b905063ffffffff8111156100a0576040516368755a1160e01b815260040160405180910390fd5b63ffffffff91821660c0521660e05260036100bb82826103c0565b505050506100ce8161016160201b60201c565b506001600160a01b0381166100fc57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61010581610171565b50600661011282826103c0565b5083604051610120906101cf565b6001600160a01b039091168152602001604051809103905ff080158015610149573d5f803e3d5ffd5b506001600160a01b0316610100525061047a92505050565b600461016d82826103c0565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61454680611b9883390190565b612614806160de83390190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126101ff575f80fd5b81516001600160401b03811115610218576102186101dc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610246576102466101dc565b60405281815283820160200185101561025d575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f806080858703121561028c575f80fd5b84516001600160a01b03811681146102a2575f80fd5b602086015190945063ffffffff811681146102bb575f80fd5b60408601519093506001600160401b038111156102d6575f80fd5b6102e2878288016101f0565b606087015190935090506001600160401b038111156102ff575f80fd5b61030b878288016101f0565b91505092959194509250565b8082018082111561033657634e487b7160e01b5f52601160045260245ffd5b92915050565b600181811c9082168061035057607f821691505b60208210810361036e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103bb57805f5260205f20601f840160051c810160208510156103995750805b601f840160051c820191505b818110156103b8575f81556001016103a5565b50505b505050565b81516001600160401b038111156103d9576103d96101dc565b6103ed816103e7845461033c565b84610374565b6020601f82116001811461041f575f83156104085750848201515b5f19600385901b1c1916600184901b1784556103b8565b5f84815260208120601f198516915b8281101561044e578785015182556020948501946001909201910161042e565b508482101561046b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e051610100516116b76104e15f395f818161033201526104f301525f8181610358015281816108f6015261092901525f61028b01525f81816102e3015281816104990152818161087001526109f901525f6107f401526116b75ff3fe608060405234801561000f575f80fd5b5060043610610179575f3560e01c806378da80cb116100d2578063aaabadc511610088578063e9d56e1911610063578063e9d56e1914610356578063ec8880611461037c578063f2fde38b14610382575f80fd5b8063aaabadc514610320578063db035ebc14610328578063e4e990e014610330575f80fd5b80638d928af8116100b85780638d928af8146102e15780638da5cb5b146103075780638eec5d7014610318575f80fd5b806378da80cb14610289578063851c1bb3146102c0575f80fd5b806353a72f7e11610132578063673a2a1f1161010d578063673a2a1f1461026e5780636c57f5a914610276578063715018a614610281575f80fd5b806353a72f7e1461020b57806354fd4d501461022b5780636634b75314610233575f80fd5b80632f2770db116101625780632f2770db146101d95780633f819b6f146101e357806344f6fec7146101f8575f80fd5b806311c2ec751461017d578063193ad50f146101ad575b5f80fd5b61019061018b36600461109c565b610395565b6040516001600160a01b0390911681526020015b60405180910390f35b604080516080810182525f80825260208201819052818301819052606082015290516101a49190611181565b6101e1610525565b005b6101eb61056c565b6040516101a491906111e2565b6101906102063660046111f4565b6105fc565b61021e610219366004611249565b61064e565b6040516101a49190611269565b6101eb610770565b61025e6102413660046112b4565b6001600160a01b03165f9081526020819052604090205460ff1690565b60405190151581526020016101a4565b61021e61077f565b60025460ff1661025e565b6101e16107de565b7f00000000000000000000000000000000000000000000000000000000000000005b60405163ffffffff90911681526020016101a4565b6102d36102ce3660046112cf565b6107f1565b6040519081526020016101a4565b7f0000000000000000000000000000000000000000000000000000000000000000610190565b6005546001600160a01b0316610190565b6001546102d3565b61019061086d565b6102ab6108f3565b7f0000000000000000000000000000000000000000000000000000000000000000610190565b7f00000000000000000000000000000000000000000000000000000000000000006102ab565b5f610190565b6101e16103903660046112b4565b61094b565b60408051606080820183525f80835260208084018290526005546001600160a01b031684860152845160808082018752818301849052818701849052891515828601528815158252865160a0810188528e81529283018d90528b51968301969096529281018990526006805492956104e19390830191906104159061130e565b80601f01602080910402602001604051908101604052809291908181526020018280546104419061130e565b801561048c5780601f106104635761010080835404028352916020019161048c565b820191905f5260205f20905b81548152906001019060200180831161046f57829003601f168201915b50505050508152506104bb7f000000000000000000000000000000000000000000000000000000000000000090565b6040516020016104cc929190611346565b604051602081830303815290604052856109a6565b925061051883896509184e72a0005f867f0000000000000000000000000000000000000000000000000000000000000000876109f7565b5050979650505050505050565b61052d610a8e565b610535610afd565b6002805460ff191660011790556040517f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d50905f90a1565b60606006805461057b9061130e565b80601f01602080910402602001604051908101604052809291908181526020018280546105a79061130e565b80156105f25780601f106105c9576101008083540402835291602001916105f2565b820191905f5260205f20905b8154815290600101906020018083116105d557829003601f168201915b5050505050905090565b5f8060038460405160200161061292919061141e565b60408051601f19818403018152919052805160208201209091505f61063685610b3a565b90506106428183610b5d565b93505050505b92915050565b60015460609080841061068d576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61069884866114d9565b9050818111156106af576106ac85836114ec565b93505b8367ffffffffffffffff8111156106c8576106c8610e3e565b6040519080825280602002602001820160405280156106f1578160200160208202803683370190505b5092505f5b8481101561076757600161070a82886114d9565b8154811061071a5761071a6114ff565b905f5260205f20015f9054906101000a90046001600160a01b0316848281518110610747576107476114ff565b6001600160a01b03909216602092830291909101909101526001016106f6565b50505092915050565b60606004805461057b9061130e565b606060018054806020026020016040519081016040528092919081815260200182805480156105f257602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116107b7575050505050905090565b6107e6610b70565b6107ef5f610bb6565b565b5f7f0000000000000000000000000000000000000000000000000000000000000000826040516020016108509291909182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b604051602081830303815290604052805190602001209050919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aaabadc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ee9190611513565b905090565b5f7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16421061092657505f90565b507f000000000000000000000000000000000000000000000000000000000000000090565b610953610b70565b6001600160a01b03811661099a576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6109a381610bb6565b50565b5f806003846040516020016109bc92919061141e565b60405160208183030381529060405290505f6109d784610b3a565b90506109e45f8284610c14565b92506109ef83610cdd565b505092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eeec802f888888610a316108f3565b898989896040518963ffffffff1660e01b8152600401610a5898979695949392919061152e565b5f604051808303815f87803b158015610a6f575f80fd5b505af1158015610a81573d5f803e3d5ffd5b5050505050505050505050565b5f610abb5f357fffffffff00000000000000000000000000000000000000000000000000000000166107f1565b9050610ac78133610d7c565b6109a3576040517f23dada5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460ff16156107ef576040517f75884cda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513360208201524691810191909152606081018290525f90608001610850565b5f610b69838330610e15565b9392505050565b6005546001600160a01b031633146107ef576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610991565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f83471015610c58576040517fe4bbecac00000000000000000000000000000000000000000000000000000000815247600482015260248101859052604401610991565b81515f03610c92576040517f4ca249dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282516020840186f590506001600160a01b038116610b69576040517f741752c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce5610afd565b6001600160a01b0381165f81815260208190526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff191684179055517f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a250565b5f610d8561086d565b6040517f9be2a884000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b0384811660248301523060448301529190911690639be2a88490606401602060405180830381865afa158015610df1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b699190611666565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715610e7557610e75610e3e565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610ea457610ea4610e3e565b604052919050565b5f8067ffffffffffffffff841115610ec657610ec6610e3e565b50601f8301601f1916602001610edb81610e7b565b915050828152838383011115610eef575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112610f14575f80fd5b610b6983833560208501610eac565b5f67ffffffffffffffff821115610f3c57610f3c610e3e565b5060051b60200190565b6001600160a01b03811681146109a3575f80fd5b80151581146109a3575f80fd5b8035610f7281610f5a565b919050565b5f82601f830112610f86575f80fd5b8135610f99610f9482610f23565b610e7b565b8082825260208201915060208360071b860101925085831115610fba575f80fd5b602085015b838110156110375760808188031215610fd6575f80fd5b610fde610e52565b8135610fe981610f46565b8152602082013560028110610ffc575f80fd5b6020820152604082013561100f81610f46565b6040820152606082013561102281610f5a565b60608201528352602090920191608001610fbf565b5095945050505050565b5f82601f830112611050575f80fd5b813561105e610f9482610f23565b8082825260208201915060208360051b86010192508583111561107f575f80fd5b602085015b83811015611037578035835260209283019201611084565b5f805f805f805f60e0888a0312156110b2575f80fd5b873567ffffffffffffffff8111156110c8575f80fd5b6110d48a828b01610f05565b975050602088013567ffffffffffffffff8111156110f0575f80fd5b6110fc8a828b01610f05565b965050604088013567ffffffffffffffff811115611118575f80fd5b6111248a828b01610f77565b955050606088013567ffffffffffffffff811115611140575f80fd5b61114c8a828b01611041565b94505061115b60808901610f67565b925061116960a08901610f67565b96999598509396929591949193505060c09091013590565b81511515815260208083015115159082015260408083015115159082015260608083015115159082015260808101610648565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610b6960208301846111b4565b5f8060408385031215611205575f80fd5b823567ffffffffffffffff81111561121b575f80fd5b8301601f8101851361122b575f80fd5b61123a85823560208401610eac565b95602094909401359450505050565b5f806040838503121561125a575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156112a95783516001600160a01b0316835260209384019390920191600101611282565b509095945050505050565b5f602082840312156112c4575f80fd5b8135610b6981610f46565b5f602082840312156112df575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b69575f80fd5b600181811c9082168061132257607f821691505b60208210810361134057634e487b7160e01b5f52602260045260245ffd5b50919050565b604081525f835160a0604084015261136160e08401826111b4565b90506020850151603f1984830301606085015261137e82826111b4565b604087015160808601526060870151858203603f190160a08701528051808352602091820194505f93509101905b808310156113cf57835182526020820191506020840193506001830192506113ac565b506080870151858203603f190160c087015292506113ed81846111b4565b9350505050610b6960208301846001600160a01b03169052565b5f81518060208401855e5f93019283525090919050565b5f8084545f8160011c9050600182168061143957607f821691505b60208210810361145757634e487b7160e01b5f52602260045260245ffd5b80801561146b5760018114611480576114ae565b60ff19841687528215158302870194506114ae565b5f898152602090205f5b848110156114a65781548982015260019091019060200161148a565b505082870194505b505050506114bc8185611407565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610648576106486114c5565b81810381811115610648576106486114c5565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611523575f80fd5b8151610b6981610f46565b5f6101a082016001600160a01b038b1683526101a06020840152808a518083526101c08501915060208c0192505f5b818110156115d35783516001600160a01b03815116845260208101516002811061159557634e487b7160e01b5f52602160045260245ffd5b806020860152506001600160a01b0360408201511660408501526060810151151560608501525060808301925060208401935060018101905061155d565b5050604084018a905263ffffffff8916606085015291506115f19050565b941515608082015283516001600160a01b0390811660a0830152602080860151821660c0840152604095860151821660e0840152931661010082015281511515610120820152918101511515610140830152918201511515610160820152606090910151151561018090910152949350505050565b5f60208284031215611676575f80fd5b8151610b6981610f5a56fea26469706673582212202119ce68caed57c9b28926b54dfff98ccc98956eb7b82990656700be0d3ee75864736f6c634300081a00336102c0604052348015610010575f80fd5b5060405161454638038061454683398101604081905261002f916104dd565b81608001518182845f015185602001518282604051806040016040528060018152602001603160f81b81525061006e5f836102c460201b90919060201c565b6101205261007d8160016102c4565b61014052815160208084019190912060e052815190820120610100524660a05261010960e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b031661016052600361012b8382610665565b5060046101388282610665565b505050506001600160a01b031661018052610152816102f6565b5060408201516101a081905260608301515161016e9190610306565b5f805b6101a0518160ff161015610293575f84606001518260ff16815181106101995761019961071f565b60200260200101519050662386f26fc100008110156101cb5760405163bd39358360e01b815260040160405180910390fd5b6101d58184610747565b92508160ff165f036101ec576101c0819052610282565b8160ff16600103610202576101e0819052610282565b8160ff1660020361021857610200819052610282565b8160ff1660030361022e57610220819052610282565b8160ff1660040361024457610240819052610282565b8160ff1660050361025a57610260819052610282565b8160ff1660060361027057610280819052610282565b8160ff16600703610282576102a08190525b5061028c8161075a565b9050610171565b50670de0b6b3a764000081146102bc57604051631ce788a760e11b815260040160405180910390fd5b5050506107d0565b5f6020835110156102df576102d883610326565b90506102f0565b816102ea8482610665565b5060ff90505b92915050565b60056103028282610665565b5050565b8082146103025760405163aaad13f760e01b815260040160405180910390fd5b5f80829050601f81511115610359578260405163305a27a960e01b81526004016103509190610778565b60405180910390fd5b8051610364826107ad565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156103a2576103a261036c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103d0576103d061036c565b604052919050565b5f82601f8301126103e7575f80fd5b81516001600160401b038111156104005761040061036c565b610413601f8201601f19166020016103a8565b818152846020838601011115610427575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f82601f830112610452575f80fd5b81516001600160401b0381111561046b5761046b61036c565b8060051b61047b602082016103a8565b91825260208185018101929081019086841115610496575f80fd5b6020860192505b838310156104b857825182526020928301929091019061049d565b9695505050505050565b80516001600160a01b03811681146104d8575f80fd5b919050565b5f80604083850312156104ee575f80fd5b82516001600160401b03811115610503575f80fd5b830160a08186031215610514575f80fd5b61051c610380565b81516001600160401b03811115610531575f80fd5b61053d878285016103d8565b82525060208201516001600160401b03811115610558575f80fd5b610564878285016103d8565b6020830152506040828101519082015260608201516001600160401b0381111561058c575f80fd5b61059887828501610443565b60608301525060808201516001600160401b038111156105b6575f80fd5b6105c2878285016103d8565b60808301525092506105d89050602084016104c2565b90509250929050565b600181811c908216806105f557607f821691505b60208210810361061357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561066057805f5260205f20601f840160051c8101602085101561063e5750805b601f840160051c820191505b8181101561065d575f815560010161064a565b50505b505050565b81516001600160401b0381111561067e5761067e61036c565b6106928161068c84546105e1565b84610619565b6020601f8211600181146106c4575f83156106ad5750848201515b5f19600385901b1c1916600184901b17845561065d565b5f84815260208120601f198516915b828110156106f357878501518255602094850194600190920191016106d3565b508482101561071057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156102f0576102f0610733565b5f60ff821660ff810361076f5761076f610733565b60010192915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610613575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051613c016109455f395f81816116ba0152611b5001525f818161168b0152611b0701525f818161165c0152611abe01525f818161162d0152611a7501525f81816115fe0152611a2c01525f81816115cf01526119e301525f81816115a0015261199a01525f8181611571015261195b01525f6118f401525f8181610c4501528181610e0001528181610eb201528181610f43015261127001525f81816104600152818161061d015281816106fb015281816107c1015281816108d40152818161095e01528181610ab901528181610db70152818161100c0152818161109601528181611124015281816111be0152818161142b015281816114ea015261176c01525f611d0b01525f611cdf01525f6118a001525f61187801525f6117d301525f6117fd01525f6118270152613c015ff3fe608060405234801561000f575f80fd5b506004361061024f575f3560e01c806372c981861161013d578063abb1dc44116100b8578063ce20ece711610088578063d505accf1161006e578063d505accf14610531578063dd62ed3e14610544578063f89f27ed14610557575f80fd5b8063ce20ece71461051d578063d335b0cf14610529575f80fd5b8063abb1dc44146104cd578063b156aa0a146104e5578063b677fa56146104fa578063c0bc6f3314610508575f80fd5b80638d928af81161010d578063984de9e8116100f3578063984de9e814610492578063a9059cbb146104a5578063aa6ca808146104b8575f80fd5b80638d928af81461045357806395d89b411461048a575f80fd5b806372c98186146103f55780637ecebe001461040857806381fa807c1461041b57806384b0196e14610438575f80fd5b8063313ce567116101cd5780635687f2b81161019d578063654cf15d11610183578063654cf15d146103cc578063679aefce146103da57806370a08231146103e2575f80fd5b80635687f2b81461039f578063627cdcb9146103b2575f80fd5b8063313ce5671461036b5780633644e5151461037a57806353b79bd71461038257806354fd4d5014610397575f80fd5b806318160ddd1161022257806323de66511161020857806323de665114610321578063273c1adf1461033657806330adf81f14610344575f80fd5b806318160ddd1461030657806323b872dd1461030e575f80fd5b806301ffc9a71461025357806306fdde03146102bd578063095ea7b3146102d257806316a0b3e0146102e5575b5f80fd5b6102a8610261366004612e78565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6102c561055f565b6040516102b49190612ee5565b6102a86102e0366004612f16565b6105ef565b6102f86102f3366004613082565b610696565b6040519081526020016102b4565b6102f86106cb565b6102a861031c3660046130cc565b610772565b61033461032f3660046130cc565b610838565b005b6729a2241af62c00006102f8565b6102f87f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b604051601281526020016102b4565b6102f8610892565b61038a61089b565b6040516102b49190613144565b6102c56109e7565b6103346103ad3660046130cc565b6109f6565b610334335f90815260026020526040902080546001019055565b67016345785d8a00006102f8565b6102f8610a46565b6102f86103f03660046131db565b610a79565b6102f8610403366004613279565b610b24565b6102f86104163660046131db565b610c05565b610423610c22565b604080519283526020830191909152016102b4565b610440610cc4565b6040516102b49796959493929190613350565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016102b4565b6102c5610d22565b6102f86104a03660046133cb565b610d31565b6102a86104b3366004612f16565b610d70565b6104c0610de8565b6040516102b49190613453565b6104d5610e73565b6040516102b49493929190613479565b6104ed610f2b565b6040516102b4919061353a565b6709b6e64a8ec600006102f8565b610510610fb6565b6040516102b4919061354c565b6509184e72a0006102f8565b6102f8611259565b61033461053f3660046135ca565b6112a7565b6102f861055236600461363b565b6114a2565b6104ed61155c565b60606003805461056e90613667565b80601f016020809104026020016040519081016040528092919081815260200182805461059a90613667565b80156105e55780601f106105bc576101008083540402835291602001916105e5565b820191905f5260205f20905b8154815290600101906020018083116105c857829003601f168201915b5050505050905090565b60405163e1f21c6760e01b81523360048201526001600160a01b038381166024830152604482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063e1f21c67906064015b6020604051808303815f875af1158015610666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068a91906136ae565b50600190505b92915050565b5f6106c38484815181106106ac576106ac6136c7565b60200260200101516106bd85611566565b84611710565b949350505050565b6040517fe4dc2aa40000000000000000000000000000000000000000000000000000000081523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e4dc2aa4906024015b602060405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d91906136db565b905090565b6040517f15dacbea0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0384811660248301528381166044830152606482018390525f917f0000000000000000000000000000000000000000000000000000000000000000909116906315dacbea906084016020604051808303815f875af1158015610809573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082d91906136ae565b506001949350505050565b610840611761565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161088591815260200190565b60405180910390a3505050565b5f61076d6117c7565b6108bf60405180606001604052806060815260200160608152602001606081525090565b60405163ca4f280360e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca4f2803906024015f60405180830381865afa158015610920573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109479190810190613756565b8152604051633f1b0def60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637e361bde906024015f60405180830381865afa1580156109aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109d191908101906137e3565b5060208201526109df6118f0565b604082015290565b60606005805461056e90613667565b6109fe611761565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161088591815260200190565b50565b5f6040517f18e79a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382811660248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec90604401602060405180830381865afa158015610b00573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069091906136db565b5f610b2d611761565b5f8260400151836060015181518110610b4857610b486136c7565b602002602001015190505f8360400151846080015181518110610b6d57610b6d6136c7565b602002602001015190505f6001811115610b8957610b89613465565b84516001811115610b9c57610b9c613465565b03610bd6575f610bcb83610bb38760600151611566565b84610bc18960800151611566565b8960200151611b94565b9350610c0092505050565b5f610bcb83610be88760600151611566565b84610bf68960800151611566565b8960200151611c3c565b919050565b6001600160a01b0381165f90815260026020526040812054610690565b60405163f29486a160e01b81523060048201525f90819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f29486a1906024016101a060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906138ed565b90508060400151925080606001519150509091565b5f6060805f805f6060610cd5611cd8565b610cdd611d04565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60606004805461056e90613667565b5f612e7081836001811115610d4857610d48613465565b14610d5557611d31610d59565b611dd85b90506106c3610d666118f0565b858363ffffffff16565b6040517fbeabacc80000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038381166024830152604482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063beabacc89060640161064a565b60405163ca4f280360e01b81523060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca4f2803906024015f60405180830381865afa158015610e4c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261076d9190810190613756565b6040517f67e0e0760000000000000000000000000000000000000000000000000000000081523060048201526060908190819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906367e0e076906024015f60405180830381865afa158015610ef6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f1d91908101906139a6565b935093509350935090919293565b6040516329ae7ec560e11b81523060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063535cfd8a906024015f60405180830381865afa158015610f8f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261076d9190810190613b01565b610ff76040518060e0016040528060608152602001606081526020015f81526020015f81526020015f151581526020015f151581526020015f151581525090565b6040516329ae7ec560e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063535cfd8a906024015f60405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261107f9190810190613b01565b8152604051633f1b0def60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637e361bde906024015f60405180830381865afa1580156110e2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261110991908101906137e3565b60208301525060405163b45090f960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b45090f990602401602060405180830381865afa158015611171573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119591906136db565b60408201526111a26106cb565b606082015260405163f29486a160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f29486a1906024016101a060405180830381865afa15801561120c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123091906138ed565b60e081015115156080840152610100810151151560a08401526101200151151560c08301525090565b60405163b45090f960e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b45090f99060240161072e565b834211156112e9576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886113348c6001600160a01b03165f90815260026020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61138e82611e45565b90505f61139d82878787611e8c565b9050896001600160a01b0316816001600160a01b0316146113fd576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b1660248201526044016112e0565b60405163e1f21c6760e01b81526001600160a01b038b811660048301528a81166024830152604482018a90527f0000000000000000000000000000000000000000000000000000000000000000169063e1f21c67906064016020604051808303815f875af1158015611471573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149591906136ae565b5050505050505050505050565b6040517f927da1050000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015282811660448301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063927da10590606401602060405180830381865afa158015611531573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155591906136db565b9392505050565b606061076d6118f0565b5f815f0361159557507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001036115c457507f0000000000000000000000000000000000000000000000000000000000000000919050565b816002036115f357507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160030361162257507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160040361165157507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160050361168057507f0000000000000000000000000000000000000000000000000000000000000000919050565b816006036116af57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816007036116de57507f0000000000000000000000000000000000000000000000000000000000000000919050565b6040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612e706001831161172457611eb8611728565b611ed85b90505f61174b611744670de0b6b3a7640000878563ffffffff16565b8590611eec565b90506117578682611f9f565b9695505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117c5576040517f089676d50000000000000000000000000000000000000000000000000000000081523360048201526024016112e0565b565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561181f57507f000000000000000000000000000000000000000000000000000000000000000046145b1561184957507f000000000000000000000000000000000000000000000000000000000000000090565b61076d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60607f00000000000000000000000000000000000000000000000000000000000000005f8167ffffffffffffffff81111561192d5761192d612f40565b604051908082528060200260200182016040528015611956578160200160208202803683370190505b5090507f0000000000000000000000000000000000000000000000000000000000000000815f8151811061198c5761198c6136c7565b6020026020010181815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106119cc576119cc6136c7565b6020026020010181815250506002821115610690577f000000000000000000000000000000000000000000000000000000000000000081600281518110611a1557611a156136c7565b6020026020010181815250506003821115610690577f000000000000000000000000000000000000000000000000000000000000000081600381518110611a5e57611a5e6136c7565b6020026020010181815250506004821115610690577f000000000000000000000000000000000000000000000000000000000000000081600481518110611aa757611aa76136c7565b6020026020010181815250506005821115610690577f000000000000000000000000000000000000000000000000000000000000000081600581518110611af057611af06136c7565b6020026020010181815250506006821115610690577f000000000000000000000000000000000000000000000000000000000000000081600681518110611b3957611b396136c7565b6020026020010181815250506007821115610690577f000000000000000000000000000000000000000000000000000000000000000081600781518110611b8257611b826136c7565b60200260200101818152505092915050565b5f611ba786670429d069189e0000611fcb565b821115611be0576040517f340a453300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611beb8388613b47565b90505f611bf88883611ed8565b90505f611c058887611eb8565b90505f611c128383611eec565b9050611c2e670de0b6b3a7640000828103908310028990611fcb565b9a9950505050505050505050565b5f611c4f84670429d069189e0000611fcb565b821115611c88576040517f64590b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611c9d611c968487613b5a565b8690611ed8565b90505f611caa8588611ed8565b90505f611cb78383611eec565b90505f611ccc670de0b6b3a764000083613b5a565b9050611c2e8a82611f9f565b606061076d7f00000000000000000000000000000000000000000000000000000000000000005f611feb565b606061076d7f00000000000000000000000000000000000000000000000000000000000000006001611feb565b670de0b6b3a76400005f5b8351811015611d9e57611d94611d8d858381518110611d5d57611d5d6136c7565b6020026020010151858481518110611d7757611d776136c7565b602002602001015161208d90919063ffffffff16565b8390611fcb565b9150600101611d3c565b50805f03610690576040517f2654368900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a76400005f5b8351811015611d9e57611e3b611e34858381518110611e0457611e046136c7565b6020026020010151858481518110611e1e57611e1e6136c7565b6020026020010151611eec90919063ffffffff16565b8390611f9f565b9150600101611de3565b5f610690611e516117c7565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f80611e9c88888888612139565b925092509250611eac8282612201565b50909695505050505050565b5f80611ecc670de0b6b3a764000085613b6d565b90506106c38382613b98565b5f61155583670de0b6b3a764000084612308565b5f670de0b6b3a76400008203611f03575081610690565b611f16670de0b6b3a76400006002613b6d565b8203611f2d57611f268384611f9f565b9050610690565b611f40670de0b6b3a76400006004613b6d565b8203611f65575f611f518485611f9f565b9050611f5d8182611f9f565b915050610690565b5f611f708484612366565b90505f611f7f82612710611f9f565b611f8a906001613b47565b9050611f968183613b47565b92505050610690565b5f80611fab8385613b6d565b90506001670de0b6b3a76400006001830304018115150291505092915050565b5f80611fd78385613b6d565b90506106c3670de0b6b3a764000082613b98565b606060ff8314611ffe57611f2683612504565b81805461200a90613667565b80601f016020809104026020016040519081016040528092919081815260200182805461203690613667565b80156120815780601f1061205857610100808354040283529160200191612081565b820191905f5260205f20905b81548152906001019060200180831161206457829003601f168201915b50505050509050610690565b5f670de0b6b3a764000082036120a4575081610690565b6120b7670de0b6b3a76400006002613b6d565b82036120c757611f268384611fcb565b6120da670de0b6b3a76400006004613b6d565b82036120f7575f6120eb8485611fcb565b9050611f5d8182611fcb565b5f6121028484612366565b90505f61211182612710611f9f565b61211c906001613b47565b905080821015612130575f92505050610690565b90039050610690565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561217257505f915060039050826121f7565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156121c3573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166121ee57505f9250600191508290506121f7565b92505f91508190505b9450945094915050565b5f82600381111561221457612214613465565b0361221d575050565b600182600381111561223157612231613465565b03612268576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561227c5761227c613465565b036122b6576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016112e0565b60038260038111156122ca576122ca613465565b03612304576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016112e0565b5050565b5f815f03612342576040517f0a0c22c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61234d8486613b6d565b9050600183600183030401811515029150509392505050565b5f815f0361237d5750670de0b6b3a7640000610690565b825f0361238b57505f610690565b60ff83901c156123c7576040517f022701e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826123fb68056bc75e2d631000007f4000000000000000000000000000000000000000000000000000000000000000613b98565b8310612433576040517fd831731100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f670c7d713b49da0000831380156124535750670f43fc2c04ee000083125b15612489575f61246284612541565b9050670de0b6b3a764000080820784020583670de0b6b3a764000083050201915050612497565b8161249384612667565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff1981128015906124c5575068070c1cc73b00c800008113155b6124fb576040517fa2f9f7e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61175781612a19565b60605f61251083612e30565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b670de0b6b3a7640000025f806ec097ce7bc90715b34b9f1000000000808401906ec097ce7bc90715b34b9f0fffffffff198501028161258257612582613b84565b0590505f6ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b5f80670de0b6b3a764000083121561269f57826ec097ce7bc90715b34b9f10000000008161269757612697613b84565b059250600190505b5f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000084126126ef57770195e54c5dd42177f53a27172fa9ec630262827000000000840593506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e0000008412612727576b1425982cf597cd205cef7380840593506803782dace9d9000000015b606493840293026e01855144814a7ff805980ff0084000841261276f576e01855144814a7ff805980ff008400068056bc75e2d63100000850205935068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a70084126127aa576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000085020593506856bc75e2d631000000015b693f1fce3da636ea5cf85084126127e157693f1fce3da636ea5cf85068056bc75e2d631000008502059350682b5e3af16b18800000015b690127fa27722cc06cc5e2841261281857690127fa27722cc06cc5e268056bc75e2d6310000085020593506815af1d78b58c400000015b68280e60114edb805d03841261284d5768280e60114edb805d0368056bc75e2d631000008502059350680ad78ebc5ac6200000015b680ebc5fb41746121110841261287857680ebc5fb4174612111068056bc75e2d631000009485020593015b6808f00f760a4b2db55d84126128ad576808f00f760a4b2db55d68056bc75e2d6310000085020593506802b5e3af16b1880000015b6806f5f177578893793784126128e2576806f5f177578893793768056bc75e2d63100000850205935068015af1d78b58c40000015b6806248f33704b2866038412612916576806248f33704b28660368056bc75e2d63100000850205935067ad78ebc5ac620000015b6805c548670b9510e7ac841261294a576805c548670b9510e7ac68056bc75e2d6310000085020593506756bc75e2d6310000015b5f68056bc75e2d63100000850168056bc75e2d63100000808703028161297257612972613b84565b0590505f68056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b8205016002025f606486830105905086612a085780612a0c565b805f035b9998505050505050505050565b5f680238fd42c5cf03ffff198212158015612a3d575068070c1cc73b00c800008213155b612a73576040517fd4794efd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80831215612a8657825f039250600190505b5f6806f05b59d3b20000008412612ac557506806f05b59d3b1ffffff1990920191770195e54c5dd42177f53a27172fa9ec630262827000000000612afb565b6803782dace9d90000008412612af757506803782dace9d8ffffff19909201916b1425982cf597cd205cef7380612afb565b5060015b6064939093029268056bc75e2d6310000068ad78ebc5ac620000008512612b4b5768ad78ebc5ac61ffffff199094019368056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008512612b87576856bc75e2d630ffffff199094019368056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008512612bc157682b5e3af16b187fffff199094019368056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008512612bfb576815af1d78b58c3fffff199094019368056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008512612c3457680ad78ebc5ac61fffff199094019368056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008512612c6d5768056bc75e2d630fffff199094019368056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008512612ca6576802b5e3af16b187ffff199094019368056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008512612cdf5768015af1d78b58c3ffff199094019368056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008581019086906002908280020505918201919050600368056bc75e2d631000008883020505918201919050600468056bc75e2d631000008883020505918201919050600568056bc75e2d631000008883020505918201919050600668056bc75e2d631000008883020505918201919050600768056bc75e2d631000008883020505918201919050600868056bc75e2d631000008883020505918201919050600968056bc75e2d631000008883020505918201919050600a68056bc75e2d631000008883020505918201919050600b68056bc75e2d631000008883020505918201919050600c68056bc75e2d6310000088830205059182019190505f606468056bc75e2d6310000085850205860205905085612e045780612e24565b806ec097ce7bc90715b34b9f100000000081612e2257612e22613b84565b055b98975050505050505050565b5f60ff8216601f811115610690576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c5613bb7565b5f60208284031215612e88575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611555575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115556020830184612eb7565b6001600160a01b0381168114610a43575f80fd5b8035610c0081612ef7565b5f8060408385031215612f27575f80fd5b8235612f3281612ef7565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e0810167ffffffffffffffff81118282101715612f7757612f77612f40565b60405290565b604051610140810167ffffffffffffffff81118282101715612f7757612f77612f40565b6040516060810167ffffffffffffffff81118282101715612f7757612f77612f40565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fed57612fed612f40565b604052919050565b5f67ffffffffffffffff82111561300e5761300e612f40565b5060051b60200190565b5f82601f830112613027575f80fd5b813561303a61303582612ff5565b612fc4565b8082825260208201915060208360051b86010192508583111561305b575f80fd5b602085015b83811015613078578035835260209283019201613060565b5095945050505050565b5f805f60608486031215613094575f80fd5b833567ffffffffffffffff8111156130aa575f80fd5b6130b686828701613018565b9660208601359650604090950135949350505050565b5f805f606084860312156130de575f80fd5b83356130e981612ef7565b925060208401356130f981612ef7565b929592945050506040919091013590565b5f8151808452602084019350602083015f5b8281101561313a57815186526020958601959091019060010161311c565b5093949350505050565b602080825282516060838301528051608084018190525f929190910190829060a08501905b808310156131955783516001600160a01b03168252602082019150602084019350600183019250613169565b506020860151858203601f1901604087015292506131b3818461310a565b925050506040840151601f198483030160608501526131d2828261310a565b95945050505050565b5f602082840312156131eb575f80fd5b813561155581612ef7565b60028110610a43575f80fd5b8035610c00816131f6565b5f82601f83011261321c575f80fd5b813567ffffffffffffffff81111561323657613236612f40565b613249601f8201601f1916602001612fc4565b81815284602083860101111561325d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215613289575f80fd5b813567ffffffffffffffff81111561329f575f80fd5b820160e081850312156132b0575f80fd5b6132b8612f54565b6132c182613202565b815260208281013590820152604082013567ffffffffffffffff8111156132e6575f80fd5b6132f286828501613018565b604083015250606082810135908201526080808301359082015261331860a08301612f0b565b60a082015260c082013567ffffffffffffffff811115613336575f80fd5b6133428682850161320d565b60c083015250949350505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61338a60e0830189612eb7565b828103604084015261339c8189612eb7565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152611c2e818561310a565b5f80604083850312156133dc575f80fd5b823567ffffffffffffffff8111156133f2575f80fd5b6133fe85828601613018565b925050602083013561340f816131f6565b809150509250929050565b5f8151808452602084019350602083015f5b8281101561313a5781516001600160a01b031686526020958601959091019060010161342c565b602081525f611555602083018461341a565b634e487b7160e01b5f52602160045260245ffd5b608081525f61348b608083018761341a565b82810360208401528086518083526020830191506020880192505f5b818110156135065783518051600281106134cf57634e487b7160e01b5f52602160045260245ffd5b84526020818101516001600160a01b03168186015260409182015115159185019190915293909301926060909201916001016134a7565b5050838103604085015261351a818761310a565b915050828103606084015261352f818561310a565b979650505050505050565b602081525f611555602083018461310a565b602081525f825160e0602084015261356861010084018261310a565b90506020840151601f19848303016040850152613585828261310a565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c084015260c0840151151560e08401528091505092915050565b5f805f805f805f60e0888a0312156135e0575f80fd5b87356135eb81612ef7565b965060208801356135fb81612ef7565b95506040880135945060608801359350608088013560ff8116811461361e575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561364c575f80fd5b823561365781612ef7565b9150602083013561340f81612ef7565b600181811c9082168061367b57607f821691505b60208210810361369957634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114610c00575f80fd5b5f602082840312156136be575f80fd5b6115558261369f565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156136eb575f80fd5b5051919050565b5f82601f830112613701575f80fd5b815161370f61303582612ff5565b8082825260208201915060208360051b860101925085831115613730575f80fd5b602085015b8381101561307857805161374881612ef7565b835260209283019201613735565b5f60208284031215613766575f80fd5b815167ffffffffffffffff81111561377c575f80fd5b6106c3848285016136f2565b5f82601f830112613797575f80fd5b81516137a561303582612ff5565b8082825260208201915060208360051b8601019250858311156137c6575f80fd5b602085015b838110156130785780518352602092830192016137cb565b5f80604083850312156137f4575f80fd5b825167ffffffffffffffff81111561380a575f80fd5b61381685828601613788565b925050602083015167ffffffffffffffff811115613832575f80fd5b61383e85828601613788565b9150509250929050565b5f60808284031215613858575f80fd5b6040516080810167ffffffffffffffff8111828210171561387b5761387b612f40565b60405290508061388a8361369f565b81526138986020840161369f565b60208201526138a96040840161369f565b60408201526138ba6060840161369f565b60608201525092915050565b805164ffffffffff81168114610c00575f80fd5b805163ffffffff81168114610c00575f80fd5b5f6101a08284031280156138ff575f80fd5b50613908612f7d565b6139128484613848565b81526080830151602082015260a0830151604082015260c0830151606082015261393e60e084016138c6565b608082015261395061010084016138da565b60a0820152613962610120840161369f565b60c0820152613974610140840161369f565b60e0820152613986610160840161369f565b610100820152613999610180840161369f565b6101208201529392505050565b5f805f80608085870312156139b9575f80fd5b845167ffffffffffffffff8111156139cf575f80fd5b6139db878288016136f2565b945050602085015167ffffffffffffffff8111156139f7575f80fd5b8501601f81018713613a07575f80fd5b8051613a1561303582612ff5565b80828252602082019150602060608402850101925089831115613a36575f80fd5b6020840193505b82841015613aa1576060848b031215613a54575f80fd5b613a5c612fa1565b8451613a67816131f6565b81526020850151613a7781612ef7565b6020820152613a886040860161369f565b6040820152825260609390930192602090910190613a3d565b80965050505050604085015167ffffffffffffffff811115613ac1575f80fd5b613acd87828801613788565b925050606085015167ffffffffffffffff811115613ae9575f80fd5b613af587828801613788565b91505092959194509250565b5f60208284031215613b11575f80fd5b815167ffffffffffffffff811115613b27575f80fd5b6106c384828501613788565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561069057610690613b33565b8181038181111561069057610690613b33565b808202811582820484141761069057610690613b33565b634e487b7160e01b5f52601260045260245ffd5b5f82613bb257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfea26469706673582212200f3a88fc3053c58c4e31808c9a7aa761c8e10bcf9a90e1d235cd127469484d1f64736f6c634300081a003360a0604052348015600e575f80fd5b50604051612614380380612614833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161259661007e5f395f610a1801526125965ff3fe6080604052600436106100ce575f3560e01c80635211fa771161007c578063976907cc11610057578063976907cc146102a4578063a0e8f5ac146102cd578063ba5f9f40146102ec578063d77153a714610306575f80fd5b80635211fa77146101d957806384027221146101f85780638e9d18d31461020d575f80fd5b80632754888d116100ac5780632754888d1461015d57806338be241d1461019457806345421ec7146101b3575f80fd5b80630b89f182146100d257806318b6eb55146101065780631c149e281461013e575b5f80fd5b3480156100dd575f80fd5b506100f16100ec366004611ae0565b61036b565b60405190151581526020015b60405180910390f35b348015610111575f80fd5b50610127610120366004611c0c565b505f908190565b6040805192151583526020830191909152016100fd565b348015610149575f80fd5b506100f1610158366004611d15565b6103b4565b348015610168575f80fd5b50610186610177366004611d88565b5f839850989650505050505050565b6040516100fd929190611e7b565b34801561019f575f80fd5b506100f16101ae366004611eca565b6103bc565b3480156101be575f80fd5b506100f16101cd366004611f45565b5f979650505050505050565b3480156101e4575f80fd5b506100f16101f336600461201f565b6103c5565b61020b61020636600461206e565b6104ee565b005b348015610218575f80fd5b506102716102273660046120c0565b5f6020818152938152604080822085529281528281209093528252902080546001820154600283015460038401546004909401546001600160a01b03938416949390921692909185565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0016100fd565b3480156102af575f80fd5b506101866102be3660046120f2565b5f849850989650505050505050565b3480156102d8575f80fd5b506101276102e73660046121a1565b6107ef565b3480156102f7575f80fd5b506100f16101cd3660046121f7565b348015610311575f80fd5b5060408051610140810182525f8082526020820181905281830181905260a0820181905260c0820181905260e082018190526101008201819052610120820152600160808201819052606082015290516100fd919061227e565b5f610374610a0d565b6040516001600160a01b0385169030907f9318967d1c69e5c4f5307aaa6e5525ed338991e9cff92b8e28b1ba7d253b8c15905f90a3506001949350505050565b5f5b92915050565b5f5b9392505050565b5f6103ce610a0d565b6001600160a01b038083165f90815260208181526040808320606088013584528252808320608088013584529091529020600181015490911615801590610422575060018101546001600160a01b03163314155b801561043f5750610e10816004015461043b919061235b565b4211155b15610476576040517f252280ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426004820155435f90815260058201602052604090205460ff16156104c7576040517f0a4f9ef200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b435f908152600590910160205260409020805460ff19166001908117909155905092915050565b6001600160a01b0385165f908152602081815260408083208784528252808320868452909152812090831215610643574281600301540361055b576040517f3beb68ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105648361236e565b816002015f82825461057691906123a4565b909155505060028101545f036105a65780546001600160a01b031990811682556001820180549091169055610620565b80546001600160a01b031633146105c85780546001600160a01b031916331781555b6001600160a01b0382166105ef576040516392df410160e01b815260040160405180910390fd5b60018101546001600160a01b038381169116146106205780546001600160a01b0319166001600160a01b0383161781555b61063e3361062d8561236e565b6001600160a01b0389169190610a73565b61077b565b6106586001600160a01b038716333086610aec565b80546001600160a01b0316331461070a5780546001600160a01b0316156106ee57828160020154106106cf5760028101546040517fc6fc7f990000000000000000000000000000000000000000000000000000000081526106c6918591600401918252602082015260400190565b60405180910390fd5b805460028201546106ee916001600160a01b0389811692911690610a73565b6002810183905580546001600160a01b03191633178155610723565b82816002015f82825461071d919061235b565b90915550505b6001600160a01b03821661074a576040516392df410160e01b815260040160405180910390fd5b60018101546001600160a01b0383811691161461077b5780546001600160a01b0319166001600160a01b0383161781555b805460018201546002830154604080516001600160a01b03808c168252602082018b90529181018990529381166060850152909116608083015260a08201527f51a749bbd67f6c3425323ab832d7c5b80f16efbb66fc774f77e27d52bbfab5a09060c00160405180910390a1505050505050565b5f806107f9610a0d565b5f846001600160a01b031663f89f27ed6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261085c91908101906123b7565b90505f61086c6020880188612452565b600181111561087d5761087d61243e565b0361090b57610904610892604088018861246d565b88606001358181106108a6576108a66124ba565b905060200201356108fa838960800135815181106108c6576108c66124ba565b6020026020010151848a60600135815181106108e4576108e46124ba565b6020026020010151610b2b90919063ffffffff16565b8860200135610b53565b9150610990565b61098d61091b604088018861246d565b886080013581811061092f5761092f6124ba565b905060200201356109838389606001358151811061094f5761094f6124ba565b6020026020010151848a608001358151811061096d5761096d6124ba565b6020026020010151610bd890919063ffffffff16565b8860200135610bec565b91505b5f856001600160a01b031663ce20ece76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f191906124ce565b9050808310156109ff578092505b600193505050935093915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a71576040517f089676d50000000000000000000000000000000000000000000000000000000081523360048201526024016106c6565b565b6040516001600160a01b03838116602483015260448201839052610ae791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c49565b505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610b259186918216906323b872dd90608401610aa0565b50505050565b5f80610b3f670de0b6b3a7640000856124e5565b9050610b4b8382612510565b949350505050565b5f80610b8784610b81610b678660026124e5565b610b71908961235b565b610b7b878a61235b565b90610bd8565b90610cc3565b90505f610ba285610b81610b9b878a61235b565b8990610bd8565b9050610bce610bc6610bb483856123a4565b84610bbf888b61235b565b9190610d76565b869086610d76565b9695505050505050565b5f6103be83670de0b6b3a764000084610d76565b5f80610c1484610b81610c008660026124e5565b610c0a90896123a4565b610b7b878a6123a4565b90505f610c2885610b81610b9b878a6123a4565b9050610bce610c3f670de0b6b3a7640000846123a4565b610b7b83856123a4565b5f610c5d6001600160a01b03841683610dd4565b905080515f14158015610c81575080806020019051810190610c7f919061252f565b155b15610ae7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106c6565b5f670de0b6b3a76400008203610cda5750816103b6565b610ced670de0b6b3a764000060026124e5565b8203610d0457610cfd8384610de1565b90506103b6565b610d17670de0b6b3a764000060046124e5565b8203610d3c575f610d288485610de1565b9050610d348182610de1565b9150506103b6565b5f610d478484610e0d565b90505f610d5682612710610de1565b610d6190600161235b565b9050610d6d818361235b565b925050506103b6565b5f815f03610db0576040517f0a0c22c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610dbb84866124e5565b9050600183600183030401811515029150509392505050565b60606103be83835f610fab565b5f80610ded83856124e5565b90506001670de0b6b3a76400006001830304018115150291505092915050565b5f815f03610e245750670de0b6b3a76400006103b6565b825f03610e3257505f6103b6565b60ff83901c15610e6e576040517f022701e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82610ea268056bc75e2d631000007f4000000000000000000000000000000000000000000000000000000000000000612510565b8310610eda576040517fd831731100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f670c7d713b49da000083138015610efa5750670f43fc2c04ee000083125b15610f30575f610f0984611053565b9050670de0b6b3a764000080820784020583670de0b6b3a764000083050201915050610f3e565b81610f3a84611179565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff198112801590610f6c575068070c1cc73b00c800008113155b610fa2576040517fa2f9f7e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bce8161152b565b606081471015610fe9576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016106c6565b5f80856001600160a01b03168486604051611004919061254a565b5f6040518083038185875af1925050503d805f811461103e576040519150601f19603f3d011682016040523d82523d5f602084013e611043565b606091505b5091509150610bce868383611942565b670de0b6b3a7640000025f806ec097ce7bc90715b34b9f1000000000808401906ec097ce7bc90715b34b9f0fffffffff1985010281611094576110946124fc565b0590505f6ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b5f80670de0b6b3a76400008312156111b157826ec097ce7bc90715b34b9f1000000000816111a9576111a96124fc565b059250600190505b5f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000841261120157770195e54c5dd42177f53a27172fa9ec630262827000000000840593506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e0000008412611239576b1425982cf597cd205cef7380840593506803782dace9d9000000015b606493840293026e01855144814a7ff805980ff00840008412611281576e01855144814a7ff805980ff008400068056bc75e2d63100000850205935068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a70084126112bc576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000085020593506856bc75e2d631000000015b693f1fce3da636ea5cf85084126112f357693f1fce3da636ea5cf85068056bc75e2d631000008502059350682b5e3af16b18800000015b690127fa27722cc06cc5e2841261132a57690127fa27722cc06cc5e268056bc75e2d6310000085020593506815af1d78b58c400000015b68280e60114edb805d03841261135f5768280e60114edb805d0368056bc75e2d631000008502059350680ad78ebc5ac6200000015b680ebc5fb41746121110841261138a57680ebc5fb4174612111068056bc75e2d631000009485020593015b6808f00f760a4b2db55d84126113bf576808f00f760a4b2db55d68056bc75e2d6310000085020593506802b5e3af16b1880000015b6806f5f177578893793784126113f4576806f5f177578893793768056bc75e2d63100000850205935068015af1d78b58c40000015b6806248f33704b2866038412611428576806248f33704b28660368056bc75e2d63100000850205935067ad78ebc5ac620000015b6805c548670b9510e7ac841261145c576805c548670b9510e7ac68056bc75e2d6310000085020593506756bc75e2d6310000015b5f68056bc75e2d63100000850168056bc75e2d631000008087030281611484576114846124fc565b0590505f68056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b8205016002025f60648683010590508661151a578061151e565b805f035b9998505050505050505050565b5f680238fd42c5cf03ffff19821215801561154f575068070c1cc73b00c800008213155b611585576040517fd4794efd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8083121561159857825f039250600190505b5f6806f05b59d3b200000084126115d757506806f05b59d3b1ffffff1990920191770195e54c5dd42177f53a27172fa9ec63026282700000000061160d565b6803782dace9d9000000841261160957506803782dace9d8ffffff19909201916b1425982cf597cd205cef738061160d565b5060015b6064939093029268056bc75e2d6310000068ad78ebc5ac62000000851261165d5768ad78ebc5ac61ffffff199094019368056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008512611699576856bc75e2d630ffffff199094019368056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000085126116d357682b5e3af16b187fffff199094019368056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000851261170d576815af1d78b58c3fffff199094019368056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000851261174657680ad78ebc5ac61fffff199094019368056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000851261177f5768056bc75e2d630fffff199094019368056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000085126117b8576802b5e3af16b187ffff199094019368056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000085126117f15768015af1d78b58c3ffff199094019368056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008581019086906002908280020505918201919050600368056bc75e2d631000008883020505918201919050600468056bc75e2d631000008883020505918201919050600568056bc75e2d631000008883020505918201919050600668056bc75e2d631000008883020505918201919050600768056bc75e2d631000008883020505918201919050600868056bc75e2d631000008883020505918201919050600968056bc75e2d631000008883020505918201919050600a68056bc75e2d631000008883020505918201919050600b68056bc75e2d631000008883020505918201919050600c68056bc75e2d6310000088830205059182019190505f606468056bc75e2d63100000858502058602059050856119165780611936565b806ec097ce7bc90715b34b9f100000000081611934576119346124fc565b055b98975050505050505050565b60608261195757611952826119b7565b6103be565b815115801561196e57506001600160a01b0384163b155b156119b0576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106c6565b50806103be565b8051156119c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6001600160a01b03811681146119f9575f80fd5b8035611a1b816119fc565b919050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715611a5757611a57611a20565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a8657611a86611a20565b604052919050565b5f67ffffffffffffffff821115611aa757611aa7611a20565b5060051b60200190565b600281106119f9575f80fd5b80151581146119f9575f80fd5b5f60808284031215611ada575f80fd5b50919050565b5f805f8060e08587031215611af3575f80fd5b8435611afe816119fc565b93506020850135611b0e816119fc565b9250604085013567ffffffffffffffff811115611b29575f80fd5b8501601f81018713611b39575f80fd5b8035611b4c611b4782611a8e565b611a5d565b8082825260208201915060208360071b850101925089831115611b6d575f80fd5b6020840193505b82841015611bed576080848b031215611b8b575f80fd5b611b93611a34565b8435611b9e816119fc565b81526020850135611bae81611ab1565b60208201526040850135611bc1816119fc565b60408201526060850135611bd481611abd565b6060820152825260809390930192602090910190611b74565b80955050505050611c018660608701611aca565b905092959194509250565b5f60208284031215611c1c575f80fd5b813567ffffffffffffffff811115611c32575f80fd5b820161018081850312156103be575f80fd5b5f82601f830112611c53575f80fd5b8135611c61611b4782611a8e565b8082825260208201915060208360051b860101925085831115611c82575f80fd5b602085015b83811015611c9f578035835260209283019201611c87565b5095945050505050565b5f82601f830112611cb8575f80fd5b813567ffffffffffffffff811115611cd257611cd2611a20565b611ce5601f8201601f1916602001611a5d565b818152846020838601011115611cf9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215611d26575f80fd5b823567ffffffffffffffff811115611d3c575f80fd5b611d4885828601611c44565b925050602083013567ffffffffffffffff811115611d64575f80fd5b611d7085828601611ca9565b9150509250929050565b803560048110611a1b575f80fd5b5f805f805f805f80610100898b031215611da0575f80fd5b611da989611a10565b9750611db760208a01611a10565b9650611dc560408a01611d7a565b955060608901359450608089013567ffffffffffffffff811115611de7575f80fd5b611df38b828c01611c44565b94505060a089013567ffffffffffffffff811115611e0f575f80fd5b611e1b8b828c01611c44565b93505060c089013567ffffffffffffffff811115611e37575f80fd5b611e438b828c01611c44565b92505060e089013567ffffffffffffffff811115611e5f575f80fd5b611e6b8b828c01611ca9565b9150509295985092959890939650565b5f604082018415158352604060208401528084518083526060850191506020860192505f5b81811015611ebe578351835260209384019390920191600101611ea0565b50909695505050505050565b5f805f60608486031215611edc575f80fd5b833567ffffffffffffffff811115611ef2575f80fd5b611efe86828701611c44565b93505060208401359150604084013567ffffffffffffffff811115611f21575f80fd5b611f2d86828701611ca9565b9150509250925092565b803560058110611a1b575f80fd5b5f805f805f805f60e0888a031215611f5b575f80fd5b8735611f66816119fc565b9650611f7460208901611a10565b9550611f8260408901611f37565b9450606088013567ffffffffffffffff811115611f9d575f80fd5b611fa98a828b01611c44565b9450506080880135925060a088013567ffffffffffffffff811115611fcc575f80fd5b611fd88a828b01611c44565b92505060c088013567ffffffffffffffff811115611ff4575f80fd5b6120008a828b01611ca9565b91505092959891949750929550565b5f60e08284031215611ada575f80fd5b5f8060408385031215612030575f80fd5b823567ffffffffffffffff811115612046575f80fd5b6120528582860161200f565b9250506020830135612063816119fc565b809150509250929050565b5f805f805f60a08688031215612082575f80fd5b853561208d816119fc565b945060208601359350604086013592506060860135915060808601356120b2816119fc565b809150509295509295909350565b5f805f606084860312156120d2575f80fd5b83356120dd816119fc565b95602085013595506040909401359392505050565b5f805f805f805f80610100898b03121561210a575f80fd5b61211389611a10565b975061212160208a01611a10565b965061212f60408a01611f37565b9550606089013567ffffffffffffffff81111561214a575f80fd5b6121568b828c01611c44565b955050608089013567ffffffffffffffff811115612172575f80fd5b61217e8b828c01611c44565b94505060a0890135925060c089013567ffffffffffffffff811115611e37575f80fd5b5f805f606084860312156121b3575f80fd5b833567ffffffffffffffff8111156121c9575f80fd5b6121d58682870161200f565b93505060208401356121e6816119fc565b929592945050506040919091013590565b5f805f805f805f60e0888a03121561220d575f80fd5b8735612218816119fc565b965061222660208901611a10565b955061223460408901611d7a565b945060608801359350608088013567ffffffffffffffff811115612256575f80fd5b6122628a828b01611c44565b93505060a088013567ffffffffffffffff811115611fcc575f80fd5b8151151581526101408101602083015161229c602084018215159052565b5060408301516122b0604084018215159052565b5060608301516122c4606084018215159052565b5060808301516122d8608084018215159052565b5060a08301516122ec60a084018215159052565b5060c083015161230060c084018215159052565b5060e083015161231460e084018215159052565b5061010083015161232a61010084018215159052565b5061012083015161234061012084018215159052565b5092915050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103b6576103b6612347565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361239e5761239e612347565b505f0390565b818103818111156103b6576103b6612347565b5f602082840312156123c7575f80fd5b815167ffffffffffffffff8111156123dd575f80fd5b8201601f810184136123ed575f80fd5b80516123fb611b4782611a8e565b8082825260208201915060208360051b85010192508683111561241c575f80fd5b6020840193505b82841015610bce578351825260209384019390910190612423565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215612462575f80fd5b81356103be81611ab1565b5f808335601e19843603018112612482575f80fd5b83018035915067ffffffffffffffff82111561249c575f80fd5b6020019150600581901b36038213156124b3575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156124de575f80fd5b5051919050565b80820281158282048414176103b6576103b6612347565b634e487b7160e01b5f52601260045260245ffd5b5f8261252a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561253f575f80fd5b81516103be81611abd565b5f82518060208501845e5f92019182525091905056fea26469706673582212209fb19cef5227084468791060c635ff6c76ff08cff1c1df0f2fed093151fca35164736f6c634300081a0033000000000000000000000000ba1333333333a1ba1108e8412f11850a5c319ba90000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000005e7b226e616d65223a22416b726f6e5765696768746564506f6f6c466163746f7279222c2276657273696f6e223a312c226465706c6f796d656e74223a2232303235303230342d76332d616b726f6e2d77656967687465642d706f6f6c227d000000000000000000000000000000000000000000000000000000000000000000577b226e616d65223a22416b726f6e5765696768746564506f6f6c222c2276657273696f6e223a312c226465706c6f796d656e74223a2232303235303230342d76332d616b726f6e2d77656967687465642d706f6f6c227d000000000000000000