1 tx
2 calls
constructor
constructor(address[] _executors, address _wnative, address _loanManager, address _yieldStrategy, uint256 _targetHealthFactor, bool _yieldStrategyUseNativeAssets)
functions
assemble
viewfunction assemble(uint256, uint256) view
balanceOf
viewfunction balanceOf(address _asset_address, address _account) view returns (uint256)
executors
viewfunction executors(address) view returns (bool)
fullDisassemble
viewfunction fullDisassemble() view
getAvailableBorrow
viewfunction getAvailableBorrow() view returns (uint256)
getAvailableBorrowOrRequiredRepay
viewfunction getAvailableBorrowOrRequiredRepay() view returns (uint256 availableBorrow, uint256 requiredRepay)
getAvailableWithdraw
viewfunction getAvailableWithdraw() view returns (uint256)
getAvailableWithdrawOrRequiredSupply
viewfunction getAvailableWithdrawOrRequiredSupply() view returns (uint256 availableWithdraw, uint256 requiredSupply)
getBorrow
viewfunction getBorrow() view returns (uint256)
getConfig
viewfunction getConfig() view returns (tuple)
getLoanManagerConfig
viewfunction getLoanManagerConfig() view returns (tuple)
getRequiredRepay
viewfunction getRequiredRepay() view returns (uint256)
getRequiredSupply
viewfunction getRequiredSupply() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
unwindAndRepay
viewfunction unwindAndRepay(uint256) view
unwindAndSupply
viewfunction unwindAndSupply(uint256) view
unwindRepayAndWithdraw
viewfunction unwindRepayAndWithdraw(uint256, uint256) view
unwindRepayAndWithdrawAvailable
viewfunction unwindRepayAndWithdrawAvailable(uint256) view
withdrawSupplyAndAssemble
viewfunction withdrawSupplyAndAssemble(uint256) view
WNATIVE
viewfunction WNATIVE() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addExecutor
nonpayablefunction addExecutor(address _executor)
approveToken
nonpayablefunction approveToken(address _token, address _guy, uint256 _wad)
assemble
nonpayablefunction assemble(uint256 _supplyAmount, uint256 _borrowAmount, uint256 _min_lpt_out) returns (uint256)
batchExecute
payablefunction batchExecute(address[] _tos, uint256[] _values, bytes[] _datas) payable
borrow
nonpayablefunction borrow(uint256 _amount)
execute
payablefunction execute(address _to, uint256 _value, bytes _data) payable
fullDisassemble
nonpayablefunction fullDisassemble(uint256[] _min_yield_outs) returns (uint256[] yields_out)
removeExecutor
nonpayablefunction removeExecutor(address _executor)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(uint256 _amount)
revokeToken
nonpayablefunction revokeToken(address _token, address _guy)
setConfig
nonpayablefunction setConfig(uint256 _targetHealthFactor, bool _yieldStrategyUseNativeAssets)
supply
nonpayablefunction supply(uint256 _amount)
transferAssetsFromLoanManager
nonpayablefunction transferAssetsFromLoanManager(address _assetAddress, uint256 _amount)
transferAssetsFromYieldStrategy
nonpayablefunction transferAssetsFromYieldStrategy(address _assetAddress, uint256 _amount)
transferAssetsToLoanManager
nonpayablefunction transferAssetsToLoanManager(address _assetAddress, uint256 _amount)
transferAssetsToYieldStrategy
nonpayablefunction transferAssetsToYieldStrategy(address _assetAddress, uint256 _amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwind
nonpayablefunction unwind(uint256 _percentage, uint256[] _min_yield_outs) returns (uint256[] yield_outs, uint256 amount_out)
unwindAndRepay
nonpayablefunction unwindAndRepay(uint256 _percentage, uint256[] _min_yield_outs) returns (uint256[])
unwindAndSupply
nonpayablefunction unwindAndSupply(uint256 _percentage, uint256[] _min_yield_outs) returns (uint256[])
unwindRepayAndWithdraw
nonpayablefunction unwindRepayAndWithdraw(uint256 _percentage, uint256 _withdraw_supply_amount, uint256[] _min_yield_outs) returns (uint256[])
unwindRepayAndWithdrawAvailable
nonpayablefunction unwindRepayAndWithdrawAvailable(uint256 _percentage, uint256[] _min_yield_outs) returns (uint256[])
unwrapNative
nonpayablefunction unwrapNative(uint256 _amount)
updateLoanManager
nonpayablefunction updateLoanManager(address _address)
updateYieldStrategy
nonpayablefunction updateYieldStrategy(address _address)
withdraw
nonpayablefunction withdraw(address _asset_address, uint256 _amount)
withdrawAll
nonpayablefunction withdrawAll(address _asset_address)
withdrawAllTo
nonpayablefunction withdrawAllTo(address _asset_address, address _to)
withdrawSupply
nonpayablefunction withdrawSupply(uint256 _amount)
withdrawSupplyAndAssemble
nonpayablefunction withdrawSupplyAndAssemble(uint256 _amount, uint256 _min_lpt_out) returns (uint256)
withdrawSupplyAvailable
nonpayablefunction withdrawSupplyAvailable() returns (uint256)
withdrawTo
nonpayablefunction withdrawTo(address _asset_address, uint256 _amount, address _to)
wrapNative
nonpayablefunction wrapNative(uint256 _amount)
events
ApproveToken
event ApproveToken(address indexed token, address guy, uint256 wad)
Assemble
event Assemble(uint256 supply_amount, uint256 borrow_amount)
Borrow
event Borrow(uint256 borrow_amount)
ExecutorUpdated
event ExecutorUpdated(address indexed executor, bool enabled)
FullDisassemble
event FullDisassemble(uint256 supply_amount, uint256 borrow_amount)
LogWithdraw
event LogWithdraw(address indexed _to, address indexed _asset_address, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Repay
event Repay(uint256 borrow_amount)
Supply
event Supply(uint256 supply_amount)
UnwindAndRepay
event UnwindAndRepay(uint256 borrow_amount)
UnwindAndSupply
event UnwindAndSupply(uint256 supply_amount)
UnwindRepayAndWithdraw
event UnwindRepayAndWithdraw()
UpdateLoanManager
event UpdateLoanManager(address old_loan_manager, address new_loan_manager)
UpdateSupervisedConfig
event UpdateSupervisedConfig((uint256 targetHealthFactor, bool yieldStrategyUseNativeAssets) old_config, (uint256 targetHealthFactor, bool yieldStrategyUseNativeAssets) new_config)
UpdateYieldStrategy
event UpdateYieldStrategy(address old_yield_strategy, address new_yield_strategy)
WithdrawSupply
event WithdrawSupply(uint256 supply_amount)
WithdrawSupplyAndAssemble
event WithdrawSupplyAndAssemble(uint256 supply_amount)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162004d1d38038062004d1d8339810160408190526200003491620003cd565b85858585858585858133806200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000103565b5060005b8151811015620000c057620000ab828281518110620000975762000097620004f3565b60200260200101516200012160201b60201c565b80620000b78162000509565b91505062000074565b50506001600160a01b031660805250620000db82826200018e565b620000e68462000222565b620000f18362000295565b50505050505050505050505062000531565b600180546001600160a01b03191690556200011e8162000308565b50565b6200012b62000358565b604051600181526001600160a01b038216907f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea29060200160405180910390a26001600160a01b03166000908152600260205260409020805460ff19166001179055565b6200019862000358565b60408051808201825283815282151560208083019182528351600554815260065460ff161515918101919091528251938101939093525115156060830152907f601bd64f1b6034521a7ad828eb0da8578cd3bbe802a4594825a03ba55b98d82b9060800160405180910390a18051600555602001516006805460ff19169115159190911790555050565b6200022c62000358565b600354604080516001600160a01b03928316815291831660208301527ff6de81a7def6ff2d3b03e6036f52c547b9073772cfbcab0b96ef94580b6f73b6910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b6200029f62000358565b600454604080516001600160a01b03928316815291831660208301527fbb8ae84f77396c61f3771bf6ff158e748b500aa24f69c0ab9cf6730c5a731273910160405180910390a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620003875760405163118cdaa760e01b81523360048201526024016200005c565b565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620003b757600080fd5b919050565b80518015158114620003b757600080fd5b60008060008060008060c08789031215620003e757600080fd5b86516001600160401b0380821115620003ff57600080fd5b818901915089601f8301126200041457600080fd5b81516020828211156200042b576200042b62000389565b8160051b604051601f19603f8301168101818110868211171562000453576200045362000389565b60405292835281830193508481018201928d8411156200047257600080fd5b948201945b838610156200049b576200048b866200039f565b8552948201949382019362000477565b9a50620004ac90508b82016200039f565b985050505050620004c0604088016200039f565b9350620004d0606088016200039f565b925060808701519150620004e760a08801620003bc565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b6000600182016200052a57634e487b7160e01b600052601160045260246000fd5b5060010190565b6080516147a66200057760003960008181610719015281816110d70152818161158e01528181613342015281816133cf0152818161349301526137a101526147a66000f3fe60806040526004361061036f5760003560e01c8063b61d27f6116101c6578063d80f8d85116100f7578063e68b775711610095578063f2fde38b1161006f578063f2fde38b146109dc578063f3fef3a3146109fc578063f7888aec14610a1c578063fa09e63014610a3c57600080fd5b8063e68b775714610962578063ee9af25d14610982578063f28121351461099757600080fd5b8063debf5ecc116100d1578063debf5ecc146108e4578063e019cbe914610904578063e042386c14610924578063e30c39781461094457600080fd5b8063d80f8d8514610894578063d897fe3a146108af578063da3e3397146108c457600080fd5b8063c5ebeaec11610164578063cf7b99c41161013e578063cf7b99c41461081f578063d0d433271461083f578063d65ba6f31461085f578063d7d0309c1461087457600080fd5b8063c5ebeaec146107ff578063c952704114610581578063cefc6eb71461058157600080fd5b8063b82ceb45116101a0578063b82ceb4514610783578063bac8683a14610581578063c3f909d414610798578063c4e2c1e6146107df57600080fd5b8063b61d27f61461073b578063b64906d41461074e578063b6703fcd1461076357600080fd5b806343b8f0e4116102a057806379ba50971161023e5780639504ad6d116102185780639504ad6d146106875780639ac2a011146106a7578063a791d6ea146106e7578063b381cf401461070757600080fd5b806379ba5097146106205780638da5cb5b146106355780639169d8331461066757600080fd5b80635f9a21921161027a5780635f9a2192146105a157806361124612146105cb57806369276319146105eb578063715018a61461060b57600080fd5b806343b8f0e41461054157806352fd5ab8146105615780635b3319571461058157600080fd5b80633186a8f81161030d57806335403023116102e757806335403023146104bf578063371fd8e6146104df578063380ede2d146104ff5780633c965dbb1461052c57600080fd5b80633186a8f81461045c5780633419ba231461047f57806334b10a6d1461049f57600080fd5b806320118aad1161034957806320118aad146103e75780632478842914610407578063263a9919146104275780632b76a3561461043c57600080fd5b806306f285011461037b578063077d97d7146103b25780631f5a0bbe146103c757600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004613df8565b610a5c565b6040516103a9929190613e7a565b60405180910390f35b6103c56103c0366004613ee1565b610b4d565b005b3480156103d357600080fd5b506103c56103e2366004613f90565b610cbe565b3480156103f357600080fd5b506103c5610402366004613fbb565b610d29565b34801561041357600080fd5b506103c5610422366004613f90565b610d9d565b34801561043357600080fd5b506103c5610e05565b34801561044857600080fd5b506103c5610457366004613feb565b610ea0565b34801561046857600080fd5b50610471610f32565b6040519081526020016103a9565b34801561048b57600080fd5b506103c561049a36600461400d565b611056565b3480156104ab57600080fd5b506103c56104ba36600461403b565b61106e565b3480156104cb57600080fd5b506103c56104da36600461403b565b61113f565b3480156104eb57600080fd5b506103c56104fa36600461403b565b6111d2565b34801561050b57600080fd5b5061051f61051a366004613df8565b61125e565b6040516103a99190614054565b34801561053857600080fd5b506104716112c6565b34801561054d57600080fd5b506103c561055c366004614067565b611329565b34801561056d57600080fd5b5061047161057c366004614093565b611397565b34801561058d57600080fd5b506103c561059c36600461403b565b610e05565b3480156105ad57600080fd5b506105b6611401565b604080519283526020830191909152016103a9565b3480156105d757600080fd5b5061051f6105e6366004613df8565b61141c565b3480156105f757600080fd5b5061051f6106063660046140bf565b61147b565b34801561061757600080fd5b506103c56114e1565b34801561062c57600080fd5b506103c56114f5565b34801561064157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a9565b34801561067357600080fd5b506103c561068236600461403b565b611539565b34801561069357600080fd5b506103c56106a236600461403b565b611603565b3480156106b357600080fd5b506106d76106c2366004613f90565b60026020526000908152604090205460ff1681565b60405190151581526020016103a9565b3480156106f357600080fd5b506103c5610702366004614067565b61165f565b34801561071357600080fd5b5061064f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c56107493660046140fc565b6116cc565b34801561075a57600080fd5b50610471611759565b34801561076f57600080fd5b506103c561077e36600461400d565b611874565b34801561078f57600080fd5b50610471611899565b3480156107a457600080fd5b5060408051808201825260008082526020918201528151808301909252600554825260065460ff161515908201526040516103a99190614185565b3480156107eb57600080fd5b506103c56107fa36600461419e565b611984565b34801561080b57600080fd5b506103c561081a36600461403b565b611997565b34801561082b57600080fd5b5061047161083a366004613feb565b611a23565b34801561084b57600080fd5b5061051f61085a366004613df8565b611a82565b34801561086b57600080fd5b50610471611ae1565b34801561088057600080fd5b506103c561088f366004614067565b611bcc565b3480156108a057600080fd5b506103c561059c366004613feb565b3480156108bb57600080fd5b506105b6611c43565b3480156108d057600080fd5b506103c56108df3660046141e0565b611c56565b3480156108f057600080fd5b506103c56108ff366004614067565b611c69565b34801561091057600080fd5b5061051f61091f366004614221565b611ce1565b34801561093057600080fd5b506103c561093f366004613f90565b611d41565b34801561095057600080fd5b506001546001600160a01b031661064f565b34801561096e57600080fd5b506103c561097d366004613f90565b611db2565b34801561098e57600080fd5b50610471611e23565b3480156109a357600080fd5b506109ac611e91565b6040805182516001600160a01b0390811682526020808501519091169082015291810151908201526060016103a9565b3480156109e857600080fd5b506103c56109f7366004613f90565b611f17565b348015610a0857600080fd5b506103c5610a17366004614067565b611f88565b348015610a2857600080fd5b50610471610a3736600461400d565b611f9b565b348015610a4857600080fd5b506103c5610a57366004613f90565b612009565b6060600033610a736000546001600160a01b031690565b6001600160a01b03161480610a9757503360009081526002602052604090205460ff165b610abc5760405162461bcd60e51b8152600401610ab390614271565b60405180910390fd5b610b418484600360009054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3891906142b7565b60200151612029565b915091505b9250929050565b610b55612070565b8483148015610b6357508481145b610baf5760405162461bcd60e51b815260206004820152601960248201527f417267756d656e7473206c656e677468206d69736d61746368000000000000006044820152606401610ab3565b60005b85811015610cb557600080888884818110610bcf57610bcf614322565b9050602002016020810190610be49190613f90565b6001600160a01b0316878785818110610bff57610bff614322565b90506020020135868686818110610c1857610c18614322565b9050602002810190610c2a9190614338565b604051610c3892919061437f565b60006040518083038185875af1925050503d8060008114610c75576040519150601f19603f3d011682016040523d82523d6000602084013e610c7a565b606091505b5091509150818190610c9f5760405162461bcd60e51b8152600401610ab3919061438f565b5050508080610cad906143f3565b915050610bb2565b50505050505050565b610cc6612070565b604051600181526001600160a01b038216907f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea29060200160405180910390a26001600160a01b03166000908152600260205260409020805460ff19166001179055565b610d31612070565b604080518082018252838152821515602082015290517f601bd64f1b6034521a7ad828eb0da8578cd3bbe802a4594825a03ba55b98d82b90610d7790600590849061440c565b60405180910390a18051600555602001516006805460ff19169115159190911790555050565b610da5612070565b604051600081526001600160a01b038216907f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea29060200160405180910390a26001600160a01b03166000908152600260205260409020805460ff19169055565b33610e186000546001600160a01b031690565b6001600160a01b03161480610e3c57503360009081526002602052604090205460ff165b610e585760405162461bcd60e51b8152600401610ab390614271565b60405162461bcd60e51b815260206004820152601760248201527f4d697373696e67205f6d696e5f7969656c645f6f7574730000000000000000006044820152606401610ab3565b33610eb36000546001600160a01b031690565b6001600160a01b03161480610ed757503360009081526002602052604090205460ff165b610ef35760405162461bcd60e51b8152600401610ab390614271565b60405162461bcd60e51b8152602060048201526014602482015273135a5cdcda5b99c817db5a5b97db1c1d17dbdd5d60621b6044820152606401610ab3565b6005546003546040805163a5f352b760e01b815290516000939284926001600160a01b039091169163a5f352b7916004808201926020929091908290030181865afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa9919061443c565b9050818111610fbb5760009250505090565b6000610fc68361209d565b90506000600360009054906101000a90046001600160a01b03166001600160a01b031663ee9af25d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611041919061443c565b905061104d8183614455565b94505050505090565b61105e612070565b61106a828260006123bf565b5050565b336110816000546001600160a01b031690565b6001600160a01b031614806110a557503360009081526002602052604090205460ff165b6110c15760405162461bcd60e51b8152600401610ab390614271565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015b600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b5050505050565b336111526000546001600160a01b031690565b6001600160a01b0316148061117657503360009081526002602052604090205460ff165b6111925760405162461bcd60e51b8152600401610ab390614271565b61119b8161249e565b6040518181527f1862f918d5600ec0980589e8cc806b3c79b1e762fcbf44cc2947ba12499207eb906020015b60405180910390a150565b336111e56000546001600160a01b031690565b6001600160a01b0316148061120957503360009081526002602052604090205460ff165b6112255760405162461bcd60e51b8152600401610ab390614271565b61122e81612545565b6040518181527fa6ffc78a660e4971a47a0f916a0abae483804e6f42c9292ed06aa64f8fe46230906020016111c7565b6060336112736000546001600160a01b031690565b6001600160a01b0316148061129757503360009081526002602052604090205460ff165b6112b35760405162461bcd60e51b8152600401610ab390614271565b6112bd83836126a4565b90505b92915050565b6000336112db6000546001600160a01b031690565b6001600160a01b031614806112ff57503360009081526002602052604090205460ff165b61131b5760405162461bcd60e51b8152600401610ab390614271565b6113236126ed565b90505b90565b3361133c6000546001600160a01b031690565b6001600160a01b0316148061136057503360009081526002602052604090205460ff165b61137c5760405162461bcd60e51b8152600401610ab390614271565b60035461106a906001600160a01b0384811691163084612713565b6000336113ac6000546001600160a01b031690565b6001600160a01b031614806113d057503360009081526002602052604090205460ff165b6113ec5760405162461bcd60e51b8152600401610ab390614271565b6113f7848484612780565b90505b9392505050565b60008061140c611759565b611414611ae1565b915091509091565b6060336114316000546001600160a01b031690565b6001600160a01b0316148061145557503360009081526002602052604090205460ff165b6114715760405162461bcd60e51b8152600401610ab390614271565b6112bd8383612997565b6060336114906000546001600160a01b031690565b6001600160a01b031614806114b457503360009081526002602052604090205460ff165b6114d05760405162461bcd60e51b8152600401610ab390614271565b6114d9826129ca565b90505b919050565b6114e9612070565b6114f36000612b06565b565b60015433906001600160a01b0316811461152d5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610ab3565b61153681612b06565b50565b3361154c6000546001600160a01b031690565b6001600160a01b0316148061157057503360009081526002602052604090205460ff165b61158c5760405162461bcd60e51b8152600401610ab390614271565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115e757600080fd5b505af11580156115fb573d6000803e3d6000fd5b505050505050565b336116166000546001600160a01b031690565b6001600160a01b0316148061163a57503360009081526002602052604090205460ff165b6116565760405162461bcd60e51b8152600401610ab390614271565b61153681612b1f565b336116726000546001600160a01b031690565b6001600160a01b0316148061169657503360009081526002602052604090205460ff165b6116b25760405162461bcd60e51b8152600401610ab390614271565b60035461106a906001600160a01b03848116911683612c2e565b6116d4612070565b600080856001600160a01b03168585856040516116f292919061437f565b60006040518083038185875af1925050503d806000811461172f576040519150601f19603f3d011682016040523d82523d6000602084013e611734565b606091505b5091509150818190610cb55760405162461bcd60e51b8152600401610ab3919061438f565b6005546003546040805163a5f352b760e01b815290516000939284926001600160a01b039091169163a5f352b7916004808201926020929091908290030181865afa1580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d0919061443c565b90508181116117e25760009250505090565b60006117ed83612c5f565b90506000600360009054906101000a90046001600160a01b03166001600160a01b0316636c9c2faf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611868919061443c565b905061104d8282614455565b61187c612070565b600061188783612f68565b9050611894838284612f8e565b505050565b6005546003546040805163a5f352b760e01b815290516000939284926001600160a01b039091169163a5f352b7916004808201926020929091908290030181865afa1580156118ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611910919061443c565b90508181106119225760009250505090565b600061192d8361209d565b90506000600360009054906101000a90046001600160a01b03166001600160a01b031663ee9af25d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611844573d6000803e3d6000fd5b61198c612070565b611894838383612f8e565b336119aa6000546001600160a01b031690565b6001600160a01b031614806119ce57503360009081526002602052604090205460ff165b6119ea5760405162461bcd60e51b8152600401610ab390614271565b6119f381613146565b6040518181527fb848ae6b1253b6cb77e81464128ce8bd94d3d524fea54e801e0da869784dca33906020016111c7565b600033611a386000546001600160a01b031690565b6001600160a01b03161480611a5c57503360009081526002602052604090205460ff165b611a785760405162461bcd60e51b8152600401610ab390614271565b6112bd8383613228565b606033611a976000546001600160a01b031690565b6001600160a01b03161480611abb57503360009081526002602052604090205460ff165b611ad75760405162461bcd60e51b8152600401610ab390614271565b6112bd838361325b565b6005546003546040805163a5f352b760e01b815290516000939284926001600160a01b039091169163a5f352b7916004808201926020929091908290030181865afa158015611b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b58919061443c565b9050818110611b6a5760009250505090565b6000611b7583612c5f565b90506000600360009054906101000a90046001600160a01b03166001600160a01b0316636c9c2faf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d6000803e3d6000fd5b33611bdf6000546001600160a01b031690565b6001600160a01b03161480611c0357503360009081526002602052604090205460ff165b611c1f5760405162461bcd60e51b8152600401610ab390614271565b600454611c39906001600160a01b03848116911683612c2e565b61106a8282613333565b600080611c4e610f32565b611414611899565b611c5e612070565b6118948383836123bf565b33611c7c6000546001600160a01b031690565b6001600160a01b03161480611ca057503360009081526002602052604090205460ff165b611cbc5760405162461bcd60e51b8152600401610ab390614271565b611cc682826133c0565b60045461106a906001600160a01b0384811691163084612713565b606033611cf66000546001600160a01b031690565b6001600160a01b03161480611d1a57503360009081526002602052604090205460ff165b611d365760405162461bcd60e51b8152600401610ab390614271565b6113f7848484613437565b611d49612070565b600354604080516001600160a01b03928316815291831660208301527ff6de81a7def6ff2d3b03e6036f52c547b9073772cfbcab0b96ef94580b6f73b6910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b611dba612070565b600454604080516001600160a01b03928316815291831660208301527fbb8ae84f77396c61f3771bf6ff158e748b500aa24f69c0ab9cf6730c5a731273910160405180910390a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546040805163ee9af25d60e01b815290516000926001600160a01b03169163ee9af25d9160048083019260209291908290030181865afa158015611e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611323919061443c565b60408051606080820183526000808352602083018190528284015260035483516330fe427560e21b8152935192936001600160a01b039091169263c3f909d4926004808401939192918290030181865afa158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132391906142b7565b611f1f612070565b600180546001600160a01b0383166001600160a01b03199091168117909155611f506000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611f90612070565b61106a828233612f8e565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd919061443c565b612011612070565b600061201c82612f68565b905061106a828233612f8e565b606060008061203784613481565b905061204386866134f5565b9250600061205085613481565b905061205c8282614455565b925061206661356f565b5050935093915050565b6000546001600160a01b031633146114f35760405163118cdaa760e01b8152336004820152602401610ab3565b600080600360009054906101000a90046001600160a01b03166001600160a01b0316636c9c2faf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612117919061443c565b90508060000361212a5750600092915050565b600354604080516330fe427560e21b815290516000926001600160a01b03169163c3f909d49160048083019260609291908290030181865afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219891906142b7565b9050600081600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122029190614468565b61220d90600a61456f565b9050600082602001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122779190614468565b61228290600a61456f565b6003548451604051631ee1b90b60e21b81526001600160a01b039182166004820152929350600092911690637b86e42c90602401602060405180830381865afa1580156122d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f7919061443c565b6003546040805163bd9a548b60e01b8152815193945060009384936001600160a01b03169263bd9a548b92600480820193918290030181865afa158015612342573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612366919061457e565b9092509050600061237783896145a2565b9050600061238585836145a2565b90508a61239284896145a2565b61239c91906145a2565b6123a687836145a2565b6123b091906145b9565b9b9a5050505050505050505050565b80156123de576123d96001600160a01b03841683836135d8565b612453565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af115801561242d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245191906145db565b505b604080516001600160a01b038481168252602082018490528516917feded619173dbb378903f97d44ecec898a1c4876f445ae551e063113aef58b471910160405180910390a2505050565b600354604080516330fe427560e21b81529051612514926001600160a01b03169163c3f909d49160048083019260609291908290030181865afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d91906142b7565b518261165f565b600354604051633540302360e01b8152600481018390526001600160a01b039091169063354030239060240161110a565b600354604080516330fe427560e21b815290516000926001600160a01b03169163c3f909d49160048083019260609291908290030181865afa15801561258f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b391906142b7565b6020015190506000600360009054906101000a90046001600160a01b03166001600160a01b031663ee9af25d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612632919061443c565b905080831115612640578092505b61264a828461165f565b600354604051631b8fec7360e11b8152600481018590526001600160a01b039091169063371fd8e690602401600060405180830381600087803b15801561269057600080fd5b505af1158015610cb5573d6000803e3d6000fd5b606060006126b2848461325b565b90506126bc6126ed565b506040517fe8787cca738efc7ab80ec15b44031f5f90e9e089d0fc90c1bdf553a60dce550990600090a19392505050565b6000806126f8611759565b90508060000361270a57600091505090565b6114dc81612b1f565b6040516001600160a01b03848116602483015283811660448301526064820183905261277a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613664565b50505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b8152600401606060405180830381865afa1580156127d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fa91906142b7565b905060006128066136d5565b90506000805b82518110156128665783602001516001600160a01b031683828151811061283557612835614322565b60200260200101516001600160a01b0316036128545760019150612866565b8061285e816143f3565b91505061280c565b50806128cd5760405162461bcd60e51b815260206004820152603060248201527f436f6e6669677572656420626f72726f7720746f6b656e206d7573742062652060448201526f7573656420696e20737472617465677960801b6064820152608401610ab3565b86156128dc576128dc8761249e565b85156128eb576128eb86613146565b60005b82518110156129495761293783828151811061290c5761290c614322565b602002602001015161088f85848151811061292957612929614322565b602002602001015130611f9b565b80612941816143f3565b9150506128ee565b5060408051888152602081018890527f928e86394a65ffcbb1a1f7330d2968e88d0ba215f3dfc5ea62125552067657d5910160405180910390a161298c85613809565b979650505050505050565b606060405162461bcd60e51b8152600401610ab39060208082526004908201526304e4f4f560e41b604082015260600190565b60606129d58261387b565b90507f5640f49f00c8bd81403744e20c54a689d610cce204d6f415546a4e7a73f715e7600360009054906101000a90046001600160a01b03166001600160a01b0316636c9c2faf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6f919061443c565b600360009054906101000a90046001600160a01b03166001600160a01b031663ee9af25d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae6919061443c565b6040805192835260208301919091520160405180910390a16114dc6138fd565b600180546001600160a01b031916905561153681613c3c565b600354604051639504ad6d60e01b8152600481018390526001600160a01b0390911690639504ad6d90602401600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612bfe600360009054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b8152600401606060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf791906142b7565b5182611329565b6040518181527f28f1c27f506f0a8d8cf21ad670fb93d0a296e8f069f12f0a2a6331ed81039f86906020016111c7565b6040516001600160a01b0383811660248301526044820183905261189491859182169063a9059cbb90606401612748565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663ee9af25d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd9919061443c565b905080600003612cec5750600092915050565b600354604080516330fe427560e21b815290516000926001600160a01b03169163c3f909d49160048083019260609291908290030181865afa158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a91906142b7565b9050600081600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc49190614468565b612dcf90600a61456f565b9050600082602001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e399190614468565b612e4490600a61456f565b6003548451604051631ee1b90b60e21b81526001600160a01b039182166004820152929350600092911690637b86e42c90602401602060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb9919061443c565b6003546040805163bd9a548b60e01b8152815193945060009384936001600160a01b03169263bd9a548b92600480820193918290030181865afa158015612f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f28919061457e565b90925090506000612f3982896145a2565b90506000612f478b836145a2565b905084612f5485886145a2565b612f5e91906145a2565b6123a688836145a2565b60006001600160a01b03821615612f8757612f8282613c8c565b6114d9565b4792915050565b6001600160a01b038116612fd65760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610ab3565b6000612fe184612f68565b9050828110156130285760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610ab3565b6001600160a01b0384166130df576000826001600160a01b03168460405160006040518083038185875af1925050503d8060008114613083576040519150601f19603f3d011682016040523d82523d6000602084013e613088565b606091505b50509050806130d95760405162461bcd60e51b815260206004820152601760248201527f4e6174697665207472616e73666572206661696c65642e0000000000000000006044820152606401610ab3565b506130f3565b6130f36001600160a01b0385168385612c2e565b836001600160a01b0316826001600160a01b03167f9207361cc2a04b9c7a06691df1eb87c6a63957ae88bf01d0d18c81e3d12720998560405161313891815260200190565b60405180910390a350505050565b60035460405163317afabb60e21b8152600481018390526001600160a01b039091169063c5ebeaec90602401600060405180830381600087803b15801561318c57600080fd5b505af11580156131a0573d6000803e3d6000fd5b50505050611536600360009054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b8152600401606060405180830381865afa1580156131fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321e91906142b7565b6020015182611329565b600060405162461bcd60e51b8152600401610ab39060208082526004908201526304e4f4f560e41b604082015260600190565b60606000600360009054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b8152600401606060405180830381865afa1580156132b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d691906142b7565b6020015190506000806132ea868685612029565b915091506132f781612545565b6040518181527f0bb6e019230e47211b08e219cc7dcfec394e152ecfd86b07dc0b0d4683b449129060200160405180910390a150949350505050565b60065460ff16801561337657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561106a57600480546040516334b10a6d60e01b81529182018390526001600160a01b0316906334b10a6d906024015b600060405180830381600087803b1580156115e757600080fd5b60065460ff16801561340357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561106a5760048054604051639169d83360e01b81529182018390526001600160a01b031690639169d833906024016133a6565b60606000613445858461325b565b905061345084612b1f565b6040517fe8787cca738efc7ab80ec15b44031f5f90e9e089d0fc90c1bdf553a60dce550990600090a1949350505050565b60065460009060ff1680156134c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156134de5750506004546001600160a01b03163190565b6004546114d99083906001600160a01b0316611f9b565b600480546040516207a9a360ea1b81526060926001600160a01b0390921691631ea68c00916135289187918791016145f8565b6000604051808303816000875af1158015613547573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112bd9190810190614611565b60006135796136d5565b905060005b815181101561106a576135c682828151811061359c5761359c614322565b60200260200101516108ff8484815181106135b9576135b9614322565b6020026020010151613481565b806135d0816143f3565b91505061357e565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526136298482613cd3565b61277a576040516001600160a01b0384811660248301526000604483015261365e91869182169063095ea7b390606401612748565b61277a84825b600080602060008451602086016000885af180613687576040513d6000823e3d81fd5b50506000513d9150811561369f5780600114156136ac565b6001600160a01b0384163b155b1561277a57604051635274afe760e01b81526001600160a01b0385166004820152602401610ab3565b6060600460009054906101000a90046001600160a01b03166001600160a01b031663087ed8376040518163ffffffff1660e01b8152600401600060405180830381865afa15801561372a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137529190810190614697565b60065490915060ff16156113265760005b81518110156138055760006001600160a01b031682828151811061378957613789614322565b60200260200101516001600160a01b0316036137f3577f00000000000000000000000000000000000000000000000000000000000000008282815181106137d2576137d2614322565b60200260200101906001600160a01b031690816001600160a01b0316815250505b806137fd816143f3565b915050613763565b5090565b6004805460405163735373d160e11b81529182018390526000916001600160a01b039091169063e6a6e7a2906024016020604051808303816000875af1158015613857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d9919061443c565b600480546040516207a9a360ea1b81526060926001600160a01b0390921691631ea68c00916138b691670de0b6b3a7640000918791016145f8565b6000604051808303816000875af11580156138d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114d99190810190614611565b600354604080516330fe427560e21b815290516000926001600160a01b03169163c3f909d49160048083019260609291908290030181865afa158015613947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396b91906142b7565b905061397561356f565b60208101516139879061070281612f68565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663578b92a66040518163ffffffff1660e01b815260040160c0604051808303816000875af11580156139df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a039190614726565b505050509150915060008183613a199190614455565b9050600360009054906101000a90046001600160a01b03166001600160a01b0316636c9c2faf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a92919061443c565b811015613b6457600360009054906101000a90046001600160a01b03166001600160a01b031663fa3ae6dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ae957600080fd5b505af1158015613afd573d6000803e3d6000fd5b5050600354604051639504ad6d60e01b8152600481018590526001600160a01b039091169250639504ad6d9150602401600060405180830381600087803b158015613b4757600080fd5b505af1158015613b5b573d6000803e3d6000fd5b50505050613bdf565b600360009054906101000a90046001600160a01b03166001600160a01b0316634a96689a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bdd919061443c565b505b8351600354600091613bf9916001600160a01b0316611f9b565b9050613c09856000015182611329565b6020850151600354600091613c26916001600160a01b0316611f9b565b905080156115fb576115fb866020015182611329565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613857573d6000803e3d6000fd5b6000806000806020600086516020880160008a5af192503d91506000519050828015613d1857508115613d095780600114613d18565b6000866001600160a01b03163b115b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d6157613d61613d22565b604052919050565b600067ffffffffffffffff821115613d8357613d83613d22565b5060051b60200190565b600082601f830112613d9e57600080fd5b81356020613db3613dae83613d69565b613d38565b82815260059290921b84018101918181019086841115613dd257600080fd5b8286015b84811015613ded5780358352918301918301613dd6565b509695505050505050565b60008060408385031215613e0b57600080fd5b82359150602083013567ffffffffffffffff811115613e2957600080fd5b613e3585828601613d8d565b9150509250929050565b600081518084526020808501945080840160005b83811015613e6f57815187529582019590820190600101613e53565b509495945050505050565b604081526000613e8d6040830185613e3f565b90508260208301529392505050565b60008083601f840112613eae57600080fd5b50813567ffffffffffffffff811115613ec657600080fd5b6020830191508360208260051b8501011115610b4657600080fd5b60008060008060008060608789031215613efa57600080fd5b863567ffffffffffffffff80821115613f1257600080fd5b613f1e8a838b01613e9c565b90985096506020890135915080821115613f3757600080fd5b613f438a838b01613e9c565b90965094506040890135915080821115613f5c57600080fd5b50613f6989828a01613e9c565b979a9699509497509295939492505050565b6001600160a01b038116811461153657600080fd5b600060208284031215613fa257600080fd5b81356113fa81613f7b565b801515811461153657600080fd5b60008060408385031215613fce57600080fd5b823591506020830135613fe081613fad565b809150509250929050565b60008060408385031215613ffe57600080fd5b50508035926020909101359150565b6000806040838503121561402057600080fd5b823561402b81613f7b565b91506020830135613fe081613f7b565b60006020828403121561404d57600080fd5b5035919050565b6020815260006112bd6020830184613e3f565b6000806040838503121561407a57600080fd5b823561408581613f7b565b946020939093013593505050565b6000806000606084860312156140a857600080fd5b505081359360208301359350604090920135919050565b6000602082840312156140d157600080fd5b813567ffffffffffffffff8111156140e857600080fd5b6140f484828501613d8d565b949350505050565b6000806000806060858703121561411257600080fd5b843561411d81613f7b565b935060208501359250604085013567ffffffffffffffff8082111561414157600080fd5b818701915087601f83011261415557600080fd5b81358181111561416457600080fd5b88602082850101111561417657600080fd5b95989497505060200194505050565b81518152602080830151151590820152604081016112c0565b6000806000606084860312156141b357600080fd5b83356141be81613f7b565b92506020840135915060408401356141d581613f7b565b809150509250925092565b6000806000606084860312156141f557600080fd5b833561420081613f7b565b9250602084013561421081613f7b565b929592945050506040919091013590565b60008060006060848603121561423657600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561425b57600080fd5b61426786828701613d8d565b9150509250925092565b60208082526026908201527f45786563757461626c653a2063616c6c6572206973206e6f742074686520657860408201526532b1baba37b960d11b606082015260800190565b6000606082840312156142c957600080fd5b6040516060810181811067ffffffffffffffff821117156142ec576142ec613d22565b60405282516142fa81613f7b565b8152602083015161430a81613f7b565b60208201526040928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261434f57600080fd5b83018035915067ffffffffffffffff82111561436a57600080fd5b602001915036819003821315610b4657600080fd5b8183823760009101908152919050565b600060208083528351808285015260005b818110156143bc578581018301518582016040015282016143a0565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052601160045260246000fd5b600060018201614405576144056143dd565b5060010190565b82548152600183015460ff1615156020820152608081016113fa6040830184805182526020908101511515910152565b60006020828403121561444e57600080fd5b5051919050565b818103818111156112c0576112c06143dd565b60006020828403121561447a57600080fd5b815160ff811681146113fa57600080fd5b600181815b808511156144c65781600019048211156144ac576144ac6143dd565b808516156144b957918102915b93841c9390800290614490565b509250929050565b6000826144dd575060016112c0565b816144ea575060006112c0565b8160018114614500576002811461450a57614526565b60019150506112c0565b60ff84111561451b5761451b6143dd565b50506001821b6112c0565b5060208310610133831016604e8410600b8410161715614549575081810a6112c0565b614553838361448b565b8060001904821115614567576145676143dd565b029392505050565b60006112bd60ff8416836144ce565b6000806040838503121561459157600080fd5b505080516020909101519092909150565b80820281158282048414176112c0576112c06143dd565b6000826145d657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156145ed57600080fd5b81516113fa81613fad565b8281526040602082015260006113f76040830184613e3f565b6000602080838503121561462457600080fd5b825167ffffffffffffffff81111561463b57600080fd5b8301601f8101851361464c57600080fd5b805161465a613dae82613d69565b81815260059190911b8201830190838101908783111561467957600080fd5b928401925b8284101561298c5783518252928401929084019061467e565b600060208083850312156146aa57600080fd5b825167ffffffffffffffff8111156146c157600080fd5b8301601f810185136146d257600080fd5b80516146e0613dae82613d69565b81815260059190911b820183019083810190878311156146ff57600080fd5b928401925b8284101561298c57835161471781613f7b565b82529284019290840190614704565b60008060008060008060c0878903121561473f57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a08701519050929550929550929556fea26469706673582212209183078827f3ca38b8f94e2f73edc65769a435f39058ce8c2a93caf249f005aa64736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000d9306ad7d013ac7134dbd8bd497d3fecedc5411a00000000000000000000000027c26c6835cfba90b23f578f6129d653335fe22d00000000000000000000000000000000000000000000000011355d6e217c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c50e8d02008d59a7f563b008ccc73327d893443a