{
  "contractName": "DepositImpl",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol\":\"DepositImpl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol\":{\"keccak256\":\"0x07eaed8d56d7b57a9b0ee9a76918a087d08ae10c999ffc12c7368ab5e8551fb4\",\"urls\":[\"bzz-raw://19f5a6045092355b4a2eca6a67118a737b2ff66f95e8ba816535c719b0479407\",\"dweb:/ipfs/QmZQVZKSCuk6C437jwnx8PX51xcDEZeM1aTJ5YcaViNQw4\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0x74799c3fac16738be41e270a70d3f7ad4f75d1dc7e5d8c58f0fe4c6128345112\",\"urls\":[\"bzz-raw://d9602af1001189d199736d17266d5fb34a32f71cd05fbcf4c0f97c0b3a642eee\",\"dweb:/ipfs/QmPto2DkZ1nKqicBMdMkaek7kGSSXqSKnf697h5zuthvsy\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x5952f2f78aa0adb88980d9eeec5626fecbec79103038841c3ad9e4f2c4ac556b\",\"urls\":[\"bzz-raw://2a358a8370fa8abba24db2a3337f5b397e51a686d84facaf70ced9cc32d65235\",\"dweb:/ipfs/QmY4vPNq3SMu176LL4XRxFPtDQf8QEztQNxerWvmoEALsR\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
  "bytecode": "0x61226d610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063f3668ed01461003a575b600080fd5b81801561004657600080fd5b5061005a610055366004611d9e565b61005c565b005b60208201516100739084903363ffffffff6101ad16565b60608201516101229073ffffffffffffffffffffffffffffffffffffffff163314806100d6575082602001516000015173ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff16145b7f4465706f736974496d706c0000000000000000000000000000000000000000007f496e76616c6964206465706f73697420736f75726365000000000000000000008560600151610266565b61012a611b82565b610132611b82565b6020840151604085015185516101539288929091879063ffffffff61036516565b91509150610176846020015185604001518488610501909392919063ffffffff16565b61019b6101908560400151876109df90919063ffffffff16565b856060015183610a0d565b6101a6858583610a7b565b5050505050565b6000826000015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806101f857506101f8848363ffffffff610af616565b80610212575082516102129085908463ffffffff610b2516565b9050610260817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f7200000000000000000085610266565b50505050565b836102605761027483610b65565b7f3a2000000000000000000000000000000000000000000000000000000000000061029e84610b65565b7f203c0000000000000000000000000000000000000000000000000000000000006102c885610c3f565b6040516102fe9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611fc7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261035c9160040161204d565b60405180910390fd5b61036d611b82565b610375611b82565b61037d611b82565b61038e88888863ffffffff610db616565b9050836060015160001480156103b357506000846040015160018111156103b157fe5b145b156103cb57806103c1610e36565b92509250506104f7565b6103d3611b82565b6103dd8287610e56565b90506103e7611b82565b6103ef611b82565b60008760200151600181111561040157fe5b141561046d5750604080518082019091528651151581526060870151602082015260018760400151600181111561043457fe5b141561044d5761044a818463ffffffff610f0b16565b90505b610466610460848363ffffffff610f2016565b89610fb2565b91506104ef565b60405180604001604052808860000151151581526020016104918960600151611079565b6fffffffffffffffffffffffffffffffff16905291506000876040015160018111156104b957fe5b14156104d2576104cf848363ffffffff6110dc16565b91505b6104ec836104e0848b610e56565b9063ffffffff610f0b16565b90505b909450925050505b9550959350505050565b610509611b82565b61051a85858563ffffffff610db616565b90506105268183611201565b156105315750610260565b610539611b82565b610549868563ffffffff61127316565b8251909150156105b65761059a61059583602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff166112d390919063ffffffff16565b611079565b6fffffffffffffffffffffffffffffffff1660208201526105fb565b602082015181516105e691610595916fffffffffffffffffffffffffffffffff908116911663ffffffff6112d316565b6fffffffffffffffffffffffffffffffff1681525b8251156106605761064461059584602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1661131590919063ffffffff16565b6fffffffffffffffffffffffffffffffff1660208201526106a5565b6020830151815161069091610595916fffffffffffffffffffffffffffffffff908116911663ffffffff61131516565b6fffffffffffffffffffffffffffffffff1681525b6106ae82611354565b80156106be57506106be8361137e565b1561075b57845173ffffffffffffffffffffffffffffffffffffffff1660009081526003870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790556107ed565b6107648261137e565b8015610774575061077483611354565b156107ed57845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b6107f683611394565b8015610808575061080682611394565b155b1561085c57845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020610856906001018563ffffffff6113ae16565b506108c6565b61086583611394565b158015610876575061087682611394565b156108c657845173ffffffffffffffffffffffffffffffffffffffff166000908152600387016020908152604080832082890151845290915290206108c4906001018563ffffffff61149416565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090971696909617861693909317909255875173ffffffffffffffffffffffffffffffffffffffff1683526003808a018252828420898301518552825282842088855201815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b600081815260018301602052604090205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b610a66610a19826114de565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e73666572496e206e6567617469766500000000000084602001516114f5565b610a768383308460200151611557565b505050565b602080830151805191810151604085015173ffffffffffffffffffffffffffffffffffffffff909316927f2bad8bc95088af2c247b30fa2b2e6a0886f88625e0945cd3051008e0e270198f92610ad4908890838861166e565b8660600151604051610ae9949392919061207e565b60405180910390a2505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600591909101602052604090205460011490565b73ffffffffffffffffffffffffffffffffffffffff80831660009081526004850160209081526040808320938516835292905220546001145b9392505050565b60608082604051602001610b799190611fa6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610c225781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610be557fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610c1d5760010181529050610c3a565b610bac565b5060408051600080825260208201909252905b509150505b919050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610c8b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610ccc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610c355760028102610d17600f85166116a5565b838260290381518110610d2657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350610d68600f85166116a5565b838260280381518110610d7757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610cfe565b610dbe611b82565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526003938401602090815260408083209482015183529381528382209282529190930181529181902081518083019092525460ff81161515825261010090046fffffffffffffffffffffffffffffffff169181019190915290565b610e3e611b82565b50604080518082019091526000808252602082015290565b610e5e611b82565b602083015183516fffffffffffffffffffffffffffffffff9091169015610ecc57604080518082019091526001815260208481015190820190610ec19084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6116c716565b815250915050610a07565b604080518082019091526000815283516020820190610ec19084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6116c716565b610f13611b82565b610b5e83610f2084611770565b610f28611b82565b610f30611b82565b8251845115159015151415610f635783511515815260208085015190840151610f599190611315565b6020820152610b5e565b8260200151846020015110610f8c5783511515815260208085015190840151610f5991906112d3565b82511515815260208084015190850151610fa691906112d3565b60208201529392505050565b610fba611b82565b825115611032576040518060400160405280600115158152602001611017610595670de0b6b3a764000067ffffffffffffffff1686602001516dffffffffffffffffffffffffffff1688602001516116c79092919063ffffffff16565b6fffffffffffffffffffffffffffffffff1690529050610a07565b60408051808201909152600081528251602085810151908301916110179161059591670de0b6b3a7640000906dffffffffffffffffffffffffffff1663ffffffff6116c716565b600081610a076fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e7431323800000000000000000000846114f5565b6110e4611b82565b6110ec611b82565b825184511515901515141561114a578351151581526020808501519084015161112e91610595916fffffffffffffffffffffffffffffffff9182169116611315565b6fffffffffffffffffffffffffffffffff166020820152610b5e565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff16106111b0578351151581526020808501519084015161112e91610595916fffffffffffffffffffffffffffffffff91821691166112d3565b825115158152602080840151908501516111e391610595916fffffffffffffffffffffffffffffffff91821691166112d3565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16141561126a5760208301516fffffffffffffffffffffffffffffffff1661125a57506001610a07565b5080518251151590151514610a07565b50600092915050565b61127b611b82565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b6000610b5e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611797565b600082820183811015610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c9061205e565b600081602001516fffffffffffffffffffffffffffffffff16600014158015610a07575050511590565b600061138982611394565b80610a075750505190565b602001516fffffffffffffffffffffffffffffffff161590565b6000818152600183016020526040812054801561148a5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461144457600086600001828154811061140557fe5b906000526020600020015490508087600001848154811061142257fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061144f57fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a07565b6000915050610a07565b60006114a083836117dd565b6114d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a07565b506000610a07565b8051600090158015610a0757505060200151151590565b836102605761150383610b65565b7f3a2000000000000000000000000000000000000000000000000000000000000061152d84610b65565b7f203c0000000000000000000000000000000000000000000000000000000000006102c8856117f5565b80158061158f57508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561159957610260565b6040516102609085907f23b872dd00000000000000000000000000000000000000000000000000000000906115d690879087908790602401612025565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601a81526020017f546f6b656e3a207472616e7366657246726f6d206661696c6564000000000000815250611904565b611676611b99565b604080518082019091528281526020810161169887878763ffffffff610db616565b905290505b949350505050565b6000600a8210156116bd57506030810160f81b610c3a565b5060570160f81b90565b60008315806116d4575082155b156116eb576116e4600083611a0b565b9050610b5e565b60006116fd858563ffffffff611a4d16565b90506117676117346001611728600261171c888463ffffffff6112d316565b9063ffffffff611a0b16565b9063ffffffff61131516565b611744838663ffffffff611aa116565b1015611751576000611754565b60015b60ff16611728838663ffffffff611a0b16565b95945050505050565b611778611b82565b5060408051808201909152815115815260208083015190820152919050565b600081848411156117d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b505050900390565b60009081526001919091016020526040902054151590565b606081611836575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610c3a565b8160005b811561184e57600101600a8204915061183a565b6060816040519080825280601f01601f19166020018201604052801561187b576020820181803883390190505b508593509050815b80156118fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106118c157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611883565b50949350505050565b600060608473ffffffffffffffffffffffffffffffffffffffff168460405161192d9190611fbb565b6000604051808303816000865af19150503d806000811461196a576040519150601f19603f3d011682016040523d82523d6000602084013e61196f565b606091505b50915091508183906119ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b508051156101a657808060200190516119ca9190810190611d80565b8390611a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b505050505050565b6000610b5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae3565b600082611a5c57506000610a07565b82820282848281611a6957fe5b0414610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c9061206e565b6000610b5e83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611b34565b60008183611b1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b506000838581611b2a57fe5b0495945050505050565b60008183611b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b50828481611b7957fe5b06949350505050565b604080518082019091526000808252602082015290565b6040518060400160405280611bac611b82565b8152602001611bb9611b82565b905290565b8035610a07816121e2565b8035610a07816121f9565b8051610a07816121f9565b8035610a0781612202565b600060808284031215611bfc57600080fd5b611c0660806120b3565b90506000611c148484611bc9565b8252506020611c2584848301611bdf565b6020830152506040611c3984828501611bdf565b6040830152506060611c4d84828501611d5f565b60608301525092915050565b60006101008284031215611c6c57600080fd5b611c7660806120b3565b90506000611c848484611bea565b8252506080611c9584848301611d18565b60208301525060c0611ca984828501611d5f565b60408301525060e0611c4d84828501611bbe565b600060608284031215611ccf57600080fd5b611cd960606120b3565b90506000611ce78484611d6a565b8252506020611cf884848301611d6a565b6020830152506040611d0c84828501611d75565b60408301525092915050565b600060408284031215611d2a57600080fd5b611d3460406120b3565b90506000611d428484611bbe565b8252506020611d5384848301611d5f565b60208301525092915050565b8035610a078161220f565b8035610a0781612218565b8035610a0781612221565b600060208284031215611d9257600080fd5b600061169d8484611bd4565b60008060006101808486031215611db457600080fd5b6000611dc08686611d5f565b9350506020611dd186828701611c59565b925050610120611de386828701611cbd565b9150509250925092565b611df6816120e7565b82525050565b611df6816120f2565b611df6611e11826120f7565b612141565b611df6611e118261211c565b611df6611e1182612141565b6000611e39826120da565b611e438185610c3a565b9350611e5381856020860161218e565b9290920192915050565b6000611e68826120da565b611e7281856120de565b9350611e8281856020860161218e565b611e8b816121ba565b9093019392505050565b6000611ea2601b836120de565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611edb6021836120de565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b80516080830190611f3e8482611f70565b506020820151610260604085018280516040830190611f5d8482611dfc565b5060208201516102606020850182611f94565b80516040830190611f818482611dfc565b5060208201516102606020850182611f9d565b611df681612157565b611df681612141565b6000611fb28284611e22565b50602001919050565b6000610b5e8284611e2e565b6000611fd38289611e2e565b9150611fdf8288611e16565b600282019150611fef8287611e2e565b9150611ffb8286611e16565b60028201915061200b8285611e2e565b91506120178284611e05565b506001019695505050505050565b606081016120338286611ded565b6120406020830185611ded565b61169d6040830184611f9d565b60208082528101610b5e8184611e5d565b60208082528101610a0781611e95565b60208082528101610a0781611ece565b60e0810161208c8287611f9d565b6120996020830186611f9d565b6120a66040830185611f2d565b61176760c0830184611ded565b60405181810167ffffffffffffffff811182821017156120d257600080fd5b604052919050565b5190565b90815260200190565b6000610a078261216c565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60005b838110156121a9578181015183820152602001612191565b838111156102605750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6121eb816120e7565b81146121f657600080fd5b50565b6121eb816120f2565b600281106121f657600080fd5b6121eb81612141565b6121eb81612144565b6121eb8161218556fea365627a7a72315820f6d5e40b85f1061e661d0d70752e15133690b16252359da9fae635fdb19b3e6e6c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063f3668ed01461003a575b600080fd5b81801561004657600080fd5b5061005a610055366004611d9e565b61005c565b005b60208201516100739084903363ffffffff6101ad16565b60608201516101229073ffffffffffffffffffffffffffffffffffffffff163314806100d6575082602001516000015173ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff16145b7f4465706f736974496d706c0000000000000000000000000000000000000000007f496e76616c6964206465706f73697420736f75726365000000000000000000008560600151610266565b61012a611b82565b610132611b82565b6020840151604085015185516101539288929091879063ffffffff61036516565b91509150610176846020015185604001518488610501909392919063ffffffff16565b61019b6101908560400151876109df90919063ffffffff16565b856060015183610a0d565b6101a6858583610a7b565b5050505050565b6000826000015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806101f857506101f8848363ffffffff610af616565b80610212575082516102129085908463ffffffff610b2516565b9050610260817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f7200000000000000000085610266565b50505050565b836102605761027483610b65565b7f3a2000000000000000000000000000000000000000000000000000000000000061029e84610b65565b7f203c0000000000000000000000000000000000000000000000000000000000006102c885610c3f565b6040516102fe9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611fc7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261035c9160040161204d565b60405180910390fd5b61036d611b82565b610375611b82565b61037d611b82565b61038e88888863ffffffff610db616565b9050836060015160001480156103b357506000846040015160018111156103b157fe5b145b156103cb57806103c1610e36565b92509250506104f7565b6103d3611b82565b6103dd8287610e56565b90506103e7611b82565b6103ef611b82565b60008760200151600181111561040157fe5b141561046d5750604080518082019091528651151581526060870151602082015260018760400151600181111561043457fe5b141561044d5761044a818463ffffffff610f0b16565b90505b610466610460848363ffffffff610f2016565b89610fb2565b91506104ef565b60405180604001604052808860000151151581526020016104918960600151611079565b6fffffffffffffffffffffffffffffffff16905291506000876040015160018111156104b957fe5b14156104d2576104cf848363ffffffff6110dc16565b91505b6104ec836104e0848b610e56565b9063ffffffff610f0b16565b90505b909450925050505b9550959350505050565b610509611b82565b61051a85858563ffffffff610db616565b90506105268183611201565b156105315750610260565b610539611b82565b610549868563ffffffff61127316565b8251909150156105b65761059a61059583602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff166112d390919063ffffffff16565b611079565b6fffffffffffffffffffffffffffffffff1660208201526105fb565b602082015181516105e691610595916fffffffffffffffffffffffffffffffff908116911663ffffffff6112d316565b6fffffffffffffffffffffffffffffffff1681525b8251156106605761064461059584602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1661131590919063ffffffff16565b6fffffffffffffffffffffffffffffffff1660208201526106a5565b6020830151815161069091610595916fffffffffffffffffffffffffffffffff908116911663ffffffff61131516565b6fffffffffffffffffffffffffffffffff1681525b6106ae82611354565b80156106be57506106be8361137e565b1561075b57845173ffffffffffffffffffffffffffffffffffffffff1660009081526003870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790556107ed565b6107648261137e565b8015610774575061077483611354565b156107ed57845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b6107f683611394565b8015610808575061080682611394565b155b1561085c57845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020610856906001018563ffffffff6113ae16565b506108c6565b61086583611394565b158015610876575061087682611394565b156108c657845173ffffffffffffffffffffffffffffffffffffffff166000908152600387016020908152604080832082890151845290915290206108c4906001018563ffffffff61149416565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090971696909617861693909317909255875173ffffffffffffffffffffffffffffffffffffffff1683526003808a018252828420898301518552825282842088855201815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b600081815260018301602052604090205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b610a66610a19826114de565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e73666572496e206e6567617469766500000000000084602001516114f5565b610a768383308460200151611557565b505050565b602080830151805191810151604085015173ffffffffffffffffffffffffffffffffffffffff909316927f2bad8bc95088af2c247b30fa2b2e6a0886f88625e0945cd3051008e0e270198f92610ad4908890838861166e565b8660600151604051610ae9949392919061207e565b60405180910390a2505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600591909101602052604090205460011490565b73ffffffffffffffffffffffffffffffffffffffff80831660009081526004850160209081526040808320938516835292905220546001145b9392505050565b60608082604051602001610b799190611fa6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610c225781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610be557fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610c1d5760010181529050610c3a565b610bac565b5060408051600080825260208201909252905b509150505b919050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610c8b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610ccc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610c355760028102610d17600f85166116a5565b838260290381518110610d2657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350610d68600f85166116a5565b838260280381518110610d7757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610cfe565b610dbe611b82565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526003938401602090815260408083209482015183529381528382209282529190930181529181902081518083019092525460ff81161515825261010090046fffffffffffffffffffffffffffffffff169181019190915290565b610e3e611b82565b50604080518082019091526000808252602082015290565b610e5e611b82565b602083015183516fffffffffffffffffffffffffffffffff9091169015610ecc57604080518082019091526001815260208481015190820190610ec19084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6116c716565b815250915050610a07565b604080518082019091526000815283516020820190610ec19084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6116c716565b610f13611b82565b610b5e83610f2084611770565b610f28611b82565b610f30611b82565b8251845115159015151415610f635783511515815260208085015190840151610f599190611315565b6020820152610b5e565b8260200151846020015110610f8c5783511515815260208085015190840151610f5991906112d3565b82511515815260208084015190850151610fa691906112d3565b60208201529392505050565b610fba611b82565b825115611032576040518060400160405280600115158152602001611017610595670de0b6b3a764000067ffffffffffffffff1686602001516dffffffffffffffffffffffffffff1688602001516116c79092919063ffffffff16565b6fffffffffffffffffffffffffffffffff1690529050610a07565b60408051808201909152600081528251602085810151908301916110179161059591670de0b6b3a7640000906dffffffffffffffffffffffffffff1663ffffffff6116c716565b600081610a076fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e7431323800000000000000000000846114f5565b6110e4611b82565b6110ec611b82565b825184511515901515141561114a578351151581526020808501519084015161112e91610595916fffffffffffffffffffffffffffffffff9182169116611315565b6fffffffffffffffffffffffffffffffff166020820152610b5e565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff16106111b0578351151581526020808501519084015161112e91610595916fffffffffffffffffffffffffffffffff91821691166112d3565b825115158152602080840151908501516111e391610595916fffffffffffffffffffffffffffffffff91821691166112d3565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16141561126a5760208301516fffffffffffffffffffffffffffffffff1661125a57506001610a07565b5080518251151590151514610a07565b50600092915050565b61127b611b82565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b6000610b5e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611797565b600082820183811015610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c9061205e565b600081602001516fffffffffffffffffffffffffffffffff16600014158015610a07575050511590565b600061138982611394565b80610a075750505190565b602001516fffffffffffffffffffffffffffffffff161590565b6000818152600183016020526040812054801561148a5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461144457600086600001828154811061140557fe5b906000526020600020015490508087600001848154811061142257fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061144f57fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a07565b6000915050610a07565b60006114a083836117dd565b6114d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a07565b506000610a07565b8051600090158015610a0757505060200151151590565b836102605761150383610b65565b7f3a2000000000000000000000000000000000000000000000000000000000000061152d84610b65565b7f203c0000000000000000000000000000000000000000000000000000000000006102c8856117f5565b80158061158f57508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561159957610260565b6040516102609085907f23b872dd00000000000000000000000000000000000000000000000000000000906115d690879087908790602401612025565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601a81526020017f546f6b656e3a207472616e7366657246726f6d206661696c6564000000000000815250611904565b611676611b99565b604080518082019091528281526020810161169887878763ffffffff610db616565b905290505b949350505050565b6000600a8210156116bd57506030810160f81b610c3a565b5060570160f81b90565b60008315806116d4575082155b156116eb576116e4600083611a0b565b9050610b5e565b60006116fd858563ffffffff611a4d16565b90506117676117346001611728600261171c888463ffffffff6112d316565b9063ffffffff611a0b16565b9063ffffffff61131516565b611744838663ffffffff611aa116565b1015611751576000611754565b60015b60ff16611728838663ffffffff611a0b16565b95945050505050565b611778611b82565b5060408051808201909152815115815260208083015190820152919050565b600081848411156117d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b505050900390565b60009081526001919091016020526040902054151590565b606081611836575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610c3a565b8160005b811561184e57600101600a8204915061183a565b6060816040519080825280601f01601f19166020018201604052801561187b576020820181803883390190505b508593509050815b80156118fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106118c157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611883565b50949350505050565b600060608473ffffffffffffffffffffffffffffffffffffffff168460405161192d9190611fbb565b6000604051808303816000865af19150503d806000811461196a576040519150601f19603f3d011682016040523d82523d6000602084013e61196f565b606091505b50915091508183906119ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b508051156101a657808060200190516119ca9190810190611d80565b8390611a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b505050505050565b6000610b5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae3565b600082611a5c57506000610a07565b82820282848281611a6957fe5b0414610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c9061206e565b6000610b5e83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611b34565b60008183611b1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b506000838581611b2a57fe5b0495945050505050565b60008183611b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c919061204d565b50828481611b7957fe5b06949350505050565b604080518082019091526000808252602082015290565b6040518060400160405280611bac611b82565b8152602001611bb9611b82565b905290565b8035610a07816121e2565b8035610a07816121f9565b8051610a07816121f9565b8035610a0781612202565b600060808284031215611bfc57600080fd5b611c0660806120b3565b90506000611c148484611bc9565b8252506020611c2584848301611bdf565b6020830152506040611c3984828501611bdf565b6040830152506060611c4d84828501611d5f565b60608301525092915050565b60006101008284031215611c6c57600080fd5b611c7660806120b3565b90506000611c848484611bea565b8252506080611c9584848301611d18565b60208301525060c0611ca984828501611d5f565b60408301525060e0611c4d84828501611bbe565b600060608284031215611ccf57600080fd5b611cd960606120b3565b90506000611ce78484611d6a565b8252506020611cf884848301611d6a565b6020830152506040611d0c84828501611d75565b60408301525092915050565b600060408284031215611d2a57600080fd5b611d3460406120b3565b90506000611d428484611bbe565b8252506020611d5384848301611d5f565b60208301525092915050565b8035610a078161220f565b8035610a0781612218565b8035610a0781612221565b600060208284031215611d9257600080fd5b600061169d8484611bd4565b60008060006101808486031215611db457600080fd5b6000611dc08686611d5f565b9350506020611dd186828701611c59565b925050610120611de386828701611cbd565b9150509250925092565b611df6816120e7565b82525050565b611df6816120f2565b611df6611e11826120f7565b612141565b611df6611e118261211c565b611df6611e1182612141565b6000611e39826120da565b611e438185610c3a565b9350611e5381856020860161218e565b9290920192915050565b6000611e68826120da565b611e7281856120de565b9350611e8281856020860161218e565b611e8b816121ba565b9093019392505050565b6000611ea2601b836120de565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611edb6021836120de565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b80516080830190611f3e8482611f70565b506020820151610260604085018280516040830190611f5d8482611dfc565b5060208201516102606020850182611f94565b80516040830190611f818482611dfc565b5060208201516102606020850182611f9d565b611df681612157565b611df681612141565b6000611fb28284611e22565b50602001919050565b6000610b5e8284611e2e565b6000611fd38289611e2e565b9150611fdf8288611e16565b600282019150611fef8287611e2e565b9150611ffb8286611e16565b60028201915061200b8285611e2e565b91506120178284611e05565b506001019695505050505050565b606081016120338286611ded565b6120406020830185611ded565b61169d6040830184611f9d565b60208082528101610b5e8184611e5d565b60208082528101610a0781611e95565b60208082528101610a0781611ece565b60e0810161208c8287611f9d565b6120996020830186611f9d565b6120a66040830185611f2d565b61176760c0830184611ded565b60405181810167ffffffffffffffff811182821017156120d257600080fd5b604052919050565b5190565b90815260200190565b6000610a078261216c565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60005b838110156121a9578181015183820152602001612191565b838111156102605750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6121eb816120e7565b81146121f657600080fd5b50565b6121eb816120f2565b600281106121f657600080fd5b6121eb81612141565b6121eb81612144565b6121eb8161218556fea365627a7a72315820f6d5e40b85f1061e661d0d70752e15133690b16252359da9fae635fdb19b3e6e6c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "975:1217:70:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "975:1217:70:-;;;;;;;;;;;;;;;;;;;;;;;;1185:1005;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1185:1005:70;;;;;;;;:::i;:::-;;;1376:12;;;;1352:49;;:5;;1390:10;1352:49;:23;:49;:::i;:::-;1438:9;;;;1412:173;;1438:23;;1451:10;1438:23;;:58;;;1478:4;:12;;;:18;;;1465:31;;:4;:9;;;:31;;;1438:58;1510:4;1412:173;1566:4;:9;;;1412:12;:173::i;:::-;1610:23;;:::i;:::-;1647:25;;:::i;:::-;1725:12;;;;1751:11;;;;1795;;1685:131;;:5;;1725:12;;1776:5;;1685:131;:26;:131;:::i;:::-;1596:220;;;;1827:93;1853:4;:12;;;1879:4;:11;;;1904:6;1827:5;:12;;:93;;;;;;:::i;:::-;1971:115;2004:27;2019:4;:11;;;2004:5;:14;;:27;;;;:::i;:::-;2045:4;:9;;;2068:8;1971:19;:115::i;:::-;2097:86;2128:5;2147:4;2165:8;2097:17;:86::i;:::-;1185:1005;;;;;:::o;20846:495:101:-;21023:20;21070:7;:13;;;21058:25;;:8;:25;;;:73;;;-1:-1:-1;21099:32:101;:5;21122:8;21099:32;:22;:32;:::i;:::-;21058:135;;;-1:-1:-1;21169:13:101;;21147:46;;:5;;21184:8;21147:46;:21;:46;:::i;:::-;21023:170;;21204:130;21230:15;21259:4;21204:130;21316:8;21204:12;:130::i;:::-;20846:495;;;;:::o;2962:561:99:-;3122:4;3117:400;;3236:24;3255:4;3236:18;:24::i;:::-;3286:5;3317:26;3336:6;3317:18;:26::i;:::-;3369:6;3401:19;3411:8;3401:9;:19::i;:::-;3194:280;;;;;;;;;3446:6;;3194:280;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;3194:280:99;;;;3142:364;;;;;;;;;;;;;;;;;22851:1432:101;23112:16;;:::i;:::-;23130;;:::i;:::-;23162:23;;:::i;:::-;23188:31;:5;23201:7;23210:8;23188:31;:12;:31;:::i;:::-;23162:57;;23234:6;:12;;;23250:1;23234:17;:61;;;;-1:-1:-1;23269:26:101;23255:6;:10;;;:40;;;;;;;;;23234:61;23230:124;;;23319:6;23327:15;:13;:15::i;:::-;23311:32;;;;;;;23230:124;23364:23;;:::i;:::-;23390:32;23408:6;23416:5;23390:17;:32::i;:::-;23364:58;;23432:23;;:::i;:::-;23465:25;;:::i;:::-;23528:27;23505:6;:19;;;:50;;;;;;;;;23501:740;;;-1:-1:-1;23582:97:101;;;;;;;;;23616:11;;23582:97;;;;23652:12;;;;23582:97;;;;23711:27;23697:6;:10;;;:41;;;;;;;;;23693:111;;;23769:20;:8;23782:6;23769:20;:12;:20;:::i;:::-;23758:31;;23693:111;23826:46;23844:20;:6;23855:8;23844:20;:10;:20;:::i;:::-;23866:5;23826:17;:46::i;:::-;23817:55;;23501:740;;;23937:105;;;;;;;;23971:6;:11;;;23937:105;;;;;;24007:20;:6;:12;;;:18;:20::i;:::-;23937:105;;;;23928:114;-1:-1:-1;24074:26:101;24060:6;:10;;;:40;;;;;;;;;24056:106;;;24129:18;:6;24140;24129:18;:10;:18;:::i;:::-;24120:27;;24056:106;24186:44;24223:6;24186:32;24204:6;24212:5;24186:17;:32::i;:::-;:36;:44;:36;:44;:::i;:::-;24175:55;;23501:740;24259:6;;-1:-1:-1;24267:8:101;-1:-1:-1;;;22851:1432:101;;;;;;;;;:::o;28148:2057::-;28334:23;;:::i;:::-;28360:31;:5;28373:7;28382:8;28360:31;:12;:31;:::i;:::-;28334:57;;28406:28;28419:6;28427;28406:12;:28::i;:::-;28402:96;;;28481:7;;;28402:96;28534:30;;:::i;:::-;28567:27;:5;28585:8;28567:27;:17;:27;:::i;:::-;28637:11;;28534:60;;-1:-1:-1;28633:209:101;;;28682:50;:42;28711:6;:12;;;28682:42;;28690:8;:15;;;28682:24;;:28;;:42;;;;:::i;:::-;:48;:50::i;:::-;28664:68;;:15;;;:68;28633:209;;;28810:12;;;;28789:15;;28781:50;;:42;;;:24;;;;:42;;:28;:42;:::i;:50::-;28763:68;;;;28633:209;28887:11;;28883:209;;;28932:50;:42;28961:6;:12;;;28932:42;;28940:8;:15;;;28932:24;;:28;;:42;;;;:::i;:50::-;28914:68;;:15;;;:68;28883:209;;;29060:12;;;;29039:15;;29031:50;;:42;;;:24;;;;:42;;:28;:42;:::i;:50::-;29013:68;;;;28883:209;29106:23;:6;:21;:23::i;:::-;:62;;;;;29133:35;:6;:33;:35::i;:::-;29102:464;;;29263:13;;29248:29;;;;;;:14;;;:29;;;;;;;;29278:14;;;;29248:45;;;;;;;:74;;;;;;;;;;;;;;;;;;;;;;;29102:464;;;29343:35;:6;:33;:35::i;:::-;:62;;;;;29382:23;:6;:21;:23::i;:::-;29339:227;;;29496:13;;29481:29;;;;;;:14;;;:29;;;;;;;;29511:14;;;;29481:45;;;;;;;:74;;;;;;;;;29554:1;29481:74;;;;;;;;;;;;29339:227;29580:15;:6;:13;:15::i;:::-;:37;;;;;29601:15;:6;:13;:15::i;:::-;29600:16;29580:37;29576:486;;;29738:13;;29723:29;;;;;;:14;;;:29;;;;;;;;29753:14;;;;29723:45;;;;;;;:91;;:74;;29805:8;29723:91;:81;:91;:::i;:::-;;29576:486;;;29837:15;:6;:13;:15::i;:::-;29836:16;29835:37;;;;;29857:15;:6;:13;:15::i;:::-;29831:231;;;29978:13;;29963:29;;;;;;:14;;;:29;;;;;;;;29993:14;;;;29963:45;;;;;;;:88;;:74;;30042:8;29963:88;:78;:88;:::i;:::-;;29831:231;30072:23;;;;:13;;;;:23;;;;;;;;:43;;:32;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30140:13;;30125:29;;;;:14;;;;:29;;;;;30155:14;;;;30125:45;;;;;;;:64;;;:54;:64;;;;:73;;;;;;;;;;;30072:43;30125:73;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28148:2057:101;;;;:::o;9848:200::-;9982:7;10012:23;;;:13;;;:23;;;;;:29;;;9848:200;;;;;:::o;1587:421:96:-;1724:146;1751:21;:8;:19;:21::i;:::-;1750:22;1786:4;1724:146;1846:8;:14;;;1724:12;:146::i;:::-;1881:120;1913:5;1932:4;1958;1977:8;:14;;;1881:18;:120::i;:::-;1587:421;;;:::o;4910:467:94:-;5109:12;;;;;:18;;5141:19;;;;5174:11;;;;5085:285;;;;;;;5199:138;;5233:5;;5174:11;5315:8;5199:16;:138::i;:::-;5351:4;:9;;;5085:285;;;;;;;;;;;;;;;;;;4910:467;;;:::o;19797:212:101:-;19966:31;;19939:4;19966:31;;;:21;;;;;:31;;;;;;20001:1;19966:36;;19797:212::o;20243:235::-;20434:22;;;;20407:4;20434:22;;;:15;;;:22;;;;;;;;:32;;;;;;;;;;20470:1;20434:37;20243:235;;;;;;:::o;6359:968:99:-;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;6864:3;;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;7308:12:99;;;7318:1;7308:12;;;;;;;;;;;;7301:19;;;6359:968;;;;:::o;8252:958::-;8524:13;;;8534:2;8524:13;;;8346:12;8524:13;;;;;;8386:14;;;;8346:12;;8524:13;;;21:6:-1;;104:10;8524:13:99;87:34:-1;135:17;;-1:-1;8524:13:99;8502:35;;902:2;8601:23;;8589:6;8596:1;8589:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8646:27;;8634:6;8641:1;8634:9;;;;;;;;;;;:39;;;;;;;;;;;8787:9;8782:398;8802:2;8798:1;:6;8782:398;;;8891:1;8887:5;;8984:23;1232:3;8989:17;;8984:4;:23::i;:::-;8963:6;8975:5;8970:2;:10;8963:18;;;;;;;;;;;:44;;;;;;;;;;;9030:1;9025;:6;;9021:10;;9122:23;1232:3;9127:1;:17;9122:4;:23::i;:::-;9101:6;9113:5;9108:2;:10;9101:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9168:1:99;9163:6;;;;;8806:3;;8782:398;;12006:279:101;12175:16;;:::i;:::-;-1:-1:-1;12229:13:101;;12214:29;;;;;;:14;;;;:29;;;;;;;;12244:14;;;;12214:45;;;;;;;;:64;;;:54;;;;:64;;;;;;12207:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12006:279::o;4503:168:104:-;4569:10;;:::i;:::-;-1:-1:-1;4602:62:104;;;;;;;;;-1:-1:-1;4602:62:104;;;;;;;4503:168;:::o;4250:567:97:-;4381:16;;:::i;:::-;4442:11;;;;4468:10;;4434:20;;;;;4464:347;;;4501:130;;;;;;;;;4535:4;4501:130;;;4597:12;;;;4501:130;;;;4564:52;;:10;;:52;;1250:6;4564:52;:32;:52;:::i;:::-;4501:130;;;4494:137;;;;;4464:347;4669:131;;;;;;;;;-1:-1:-1;4669:131:97;;4766:12;;4669:131;;;;4733:52;;:10;;:52;;1250:6;4733:52;:32;:52;:::i;4677:169:104:-;4787:10;;:::i;:::-;4820:19;4824:1;4827:11;4836:1;4827:8;:11::i;:::-;4962:10;;:::i;:::-;4988:17;;:::i;:::-;5029:6;;5019;;:16;;;;;;5015:418;;;5065:6;;5051:20;;;;5113:7;;;;;5122;;;;5100:30;;5113:7;5100:12;:30::i;:::-;5085:12;;;:45;5015:418;;;5176:1;:7;;;5165:1;:7;;;:18;5161:262;;5217:6;;5203:20;;;;5269:7;;;;;5278;;;;5256:30;;5269:7;5256:12;:30::i;5161:262::-;5339:6;;5325:20;;;;5391:7;;;;;5400;;;;5378:30;;5391:7;5378:12;:30::i;:::-;5363:12;;;:45;5449:6;4852:610;-1:-1:-1;;;4852:610:104:o;4906:534:97:-;5037:16;;:::i;:::-;5073:10;;5069:365;;;5106:139;;;;;;;;5140:4;5106:139;;;;;;5169:61;:53;1250:6;5169:53;;5209:5;:12;;;5169:53;;:5;:11;;;:33;;:53;;;;;:::i;:61::-;5106:139;;;;5099:146;-1:-1:-1;5099:146:97;;5069:365;5283:140;;;;;;;;;-1:-1:-1;5283:140:97;;5387:12;;5283:140;5347:11;;;;5283:140;;;;5347:61;;:53;;1250:6;;5347:53;;;:33;:53;:::i;2811:315:92:-;2903:7;2951:6;2968:128;2994:16;;;;;3024:4;2968:128;2951:6;2968:12;:128::i;2288:634:104:-;2398:10;;:::i;:::-;2424:17;;:::i;:::-;2465:6;;2455;;:16;;;;;;2451:442;;;2501:6;;2487:20;;;;2549:7;;;;;2558;;;;2536:38;;:30;;;;;;;;:12;:30::i;:38::-;2521:53;;:12;;;:53;2451:442;;;2620:1;:7;;;2609:18;;:1;:7;;;:18;;;2605:278;;2661:6;;2647:20;;;;2713:7;;;;;2722;;;;2700:38;;:30;;;;;;;;:12;:30::i;2605:278::-;2791:6;;2777:20;;;;2843:7;;;;;2852;;;;2830:38;;:30;;;;;;;;:12;:30::i;:38::-;2815:53;;:12;;;:53;:12;2288:634;-1:-1:-1;;;2288:634:104:o;2928:308::-;3041:4;3076:1;:7;;;3065:18;;:1;:7;;;:18;;;3061:147;;;3103:7;;;;:12;;3099:62;;-1:-1:-1;3142:4:104;3135:11;;3099:62;-1:-1:-1;3191:6:104;;3181;;:16;;;;;;3174:23;;3061:147;-1:-1:-1;3224:5:104;2928:308;;;;:::o;10054:220:101:-;10191:21;;:::i;:::-;-1:-1:-1;10235:23:101;;;;:13;;;;:23;;;;;;;;;10228:39;;;;;;;;10235:32;;;10228:39;;;;;;;;;;;;;;;;10054:220;;;;:::o;1274:134:150:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;3909:156:104;4008:4;4035:1;:7;;;:12;;4046:1;4035:12;;:23;;;;-1:-1:-1;;4052:6:104;4051:7;;3909:156::o;4071:164::-;4182:4;4209:9;4216:1;4209:6;:9::i;:::-;:19;;;-1:-1:-1;;4222:6:104;;4071:164::o;3766:137::-;3884:7;;;:12;;;;3766:137::o;1656:1437:93:-;1722:4;1859:27;;;:20;;;:27;;;;;;1901:15;;1897:1190;;2342:18;;2294:14;;;;;2342:22;2383:26;;;2379:406;;2429:17;2449:3;:11;;2461:9;2449:22;;;;;;;;;;;;;;;;2429:42;;2600:9;2571:3;:11;;2583:13;2571:26;;;;;;;;;;;;;;;;;;;:38;;;;2683:31;;;:20;;;:31;;;;;:44;;;2379:406;2888:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;2980:3;:20;;:27;3001:5;2980:27;;;;;;;;;;;2973:34;;;3029:4;3022:11;;;;;;;1897:1190;3071:5;3064:12;;;;;1084:411;1147:4;1168:20;1177:3;1182:5;1168:8;:20::i;:::-;1163:326;;-1:-1:-1;27:10;;39:1;23:18;;;45:23;;1204:11:93;:23;;;;;;;;;;;;;1392:18;;1362:27;;;:20;;;:27;;;;;;:48;;;;1424:11;;1163:326;-1:-1:-1;1473:5:93;1466:12;;5991:152:104;6114:6;;6086:4;;6113:7;:23;;;;-1:-1:-1;;6124:7:104;;;:12;;;5991:152::o;1726:561:99:-;1886:4;1881:400;;2000:24;2019:4;2000:18;:24::i;:::-;2050:5;2081:26;2100:6;2081:18;:26::i;:::-;2133:6;2165:19;2175:8;2165:9;:19::i;1465:493:103:-;1617:11;;;:25;;;1638:4;1632:10;;:2;:10;;;1617:25;1613:62;;;1658:7;;1613:62;1776:85;;1724:189;;1757:5;;1799:43;;1776:85;;1844:4;;1850:2;;1854:6;;1776:85;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1776:85:103;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1776:85:103;1724:189;;;;;;;;;;;;;;;;;:19;:189::i;11979:369:94:-;12190:20;;:::i;:::-;12233:108;;;;;;;;;;;;;;;12301:29;:5;12314:7;12323:6;12301:29;:12;:29;:::i;:::-;12233:108;;12226:115;-1:-1:-1;11979:369:94;;;;;;;:::o;10178:325:99:-;10267:4;10335:2;10327:5;:10;10323:79;;;-1:-1:-1;902:2:99;10371:18;;10360:31;;10353:38;;10323:79;-1:-1:-1;956:2:99;10467:27;10456:40;;;10178:325::o;2081:724:92:-;2245:7;2272:11;;;:29;;-1:-1:-1;2287:14:92;;2272:29;2268:151;;;2380:28;2393:1;2396:11;2380:12;:28::i;:::-;2373:35;;;;2268:151;2428:11;2442:21;:6;2453:9;2442:21;:10;:21;:::i;:::-;2428:35;-1:-1:-1;2702:96:92;2757:32;2787:1;2757:25;2780:1;2757:18;:11;2787:1;2757:18;:15;:18;:::i;:::-;:22;:25;:22;:25;:::i;:::-;:29;:32;:29;:32;:::i;:::-;2730:23;:6;2741:11;2730:23;:10;:23;:::i;:::-;:59;;:67;;2796:1;2730:67;;;2792:1;2730:67;2702:96;;:23;:6;2713:11;2702:23;:10;:23;:::i;:96::-;2695:103;2081:724;-1:-1:-1;;;;;2081:724:92:o;5782:203:104:-;5875:10;;:::i;:::-;-1:-1:-1;5908:70:104;;;;;;;;;5933:6;;5932:7;5908:70;;;5960:7;;;;5908:70;;;;5782:203;;;:::o;1732:187:150:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:150;;;1732:187::o;3174:135:93:-;3247:4;3270:27;;;:20;;;;;:27;;;;;;:32;;;3174:135::o;7333:913:99:-;7427:12;7459:10;7455:51;;-1:-1:-1;7485:10:99;;;;;;;;;;;;;;;;;;;7455:51;7567:5;7555:9;7606:69;7613:6;;7606:69;;7635:8;;7662:2;7657:7;;;;7606:69;;;7716:17;7746:6;7736:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7736:17:99;87:34:-1;135:17;;-1:-1;7736:17:99;-1:-1:-1;7845:5:99;;-1:-1:-1;7716:37:99;-1:-1:-1;7877:6:99;7860:358;7885:6;;7860:358;;8039:3;;8135:2;8131:1;:6;902:2;8117:21;8106:34;;8096:4;8101:1;8096:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8205:2:99;8200:7;;;;7860:358;;;-1:-1:-1;8235:4:99;7333:913;-1:-1:-1;;;;7333:913:99:o;2016:898:103:-;2669:12;2683:23;2710:5;:10;;2721:4;2710:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2668:58:103;;;;2744:7;2753:5;2736:23;;;;;;;;;;;;;;;;-1:-1:-1;2774:17:103;;:22;2770:138;;2870:10;2859:30;;;;;;;;;;;;;;2891:5;2851:46;;;;;;;;;;;;;;;;;2016:898;;;;;:::o;3073:130:150:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;2159:459::-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:150;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;;;;;;;;;;4500:128;4558:7;4584:37;4588:1;4591;4584:37;;;;;;;;;;;;;;;;;:3;:37::i;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:150:o;5132:163::-;5218:7;5253:12;5245:6;5237:29;;;;;;;;;;;;;;;;5287:1;5283;:5;;;;;;;5132:163;-1:-1:-1;;;;5132:163:150:o;975:1217:70:-;;;;;;;;;;-1:-1:-1;975:1217:70;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:124;206:20;;231:30;206:20;231:30;;273:128;348:13;;366:30;348:13;366:30;;408:176;498:20;;523:56;498:20;523:56;;799:804;;914:4;902:9;897:3;893:19;889:30;886:2;;;932:1;929;922:12;886:2;950:20;965:4;950:20;;;941:29;-1:-1;1020:1;1052:46;1094:3;1074:9;1052:46;;;1027:72;;-1:-1;1168:2;1201:72;1269:3;1245:22;;;1201:72;;;1194:4;1187:5;1183:16;1176:98;1120:165;1334:2;1367:69;1432:3;1423:6;1412:9;1408:22;1367:69;;;1360:4;1353:5;1349:16;1342:95;1295:153;1499:2;1532:49;1577:3;1568:6;1557:9;1553:22;1532:49;;;1525:4;1518:5;1514:16;1507:75;1458:135;880:723;;;;;1643:817;;1762:6;1750:9;1745:3;1741:19;1737:32;1734:2;;;1782:1;1779;1772:12;1734:2;1800:20;1815:4;1800:20;;;1791:29;-1:-1;1872:1;1904:75;1975:3;1955:9;1904:75;;;1879:101;;-1:-1;2044:3;2078:68;2142:3;2118:22;;;2078:68;;;2071:4;2064:5;2060:16;2053:94;2001:157;2210:3;2244:49;2289:3;2280:6;2269:9;2265:22;2244:49;;;2237:4;2230:5;2226:16;2219:75;2168:137;2355:3;2389:49;2434:3;2425:6;2414:9;2410:22;2389:49;;2495:619;;2608:4;2596:9;2591:3;2587:19;2583:30;2580:2;;;2626:1;2623;2616:12;2580:2;2644:20;2659:4;2644:20;;;2635:29;-1:-1;2716:1;2748:49;2793:3;2773:9;2748:49;;;2723:75;;-1:-1;2861:2;2894:49;2939:3;2915:22;;;2894:49;;;2887:4;2880:5;2876:16;2869:75;2819:136;3011:2;3044:48;3088:3;3079:6;3068:9;3064:22;3044:48;;;3037:4;3030:5;3026:16;3019:74;2965:139;2574:540;;;;;3147:464;;3255:4;3243:9;3238:3;3234:19;3230:30;3227:2;;;3273:1;3270;3263:12;3227:2;3291:20;3306:4;3291:20;;;3282:29;-1:-1;3362:1;3394:49;3439:3;3419:9;3394:49;;;3369:75;;-1:-1;3507:2;3540:49;3585:3;3561:22;;;3540:49;;;3533:4;3526:5;3522:16;3515:75;3465:136;3221:390;;;;;3618:180;3710:20;;3735:58;3710:20;3735:58;;3805:130;3872:20;;3897:33;3872:20;3897:33;;4079:128;4145:20;;4170:32;4145:20;4170:32;;4214:257;;4326:2;4314:9;4305:7;4301:23;4297:32;4294:2;;;4342:1;4339;4332:12;4294:2;4377:1;4394:61;4447:7;4427:9;4394:61;;4478:651;;;;4695:3;4683:9;4674:7;4670:23;4666:33;4663:2;;;4712:1;4709;4702:12;4663:2;4747:1;4764:78;4834:7;4814:9;4764:78;;;4754:88;;4726:122;4879:2;4897:83;4972:7;4963:6;4952:9;4948:22;4897:83;;;4887:93;;4858:128;5017:3;5036:77;5105:7;5096:6;5085:9;5081:22;5036:77;;;5026:87;;4996:123;4657:472;;;;;;5136:113;5219:24;5237:5;5219:24;;;5214:3;5207:37;5201:48;;;5256:94;5323:21;5338:5;5323:21;;5357:148;5456:43;5475:23;5492:5;5475:23;;;5456:43;;5512:148;5611:43;5630:23;5647:5;5630:23;;5667:152;5768:45;5788:24;5806:5;5788:24;;5826:356;;5954:38;5986:5;5954:38;;;6004:88;6085:6;6080:3;6004:88;;;5997:95;;6097:52;6142:6;6137:3;6130:4;6123:5;6119:16;6097:52;;;6161:16;;;;;5934:248;-1:-1;;5934:248;6189:347;;6301:39;6334:5;6301:39;;;6352:71;6416:6;6411:3;6352:71;;;6345:78;;6428:52;6473:6;6468:3;6461:4;6454:5;6450:16;6428:52;;;6501:29;6523:6;6501:29;;;6492:39;;;;6281:255;-1:-1;;;6281:255;6544:327;;6704:67;6768:2;6763:3;6704:67;;;6804:29;6784:50;;6862:2;6853:12;;6690:181;-1:-1;;6690:181;6880:370;;7040:67;7104:2;7099:3;7040:67;;;7140:34;7120:55;;7209:3;7204:2;7195:12;;7188:25;7241:2;7232:12;;7026:224;-1:-1;;7026:224;7323:576;7550:23;;7480:4;7471:14;;;7579:103;7475:3;7550:23;7579:103;;;7500:188;7763:4;7756:5;7752:16;7746:23;7775:103;7872:4;7867:3;7863:14;7849:12;8138:23;;8072:4;8063:14;;;8167:57;8067:3;8138:23;8167:57;;;8092:138;8304:4;8297:5;8293:16;8287:23;8316:63;8373:4;8368:3;8364:14;8350:12;8316:63;;8450:451;8639:23;;8573:4;8564:14;;;8668:57;8568:3;8639:23;8668:57;;;8593:138;8805:4;8798:5;8794:16;8788:23;8817:63;8874:4;8869:3;8865:14;8851:12;8817:63;;8908:103;8981:24;8999:5;8981:24;;9018:103;9091:24;9109:5;9091:24;;9248:244;;9367:75;9438:3;9429:6;9367:75;;;-1:-1;9464:2;9455:12;;9355:137;-1:-1;9355:137;9499:262;;9643:93;9732:3;9723:6;9643:93;;9768:978;;10082:93;10171:3;10162:6;10082:93;;;10075:100;;10186:73;10255:3;10246:6;10186:73;;;10281:1;10276:3;10272:11;10265:18;;10301:93;10390:3;10381:6;10301:93;;;10294:100;;10405:73;10474:3;10465:6;10405:73;;;10500:1;10495:3;10491:11;10484:18;;10520:93;10609:3;10600:6;10520:93;;;10513:100;;10624:73;10693:3;10684:6;10624:73;;;-1:-1;10719:1;10710:11;;10063:683;-1:-1;;;;;;10063:683;10753:435;10927:2;10912:18;;10941:71;10916:9;10985:6;10941:71;;;11023:72;11091:2;11080:9;11076:18;11067:6;11023:72;;;11106;11174:2;11163:9;11159:18;11150:6;11106:72;;11195:301;11333:2;11347:47;;;11318:18;;11408:78;11318:18;11472:6;11408:78;;11503:407;11694:2;11708:47;;;11679:18;;11769:131;11679:18;11769:131;;11917:407;12108:2;12122:47;;;12093:18;;12183:131;12093:18;12183:131;;12331:676;12597:3;12582:19;;12612:71;12586:9;12656:6;12612:71;;;12694:72;12762:2;12751:9;12747:18;12738:6;12694:72;;;12777:136;12909:2;12898:9;12894:18;12885:6;12777:136;;;12924:73;12992:3;12981:9;12977:19;12968:6;12924:73;;13014:256;13076:2;13070:9;13102:17;;;13177:18;13162:34;;13198:22;;;13159:62;13156:2;;;13234:1;13231;13224:12;13156:2;13250;13243:22;13054:216;;-1:-1;13054:216;13277:121;13364:12;;13335:63;13688:163;13791:19;;;13840:4;13831:14;;13784:67;13859:91;;13921:24;13939:5;13921:24;;13957:85;14023:13;14016:21;;13999:43;14049:144;14121:66;14110:78;;14093:100;14200:144;14272:66;14261:78;;14244:100;14351:72;14413:5;14396:27;14534:109;14607:30;14596:42;;14579:64;14650:113;14723:34;14712:46;;14695:68;14770:121;14843:42;14832:54;;14815:76;14977:88;15049:10;15038:22;;15021:44;15073:268;15138:1;15145:101;15159:6;15156:1;15153:13;15145:101;;;15226:11;;;15220:18;15207:11;;;15200:39;15181:2;15174:10;15145:101;;;15261:6;15258:1;15255:13;15252:2;;;-1:-1;;15326:1;15308:16;;15301:27;15122:219;15590:97;15678:2;15658:14;15674:7;15654:28;;15638:49;15695:117;15764:24;15782:5;15764:24;;;15757:5;15754:35;15744:2;;15803:1;15800;15793:12;15744:2;15738:74;;15819:111;15885:21;15900:5;15885:21;;15937:117;16029:1;16022:5;16019:12;16009:2;;16045:1;16042;16035:12;16182:167;16276:49;16319:5;16276:49;;16356:117;16425:24;16443:5;16425:24;;16604:115;16672:23;16689:5;16672:23;",
  "source": "/*\n\n    Copyright 2021 Dolomite\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { Actions } from \"../lib/Actions.sol\";\nimport { Events } from \"../lib/Events.sol\";\nimport { Exchange } from \"../lib/Exchange.sol\";\nimport { Interest } from \"../lib/Interest.sol\";\nimport { Require } from \"../lib/Require.sol\";\nimport { Storage } from \"../lib/Storage.sol\";\nimport { Types } from \"../lib/Types.sol\";\n\n\nlibrary DepositImpl {\n    using Storage for Storage.State;\n\n    // ============ Constants ============\n\n    bytes32 private constant FILE = \"DepositImpl\";\n\n    // ============ Account Actions ============\n\n    function deposit(\n        Storage.State storage state,\n        Actions.DepositArgs memory args,\n        Interest.Index memory index\n    )\n        public\n    {\n        state.requireIsOperator(args.account, msg.sender);\n\n        Require.that(\n            args.from == msg.sender || args.from == args.account.owner,\n            FILE,\n            \"Invalid deposit source\",\n            args.from\n        );\n\n        (\n            Types.Par memory newPar,\n            Types.Wei memory deltaWei\n        ) = state.getNewParAndDeltaWei(\n            args.account,\n            args.market,\n            index,\n            args.amount\n        );\n\n        state.setPar(\n            args.account,\n            args.market,\n            newPar\n        );\n\n        // requires a positive deltaWei\n        Exchange.transferIn(\n            state.getToken(args.market),\n            args.from,\n            deltaWei\n        );\n\n        Events.logDeposit(\n            state,\n            args,\n            deltaWei\n        );\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol",
    "exportedSymbols": {
      "DepositImpl": [
        19718
      ]
    },
    "id": 19719,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 19608,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "594:23:70"
      },
      {
        "id": 19609,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "618:33:70"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../lib/Actions.sol",
        "id": 19611,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 25370,
        "src": "653:45:70",
        "symbolAliases": [
          {
            "foreign": 19610,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol",
        "file": "../lib/Events.sol",
        "id": 19613,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 27154,
        "src": "699:43:70",
        "symbolAliases": [
          {
            "foreign": 19612,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol",
        "file": "../lib/Exchange.sol",
        "id": 19615,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 27435,
        "src": "743:47:70",
        "symbolAliases": [
          {
            "foreign": 19614,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../lib/Interest.sol",
        "id": 19617,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 27751,
        "src": "791:47:70",
        "symbolAliases": [
          {
            "foreign": 19616,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../lib/Require.sol",
        "id": 19619,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 28453,
        "src": "839:45:70",
        "symbolAliases": [
          {
            "foreign": 19618,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "../lib/Storage.sol",
        "id": 19621,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 30712,
        "src": "885:45:70",
        "symbolAliases": [
          {
            "foreign": 19620,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../lib/Types.sol",
        "id": 19623,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 31362,
        "src": "931:41:70",
        "symbolAliases": [
          {
            "foreign": 19622,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19718,
        "linearizedBaseContracts": [
          19718
        ],
        "name": "DepositImpl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 19626,
            "libraryName": {
              "contractScope": null,
              "id": 19624,
              "name": "Storage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 30711,
              "src": "1007:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Storage_$30711",
                "typeString": "library Storage"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1001:32:70",
            "typeName": {
              "contractScope": null,
              "id": 19625,
              "name": "Storage.State",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28760,
              "src": "1019:13:70",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                "typeString": "struct Storage.State"
              }
            }
          },
          {
            "constant": true,
            "id": 19629,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 19718,
            "src": "1083:45:70",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 19627,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1083:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4465706f736974496d706c",
              "id": 19628,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1115:13:70",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ee0c8654eebe43e7e0858bedba858db458826ed0f9e555e645fdfbff1cfca302",
                "typeString": "literal_string \"DepositImpl\""
              },
              "value": "DepositImpl"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 19716,
              "nodeType": "Block",
              "src": "1342:848:70",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19641,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1376:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19642,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "account",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24934,
                        "src": "1376:12:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19643,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "1390:3:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 19644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1390:10:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19638,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "1352:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 19640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "requireIsOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29699,
                      "src": "1352:23:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_address_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,address) view"
                      }
                    },
                    "id": 19645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1352:49:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19646,
                  "nodeType": "ExpressionStatement",
                  "src": "1352:49:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 19661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19650,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19633,
                              "src": "1438:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                "typeString": "struct Actions.DepositArgs memory"
                              }
                            },
                            "id": 19651,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "from",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24938,
                            "src": "1438:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19652,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "1451:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 19653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1451:10:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1438:23:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19655,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19633,
                              "src": "1465:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                "typeString": "struct Actions.DepositArgs memory"
                              }
                            },
                            "id": 19656,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "from",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24938,
                            "src": "1465:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19657,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19633,
                                "src": "1478:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                  "typeString": "struct Actions.DepositArgs memory"
                                }
                              },
                              "id": 19658,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "account",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24934,
                              "src": "1478:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            "id": 19659,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24848,
                            "src": "1478:18:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1465:31:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1438:58:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19662,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19629,
                        "src": "1510:4:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c6964206465706f73697420736f75726365",
                        "id": 19663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1528:24:70",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_46073caca4049cb3f26a16d106ded795f78f6fae2e15aa8103181dd9430b0df9",
                          "typeString": "literal_string \"Invalid deposit source\""
                        },
                        "value": "Invalid deposit source"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19664,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1566:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19665,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "from",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24938,
                        "src": "1566:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_46073caca4049cb3f26a16d106ded795f78f6fae2e15aa8103181dd9430b0df9",
                          "typeString": "literal_string \"Invalid deposit source\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19647,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1412:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 19649,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1412:12:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 19666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1412:173:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19667,
                  "nodeType": "ExpressionStatement",
                  "src": "1412:173:70"
                },
                {
                  "assignments": [
                    19671,
                    19673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19671,
                      "name": "newPar",
                      "nodeType": "VariableDeclaration",
                      "scope": 19716,
                      "src": "1610:23:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                        "typeString": "struct Types.Par"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19670,
                        "name": "Types.Par",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 30890,
                        "src": "1610:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                          "typeString": "struct Types.Par"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19673,
                      "name": "deltaWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 19716,
                      "src": "1647:25:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19672,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "1647:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19684,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19676,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1725:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19677,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "account",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24934,
                        "src": "1725:12:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19678,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1751:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19679,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "market",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24936,
                        "src": "1751:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19680,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19635,
                        "src": "1776:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19681,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1795:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19682,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24932,
                        "src": "1795:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19674,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "1685:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 19675,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNewParAndDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29953,
                      "src": "1685:26:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.AssetAmount memory) view returns (struct Types.Par memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 19683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1685:131:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(struct Types.Par memory,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1596:220:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19688,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1853:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19689,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "account",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24934,
                        "src": "1853:12:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19690,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1879:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19691,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "market",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24936,
                        "src": "1879:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19692,
                        "name": "newPar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19671,
                        "src": "1904:6:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19685,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "1827:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 19687,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPar",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30502,
                      "src": "1827:12:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                      }
                    },
                    "id": 19693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1827:93:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19694,
                  "nodeType": "ExpressionStatement",
                  "src": "1827:93:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19700,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19633,
                              "src": "2019:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                "typeString": "struct Actions.DepositArgs memory"
                              }
                            },
                            "id": 19701,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "market",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24936,
                            "src": "2019:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 19698,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19631,
                            "src": "2004:5:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                              "typeString": "struct Storage.State storage pointer"
                            }
                          },
                          "id": 19699,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getToken",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28776,
                          "src": "2004:14:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                            "typeString": "function (struct Storage.State storage pointer,uint256) view returns (address)"
                          }
                        },
                        "id": 19702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2004:27:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19703,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "2045:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19704,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "from",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24938,
                        "src": "2045:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19705,
                        "name": "deltaWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19673,
                        "src": "2068:8:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19695,
                        "name": "Exchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27434,
                        "src": "1971:8:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Exchange_$27434_$",
                          "typeString": "type(library Exchange)"
                        }
                      },
                      "id": 19697,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferIn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27301,
                      "src": "1971:19:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,struct Types.Wei memory)"
                      }
                    },
                    "id": 19706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1971:115:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19707,
                  "nodeType": "ExpressionStatement",
                  "src": "1971:115:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19711,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "2128:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19712,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19633,
                        "src": "2147:4:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                          "typeString": "struct Actions.DepositArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19713,
                        "name": "deltaWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19673,
                        "src": "2165:8:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                          "typeString": "struct Actions.DepositArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19708,
                        "name": "Events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27153,
                        "src": "2097:6:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                          "typeString": "type(library Events)"
                        }
                      },
                      "id": 19710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26703,
                      "src": "2097:17:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_DepositArgs_$24939_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.DepositArgs memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 19714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2097:86:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19715,
                  "nodeType": "ExpressionStatement",
                  "src": "2097:86:70"
                }
              ]
            },
            "documentation": null,
            "id": 19717,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19631,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 19717,
                  "src": "1211:27:70",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19630,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "1211:13:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19633,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 19717,
                  "src": "1248:31:70",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                    "typeString": "struct Actions.DepositArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19632,
                    "name": "Actions.DepositArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24939,
                    "src": "1248:19:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DepositArgs_$24939_storage_ptr",
                      "typeString": "struct Actions.DepositArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19635,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 19717,
                  "src": "1289:27:70",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                    "typeString": "struct Interest.Index"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19634,
                    "name": "Interest.Index",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27471,
                    "src": "1289:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                      "typeString": "struct Interest.Index"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1201:121:70"
            },
            "returnParameters": {
              "id": 19637,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1342:0:70"
            },
            "scope": 19718,
            "src": "1185:1005:70",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 19719,
        "src": "975:1217:70"
      }
    ],
    "src": "594:1599:70"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol",
    "exportedSymbols": {
      "DepositImpl": [
        19718
      ]
    },
    "id": 19719,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 19608,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "594:23:70"
      },
      {
        "id": 19609,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "618:33:70"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../lib/Actions.sol",
        "id": 19611,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 25370,
        "src": "653:45:70",
        "symbolAliases": [
          {
            "foreign": 19610,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol",
        "file": "../lib/Events.sol",
        "id": 19613,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 27154,
        "src": "699:43:70",
        "symbolAliases": [
          {
            "foreign": 19612,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol",
        "file": "../lib/Exchange.sol",
        "id": 19615,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 27435,
        "src": "743:47:70",
        "symbolAliases": [
          {
            "foreign": 19614,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../lib/Interest.sol",
        "id": 19617,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 27751,
        "src": "791:47:70",
        "symbolAliases": [
          {
            "foreign": 19616,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../lib/Require.sol",
        "id": 19619,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 28453,
        "src": "839:45:70",
        "symbolAliases": [
          {
            "foreign": 19618,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "../lib/Storage.sol",
        "id": 19621,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 30712,
        "src": "885:45:70",
        "symbolAliases": [
          {
            "foreign": 19620,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../lib/Types.sol",
        "id": 19623,
        "nodeType": "ImportDirective",
        "scope": 19719,
        "sourceUnit": 31362,
        "src": "931:41:70",
        "symbolAliases": [
          {
            "foreign": 19622,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19718,
        "linearizedBaseContracts": [
          19718
        ],
        "name": "DepositImpl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 19626,
            "libraryName": {
              "contractScope": null,
              "id": 19624,
              "name": "Storage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 30711,
              "src": "1007:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Storage_$30711",
                "typeString": "library Storage"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1001:32:70",
            "typeName": {
              "contractScope": null,
              "id": 19625,
              "name": "Storage.State",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28760,
              "src": "1019:13:70",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                "typeString": "struct Storage.State"
              }
            }
          },
          {
            "constant": true,
            "id": 19629,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 19718,
            "src": "1083:45:70",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 19627,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1083:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4465706f736974496d706c",
              "id": 19628,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1115:13:70",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ee0c8654eebe43e7e0858bedba858db458826ed0f9e555e645fdfbff1cfca302",
                "typeString": "literal_string \"DepositImpl\""
              },
              "value": "DepositImpl"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 19716,
              "nodeType": "Block",
              "src": "1342:848:70",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19641,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1376:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19642,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "account",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24934,
                        "src": "1376:12:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19643,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "1390:3:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 19644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1390:10:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19638,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "1352:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 19640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "requireIsOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29699,
                      "src": "1352:23:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_address_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,address) view"
                      }
                    },
                    "id": 19645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1352:49:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19646,
                  "nodeType": "ExpressionStatement",
                  "src": "1352:49:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 19661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19650,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19633,
                              "src": "1438:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                "typeString": "struct Actions.DepositArgs memory"
                              }
                            },
                            "id": 19651,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "from",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24938,
                            "src": "1438:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19652,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "1451:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 19653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1451:10:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1438:23:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19655,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19633,
                              "src": "1465:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                "typeString": "struct Actions.DepositArgs memory"
                              }
                            },
                            "id": 19656,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "from",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24938,
                            "src": "1465:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19657,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19633,
                                "src": "1478:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                  "typeString": "struct Actions.DepositArgs memory"
                                }
                              },
                              "id": 19658,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "account",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24934,
                              "src": "1478:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            "id": 19659,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24848,
                            "src": "1478:18:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1465:31:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1438:58:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19662,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19629,
                        "src": "1510:4:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c6964206465706f73697420736f75726365",
                        "id": 19663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1528:24:70",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_46073caca4049cb3f26a16d106ded795f78f6fae2e15aa8103181dd9430b0df9",
                          "typeString": "literal_string \"Invalid deposit source\""
                        },
                        "value": "Invalid deposit source"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19664,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1566:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19665,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "from",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24938,
                        "src": "1566:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_46073caca4049cb3f26a16d106ded795f78f6fae2e15aa8103181dd9430b0df9",
                          "typeString": "literal_string \"Invalid deposit source\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19647,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1412:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 19649,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1412:12:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 19666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1412:173:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19667,
                  "nodeType": "ExpressionStatement",
                  "src": "1412:173:70"
                },
                {
                  "assignments": [
                    19671,
                    19673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19671,
                      "name": "newPar",
                      "nodeType": "VariableDeclaration",
                      "scope": 19716,
                      "src": "1610:23:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                        "typeString": "struct Types.Par"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19670,
                        "name": "Types.Par",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 30890,
                        "src": "1610:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                          "typeString": "struct Types.Par"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19673,
                      "name": "deltaWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 19716,
                      "src": "1647:25:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19672,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "1647:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19684,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19676,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1725:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19677,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "account",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24934,
                        "src": "1725:12:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19678,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1751:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19679,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "market",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24936,
                        "src": "1751:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19680,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19635,
                        "src": "1776:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19681,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1795:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19682,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24932,
                        "src": "1795:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19674,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "1685:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 19675,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNewParAndDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29953,
                      "src": "1685:26:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.AssetAmount memory) view returns (struct Types.Par memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 19683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1685:131:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(struct Types.Par memory,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1596:220:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19688,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1853:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19689,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "account",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24934,
                        "src": "1853:12:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19690,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "1879:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19691,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "market",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24936,
                        "src": "1879:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19692,
                        "name": "newPar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19671,
                        "src": "1904:6:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19685,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "1827:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 19687,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPar",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30502,
                      "src": "1827:12:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                      }
                    },
                    "id": 19693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1827:93:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19694,
                  "nodeType": "ExpressionStatement",
                  "src": "1827:93:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19700,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19633,
                              "src": "2019:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                                "typeString": "struct Actions.DepositArgs memory"
                              }
                            },
                            "id": 19701,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "market",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24936,
                            "src": "2019:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 19698,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19631,
                            "src": "2004:5:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                              "typeString": "struct Storage.State storage pointer"
                            }
                          },
                          "id": 19699,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getToken",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28776,
                          "src": "2004:14:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                            "typeString": "function (struct Storage.State storage pointer,uint256) view returns (address)"
                          }
                        },
                        "id": 19702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2004:27:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19703,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19633,
                          "src": "2045:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                            "typeString": "struct Actions.DepositArgs memory"
                          }
                        },
                        "id": 19704,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "from",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24938,
                        "src": "2045:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19705,
                        "name": "deltaWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19673,
                        "src": "2068:8:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19695,
                        "name": "Exchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27434,
                        "src": "1971:8:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Exchange_$27434_$",
                          "typeString": "type(library Exchange)"
                        }
                      },
                      "id": 19697,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferIn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27301,
                      "src": "1971:19:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,struct Types.Wei memory)"
                      }
                    },
                    "id": 19706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1971:115:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19707,
                  "nodeType": "ExpressionStatement",
                  "src": "1971:115:70"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19711,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19631,
                        "src": "2128:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19712,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19633,
                        "src": "2147:4:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                          "typeString": "struct Actions.DepositArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19713,
                        "name": "deltaWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19673,
                        "src": "2165:8:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                          "typeString": "struct Actions.DepositArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19708,
                        "name": "Events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27153,
                        "src": "2097:6:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                          "typeString": "type(library Events)"
                        }
                      },
                      "id": 19710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26703,
                      "src": "2097:17:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_DepositArgs_$24939_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.DepositArgs memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 19714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2097:86:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19715,
                  "nodeType": "ExpressionStatement",
                  "src": "2097:86:70"
                }
              ]
            },
            "documentation": null,
            "id": 19717,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19631,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 19717,
                  "src": "1211:27:70",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19630,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "1211:13:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19633,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 19717,
                  "src": "1248:31:70",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DepositArgs_$24939_memory_ptr",
                    "typeString": "struct Actions.DepositArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19632,
                    "name": "Actions.DepositArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24939,
                    "src": "1248:19:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DepositArgs_$24939_storage_ptr",
                      "typeString": "struct Actions.DepositArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19635,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 19717,
                  "src": "1289:27:70",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                    "typeString": "struct Interest.Index"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19634,
                    "name": "Interest.Index",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27471,
                    "src": "1289:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                      "typeString": "struct Interest.Index"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1201:121:70"
            },
            "returnParameters": {
              "id": 19637,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1342:0:70"
            },
            "scope": 19718,
            "src": "1185:1005:70",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 19719,
        "src": "975:1217:70"
      }
    ],
    "src": "594:1599:70"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2026-03-02T16:38:28.825Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}