0 txs
1 call
constructor
constructor(address contractRegistry, string version)
functions
allowance
viewfunction allowance(address owner, address spender, uint256 id) view returns (uint256)
balanceOf
viewfunction balanceOf(address owner, uint256 id) view returns (uint256)
decimals
viewfunction decimals(uint256 id) view returns (uint8)
getId
purefunction getId(address token) pure returns (uint256)
getUnlockTimestamp
viewfunction getUnlockTimestamp(uint256 id) view returns (uint256)
isOperator
viewfunction isOperator(address owner, address spender) view returns (bool)
name
viewfunction name(uint256 id) view returns (string)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol(uint256 id) view returns (string)
version
viewfunction version() view returns (string)
approve
nonpayablefunction approve(address spender, uint256 id, uint256 amount) returns (bool)
migrateLiquidity
nonpayablefunction migrateLiquidity(address lbp, address excessReceiver, tuple params) returns (address, uint256[], uint256)
migrateLiquidityHook
nonpayablefunction migrateLiquidityHook(tuple params) returns (uint256[] exactAmountsIn, uint256 bptAmountOut)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
queryMigrateLiquidity
nonpayablefunction queryMigrateLiquidity(address lbp, address sender, address excessReceiver, tuple params) returns (uint256[] exactAmountsIn, uint256 bptAmountOut)
setOperator
nonpayablefunction setOperator(address spender, bool approved) returns (bool)
transfer
nonpayablefunction transfer(address receiver, uint256 id, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address receiver, uint256 id, uint256 amount) returns (bool)
withdrawBPT
nonpayablefunction withdrawBPT(address bptAddress)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 indexed id, uint256 amount)
BPTTimelockSet
event BPTTimelockSet(address indexed bptAddress, uint256 unlockTimestamp)
ERC6909DecimalsUpdated
event ERC6909DecimalsUpdated(uint256 indexed id, uint8 newDecimals)
ERC6909NameUpdated
event ERC6909NameUpdated(uint256 indexed id, string newName)
ERC6909SymbolUpdated
event ERC6909SymbolUpdated(uint256 indexed id, string newSymbol)
OperatorSet
event OperatorSet(address indexed owner, address indexed spender, bool approved)
PoolMigrated
event PoolMigrated(address indexed lbp, address weightedPool, uint256[] exactAmountsIn, uint256 bptAmountOut)
Transfer
event Transfer(address caller, address indexed sender, address indexed receiver, uint256 indexed id, uint256 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
BPTStillLocked
error BPTStillLocked(uint256 unlockTimestamp)
ERC6909InsufficientAllowance
error ERC6909InsufficientAllowance(address spender, uint256 allowance, uint256 needed, uint256 id)
ERC6909InsufficientBalance
error ERC6909InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 id)
ERC6909InvalidApprover
error ERC6909InvalidApprover(address approver)
ERC6909InvalidReceiver
error ERC6909InvalidReceiver(address receiver)
ERC6909InvalidSender
error ERC6909InvalidSender(address sender)
ERC6909InvalidSpender
error ERC6909InvalidSpender(address spender)
FailedCall
error FailedCall()
IncorrectMigrationRouter
error IncorrectMigrationRouter(address expectedRouter, address actualRouter)
NoLockedBPT
error NoLockedBPT()
NoRegisteredWeightedPoolFactory
error NoRegisteredWeightedPoolFactory()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SenderIsNotLBPOwner
error SenderIsNotLBPOwner()
SenderIsNotVault
error SenderIsNotVault(address sender)
creation bytecode
0x60c06040908082523461021a57613582803803809161001e8285610365565b8339810190828183031261021a5780516001600160a01b03928382169182900361021a5760208381015190936001600160401b03919082821161021a570190601f9083828401121561021a57825181811161030f57601f199389519561008a8987878601160188610365565b82875288838301011161021a57815f92898093018389015e8601015287516311b2515f60e31b8152918683600481895afa92831561035b575f93610323575b50845191821161030f575f54946001948587811c97168015610305575b898810146102f15786838c981161029b575b508892841160011461023a57505f91908361022f575b50505f19600383901b1c191690831b175f555b60805260848251809481936341d8c0bb60e01b83526004830152846024830152600c60448301526b15d95a59da1d1959141bdbdb60a21b60648301525afa908115610225575f925f926101d9575b5050156101ca571660a052516131f990816103898239608051818181610aff015281816112c70152818161149e0152818161173c01528181611ea701528181611f14015261250b015260a0518181816109df01526123e90152f35b630336c49960e51b5f5260045ffd5b915091508382813d831161021e575b6101f28183610365565b8101031261021a57815191838316830361021a57015190811515820361021a57905f8061016f565b5f80fd5b503d6101e8565b84513d5f823e3d90fd5b015190505f8061010e565b5f8080528981209392918516905b8a828210610284575050908487959493921061026c575b505050811b015f55610121565b01515f1960f88460031b161c191690555f808061025f565b8484015186558d9950948801949384019301610248565b90919293949596505f8052885f208480870160051c8201928b88106102e8575b958d999897969594939291950160051c01905b8181106102db57506100f8565b5f81558c985087016102ce565b925081926102bb565b634e487b7160e01b5f52602260045260245ffd5b96607f16966100e6565b634e487b7160e01b5f52604160045260245ffd5b9092508681813d8311610354575b61033b8183610365565b8101031261021a5751878116810361021a57915f6100c9565b503d610331565b89513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761030f5760405256fe6080806040526004361015610012575f80fd5b5f3560e01c908162ad800c146127b857508062fdd58e1461277457806301ffc9a7146126d3578063095bcdb6146126bb57806320ad0ff8146121b957806324901c0b146111925780633f47e66214611162578063426a8493146110e35780634e41a1fb1461100557806354fd4d5014610f0b578063558a729714610dfe578063598af9e714610da45780635e7a6a7d1461072e57806365f68c89146107025780638a34711d146106d8578063ac9650d8146104bf578063b6363cf21461046c578063dc450d4f146102125763fe99049a146100eb575f80fd5b3461020e57608060031936011261020e57610104612870565b61010c612886565b604435606435916001600160a01b0384169333851415806101ed575b610142575b6101379450612d1d565b602060405160018152f35b845f526020946003865260405f20335f52865260405f20845f52865260405f2054905f198210610174575b505061012d565b8582106101a757906101379686925f526003815260405f20335f52815260405f2090865f52520360405f20555f8061016d565b6040517f58a3fd5a000000000000000000000000000000000000000000000000000000008152336004820152602481018390526044810187905260648101869052608490fd5b50845f52600260205260405f20335f5260205260ff60405f20541615610128565b5f80fd5b3461020e5760208060031936011261020e576001600160a01b03610234612870565b1690335f526001815260405f20825f52815260405f2054801561044557825f526005825260405f205480421061041a5750825f52600582525f604081205533156103ee57335f526001825260405f20835f52825260405f20548181106103a65790805f923384526001855260408420868552855203604083205583826040517f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288593391806102f8873383602090939291936001600160a01b0360408201951681520152565b0390a46040517fa9059cbb00000000000000000000000000000000000000000000000000000000848201908152336024830152604482019290925261034a81606481015b03601f198101835282612968565b519082855af11561039b575f513d6103925750803b155b61036757005b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60011415610361565b6040513d5f823e3d90fd5b6040517fb1b4fec00000000000000000000000000000000000000000000000000000000081523360048201526024810191909152604481019190915260648101839052608490fd5b7fa4352080000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f60489698000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7ee39db1000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461020e57604060031936011261020e57610485612870565b61048d612886565b906001600160a01b038091165f52600260205260405f2091165f52602052602060ff60405f2054166040519015158152f35b3461020e5760208060031936011261020e5760043567ffffffffffffffff80821161020e573660238301121561020e57816004013581811161020e5760059060243682841b860182011161020e576040929192519061051d8261294c565b5f82528682019261052d85612b44565b9661053b6040519889612968565b858852601f1961054a87612b44565b01895f5b8a8382106106c957505050505f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd82360301925b878110610608578a8a6040519082820192808352815180945260408301938160408260051b8601019301915f955b8287106105be5785850386f35b9091929382806105f8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a60019603018652885161284b565b96019201960195929190926105b1565b8481831b840101358481121561020e5783019085820135918a831161020e57604401823603811361020e578c5f806106a4938b610671858f9960019a6040519482869385850198893783019084820190898252519283915e018683820152038084520182612968565b5190305af43d156106c0573d6106868161298b565b906106946040519283612968565b81525f81933d92013e5b30613137565b6106ae828d612c8c565b526106b9818c612c8c565b5001610583565b6060915061069e565b6060908201830152810161054e565b3461020e57602060031936011261020e576004355f526005602052602060405f2054604051908152f35b3461020e57602060031936011261020e5760206001600160a01b03610725612870565b16604051908152f35b3461020e57606060031936011261020e57610747612870565b61074f612886565b9060443567ffffffffffffffff811161020e576107709036906004016129fa565b916040517f8da5cb5b0000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b0387165afa801561039b575f90610d64575b6001600160a01b039150163303610d3c577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0091825c610d14576001835d604051917f0ca898480000000000000000000000000000000000000000000000000000000083525f836004816001600160a01b0386165afa92831561039b575f93610cf0575b506001600160a01b0361012084015116308103610cc1575060405161085d81612930565b60028152604036602083013761018084015161087d60c086015183612c8c565b526101a084015161089260e086015183612c8c565b52604051906108a082612930565b600282525f5b60408110610c9257505f5b60028110610c6857509561093894959681519160208101519160408201519460608301516001600160a01b036080850151169160a085015115159361094a60e060c08801511515970151976040519d8e9a7ffed4cdda000000000000000000000000000000000000000000000000000000008c5261018060048d01526101848c019061284b565b906003198b83030160248c015261284b565b6003198982030160448a0152602080845192838152019301905f5b818110610bd257505050916001600160a01b036040610998848b9a98966003198c60209f9c9a98030160648d0152612b11565b978281511660848b0152828c8201511660a48b015201511660c488015260e487015261010486015261012485015261014484015261016483015203815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561039b575f93610b87575b50610ab75f9261033c9286610af2969751916101408201516001600160a01b03610160840151926101a0610180860151950151958260405198610a518a6128da565b168852828d166020890152604088015233606088015216608086015260a085015260c084015260e08301526101008201526040519283917f24901c0b00000000000000000000000000000000000000000000000000000000602084015260248301612fb6565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061284b565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561039b576001600160a01b0393610b505f92610b61948491610b65575b506020808251830101910161305e565b9290915d6040519485941684612b5c565b0390f35b610b8191503d8086833e610b798183612968565b810190613038565b87610b40565b92506020833d602011610bca575b81610ba260209383612968565b8101031261020e57610ab75f9261033c92610bbf610af296612d09565b955092509250610a0f565b3d9150610b95565b918095969798999a5093909293516001600160a01b0381511682526020810151906002821015610c3b578260606080926020948560019701526001600160a01b0360408201511660408401520151151560608201520195019101918d9998979695949392610965565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b806001600160a01b03610c7e6001938951612c8c565b5116610c8a8286612c8c565b5152016108b1565b602090604051610ca181612914565b5f81525f838201525f60408201525f6060820152828286010152016108a6565b7f2a6ef7fc000000000000000000000000000000000000000000000000000000005f526004523060245260445ffd5b610d0d9193503d805f833e610d058183612968565b810190612e2f565b9185610839565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fea37ac06000000000000000000000000000000000000000000000000000000005f5260045ffd5b506020813d602011610d9c575b81610d7e60209383612968565b8101031261020e57610d976001600160a01b0391612d09565b6107b6565b3d9150610d71565b3461020e57606060031936011261020e57610dbd612870565b610dc5612886565b906001600160a01b038091165f52600360205260405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b3461020e57604060031936011261020e57610e17612870565b6024359081151580920361020e573315610edf576001600160a01b0316908115610eb357335f52600260205260405f20825f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff83161790556040519081527fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b7f6f65f465000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fcc766a98000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461020e575f60031936011261020e576040515f5f549082610f2c83612b87565b91828252602093600190856001821691825f14610fc7575050600114610f6e575b50610f5a92500383612968565b610b6160405192828493845283019061284b565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610faf575050610f5a935082010185610f4d565b80548389018501528794508693909201918101610f98565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610f5a95151560051b8501019250879150610f4d9050565b3461020e5760208060031936011261020e576004355f5260048152600190600160405f200160405180935f9083549361103d85612b87565b94858552866001821691825f146110a2575050600114611066575b5050610f5a92500383612968565b8592505f52815f20905f915b85831061108a575050610f5a93508201018580611058565b80548389018501528794508693909201918101611072565b91509350610f5a9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201018580611058565b3461020e576110f1366128b0565b90913315610edf576001600160a01b0316908115610eb357335f52600360205260405f20825f5260205260405f20835f526020528060405f20556040519081527fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b3461020e57602060031936011261020e576004355f526004602052602060ff600260405f20015416604051908152f35b3461020e57602060031936011261020e5767ffffffffffffffff6004351161020e576101206003196004353603011261020e576040516111d1816128da565b6111df60043560040161289c565b8152602460043501356001600160a01b038116810361020e5760208201526044600435013567ffffffffffffffff811161020e57600435013660238201121561020e5760048101359061123182612b44565b9161123f6040519384612968565b80835260208301913660248360051b8301011161020e579160248301925b60248360051b8201018410612192578585604082015261128160646004350161289c565b606082015261129460846004350161289c565b608082015260043560a481013560a083015260c481013560c083015260e481013560e083015261010401356101008201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303612166576001600160a01b038151166001600160a01b036060830151166040517f70a08231000000000000000000000000000000000000000000000000000000008152816004820152602081602481865afa90811561039b575f91612134575b506040519061135f82612930565b600282526040366020840137604051926113788461294c565b5f8452604051948560c081011067ffffffffffffffff60c088011117611ce45760c0860160405285526020850152604084015260608301525f608083015260a0820152604051907f214578970000000000000000000000000000000000000000000000000000000082526020600483015260e482016001600160a01b0382511660248401526001600160a01b0360208301511660448401526040820151606484015260608201519060c060848501528151809152602061010485019201905f5b81811061211e5750505060808201516004811015610c3b57611491849260a05f95859460a486015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8483030160c485015261284b565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561039b575f916120ba575b506001600160a01b0382511660c08301519060e08401519161010085015190604051936114fa85612930565b600285526040366020870137604051907fe565c29e0000000000000000000000000000000000000000000000000000000082525f82600481885afa91821561039b575f92611fc7575b505f6020600493015195604051938480927f0ca898480000000000000000000000000000000000000000000000000000000082525afa90811561039b5787611684956115e686946115ce9961167b975f92611fa7575b506115e0906115c76115d660c085019760e06115b68a5183612c8c565b5196019e8f966115c7885187612c8c565b519061308f565b955190612c8c565b5191875190612c8c565b906130e6565b8a6116096115ff846115f9875185612c8c565b5161308f565b6115e0878561308f565b6116148b5183612c8c565b51811115611f8e57509161165891611652611634611675958d5190612c8c565b5196879261164c670de0b6b3a764000094859261308f565b0461308f565b046130e6565b61166c670de0b6b3a764000097889261308f565b04915189612c8c565b5261308f565b04915183612c8c565b525f5b60028110611e4357838261170560206001600160a01b03818501511660408501519061172f6040516116b88161294c565b5f815261171760405196879586957fba8a2be0000000000000000000000000000000000000000000000000000000008752600487015230602487015260c0604487015260c4860190612ccd565b60031985820301606486015288612b11565b905f60848501526003198483030160a485015261284b565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561039b575f91611e11575b506001600160a01b03602084015116926001600160a01b036060820151169361179960a0830151426130a2565b6040517f06fdde030000000000000000000000000000000000000000000000000000000081525f81600481865afa801561039b576027611828916020935f91611df7575b506040519384917f4c6f636b65642000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f83820152036007810184520182612968565b825f52600460205260405f209080519167ffffffffffffffff8311611ce45784926118538254612b87565b601f8111611da6575b506020601f8211600114611d335791817f6846707b16f55a3623d38bf118700af63d0784698270a53ce28b116dbaa8b79494926118c0945f91611bfc575b505f198260011b9260031b1c19161790555b60405191829160208352602083019061284b565b0390a26040517f95d89b410000000000000000000000000000000000000000000000000000000081525f81600481865afa801561039b576027611952916020935f91611d11575b506040519384917f4c4f434b45442d00000000000000000000000000000000000000000000000000828401528051918291018484015e81015f83820152036007810184520182612968565b825f526004602052600160405f20019080519167ffffffffffffffff8311611ce45784926119808254612b87565b601f8111611c93575b506020601f8211600114611c075791817f8fabcb7b4fbdde605303a7339bc80fb6956cd01a42e9cdf2d15d0f2fdd3b06fa94926119eb945f91611bfc57505f198260011b9260031b1c191617905560405191829160208352602083019061284b565b0390a26040517f313ce567000000000000000000000000000000000000000000000000000000008152602081600481865afa801561039b5783915f91611bbc575b5060207fc7435874568017e6134c851002a405d733521c0f4c63f9f25f3a32a4d595b72991835f526004825260ff600260405f2001911690817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051908152a2815f5260056020528060405f20558515611b905760207f59c2e937deb745424f6fd4b177dca843e536a9f09d159b1e73f2516cc91962c2918388611b86995f526001845260405f20825f52845260405f20611aef8982546130a2565b905560408051338152602081018a90525f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991a4604051908152a27f4d4f6b7510c8285aa70a0e40c3f7180bc41fb9686bdf5816157e1f999d6ef60c836001600160a01b0360208185511694015116611b6f8560405193849384612b5c565b0390a2604051928392604084526040840190612b11565b9060208301520390f35b7fb8bbd610000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b9150506020813d602011611bf4575b81611bd860209383612968565b8101031261020e575160ff8116810361020e5782906020611a2c565b3d9150611bcb565b90508301518d61189a565b825f5260205f20905f5b601f1984168110611c785750826119eb949260019282601f197f8fabcb7b4fbdde605303a7339bc80fb6956cd01a42e9cdf2d15d0f2fdd3b06fa99971610611c60575b5050811b0190556118ac565b8501515f1960f88460031b161c191690558d80611c54565b81860151835588965060019092019160209182019101611c11565b9091809394505f5260205f20601f830160051c810160208410611cdd575b908795949392915b601f830160051c82018110611ccf575050611989565b5f8155889650600101611cb9565b5080611cb1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611d2d91503d805f833e611d258183612968565b8101906130af565b8a611907565b825f5260205f20905f5b601f1984168110611d8b5750826118c0949260019282601f197f6846707b16f55a3623d38bf118700af63d0784698270a53ce28b116dbaa8b79499971610611c60575050811b0190556118ac565b81860151835588965060019092019160209182019101611d3d565b9091809394505f5260205f20601f830160051c810160208410611df0575b908795949392915b601f830160051c82018110611de257505061185c565b5f8155889650600101611dcc565b5080611dc4565b611e0b91503d805f833e611d258183612968565b8a6117dd565b90506020813d602011611e3b575b81611e2c60209383612968565b8101031261020e57518361176c565b3d9150611e1f565b611e4d8184612c8c565b5190611e598184612c8c565b518281810311611f6157808303611e76575b506001915001611687565b6001600160a01b03611e8c836040890151612c8c565b5116926001600160a01b036080880151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561020e57604051947fae639329000000000000000000000000000000000000000000000000000000008652600486015260248501520360448301525f82606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561039b57611f47575b81611e6b565b67ffffffffffffffff8211611ce457600191604052611f41565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9450505050611675611fa182518b612c8c565b51611658565b6115e0919250611fc0903d805f833e610d058183612968565b9190611599565b91503d805f843e611fd88184612968565b82019160208184031261020e5780519067ffffffffffffffff821161020e5701916101008382031261020e5760405192612011846128f7565b805167ffffffffffffffff811161020e578261202e918301612bd8565b845260208101519367ffffffffffffffff851161020e576120ad60e08361205c5f9660049960209701612bd8565b85850152604081015160408501526060810151606085015261208060808201612e22565b608085015261209160a08201612e22565b60a08501526120a260c08201612e22565b60c085015201612e22565b60e0820152935050611543565b90503d805f833e6120cb8183612968565b81019060608183031261020e57602081015167ffffffffffffffff811161020e57826120f8918301612bd8565b91604082015167ffffffffffffffff811161020e576121179201612c6f565b50826114ce565b8251845260209384019390920191600101611438565b90506020813d60201161215e575b8161214f60209383612968565b8101031261020e575184611351565b3d9150612142565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b8335916001600160a01b038316830361020e5760208160249482935201940193915061125d565b3461020e57608060031936011261020e576121d2612870565b6121da612886565b906044356001600160a01b038116810361020e5760643567ffffffffffffffff811161020e5761220e9036906004016129fa565b92604051917f0ca898480000000000000000000000000000000000000000000000000000000083525f836004816001600160a01b0388165afa92831561039b575f9361269f575b506001600160a01b0361012084015116308103610cc1575060405161227981612930565b60028152604036602083013761018084015161229960c086015183612c8c565b526101a08401516122ae60e086015183612c8c565b52604051906122bc82612930565b600282525f5b6040811061267057505f5b6002811061264657509561093894959681519160208101519160408201519460608301516001600160a01b036080850151169160a085015115159361235460e060c08801511515970151976040519d8e9a7ffed4cdda000000000000000000000000000000000000000000000000000000008c5261018060048d01526101848c019061284b565b6003198982030160448a0152602080845192838152019301905f5b8181106125dd57505050916001600160a01b0360406123a2848b9a98966003198c60209f9c9a98030160648d0152612b11565b978281511660848b0152828c8201511660a48b015201511660c488015260e487015261010486015261012485015261014484015261016483015203815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561039b575f93612580575b506124fe948461033c946124c3946001600160a01b0361245f95815f9a5193610140870151948261016089015197816101a06101808c01519b01519b6040519d8e6128da565b168c521660208b015260408a015216606088015216608086015260a085015260c084015260e08301526101008201526040519283917f24901c0b00000000000000000000000000000000000000000000000000000000602084015260248301612fb6565b604051809381927fedfa356800000000000000000000000000000000000000000000000000000000835260206004840152602483019061284b565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561039b57611b8691612552915f9161256657506020808251830101910161305e565b604051928392604084526040840190612b11565b61257a91503d805f833e610b798183612968565b83610b40565b9092506020813d6020116125d5575b8161259c60209383612968565b8101031261020e576124fe945f9461033c946124c3946001600160a01b036125c661245f96612d09565b97505094509250945094612419565b3d915061258f565b918095969798999a5093909293516001600160a01b0381511682526020810151906002821015610c3b578260606080926020948560019701526001600160a01b0360408201511660408401520151151560608201520195019101918d999897969594939261236f565b806001600160a01b0361265c6001938951612c8c565b51166126688286612c8c565b5152016122cd565b60209060405161267f81612914565b5f81525f838201525f60408201525f6060820152828286010152016122c2565b6126b49193503d805f833e610d058183612968565b9185612255565b3461020e576101376126cc366128b0565b9133612d1d565b3461020e57602060031936011261020e576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361020e57807f0f632fb3000000000000000000000000000000000000000000000000000000006020921490811561274a575b506040519015158152f35b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150148261273f565b3461020e57604060031936011261020e576001600160a01b03612795612870565b165f52600160205260405f206024355f52602052602060405f2054604051908152f35b3461020e5760208060031936011261020e576004355f526004815260405f20825f82546127e481612b87565b93848452600191866001821691825f146110a257505060011461280f575050610f5a92500383612968565b8592505f52815f20905f915b858310612833575050610f5a93508201018580611058565b8054838901850152879450869390920191810161281b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b600435906001600160a01b038216820361020e57565b602435906001600160a01b038216820361020e57565b35906001600160a01b038216820361020e57565b600319606091011261020e576004356001600160a01b038116810361020e57906024359060443590565b610120810190811067ffffffffffffffff821117611ce457604052565b610100810190811067ffffffffffffffff821117611ce457604052565b6080810190811067ffffffffffffffff821117611ce457604052565b6060810190811067ffffffffffffffff821117611ce457604052565b6020810190811067ffffffffffffffff821117611ce457604052565b90601f601f19910116810190811067ffffffffffffffff821117611ce457604052565b67ffffffffffffffff8111611ce457601f01601f191660200190565b81601f8201121561020e578035906129be8261298b565b926129cc6040519485612968565b8284526020838301011161020e57815f926020809301838601378301015290565b3590811515820361020e57565b8082039291610140841261020e57604090815192612a17846128f7565b839581359267ffffffffffffffff9384811161020e5781612a399185016129a7565b865260208301359184831161020e57612a777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09260609486016129a7565b6020880152011261020e5782516060810192831181841017611ce457836101209360e09552612aa781840161289c565b8252612ab56060840161289c565b6020830152612ac66080840161289c565b8183015285015260a08101356060850152612ae360c0820161289c565b6080850152612af38382016129ed565b60a0850152612b0561010082016129ed565b60c08501520135910152565b9081518082526020808093019301915f5b828110612b30575050505090565b835185529381019392810192600101612b22565b67ffffffffffffffff8111611ce45760051b60200190565b939291612b82906001600160a01b03604093168652606060208701526060860190612b11565b930152565b90600182811c92168015612bce575b6020831014612ba157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612b96565b9080601f8301121561020e57815190602091612bf381612b44565b93612c016040519586612968565b81855260208086019260051b82010192831161020e57602001905b828210612c2a575050505090565b81518152908301908301612c1c565b929192612c458261298b565b91612c536040519384612968565b82948184528183011161020e578281602093845f96015e010152565b9080601f8301121561020e578151612c8992602001612c39565b90565b8051821015612ca05760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9081518082526020808093019301915f5b828110612cec575050505090565b83516001600160a01b031685529381019392810192600101612cde565b51906001600160a01b038216820361020e57565b91926001600160a01b038084169283156103ee5716928315611b9057825f52602060018152604091825f20875f528252825f205490848210612dd157509183917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885994612dcc94875f5260018352835f208a5f52835203825f2055865f5260018152815f2090885f5252805f20612db48382546130a2565b90555133815260208101919091529081906040820190565b0390a4565b83517fb1b4fec00000000000000000000000000000000000000000000000000000000081526001600160a01b0391909116600482015260248101919091526044810184905260648101879052608490fd5b5190811515820361020e57565b90602091828183031261020e57805167ffffffffffffffff9182821161020e5701916101c093848483031261020e5760405194850185811084821117611ce457604052835183811161020e57840182601f8201121561020e57805190612e9482612b44565b91612ea26040519384612968565b808352838084019160051b8301019185831161020e578401905b828210612f975750505085528084015183811161020e5782612edf918601612bd8565b90850152604083015182811161020e5781612efb918501612bd8565b6040850152606083015191821161020e57612f17918301612bd8565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100612f52818301612e22565b90830152610120612f64818301612d09565b908301526101408082015190830152610160808201519083015261018080820151908301526101a0809101519082015290565b81516001600160a01b038116810361020e578152908401908401612ebc565b602081526001600160a01b0391828151166020830152826020820151166040830152604081015190612ff661012092836060860152610140850190612ccd565b9380606083015116608085015260808201511660a084015260a081015160c084015260c081015160e084015260e0810151906101009182850152015191015290565b9060208282031261020e57815167ffffffffffffffff811161020e57612c899201612c6f565b919060408382031261020e57825167ffffffffffffffff811161020e57602091613089918501612bd8565b92015190565b81810292918115918404141715611f6157565b91908201809211611f6157565b60208183031261020e5780519067ffffffffffffffff821161020e57019080601f8301121561020e578151612c8992602001612c39565b670de0b6b3a764000090818102918183041490151715611f6157811561310a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90613174575080511561314c57805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806131ba575b613185575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561317d56fea26469706673582212204b0d7dc993680d59d49460a9b59a0e18ae5eee87c067b7608c3a2e0c57bd126664736f6c634300081b00330000000000000000000000000c8f71d19f87c0bd1b9bad2484ecc3388d5dbb98000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000647b226e616d65223a224c42504d6967726174696f6e526f75746572222c2276657273696f6e223a322c226465706c6f796d656e74223a2232303235303730312d76332d6c69717569646974792d626f6f74737472617070696e672d706f6f6c2d7632227d00000000000000000000000000000000000000000000000000000000