0 txs
3 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
canSave
viewfunction canSave(address vault, bytes32 marketId, uint256 min_amount) view returns (bool)
canSaveMulti
viewfunction canSaveMulti(tuple[] vaultMarketAmounts) view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getPosition
viewfunction getPosition(address user, bytes32 id) view returns (uint256 suppliedAssets, uint256 borrowedAssets)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isOperator
viewfunction isOperator(address operator) view returns (bool)
marketLiquidity
viewfunction marketLiquidity(bytes32 marketId) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address vault, bytes32 marketId) view returns (uint256)
maxWithdrawMulti
viewfunction maxWithdrawMulti(tuple[] vaultMarkets) view returns (uint256[])
morpho
viewfunction morpho() view returns (address)
morphoHelper
viewfunction morphoHelper() view returns (address)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
savable
viewfunction savable(tuple[] vaultMarketAmounts) view returns (tuple[])
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
vaultPosition
viewfunction vaultPosition(address vault, bytes32 marketId) view returns (uint256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address initialAdmin, address _morphoHelper)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
save
nonpayablefunction save(address vault, bytes32 marketId, bytes32 idleMarketId) returns (uint256)
saveMulti
nonpayablefunction saveMulti(tuple[] vaultMarketIdles) returns (uint256[])
setMorphoHelper
nonpayablefunction setMorphoHelper(address _morphoHelper)
setOperator
nonpayablefunction setOperator(address operator, bool enabled)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
MarketRescued
event MarketRescued(address indexed vault, bytes32 indexed marketId, bytes32 indexed idleMarketId, uint256 liquidityMoved)
MorphoHelperSet
event MorphoHelperSet(address indexed morphoHelper)
OperatorSet
event OperatorSet(address indexed operator, bool enabled)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InsufficientLiquidity
error InsufficientLiquidity()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
Unauthorized
error Unauthorized()
UnsupportedChain
error UnsupportedChain()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60c0604052346200008c57620000146200013a565b6200001e62000092565b61452d6200046e82396080518181816116fe0152818161176a01526117ac015260a051818181610f9301528181612381015281816123e70152818161241101528181613540015281816136120152818161367901528181614038015281816140c00152614130015261452d90f35b62000098565b60405190565b5f80fd5b90565b90565b90565b620000be620000b8620000c4926200009f565b620000a2565b6200009c565b90565b90565b620000e3620000dd620000e992620000c7565b620000a2565b6200009c565b90565b5f0190565b60018060a01b031690565b620001156200010f6200011b92620000f1565b620000a2565b620000f1565b90565b6200012990620000fc565b90565b62000137906200011e565b90565b6200014462000203565b466200015c620001556001620000a5565b916200009c565b145f1462000193576200018373bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb6200012c565b60a0525b6200019162000373565b565b46620001ac620001a5612105620000ca565b916200009c565b145f14620001dc57620001d373bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb6200012c565b60a05262000187565b620001e662000092565b63d21eab3760e01b815280620001ff60048201620000ec565b0390fd5b6200020d6200020f565b565b620002196200021b565b565b6200022562000227565b565b6200023162000233565b565b6200023d6200025b565b565b6200024a90620000fc565b90565b62000258906200023f565b90565b62000266306200024d565b608052565b60401c90565b60ff1690565b620002866200028c916200026b565b62000271565b90565b6200029b905462000277565b90565b5f1c90565b60018060401b031690565b620002bd620002c3916200029e565b620002a3565b90565b620002d29054620002ae565b90565b60018060401b031690565b5f1b90565b90620002f860018060401b0391620002e0565b9181191691161790565b6200031b620003156200032192620002d5565b620000a2565b620002d5565b90565b90565b90620003416200033b620003499262000302565b62000324565b8254620002e5565b9055565b6200035890620002d5565b9052565b919062000371905f602085019401906200034d565b565b6200037d62000449565b6200038a5f82016200028f565b62000422576200039c5f8201620002c6565b620003b8620003b160018060401b03620002d5565b91620002d5565b03620003c2575b50565b620003d7905f60018060401b03910162000327565b60018060401b03620004187fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916200040e62000092565b918291826200035c565b0390a15f620003bf565b6200042c62000092565b63f92ee8a960e01b8152806200044560048201620000ec565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610013575b6111f0565b61001d5f356101db565b8062aac56d146101d6578063011d2eb3146101d157806301ffc9a7146101cc5780630fa8f516146101c7578063248a9ca3146101c2578063297f7d44146101bd5780632f2ff15d146101b857806336568abe146101b3578063485cc955146101ae5780634f1ef286146101a957806351842db1146101a457806352d1902d1461019f578063558a72971461019a5780636315ccb1146101955780636d70f7ae1461019057806375b238fc1461018b57806379b918c21461018657806383c51f4f1461018157806391d148541461017c578063a217fddf14610177578063ad3cb1cc14610172578063d074ee7a1461016d578063d547741f14610168578063d8fbc83314610163578063dd1745831461015e578063ea26978a14610159578063ece81fb4146101545763f5b541a60361000e576111bb565b611156565b6110ab565b611018565b610fe3565b610f5d565b610f27565b610d95565b610c4c565b610c0b565b610bd5565b610b9f565b610b3d565b610ac2565b610a8d565b610a3b565b6109b6565b610980565b6108d8565b610778565b610717565b6106e3565b610680565b61052b565b610491565b6103d6565b61032d565b610250565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060a01b031690565b610207906101f3565b90565b610213816101fe565b0361021a57565b5f80fd5b9050359061022b8261020a565b565b9060208282031261024657610243915f0161021e565b90565b6101eb565b5f0190565b3461027e5761026861026336600461022d565b6121a3565b6102706101e1565b8061027a8161024b565b0390f35b6101e7565b5f91031261028d57565b6101eb565b1c90565b60018060a01b031690565b6102b19060086102b69302610292565b610296565b90565b906102c491546102a1565b90565b6102d15f806102b9565b90565b90565b6102eb6102e66102f0926101f3565b6102d4565b6101f3565b90565b6102fc906102d7565b90565b610308906102f3565b90565b610314906102ff565b9052565b919061032b905f6020850194019061030b565b565b3461035d5761033d366004610283565b6103596103486102c7565b6103506101e1565b91829182610318565b0390f35b6101e7565b63ffffffff60e01b1690565b61037781610362565b0361037e57565b5f80fd5b9050359061038f8261036e565b565b906020828203126103aa576103a7915f01610382565b90565b6101eb565b151590565b6103bd906103af565b9052565b91906103d4905f602085019401906103b4565b565b34610406576104026103f16103ec366004610391565b6111f8565b6103f96101e1565b918291826103c1565b0390f35b6101e7565b90565b6104178161040b565b0361041e57565b5f80fd5b9050359061042f8261040e565b565b9190604083820312610459578061044d610456925f860161021e565b93602001610422565b90565b6101eb565b90565b61046a9061045e565b9052565b91602061048f92949361048860408201965f830190610461565b0190610461565b565b346104c3576104aa6104a4366004610431565b90612363565b906104bf6104b66101e1565b9283928361046e565b0390f35b6101e7565b6104d18161040b565b036104d857565b5f80fd5b905035906104e9826104c8565b565b9060208282031261050457610501915f016104dc565b90565b6101eb565b6105129061040b565b9052565b9190610529905f60208501940190610509565b565b3461055b576105576105466105413660046104eb565b61131a565b61054e6101e1565b91829182610516565b0390f35b6101e7565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105a65781359167ffffffffffffffff83116105a157602001926040830284011161059c57565b610568565b610564565b610560565b906020828203126105dc575f82013567ffffffffffffffff81116105d7576105d3920161056c565b9091565b6101ef565b6101eb565b5190565b60209181520190565b60200190565b6105fd9061045e565b9052565b9061060e816020936105f4565b0190565b60200190565b9061063561062f610628846105e1565b80936105e5565b926105ee565b905f5b8181106106455750505090565b90919261065e6106586001928651610601565b94610612565b9101919091610638565b61067d9160208201915f818403910152610618565b90565b346106b1576106ad61069c6106963660046105ab565b90613801565b6106a46101e1565b91829182610668565b0390f35b6101e7565b91906040838203126106de57806106d26106db925f86016104dc565b9360200161021e565b90565b6101eb565b34610712576106fc6106f63660046106b6565b9061136e565b6107046101e1565b8061070e8161024b565b0390f35b6101e7565b346107465761073061072a3660046106b6565b90611436565b6107386101e1565b806107428161024b565b0390f35b6101e7565b91906040838203126107735780610767610770925f860161021e565b9360200161021e565b90565b6101eb565b346107a75761079161078b36600461074b565b90612084565b6107996101e1565b806107a38161024b565b0390f35b6101e7565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906107d8906107b0565b810190811067ffffffffffffffff8211176107f257604052565b6107ba565b9061080a6108036101e1565b92836107ce565b565b67ffffffffffffffff811161082a576108266020916107b0565b0190565b6107ba565b90825f939282370152565b9092919261084f61084a8261080c565b6107f7565b9381855260208501908284011161086b576108699261082f565b565b6107ac565b9080601f8301121561088e5781602061088b9335910161083a565b90565b610560565b9190916040818403126108d3576108ac835f830161021e565b92602082013567ffffffffffffffff81116108ce576108cb9201610870565b90565b6101ef565b6101eb565b6108ec6108e6366004610893565b906116d5565b6108f46101e1565b806108fe8161024b565b0390f35b61090b906101fe565b90565b61091781610902565b0361091e57565b5f80fd5b9050359061092f8261090e565b565b90916060828403126109665761096361094c845f8501610922565b9361095a8160208601610422565b93604001610422565b90565b6101eb565b919061097e905f60208501940190610461565b565b346109b1576109ad61099c610996366004610931565b91613d39565b6109a46101e1565b9182918261096b565b0390f35b6101e7565b346109e6576109c6366004610283565b6109e26109d1611699565b6109d96101e1565b91829182610516565b0390f35b6101e7565b6109f4816103af565b036109fb57565b5f80fd5b90503590610a0c826109eb565b565b9190604083820312610a365780610a2a610a33925f860161021e565b936020016109ff565b90565b6101eb565b34610a6a57610a54610a4e366004610a0e565b9061225f565b610a5c6101e1565b80610a668161024b565b0390f35b6101e7565b90602082820312610a8857610a85915f01610422565b90565b6101eb565b34610abd57610ab9610aa8610aa3366004610a6f565b61352c565b610ab06101e1565b9182918261096b565b0390f35b6101e7565b34610af257610aee610add610ad836600461022d565b61226b565b610ae56101e1565b918291826103c1565b0390f35b6101e7565b90565b5f1b90565b610b13610b0e610b1892610af7565b610afa565b61040b565b90565b610b245f610aff565b90565b610b2f610b1b565b90565b610b3a610b27565b90565b34610b6d57610b4d366004610283565b610b69610b58610b32565b610b606101e1565b91829182610516565b0390f35b6101e7565b9190604083820312610b9a5780610b8e610b97925f8601610922565b93602001610422565b90565b6101eb565b34610bd057610bcc610bbb610bb5366004610b72565b906135fe565b610bc36101e1565b9182918261096b565b0390f35b6101e7565b34610c0657610c02610bf1610beb366004610b72565b906136db565b610bf96101e1565b9182918261096b565b0390f35b6101e7565b34610c3c57610c38610c27610c213660046106b6565b9061129c565b610c2f6101e1565b918291826103c1565b0390f35b6101e7565b610c49610b1b565b90565b34610c7c57610c5c366004610283565b610c78610c67610c41565b610c6f6101e1565b91829182610516565b0390f35b6101e7565b67ffffffffffffffff8111610c9f57610c9b6020916107b0565b0190565b6107ba565b90610cb6610cb183610c81565b6107f7565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610cec6005610ca4565b90610cf960208301610cbb565b565b610d03610ce2565b90565b610d0e610cfb565b90565b610d19610d06565b90565b5190565b60209181520190565b5f5b838110610d3b575050905f910152565b806020918301518185015201610d2b565b610d6b610d74602093610d7993610d6281610d1c565b93848093610d20565b95869101610d29565b6107b0565b0190565b610d929160208201915f818403910152610d4c565b90565b34610dc557610da5366004610283565b610dc1610db0610d11565b610db86101e1565b91829182610d7d565b0390f35b6101e7565b909182601f83011215610e045781359167ffffffffffffffff8311610dff576020019260608302840111610dfa57565b610568565b610564565b610560565b90602082820312610e3a575f82013567ffffffffffffffff8111610e3557610e319201610dca565b9091565b6101ef565b6101eb565b5190565b60209181520190565b60200190565b610e5b906102f3565b90565b610e6790610e52565b9052565b610e749061040b565b90565b610e8090610e6b565b9052565b90602080610ea693610e9c5f8201515f860190610e5e565b0151910190610e77565b565b90610eb581604093610e84565b0190565b60200190565b90610edc610ed6610ecf84610e3f565b8093610e43565b92610e4c565b905f5b818110610eec5750505090565b909192610f05610eff6001928651610ea8565b94610eb9565b9101919091610edf565b610f249160208201915f818403910152610ebf565b90565b34610f5857610f54610f43610f3d366004610e09565b90613ae9565b610f4b6101e1565b91829182610f0f565b0390f35b6101e7565b34610f8c57610f76610f703660046106b6565b9061142a565b610f7e6101e1565b80610f888161024b565b0390f35b6101e7565b7f000000000000000000000000000000000000000000000000000000000000000090565b610fbe906102f3565b90565b610fca90610fb5565b9052565b9190610fe1905f60208501940190610fc1565b565b3461101357610ff3366004610283565b61100f610ffe610f91565b6110066101e1565b91829182610fce565b0390f35b6101e7565b346110495761104561103461102e366004610e09565b90613933565b61103c6101e1565b918291826103c1565b0390f35b6101e7565b6110578161045e565b0361105e57565b5f80fd5b9050359061106f8261104e565b565b90916060828403126110a6576110a361108c845f8501610922565b9361109a8160208601610422565b93604001611062565b90565b6101eb565b346110dc576110d86110c76110c1366004611071565b916138aa565b6110cf6101e1565b918291826103c1565b0390f35b6101e7565b909182601f8301121561111b5781359167ffffffffffffffff831161111657602001926060830284011161111157565b610568565b610564565b610560565b90602082820312611151575f82013567ffffffffffffffff811161114c5761114892016110e1565b9091565b6101ef565b6101eb565b346111875761118361117261116c366004611120565b906144e2565b61117a6101e1565b91829182610668565b0390f35b6101e7565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92990565b6111b861118c565b90565b346111eb576111cb366004610283565b6111e76111d66111b0565b6111de6101e1565b91829182610516565b0390f35b6101e7565b5f80fd5b5f90565b6112006111f4565b508061121b611215637965db0b60e01b610362565b91610362565b14908115611228575b5090565b611232915061199d565b5f611224565b9061124290610e6b565b5f5260205260405f2090565b611257906102f3565b90565b906112649061124e565b5f5260205260405f2090565b5f1c90565b60ff1690565b61128761128c91611270565b611275565b90565b611299905461127b565b90565b6112cb915f6112c06112c6936112b06111f4565b50826112ba6112ce565b01611238565b0161125a565b61128f565b90565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b5f90565b90565b61130561130a91611270565b6112f6565b90565b61131790546112f9565b90565b600161133b6113419261132b6112f2565b505f6113356112ce565b01611238565b0161130d565b90565b9061135f9161135a6113558261131a565b61137a565b611361565b565b9061136b916114ca565b50565b9061137891611344565b565b61138c90611386611990565b906113be565b565b611397906101fe565b9052565b9160206113bc9294936113b560408201965f83019061138e565b0190610509565b565b906113d36113cd83839061129c565b156103af565b6113db575050565b6113fc6113e66101e1565b92839263e2517d3f60e01b84526004840161139b565b0390fd5b9061141b916114166114118261131a565b61137a565b61141d565b565b9061142791611581565b50565b9061143491611400565b565b908061145161144b611446611990565b6101fe565b916101fe565b036114625761145f91611581565b50565b61146a6101e1565b63334bd91960e11b8152806114816004820161024b565b0390fd5b9061149160ff91610afa565b9181191691161790565b6114a4906103af565b90565b90565b906114bf6114ba6114c69261149b565b6114a7565b8254611485565b9055565b6114d26111f4565b506114db6112ce565b6114ef6114e983859061129c565b156103af565b5f1461157a57611519906115145f61150c81600194018690611238565b01859061125a565b6114aa565b90611522611990565b9061155f6115596115537f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95610e6b565b9261124e565b9261124e565b926115686101e1565b806115728161024b565b0390a4600190565b5050505f90565b6115896111f4565b506115926112ce565b61159d82849061129c565b5f14611627576115c6906115c15f6115b9818094018690611238565b01859061125a565b6114aa565b906115cf611990565b9061160c6116066116007ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95610e6b565b9261124e565b9261124e565b926116156101e1565b8061161f8161024b565b0390a4600190565b5050505f90565b61163f9061163a61179b565b61168d565b90565b90565b61165961165461165e92611642565b610afa565b61040b565b90565b61168a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611645565b90565b50611696611661565b90565b6116a96116a46112f2565b61162e565b90565b906116be916116b96116ed565b6116c0565b565b906116d3916116ce816121c1565b611880565b565b906116df916116ac565b565b6116ea906102f3565b90565b6116f6306116e1565b6117286117227f00000000000000000000000000000000000000000000000000000000000000006101fe565b916101fe565b148015611759575b61173657565b61173e6101e1565b63703e46dd60e11b8152806117556004820161024b565b0390fd5b506117626119ef565b61179461178e7f00000000000000000000000000000000000000000000000000000000000000006101fe565b916101fe565b1415611730565b6117a4306116e1565b6117d66117d07f00000000000000000000000000000000000000000000000000000000000000006101fe565b916101fe565b036117dd57565b6117e56101e1565b63703e46dd60e11b8152806117fc6004820161024b565b0390fd5b611809906102d7565b90565b61181590611800565b90565b611821906102f3565b90565b5f80fd5b60e01b90565b9050519061183b826104c8565b565b9060208282031261185657611853915f0161182e565b90565b6101eb565b6118636101e1565b3d5f823e3d90fd5b919061187e905f6020850194019061138e565b565b91906118ae60206118986118938661180c565b611818565b6352d1902d906118a66101e1565b938492611828565b825281806118be6004820161024b565b03915afa80915f9261195c575b50155f146119065750509060016118e057505b565b611902906118ec6101e1565b918291634c9c8ce360e01b83526004830161186b565b0390fd5b928361192161191b611916611661565b61040b565b9161040b565b0361193657611931929350611a35565b6118de565b611958846119426101e1565b918291632a87526960e21b835260048301610516565b0390fd5b61197e91925060203d8111611985575b61197681836107ce565b81019061183d565b905f6118cb565b503d61196c565b5f90565b61199861198c565b503390565b6119a56111f4565b506119bf6119b96301ffc9a760e01b610362565b91610362565b1490565b60018060a01b031690565b6119da6119df91611270565b6119c3565b90565b6119ec90546119ce565b90565b6119f761198c565b50611a125f611a0c611a07611661565b611ce1565b016119e2565b90565b5190565b611a2d611a28611a3292610af7565b6102d4565b61045e565b90565b90611a3f82611afc565b81611a6a7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9161124e565b90611a736101e1565b80611a7d8161024b565b0390a2611a8981611a15565b611a9b611a955f611a19565b9161045e565b115f14611aaf57611aab91611bda565b505b565b5050611ab9611b58565b611aad565b90611acf60018060a01b0391610afa565b9181191691161790565b90565b90611af1611aec611af89261124e565b611ad9565b8254611abe565b9055565b803b611b10611b0a5f611a19565b9161045e565b14611b3257611b30905f611b2a611b25611661565b611ce1565b01611adc565b565b611b5490611b3e6101e1565b918291634c9c8ce360e01b83526004830161186b565b0390fd5b34611b6b611b655f611a19565b9161045e565b11611b7257565b611b7a6101e1565b63b398979f60e01b815280611b916004820161024b565b0390fd5b606090565b90611bac611ba78361080c565b6107f7565b918252565b3d5f14611bcc57611bc13d611b9a565b903d5f602084013e5b565b611bd4611b95565b90611bca565b5f80611c0693611be8611b95565b508390602081019051915af490611bfd611bb1565b90919091611c09565b90565b90611c1d90611c16611b95565b50156103af565b5f14611c295750611c94565b611c3282611a15565b611c44611c3e5f611a19565b9161045e565b1480611c79575b611c53575090565b611c7590611c5f6101e1565b918291639996b31560e01b83526004830161186b565b0390fd5b50803b611c8e611c885f611a19565b9161045e565b14611c4b565b611c9d81611a15565b611caf611ca95f611a19565b9161045e565b115f14611cbe57805190602001fd5b611cc66101e1565b630a12f52160e11b815280611cdd6004820161024b565b0390fd5b90565b60401c90565b611cf6611cfb91611ce4565b611275565b90565b611d089054611cea565b90565b67ffffffffffffffff1690565b611d24611d2991611270565b611d0b565b90565b611d369054611d18565b90565b67ffffffffffffffff1690565b611d5a611d55611d5f92610af7565b6102d4565b611d39565b90565b90565b611d79611d74611d7e92611d62565b6102d4565b611d39565b90565b611d8a906102f3565b90565b90611da067ffffffffffffffff91610afa565b9181191691161790565b611dbe611db9611dc392611d39565b6102d4565b611d39565b90565b90565b90611dde611dd9611de592611daa565b611dc6565b8254611d8d565b9055565b60401b90565b90611e0368ff000000000000000091611de9565b9181191691161790565b90611e22611e1d611e299261149b565b6114a7565b8254611def565b9055565b611e3690611d65565b9052565b9190611e4d905f60208501940190611e2d565b565b90611e586120fc565b91611e6d611e675f8501611cfe565b156103af565b91611e795f8501611d2c565b80611e8c611e865f611d46565b91611d39565b1480611fad575b90611ea7611ea16001611d65565b91611d39565b1480611f85575b611eb99091156103af565b9081611f74575b50611f5157611ee991611ede611ed66001611d65565b5f8701611dc9565b83611f3f575b611ffb565b611ef1575b50565b611efe905f809101611e0d565b6001611f367fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611f2d6101e1565b91829182611e3a565b0390a15f611eee565b611f4c60015f8701611e0d565b611ee4565b611f596101e1565b63f92ee8a960e01b815280611f706004820161024b565b0390fd5b611f7f9150156103af565b5f611ec0565b50611eb9611f9230611d81565b3b611fa5611f9f5f611a19565b9161045e565b149050611eae565b5083611e93565b611fbd906102d7565b90565b611fc990611fb4565b90565b611fd590611fb4565b90565b90565b90611ff0611feb611ff792611fcc565b611fd8565b8254611abe565b9055565b61202f9061200761212a565b61200f61209a565b61202161201a610b27565b82906114ca565b5061202a61118c565b6114ca565b5061204261203c82611fc0565b5f611fdb565b61206c7f07edde63e93059d0ed30f33cab9d0b71ff078871ce738072d6580aa818c1112b9161124e565b906120756101e1565b8061207f8161024b565b0390a2565b9061208e91611e4f565b565b6120986120a4565b565b6120a2612090565b565b6120b56120af6120de565b156103af565b6120bb57565b6120c36101e1565b631afcd79f60e31b8152806120da6004820161024b565b0390fd5b6120e66111f4565b506120f95f6120f36120fc565b01611cfe565b90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6121286120a4565b565b612132612120565b565b61214d90612148612143610b27565b61137a565b61214f565b565b61216161215b82611fc0565b5f611fdb565b61218b7f07edde63e93059d0ed30f33cab9d0b71ff078871ce738072d6580aa818c1112b9161124e565b906121946101e1565b8061219e8161024b565b0390a2565b6121ac90612134565b565b506121bf6121ba610b27565b61137a565b565b6121ca906121ae565b565b906121e6916121e16121dc610b27565b61137a565b6121e8565b565b815f14612247576122016121fa61118c565b82906114ca565b505b6122426122307f1a594081ae893ab78e67d9b9e843547318164322d32c65369d78a96172d9dc8f9261124e565b926122396101e1565b918291826103c1565b0390a2565b61225961225261118c565b8290611581565b50612203565b90612269916121cc565b565b612285906122776111f4565b5061228061118c565b61129c565b90565b5f90565b5f80fd5b9050519061229d8261020a565b565b905051906122ac8261104e565b565b919060a08382031261231e57612317906122c860a06107f7565b936122d5825f8301612290565b5f8601526122e68260208301612290565b60208601526122f88260408301612290565b604086015261230a8260608301612290565b606086015260800161229f565b6080830152565b61228c565b9060a08282031261233c57612339915f016122ae565b90565b6101eb565b61234a90610e6b565b9052565b9190612361905f60208501940190612341565b565b9060a06123cc91612372612288565b5061237b612288565b506123a57f0000000000000000000000000000000000000000000000000000000000000000610fb5565b6123c1632c3c91576123b56101e1565b95869485938493611828565b83526004830161234e565b03915afa801561246957612438915f9161243b575b5061240e7f0000000000000000000000000000000000000000000000000000000000000000828591612e99565b927f000000000000000000000000000000000000000000000000000000000000000091909161246e565b91565b61245c915060a03d8111612462575b61245481836107ce565b810190612323565b5f6123e1565b503d61244a565b61185b565b9061249c906124966124aa94612482612288565b5061248c836124b1565b908591909161312c565b92612918565b505091909190919091612551565b90565b5f90565b60a0906124bc6124ad565b502090565b6124d56124d06124da92611d62565b6102d4565b61045e565b90565b6124e760016124c1565b90565b634e487b7160e01b5f52601160045260245ffd5b61250d6125139193929361045e565b9261045e565b820180921161251e57565b6124ea565b90565b61253a61253561253f92612523565b6102d4565b61045e565b90565b61254e620f4240612526565b90565b9161258361257461258994612564612288565b509361256e6124dd565b906124fe565b9161257d612542565b906124fe565b916125f7565b90565b61259b6125a19193929361045e565b9261045e565b916125ad83820261045e565b9281840414901517156125bc57565b6124ea565b634e487b7160e01b5f52601260045260245ffd5b6125e16125e79161045e565b9161045e565b9081156125f2570490565b6125c1565b612613929161260e91612608612288565b5061258c565b6125d5565b90565b6fffffffffffffffffffffffffffffffff1690565b61263481612616565b0361263b57565b5f80fd5b9050519061264c8261262b565b565b919060c0838203126126d0576126c99061266860c06107f7565b93612675825f830161263f565b5f860152612686826020830161263f565b6020860152612698826040830161263f565b60408601526126aa826060830161263f565b60608601526126bc826080830161263f565b608086015260a00161263f565b60a0830152565b61228c565b9060c0828203126126ee576126eb915f0161264e565b90565b6101eb565b6126fd9051612616565b90565b61271461270f61271992612616565b6102d4565b61045e565b90565b61272b6127319193929361045e565b9261045e565b820391821161273c57565b6124ea565b61275561275061275a92610af7565b6102d4565b612616565b90565b61276790516101fe565b90565b61277e61277961278392610af7565b6102d4565b6101f3565b90565b61278f9061276a565b90565b61279b906102d7565b90565b6127a790612792565b90565b6127b3906102f3565b90565b906020828203126127cf576127cc915f0161229f565b90565b6101eb565b6127dd906101fe565b9052565b90608080612839936127f95f8201515f8601906127d4565b61280b602082015160208601906127d4565b61281d604082015160408601906127d4565b61282f606082015160608601906127d4565b01519101906105f4565b565b61284490612616565b9052565b9060a0806128b2936128605f8201515f86019061283b565b6128726020820151602086019061283b565b6128846040820151604086019061283b565b6128966060820151606086019061283b565b6128a86080820151608086019061283b565b015191019061283b565b565b9160a06128d69294936128cf6101608201965f8301906127e1565b0190612848565b565b6128e46128ea91612616565b91612616565b01906fffffffffffffffffffffffffffffffff821161290557565b6124ea565b9061291490612616565b9052565b60c061297b91612926612288565b5061292f612288565b50612938612288565b50612941612288565b5061295461294e856124b1565b91610fb5565b612970635c60e39a6129646101e1565b95869485938493611828565b83526004830161234e565b03915afa908115612c66575f91612c38575b50906129ad426129a76129a2608086016126f3565b612700565b9061271c565b806129c06129ba5f611a19565b9161045e565b141580612c12575b80612be4575b612a2c575b50506129e05f82016126f3565b6129ec602083016126f3565b92612a29612a23612a1d612a17612a116060612a0a60408a016126f3565b98016126f3565b95612700565b96612700565b94612700565b92612700565b90565b6020612a4a612a45612a406060860161275d565b61279e565b6127aa565b638c00bf6b9390612a6d8695612a78612a616101e1565b97889586948594611828565b8452600484016128b4565b03915afa918215612bdf57612ab492612aae915f91612bb1575b5091612aa8612aa3604087016126f3565b612700565b92612cfc565b90612c9e565b612adc612ac082612e4e565b612ad66040850191612ad1836126f3565b6128d8565b9061290a565b612b03612ae882612e4e565b612afd5f850191612af8836126f3565b6128d8565b9061290a565b612b0f60a083016126f3565b612b21612b1b5f612741565b91612616565b03612b2d575b806129d3565b612b8f612b8a612b54612bab93612b4e612b4960a088016126f3565b612700565b90612c9e565b612b7081612b6b612b665f89016126f3565b612700565b61271c565b612b84612b7f602088016126f3565b612700565b91612d6f565b612e4e565b612ba56020840191612ba0836126f3565b6128d8565b9061290a565b5f612b27565b612bd2915060203d8111612bd8575b612bca81836107ce565b8101906127b6565b5f612a92565b503d612bc0565b61185b565b50612bf16060830161275d565b612c0b612c05612c005f612786565b6101fe565b916101fe565b14156129ce565b50612c1f604084016126f3565b612c31612c2b5f612741565b91612616565b14156129c8565b612c59915060c03d8111612c5f575b612c5181836107ce565b8101906126d5565b5f61298d565b503d612c47565b61185b565b90565b612c82612c7d612c8792612c6b565b6102d4565b61045e565b90565b612c9b670de0b6b3a7640000612c6e565b90565b90612cbb91612cab612288565b5090612cb5612c8a565b916125f7565b90565b90565b612cd5612cd0612cda92612cbe565b6102d4565b61045e565b90565b90565b612cf4612cef612cf992612cdd565b6102d4565b61045e565b90565b612d6c91612d1291612d0c612288565b5061258c565b612d67612d3b8283612d356002612d30612d2a612c8a565b91612cc1565b61258c565b916125f7565b612d618184612d5b6003612d56612d50612c8a565b91612ce0565b61258c565b916125f7565b926124fe565b6124fe565b90565b90612da2612d93612da89493612d83612288565b5093612d8d612542565b906124fe565b91612d9c6124dd565b906124fe565b916125f7565b90565b5f90565b5f7f6d61782075696e74313238206578636565646564000000000000000000000000910152565b612de06014610ca4565b90612ded60208301612daf565b565b612df7612dd6565b90565b612e02612def565b90565b15612e0d5750565b612e2e90612e196101e1565b91829162461bcd60e51b835260048301610d7d565b0390fd5b612e46612e41612e4b9261045e565b6102d4565b612616565b90565b612e9690612e5a612dab565b50612e9181612e81612e7b6fffffffffffffffffffffffffffffffff612700565b9161045e565b1115612e8b612dfa565b90612e05565b612e32565b90565b90612ec790612ec1612ed694612ead612288565b50612eb7836124b1565b90859190916131db565b92612918565b93925090509190919091612ed9565b90565b91612f0b612efc612f1194612eec612288565b5093612ef66124dd565b906124fe565b91612f05612542565b906124fe565b91612f14565b90565b612f2e612f4d9392612f4892612f28612288565b5061258c565b612f4283612f3c60016124c1565b9061271c565b906124fe565b6125d5565b90565b67ffffffffffffffff8111612f685760208091020190565b6107ba565b90929192612f82612f7d82612f50565b6107f7565b9381855260208086019202830192818411612fbf57915b838310612fa65750505050565b60208091612fb4848661182e565b815201920191612f99565b610568565b9080601f83011215612fe257816020612fdf93519101612f6d565b90565b610560565b90602082820312613017575f82015167ffffffffffffffff81116130125761300f9201612fc4565b90565b6101ef565b6101eb565b5190565b60209181520190565b60200190565b6130389061040b565b9052565b906130498160209361302f565b0190565b60200190565b9061307061306a6130638461301c565b8093613020565b92613029565b905f5b8181106130805750505090565b909192613099613093600192865161303c565b9461304d565b9101919091613073565b6130b89160208201915f818403910152613053565b90565b634e487b7160e01b5f52603260045260245ffd5b906130d98261301c565b8110156130ea576020809102010190565b6130bb565b6130f9905161040b565b90565b61311061310b6131159261045e565b6102d4565b61045e565b90565b61312461312991611270565b6130fc565b90565b61315461314e61314961317b955f95613143612288565b50613388565b6132f0565b91610fb5565b613170637784c6856131646101e1565b95869485938493611828565b8352600483016130a3565b03915afa80156131d6576131a76131ac916131b1935f916131b4575b506131a15f611a19565b906130cf565b6130ef565b613118565b90565b6131d091503d805f833e6131c881836107ce565b810190612fe7565b5f613197565b61185b565b6132036131fd6131f861322a955f956131f2612288565b50613447565b6132f0565b91610fb5565b61321f637784c6856132136101e1565b95869485938493611828565b8352600483016130a3565b03915afa80156132955761326661326161325c61326b93613270955f91613273575b506132565f611a19565b906130cf565b6130ef565b613118565b612e32565b612700565b90565b61328f91503d805f833e61328781836107ce565b810190612fe7565b5f61324c565b61185b565b606090565b906132b16132ac83612f50565b6107f7565b918252565b369037565b906132e06132c88361329f565b926020806132d68693612f50565b92019103906132b6565b565b906132ec9061040b565b9052565b6132f861329a565b5061332761330e61330960016124c1565b6132bb565b916133228361331c5f611a19565b906130cf565b6132e2565b90565b6133346002612cc1565b90565b91602061335892949361335160408201965f830190612341565b0190610461565b565b60200190565b6133695f611a19565b90565b61338061337b6133859261045e565b610afa565b61040b565b90565b6134246134329161340c6134379461339e6112f2565b50916133d26133ab61332a565b916133c36133b76101e1565b93849260208401613337565b602082018103825203826107ce565b6133e46133de82611a15565b9161335a565b20916133fd6133f16101e1565b9384926020840161139b565b602082018103825203826107ce565b61341e61341882611a15565b9161335a565b20613118565b61342c613360565b906124fe565b61336c565b90565b61344460016124c1565b90565b6134e36134f1916134cb6134f69461345d6112f2565b509161349161346a61332a565b916134826134766101e1565b93849260208401613337565b602082018103825203826107ce565b6134a361349d82611a15565b9161335a565b20916134bc6134b06101e1565b9384926020840161139b565b602082018103825203826107ce565b6134dd6134d782611a15565b9161335a565b20613118565b6134eb61343a565b906124fe565b61336c565b90565b61350561350b91612616565b91612616565b9003906fffffffffffffffffffffffffffffffff821161352757565b6124ea565b60c061358b9161353a612288565b506135647f0000000000000000000000000000000000000000000000000000000000000000610fb5565b613580635c60e39a6135746101e1565b95869485938493611828565b83526004830161234e565b03915afa9081156135f9576135c8916135c3915f916135cb575b506135bd60406135b65f84016126f3565b92016126f3565b906134f9565b612700565b90565b6135ec915060c03d81116135f2575b6135e481836107ce565b8101906126d5565b5f6135a5565b503d6135da565b61185b565b60a061365d9261360c612288565b506136367f0000000000000000000000000000000000000000000000000000000000000000610fb5565b613652632c3c91576136466101e1565b96879485938493611828565b83526004830161234e565b03915afa80156136d6576136a5925f916136a8575b509061369f7f00000000000000000000000000000000000000000000000000000000000000009291610e52565b9161246e565b90565b6136c9915060a03d81116136cf575b6136c181836107ce565b810190612323565b5f613672565b503d6136b7565b61185b565b906136f8906136e8612288565b506136f28161352c565b926135fe565b8161370b6137058361045e565b9161045e565b11155f1461371857505b90565b9050613715565b606090565b5090565b67ffffffffffffffff81116137405760208091020190565b6107ba565b9061375761375283613728565b6107f7565b918252565b369037565b9061378661376e83613745565b9260208061377c8693613728565b920191039061375c565b565b6137919061045e565b5f19811461379f5760010190565b6124ea565b91908110156137b4576040020190565b6130bb565b356137c38161090e565b90565b356137d08161040e565b90565b906137dd826105e1565b8110156137ee576020809102010190565b6130bb565b906137fd9061045e565b9052565b61380961371f565b5061381d613818828490613724565b613761565b916138275f611a19565b5b8061384561383f61383a868690613724565b61045e565b9161045e565b10156138a45761389f9061389a61388861386b5f613865888887916137a4565b016137b9565b613882602061387c898988916137a4565b016137c6565b906136db565b61389587918490926137d3565b6137f3565b613788565b613828565b50505090565b6138be906138b66111f4565b5082906135fe565b806138d16138cb8561045e565b9161045e565b106138f7575b506138ed6138e76138f39261352c565b9261045e565b9161045e565b1190565b6138f39192506138e76138ed91939250506138d7565b5090565b9190811015613921576060020190565b6130bb565b356139308161104e565b90565b61393b6111f4565b506139455f611a19565b5b8061396361395d61395885879061390d565b61045e565b9161045e565b10156139d0576139b66139825f61397c85878691613911565b016137b9565b613999602061399386888791613911565b016137c6565b6139b060406139aa87898891613911565b01613926565b916138aa565b6139c8576139c390613788565b613946565b505050600190565b5050505f90565b606090565b67ffffffffffffffff81116139f45760208091020190565b6107ba565b90613a0b613a06836139dc565b6107f7565b918252565b613a1a60406107f7565b90565b5f90565b5f90565b613a2d613a10565b9060208083613a3a613a1d565b815201613a45613a21565b81525050565b613a53613a25565b90565b5f5b828110613a6457505050565b602090613a6f613a4b565b8184015201613a58565b90613a9e613a86836139f9565b92602080613a9486936139dc565b9201910390613a56565b565b613aaa60406107f7565b90565b90613ab790610902565b9052565b90613ac59061040b565b9052565b90613ad382610e3f565b811015613ae4576020809102010190565b6130bb565b9190613af36139d7565b50613b07613b0284839061390d565b613a79565b92613b115f611a19565b93613b1b5f611a19565b5b80613b39613b33613b2e86889061390d565b61045e565b9161045e565b1015613c1257613b9a90613b90613b5c5f613b5687898691613911565b016137b9565b613b736020613b6d888a8791613911565b016137c6565b613b8a6040613b84898b8891613911565b01613926565b916138aa565b613b9f575b613788565b613b1c565b613c0b613bb85f613bb287898691613911565b016137b9565b613bef613bd26020613bcc898b8891613911565b016137c6565b613be6613bdd613aa0565b935f8501613aad565b60208301613abb565b84613bf98a613788565b9991613c058383613ac9565b52613ac9565b5150613b95565b50915050613c1f83613a79565b91613c295f611a19565b5b80613c3d613c378761045e565b9161045e565b1015613c7557613c7090613c69613c55858390613ac9565b51868391613c638383613ac9565b52613ac9565b5150613788565b613c2a565b5092505090565b5f7f4e6f7420616e206f70657261746f720000000000000000000000000000000000910152565b613cb0600f602092610d20565b613cb981613c7c565b0190565b613cd29060208101905f818303910152613ca3565b90565b15613cdc57565b613ce46101e1565b62461bcd60e51b815280613cfa60048201613cbd565b0390fd5b90613d24939291613d1f613d1a613d1361118c565b339061129c565b613cd5565b613d27565b90565b90613d369391509190916143d0565b90565b90613d4c9291613d47612288565b613cfe565b90565b90613d75939291613d70613d6b613d6461118c565b339061129c565b613cd5565b61402a565b90565b67ffffffffffffffff8111613d905760208091020190565b6107ba565b90613da7613da283613d78565b6107f7565b918252565b613db660406107f7565b90565b613dc360a06107f7565b90565b5f90565b5f90565b613dd6613db9565b9060208080808086613de6613dc6565b815201613df1613dc6565b815201613dfc613dc6565b815201613e07613dc6565b815201613e12613dca565b81525050565b613e20613dce565b90565b613e2b613dac565b9060208083613e38613e18565b815201613e43613dca565b81525050565b613e51613e23565b90565b5f5b828110613e6257505050565b602090613e6d613e49565b8184015201613e56565b90613e9c613e8483613d95565b92602080613e928693613d78565b9201910390613e54565b565b613ea860406107f7565b90565b52565b5190565b90613ebc82613eae565b811015613ecd576020809102010190565b6130bb565b613ede613ee391611270565b610296565b90565b613ef09054613ed2565b90565b5f910312613efd57565b6101eb565b613f0b90610e52565b9052565b60209181520190565b60200190565b90608080613f7693613f365f8201515f8601906127d4565b613f48602082015160208601906127d4565b613f5a604082015160408601906127d4565b613f6c606082015160608601906127d4565b01519101906105f4565b565b9060a06020613f9b93613f915f8201515f860190613f1e565b01519101906105f4565b565b90613faa8160c093613f78565b0190565b60200190565b90613fd1613fcb613fc484613eae565b8093613f0f565b92613f18565b905f5b818110613fe15750505090565b909192613ffa613ff46001928651613f9d565b94613fae565b9101919091613fd4565b916140279261401a60408201935f830190613f02565b6020818403910152613fb4565b90565b9290925061408660a061405c7f0000000000000000000000000000000000000000000000000000000000000000610fb5565b632c3c91579061407b869261406f6101e1565b95869485938493611828565b83526004830161234e565b03915afa9081156143cb575f9161439d575b506140a28361352c565b93846140b66140b05f611a19565b9161045e565b1461438c576140ef7f0000000000000000000000000000000000000000000000000000000000000000836140e984610e52565b9161246e565b94856141036140fd5f611a19565b9161045e565b1461437a578061411b6141158861045e565b9161045e565b11155f146143705761417e905b9560a06141547f0000000000000000000000000000000000000000000000000000000000000000610fb5565b632c3c91579061417388926141676101e1565b96879485938493611828565b83526004830161234e565b03915afa91821561436b57614247926141fd915f9161433d575b50916141d86141bb6141b26141ad6002612cc1565b613e77565b97928b9061271c565b6141cf6141c6613e9e565b935f8501613eab565b602083016137f3565b6141f786915f906141f16141eb83611a19565b85613eb2565b52611a19565b90613eb2565b51506142215f1961421861420f613e9e565b935f8501613eab565b602083016137f3565b614241849160019061423b614235836124c1565b85613eb2565b526124c1565b90613eb2565b515061425a6142555f613ee6565b6102ff565b9163eb7499cf90829093803b15614338576142885f809461429361427c6101e1565b98899687958694611828565b845260048401614004565b03925af1918215614333576142ad92614307575b50610e52565b9183926143016142ef6142e96142e37f7d87935060b9054d91333b06a87bf5fcddabd659fce43e354a4323a5547706779461124e565b94610e6b565b94610e6b565b946142f86101e1565b9182918261096b565b0390a490565b614326905f3d811161432c575b61431e81836107ce565b810190613ef3565b5f6142a7565b503d614314565b61185b565b611824565b61435e915060a03d8111614364575b61435681836107ce565b810190612323565b5f614198565b503d61434c565b61185b565b5061417e85614128565b5050505050506143895f611a19565b90565b505050505061439a5f611a19565b90565b6143be915060a03d81116143c4575b6143b681836107ce565b810190612323565b5f614098565b503d6143ac565b61185b565b906143e392916143de612288565b613d4f565b90565b9061440b92916144066144016143fa61118c565b339061129c565b613cd5565b614427565b90565b5090565b9190811015614422576060020190565b6130bb565b9190915061443e61443983839061440e565b613761565b916144485f611a19565b5b8061446661446061445b85879061440e565b61045e565b9161045e565b10156144dc576144d7906144d26144c061448c5f61448687898791614412565b016137b9565b6144a3602061449d888a8891614412565b016137c6565b6144ba60406144b4898b8991614412565b016137c6565b916143d0565b6144cd87918490926137d3565b6137f3565b613788565b614449565b50505090565b906144f4916144ef61371f565b6143e6565b9056fea2646970667358221220c694d8b91adc8dfcbd6f180a0ed4ffb557495f025ff236393f0934fea47bf41064736f6c63430008150033