Files
smom-dbis-138/artifacts/contracts/vault/Ledger.sol/Ledger.json
2026-03-02 12:14:09 -08:00

710 lines
36 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "Ledger",
"sourceName": "contracts/vault/Ledger.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "address",
"name": "xauOracle_",
"type": "address"
},
{
"internalType": "address",
"name": "rateAccrual_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "vault",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "delta",
"type": "int256"
}
],
"name": "CollateralModified",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "vault",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "currency",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "delta",
"type": "int256"
}
],
"name": "DebtModified",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "debtCeiling",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "liquidationRatio",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "creditMultiplier",
"type": "uint256"
}
],
"name": "RiskParametersSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PARAM_MANAGER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "VAULT_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "vault",
"type": "address"
},
{
"internalType": "address",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "canBorrow",
"outputs": [
{
"internalType": "bool",
"name": "canBorrow",
"type": "bool"
},
{
"internalType": "bytes32",
"name": "reasonCode",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "collateral",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "creditMultiplier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "debt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "debtCeiling",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "vault",
"type": "address"
}
],
"name": "getVaultHealth",
"outputs": [
{
"internalType": "uint256",
"name": "healthRatio",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "debtValue",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantVaultRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isRegisteredAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "liquidationRatio",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "vault",
"type": "address"
},
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "int256",
"name": "delta",
"type": "int256"
}
],
"name": "modifyCollateral",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "vault",
"type": "address"
},
{
"internalType": "address",
"name": "currency",
"type": "address"
},
{
"internalType": "int256",
"name": "delta",
"type": "int256"
}
],
"name": "modifyDebt",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "rateAccrual",
"outputs": [
{
"internalType": "contract IRateAccrual",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "rateAccumulator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "rateAccrual_",
"type": "address"
}
],
"name": "setRateAccrual",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "uint256",
"name": "debtCeiling_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "liquidationRatio_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "creditMultiplier_",
"type": "uint256"
}
],
"name": "setRiskParameters",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "xauOracle_",
"type": "address"
}
],
"name": "setXAUOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "xauOracle",
"outputs": [
{
"internalType": "contract IXAUOracle",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608034620000bd57601f6200170238819003918201601f19168301916001600160401b03831184841017620000c257808492606094604052833981010312620000bd576200004d81620000d8565b620000806200006d60406200006560208601620000d8565b9401620000d8565b916200007981620000ed565b506200016d565b50600780546001600160a01b039384166001600160a01b031991821617909155600880549290931691161790556040516114d29081620002108239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620000bd57565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200016957818052816020526040822081835260205260408220600160ff198254161790553391600080516020620016e28339815191528180a4600190565b5090565b6001600160a01b031660008181527fb99496d2d6a1c771c53e77182d150ec0e30f99c5903179278064217bb44d30a560205260408120549091907fe9dc316fa34ae880f78d85d5ce397feb0c9fbe2fc8ebf721a7d1646cabaf7f8c9060ff166200020a57808352826020526040832082845260205260408320600160ff19825416179055600080516020620016e2833981519152339380a4600190565b50509056fe60806040908082526004918236101561001757600080fd5b600092833560e01c92836301ffc9a714610cfd5750826316d8cdc814610a2c578263248a9ca314610a015782632f2ff15d146109d85782633128b16a146109a057826336568abe1461095a5782633bffbbe2146109235782634a83cf49146108885782634c1b593d146106bc57826353940a231461066b57826360698943146106415782636d3017c614610609578263851d1c5d146105e05782638f2290821461042557826391d14854146103de57826398c4f1ac146103a35782639aac2c5314610365578263a217fddf1461034a578263adec56181461030c578263caf7d08f146102e3578263cc218ece1461029a578263d449300d14610251578263d547741f1461020f57508163dc62caf5146101d4578163e0c23b5114610198575063e482770e1461014557600080fd5b346101955760203660031901126101955761015e610d6b565b610166611064565b6001600160a01b031661017a811515610e62565b6bffffffffffffffffffffffff60a01b600854161760085580f35b80fd5b9050346101d05760203660031901126101d05760209181906001600160a01b036101c0610d6b565b1681526005845220549051908152f35b5080fd5b9050346101d057816003193601126101d057602090517fe9dc316fa34ae880f78d85d5ce397feb0c9fbe2fc8ebf721a7d1646cabaf7f8c8152f35b91503461024d578060031936011261024d5761024991356102446001610233610d50565b93838752866020528620015461109e565b61123c565b5080f35b8280fd5b8382346101d057806003193601126101d0578060209261026f610d6b565b610277610d50565b6001600160a01b0391821683526002865283832091168252845220549051908152f35b8382346101d057806003193601126101d057806020926102b8610d6b565b6102c0610d50565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b8382346101d057816003193601126101d05760085490516001600160a01b039091168152602090f35b8382346101d05760203660031901126101d05760209160ff9082906001600160a01b03610337610d6b565b1681526009855220541690519015158152f35b8382346101d057816003193601126101d05751908152602090f35b5082346101955760603660031901126101955750610395610384610d6b565b61038c610d50565b60443591610ea5565b825191151582526020820152f35b8382346101d057816003193601126101d057602090517f31e0210044b4f6757ce6aa31f9c6e8d4896d24a755014887391a926c5224d9598152f35b9091503461024d578160031936011261024d578160209360ff92610400610d50565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b9091503461024d5761043636610d81565b9093610440610fea565b60018060a01b03809516948587526020936009855260ff83892054161561059d5716808752600184528187208688528452818720549094878413156104ca5750906104ae837fd9e1fd803b2dcca4cd8962ee28b8bae17dacd42e1ee06613bd533924c631b610959493610e22565b858852600184528188208789528452818820555b51908152a380f35b908784126104fe575b5050907fd9e1fd803b2dcca4cd8962ee28b8bae17dacd42e1ee06613bd533924c631b61092916104c2565b61050784610dee565b9182821061055a57507fd9e1fd803b2dcca4cd8962ee28b8bae17dacd42e1ee06613bd533924c631b6109493929161053e91610e15565b85885260018452818820878952845281882055909192386104d3565b835162461bcd60e51b8152908101869052601f60248201527f4c65646765723a20696e73756666696369656e7420636f6c6c61746572616c006044820152606490fd5b825162461bcd60e51b8152808701869052601c60248201527f4c65646765723a206173736574206e6f742072656769737465726564000000006044820152606490fd5b8382346101d057816003193601126101d05760075490516001600160a01b039091168152602090f35b8382346101d05760203660031901126101d05760209181906001600160a01b03610631610d6b565b1681526006845220549051908152f35b83346101955760203660031901126101955761024961065e610d6b565b610666611064565b611111565b833461019557602036600319011261019557610685610d6b565b61068d611064565b6001600160a01b03166106a1811515610e62565b6bffffffffffffffffffffffff60a01b600754161760075580f35b91503461024d57608036600319011261024d576106d7610d6b565b6024359060443592606435917fe9dc316fa34ae880f78d85d5ce397feb0c9fbe2fc8ebf721a7d1646cabaf7f8c90818852602091888352838920338a52835260ff848a2054161561086a57508515158061085e575b156108115783151580610804575b156107b7576001600160a01b031680885260098252828820805460ff19166001179055600382528288208590559581528187208590556005905280862082905551918252602082019290925260408101919091527fdc207837dbcc5d27e9cccdeb3671335e453f3a3c0c80f95a8184b1807d7ef22f90606090a280f35b825162461bcd60e51b8152808801839052602160248201527f4c65646765723a20696e76616c696420637265646974206d756c7469706c69656044820152603960f91b6064820152608490fd5b50620186a084111561073a565b825162461bcd60e51b8152808801839052602160248201527f4c65646765723a20696e76616c6964206c69717569646174696f6e20726174696044820152606f60f81b6064820152608490fd5b5061271086111561072c565b835163e2517d3f60e01b815233818a01526024810191909152604490fd5b908334610195576020366003190112610195576108a3610d6b565b926108b66108b0856112b1565b9461136b565b91826108e65750506108e290600019925b51938493846040919493926060820195825260208201520152565b0390f35b612710918286029286840414861517156109105750509061090a816108e293610e42565b926108c7565b634e487b7160e01b825260119052602490fd5b9091503461024d57602036600319011261024d5760209282916001600160a01b0361094c610d6b565b168252845220549051908152f35b8382346101d057806003193601126101d057610974610d50565b90336001600160a01b03831603610991575061024991923561123c565b5163334bd91960e11b81528390fd5b8382346101d05760203660031901126101d05760209181906001600160a01b036109c8610d6b565b1681526003845220549051908152f35b91503461024d578060031936011261024d5761024991356109fc6001610233610d50565b6111c3565b9091503461024d57602036600319011261024d57816020936001923581528085522001549051908152f35b8382346101d0578190610a3e36610d81565b90939192610a4a610fea565b6008548151639198e51560e01b81526001600160a01b03968716898201819052969560209590928691839160249183918b165af18015610cc657908591610cd0575b50508460085416848760248b86519485938492633d783a6d60e01b84528301525afa908115610cc657908692918991610c8f575b508789526006865283892055169384875260028452818720868852845281872054878413600014610bc95783610af591610e22565b85885260028552828820878952855282882055600c8452818720610b1a848254610e22565b9055858752600b845260ff828820541615610b4d575b5060008051602061147d833981519152939495965051908152a380f35b600a5468010000000000000000811015610bb65760008051602061147d8339815191529596979850806001610b859201600a556110c4565b819291549060031b9189831b921b1916179055858752600b8352808720600160ff1982541617905586959493610b30565b634e487b7160e01b885260418952602488fd5b979050868312610bee575b5060008051602061147d83398151915293949596506104c2565b610bf783610dee565b90818910610c4c5750610c1c8160008051602061147d83398151915296979899610e15565b86895260028552828920888a52855282892055600c8452610c41828920918254610e15565b905586959493610bd4565b825162461bcd60e51b8152908101859052601960248201527f4c65646765723a20696e73756666696369656e742064656274000000000000006044820152606490fd5b80929350868092503d8311610cbf575b610ca98183610db6565b81010312610cbb57908591518a610ac0565b8780fd5b503d610c9f565b83513d8a823e3d90fd5b813d8311610cf6575b610ce38183610db6565b81010312610cf2578389610a8c565b8680fd5b503d610cd9565b84913461024d57602036600319011261024d573563ffffffff60e01b811680910361024d5760209250637965db0b60e01b8114908115610d3f575b5015158152f35b6301ffc9a760e01b14905083610d38565b602435906001600160a01b0382168203610d6657565b600080fd5b600435906001600160a01b0382168203610d6657565b6060906003190112610d66576001600160a01b03906004358281168103610d6657916024359081168103610d66579060443590565b90601f8019910116810190811067ffffffffffffffff821117610dd857604052565b634e487b7160e01b600052604160045260246000fd5b600160ff1b8114610dff5760000390565b634e487b7160e01b600052601160045260246000fd5b91908203918211610dff57565b91908201809211610dff57565b81810292918115918404141715610dff57565b8115610e4c570490565b634e487b7160e01b600052601260045260246000fd5b15610e6957565b60405162461bcd60e51b81526020600482015260146024820152734c65646765723a207a65726f206164647265737360601b6044820152606490fd5b90929192610ebe84610eb96108b0856112b1565b610e22565b9060018060a01b031691610ee0600095848752600c6020526040872054610e22565b8386526003602052604086205410610fc35760056020526127109081610f0a604088205483610e2f565b048311610f9b57818102918183041490151715610f875790610f2b91610e42565b908352600460205260408320549060648201809211610f735710610f4f5760019190565b7f980a909714e2912943ecb3785a03d82c9e357d4ac0e86cc72ad3c4904a5802f490565b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b85526011600452602485fd5b505050507ff41e6fcda77c3a06cc660155f9b446fbdc7b90dc47cdbc3bf6716f0f7a06e9d990565b5050507fb52f5dd29a71a930073ac38d3ca5f16d1b47b5a35d1ea91889932980c287dc3590565b3360009081527f57c45785f0bfdd0436a24ca59ce8cf4a246623230045d7db55b0ff1db74c582260205260409020547f31e0210044b4f6757ce6aa31f9c6e8d4896d24a755014887391a926c5224d9599060ff16156110465750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156110465750565b80600052600060205260406000203360005260205260ff60406000205416156110465750565b600a548110156110fb57600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80190600090565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b031660008181527f57c45785f0bfdd0436a24ca59ce8cf4a246623230045d7db55b0ff1db74c582260205260408120549091907f31e0210044b4f6757ce6aa31f9c6e8d4896d24a755014887391a926c5224d9599060ff166111be57808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146111be57808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146111be5780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60018060a01b03908160009116815260016020526040908181208180526020528181205492831561136457908260049260075416815193848092630141f6b560e31b82525afa92831561135a57819361131f575b50505061131b90670de0b6b3a764000092610e2f565b0490565b9091809350813d8311611353575b6113378183610db6565b810103126101955750518161131b670de0b6b3a7640000611305565b503d61132d565b51903d90823e3d90fd5b5091505090565b600a54600092918390815b8381106113835750505050565b61138c816110c4565b9060018060a01b03918291549060031b1c169080841685526020916002835260409283872082885281528387205492836113ce575b5050505050600101611376565b819060089b969b5416926024865180958193633d783a6d60e01b835260048301525afa93841561147357508693611431575b5050916b033b2e3c9fd0803ce800000061141f61142693600195610e2f565b0490610e22565b9590388080806113c1565b9080929350813d831161146c575b6114498183610db6565b810103126114685751906b033b2e3c9fd0803ce800000061141f611400565b8480fd5b503d61143f565b513d88823e3d90fdfe32e803d0f5b5634bc54111ca9a8f953cf9ed7171a023bd40263110f489cbbb00a26469706673582212207abb6651b4937b34cf3f6d2a2bad879bc470a931a0c039748da4ec17cd53487c64736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b600092833560e01c92836301ffc9a714610cfd5750826316d8cdc814610a2c578263248a9ca314610a015782632f2ff15d146109d85782633128b16a146109a057826336568abe1461095a5782633bffbbe2146109235782634a83cf49146108885782634c1b593d146106bc57826353940a231461066b57826360698943146106415782636d3017c614610609578263851d1c5d146105e05782638f2290821461042557826391d14854146103de57826398c4f1ac146103a35782639aac2c5314610365578263a217fddf1461034a578263adec56181461030c578263caf7d08f146102e3578263cc218ece1461029a578263d449300d14610251578263d547741f1461020f57508163dc62caf5146101d4578163e0c23b5114610198575063e482770e1461014557600080fd5b346101955760203660031901126101955761015e610d6b565b610166611064565b6001600160a01b031661017a811515610e62565b6bffffffffffffffffffffffff60a01b600854161760085580f35b80fd5b9050346101d05760203660031901126101d05760209181906001600160a01b036101c0610d6b565b1681526005845220549051908152f35b5080fd5b9050346101d057816003193601126101d057602090517fe9dc316fa34ae880f78d85d5ce397feb0c9fbe2fc8ebf721a7d1646cabaf7f8c8152f35b91503461024d578060031936011261024d5761024991356102446001610233610d50565b93838752866020528620015461109e565b61123c565b5080f35b8280fd5b8382346101d057806003193601126101d0578060209261026f610d6b565b610277610d50565b6001600160a01b0391821683526002865283832091168252845220549051908152f35b8382346101d057806003193601126101d057806020926102b8610d6b565b6102c0610d50565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b8382346101d057816003193601126101d05760085490516001600160a01b039091168152602090f35b8382346101d05760203660031901126101d05760209160ff9082906001600160a01b03610337610d6b565b1681526009855220541690519015158152f35b8382346101d057816003193601126101d05751908152602090f35b5082346101955760603660031901126101955750610395610384610d6b565b61038c610d50565b60443591610ea5565b825191151582526020820152f35b8382346101d057816003193601126101d057602090517f31e0210044b4f6757ce6aa31f9c6e8d4896d24a755014887391a926c5224d9598152f35b9091503461024d578160031936011261024d578160209360ff92610400610d50565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b9091503461024d5761043636610d81565b9093610440610fea565b60018060a01b03809516948587526020936009855260ff83892054161561059d5716808752600184528187208688528452818720549094878413156104ca5750906104ae837fd9e1fd803b2dcca4cd8962ee28b8bae17dacd42e1ee06613bd533924c631b610959493610e22565b858852600184528188208789528452818820555b51908152a380f35b908784126104fe575b5050907fd9e1fd803b2dcca4cd8962ee28b8bae17dacd42e1ee06613bd533924c631b61092916104c2565b61050784610dee565b9182821061055a57507fd9e1fd803b2dcca4cd8962ee28b8bae17dacd42e1ee06613bd533924c631b6109493929161053e91610e15565b85885260018452818820878952845281882055909192386104d3565b835162461bcd60e51b8152908101869052601f60248201527f4c65646765723a20696e73756666696369656e7420636f6c6c61746572616c006044820152606490fd5b825162461bcd60e51b8152808701869052601c60248201527f4c65646765723a206173736574206e6f742072656769737465726564000000006044820152606490fd5b8382346101d057816003193601126101d05760075490516001600160a01b039091168152602090f35b8382346101d05760203660031901126101d05760209181906001600160a01b03610631610d6b565b1681526006845220549051908152f35b83346101955760203660031901126101955761024961065e610d6b565b610666611064565b611111565b833461019557602036600319011261019557610685610d6b565b61068d611064565b6001600160a01b03166106a1811515610e62565b6bffffffffffffffffffffffff60a01b600754161760075580f35b91503461024d57608036600319011261024d576106d7610d6b565b6024359060443592606435917fe9dc316fa34ae880f78d85d5ce397feb0c9fbe2fc8ebf721a7d1646cabaf7f8c90818852602091888352838920338a52835260ff848a2054161561086a57508515158061085e575b156108115783151580610804575b156107b7576001600160a01b031680885260098252828820805460ff19166001179055600382528288208590559581528187208590556005905280862082905551918252602082019290925260408101919091527fdc207837dbcc5d27e9cccdeb3671335e453f3a3c0c80f95a8184b1807d7ef22f90606090a280f35b825162461bcd60e51b8152808801839052602160248201527f4c65646765723a20696e76616c696420637265646974206d756c7469706c69656044820152603960f91b6064820152608490fd5b50620186a084111561073a565b825162461bcd60e51b8152808801839052602160248201527f4c65646765723a20696e76616c6964206c69717569646174696f6e20726174696044820152606f60f81b6064820152608490fd5b5061271086111561072c565b835163e2517d3f60e01b815233818a01526024810191909152604490fd5b908334610195576020366003190112610195576108a3610d6b565b926108b66108b0856112b1565b9461136b565b91826108e65750506108e290600019925b51938493846040919493926060820195825260208201520152565b0390f35b612710918286029286840414861517156109105750509061090a816108e293610e42565b926108c7565b634e487b7160e01b825260119052602490fd5b9091503461024d57602036600319011261024d5760209282916001600160a01b0361094c610d6b565b168252845220549051908152f35b8382346101d057806003193601126101d057610974610d50565b90336001600160a01b03831603610991575061024991923561123c565b5163334bd91960e11b81528390fd5b8382346101d05760203660031901126101d05760209181906001600160a01b036109c8610d6b565b1681526003845220549051908152f35b91503461024d578060031936011261024d5761024991356109fc6001610233610d50565b6111c3565b9091503461024d57602036600319011261024d57816020936001923581528085522001549051908152f35b8382346101d0578190610a3e36610d81565b90939192610a4a610fea565b6008548151639198e51560e01b81526001600160a01b03968716898201819052969560209590928691839160249183918b165af18015610cc657908591610cd0575b50508460085416848760248b86519485938492633d783a6d60e01b84528301525afa908115610cc657908692918991610c8f575b508789526006865283892055169384875260028452818720868852845281872054878413600014610bc95783610af591610e22565b85885260028552828820878952855282882055600c8452818720610b1a848254610e22565b9055858752600b845260ff828820541615610b4d575b5060008051602061147d833981519152939495965051908152a380f35b600a5468010000000000000000811015610bb65760008051602061147d8339815191529596979850806001610b859201600a556110c4565b819291549060031b9189831b921b1916179055858752600b8352808720600160ff1982541617905586959493610b30565b634e487b7160e01b885260418952602488fd5b979050868312610bee575b5060008051602061147d83398151915293949596506104c2565b610bf783610dee565b90818910610c4c5750610c1c8160008051602061147d83398151915296979899610e15565b86895260028552828920888a52855282892055600c8452610c41828920918254610e15565b905586959493610bd4565b825162461bcd60e51b8152908101859052601960248201527f4c65646765723a20696e73756666696369656e742064656274000000000000006044820152606490fd5b80929350868092503d8311610cbf575b610ca98183610db6565b81010312610cbb57908591518a610ac0565b8780fd5b503d610c9f565b83513d8a823e3d90fd5b813d8311610cf6575b610ce38183610db6565b81010312610cf2578389610a8c565b8680fd5b503d610cd9565b84913461024d57602036600319011261024d573563ffffffff60e01b811680910361024d5760209250637965db0b60e01b8114908115610d3f575b5015158152f35b6301ffc9a760e01b14905083610d38565b602435906001600160a01b0382168203610d6657565b600080fd5b600435906001600160a01b0382168203610d6657565b6060906003190112610d66576001600160a01b03906004358281168103610d6657916024359081168103610d66579060443590565b90601f8019910116810190811067ffffffffffffffff821117610dd857604052565b634e487b7160e01b600052604160045260246000fd5b600160ff1b8114610dff5760000390565b634e487b7160e01b600052601160045260246000fd5b91908203918211610dff57565b91908201809211610dff57565b81810292918115918404141715610dff57565b8115610e4c570490565b634e487b7160e01b600052601260045260246000fd5b15610e6957565b60405162461bcd60e51b81526020600482015260146024820152734c65646765723a207a65726f206164647265737360601b6044820152606490fd5b90929192610ebe84610eb96108b0856112b1565b610e22565b9060018060a01b031691610ee0600095848752600c6020526040872054610e22565b8386526003602052604086205410610fc35760056020526127109081610f0a604088205483610e2f565b048311610f9b57818102918183041490151715610f875790610f2b91610e42565b908352600460205260408320549060648201809211610f735710610f4f5760019190565b7f980a909714e2912943ecb3785a03d82c9e357d4ac0e86cc72ad3c4904a5802f490565b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b85526011600452602485fd5b505050507ff41e6fcda77c3a06cc660155f9b446fbdc7b90dc47cdbc3bf6716f0f7a06e9d990565b5050507fb52f5dd29a71a930073ac38d3ca5f16d1b47b5a35d1ea91889932980c287dc3590565b3360009081527f57c45785f0bfdd0436a24ca59ce8cf4a246623230045d7db55b0ff1db74c582260205260409020547f31e0210044b4f6757ce6aa31f9c6e8d4896d24a755014887391a926c5224d9599060ff16156110465750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156110465750565b80600052600060205260406000203360005260205260ff60406000205416156110465750565b600a548110156110fb57600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80190600090565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b031660008181527f57c45785f0bfdd0436a24ca59ce8cf4a246623230045d7db55b0ff1db74c582260205260408120549091907f31e0210044b4f6757ce6aa31f9c6e8d4896d24a755014887391a926c5224d9599060ff166111be57808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146111be57808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146111be5780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60018060a01b03908160009116815260016020526040908181208180526020528181205492831561136457908260049260075416815193848092630141f6b560e31b82525afa92831561135a57819361131f575b50505061131b90670de0b6b3a764000092610e2f565b0490565b9091809350813d8311611353575b6113378183610db6565b810103126101955750518161131b670de0b6b3a7640000611305565b503d61132d565b51903d90823e3d90fd5b5091505090565b600a54600092918390815b8381106113835750505050565b61138c816110c4565b9060018060a01b03918291549060031b1c169080841685526020916002835260409283872082885281528387205492836113ce575b5050505050600101611376565b819060089b969b5416926024865180958193633d783a6d60e01b835260048301525afa93841561147357508693611431575b5050916b033b2e3c9fd0803ce800000061141f61142693600195610e2f565b0490610e22565b9590388080806113c1565b9080929350813d831161146c575b6114498183610db6565b810103126114685751906b033b2e3c9fd0803ce800000061141f611400565b8480fd5b503d61143f565b513d88823e3d90fdfe32e803d0f5b5634bc54111ca9a8f953cf9ed7171a023bd40263110f489cbbb00a26469706673582212207abb6651b4937b34cf3f6d2a2bad879bc470a931a0c039748da4ec17cd53487c64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}