[ { "inputs": [ { "internalType": "address", "name": "_PT", "type": "address" }, { "internalType": "int256", "name": "_scalarRoot", "type": "int256" }, { "internalType": "int256", "name": "_initialAnchor", "type": "int256" }, { "internalType": "uint80", "name": "_lnFeeRateRoot", "type": "uint80" }, { "internalType": "address", "name": "_vePendle", "type": "address" }, { "internalType": "address", "name": "_gaugeController", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "int256", "name": "exchangeRate", "type": "int256" } ], "name": "MarketExchangeRateBelowOne", "type": "error" }, { "inputs": [], "name": "MarketExpired", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "currentAmount", "type": "int256" }, { "internalType": "int256", "name": "requiredAmount", "type": "int256" } ], "name": "MarketInsufficientPtForTrade", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "actualBalance", "type": "uint256" }, { "internalType": "uint256", "name": "requiredBalance", "type": "uint256" } ], "name": "MarketInsufficientPtReceived", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "actualBalance", "type": "uint256" }, { "internalType": "uint256", "name": "requiredBalance", "type": "uint256" } ], "name": "MarketInsufficientSyReceived", "type": "error" }, { "inputs": [], "name": "MarketProportionMustNotEqualOne", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "proportion", "type": "int256" }, { "internalType": "int256", "name": "maxProportion", "type": "int256" } ], "name": "MarketProportionTooHigh", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "rateScalar", "type": "int256" } ], "name": "MarketRateScalarBelowZero", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "scalarRoot", "type": "int256" } ], "name": "MarketScalarRootBelowZero", "type": "error" }, { "inputs": [], "name": "MarketZeroAmountsInput", "type": "error" }, { "inputs": [], "name": "MarketZeroAmountsOutput", "type": "error" }, { "inputs": [], "name": "MarketZeroLnImpliedRate", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "totalPt", "type": "int256" }, { "internalType": "int256", "name": "totalAsset", "type": "int256" } ], "name": "MarketZeroTotalPtOrTotalAsset", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiverSy", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiverPt", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "netLpBurned", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netSyOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netPtOut", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "observationCardinalityNextOld", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "observationCardinalityNextNew", "type": "uint16" } ], "name": "IncreaseObservationCardinalityNext", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "netLpMinted", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netSyUsed", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netPtUsed", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "rewardsOut", "type": "uint256[]" } ], "name": "RedeemRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "int256", "name": "netPtOut", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "netSyOut", "type": "int256" }, { "indexed": false, "internalType": "uint256", "name": "netSyFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netSyToReserve", "type": "uint256" } ], "name": "Swap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lnLastImpliedRate", "type": "uint256" } ], "name": "UpdateImpliedRate", "type": "event" }, { "inputs": [], "name": "_storage", "outputs": [ { "internalType": "int128", "name": "totalPt", "type": "int128" }, { "internalType": "int128", "name": "totalSy", "type": "int128" }, { "internalType": "uint96", "name": "lastLnImpliedRate", "type": "uint96" }, { "internalType": "uint16", "name": "observationIndex", "type": "uint16" }, { "internalType": "uint16", "name": "observationCardinality", "type": "uint16" }, { "internalType": "uint16", "name": "observationCardinalityNext", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "activeBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiverSy", "type": "address" }, { "internalType": "address", "name": "receiverPt", "type": "address" }, { "internalType": "uint256", "name": "netLpToBurn", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "netSyOut", "type": "uint256" }, { "internalType": "uint256", "name": "netPtOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "expiry", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNonOverrideLnFeeRateRoot", "outputs": [ { "internalType": "uint80", "name": "", "type": "uint80" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "cardinalityNext", "type": "uint16" } ], "name": "increaseObservationsCardinalityNext", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isExpired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastRewardBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "netSyDesired", "type": "uint256" }, { "internalType": "uint256", "name": "netPtDesired", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "netLpOut", "type": "uint256" }, { "internalType": "uint256", "name": "netSyUsed", "type": "uint256" }, { "internalType": "uint256", "name": "netPtUsed", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "observations", "outputs": [ { "internalType": "uint32", "name": "blockTimestamp", "type": "uint32" }, { "internalType": "uint216", "name": "lnImpliedRateCumulative", "type": "uint216" }, { "internalType": "bool", "name": "initialized", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32[]", "name": "secondsAgos", "type": "uint32[]" } ], "name": "observe", "outputs": [ { "internalType": "uint216[]", "name": "lnImpliedRateCumulative", "type": "uint216[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" } ], "name": "readState", "outputs": [ { "components": [ { "internalType": "int256", "name": "totalPt", "type": "int256" }, { "internalType": "int256", "name": "totalSy", "type": "int256" }, { "internalType": "int256", "name": "totalLp", "type": "int256" }, { "internalType": "address", "name": "treasury", "type": "address" }, { "internalType": "int256", "name": "scalarRoot", "type": "int256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "lnFeeRateRoot", "type": "uint256" }, { "internalType": "uint256", "name": "reserveFeePercent", "type": "uint256" }, { "internalType": "uint256", "name": "lastLnImpliedRate", "type": "uint256" } ], "internalType": "struct MarketState", "name": "market", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "readTokens", "outputs": [ { "internalType": "contract IStandardizedYield", "name": "_SY", "type": "address" }, { "internalType": "contract IPPrincipalToken", "name": "_PT", "type": "address" }, { "internalType": "contract IPYieldToken", "name": "_YT", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "redeemRewards", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardState", "outputs": [ { "internalType": "uint128", "name": "index", "type": "uint128" }, { "internalType": "uint128", "name": "lastBalance", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "skim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "exactPtIn", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "swapExactPtForSy", "outputs": [ { "internalType": "uint256", "name": "netSyOut", "type": "uint256" }, { "internalType": "uint256", "name": "netSyFee", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "exactPtOut", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "swapSyForExactPt", "outputs": [ { "internalType": "uint256", "name": "netSyIn", "type": "uint256" }, { "internalType": "uint256", "name": "netSyFee", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalActiveSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userReward", "outputs": [ { "internalType": "uint128", "name": "index", "type": "uint128" }, { "internalType": "uint128", "name": "accrued", "type": "uint128" } ], "stateMutability": "view", "type": "function" } ]
6102208060405234620004ec5760c081620061628038038091620000248285620008f6565b833981010312620004ec576200003a816200091a565b602082015160408301516060840151916001600160501b0383168303620004ec576200007760a06200006f608088016200091a565b96016200091a565b60405163afd27bf560e01b81529095906020816004816001600160a01b038a165afa908115620004fa5760009162000898575b50604051620000b981620008da565b600d81526c14195b991b194813585c9ad95d609a1b602082015260405190620000e282620008da565b600a8252691411539113114b53141560b21b60208301528051906001600160401b0382116200076b5760035490600182811c921680156200088d575b60208310146200074a5781601f84931162000818575b50602090601f83116001146200078d5760009262000781575b50508160011b916000199060031b1c1916176003555b8051906001600160401b0382116200076b5760045490600182811c9216801562000760575b60208310146200074a5781601f849311620006d8575b50602090601f831160011462000649576000926200063d575b50508160011b916000199060031b1c1916176004555b6012608052600280546001600160f81b0316600160f81b17905560a0526001600160a01b0390811660e052610100868152604051635162986d60e11b81529096909160209183916004918391600091165af1908115620004fa57600091620005fb575b5060c0526001600160a01b03841661012081815260405163afd27bf560e01b815290959091602090839060049082905afa918215620004fa57600092620005b5575b506001600160a01b03918216610140908152865160405163781c18db60e01b8152919391929160209184916004918391165afa918215620004fa5760009262000571575b506101609160018060a01b0316825260405163329f6acb60e21b8152600c600482015263ffffffff4216602482015260408160448173588af5f096c03c69ef5ad96b8677be4b3515a3cc5af4908115620004fa576000906000926200051f575b50600b805463ffffffff60701b191660809390931b61ffff60801b169290921760709190911b61ffff60701b16179055600084131562000506576101c09384526101e09485526102009586526040516370c264df60e11b8152929190602090849060049082906001600160a01b03165afa928315620004fa57600093620004bb575b506101a09283526101809133835260405197615822998a620009408b396080518a61161e015260a0518a818161366c0152614b0a015260c0518a61369f015260e0518a8181612549015261518e01525189614b4f0152518881816103ee015281816113ba015281816116d3015281816118b201528181611cb901526121ba015251878181610422015281816111f7015281816116ae0152818161187a01528181611a4001528181611cfa0152612166015251868181611148015281816116fa015281816117c40152611e970152518581816107a00152612c9501525184818161067d015281816111140152818161165b0152818161179001528181611e630152612d3101525183612d0e0152518261236c0152518181816106410152612ce90152f35b9092506020813d602011620004f1575b81620004da60209383620008f6565b81010312620004ec5751913862000398565b600080fd5b3d9150620004cb565b6040513d6000823e3d90fd5b60405163483512b160e11b815260048101859052602490fd5b9150506040813d60401162000568575b816200053e60409383620008f6565b81010312620004ec5762000560602062000558836200092f565b92016200092f565b903862000316565b3d91506200052f565b9091506020813d602011620005ac575b816200059060209383620008f6565b81010312620004ec57620005a4906200091a565b9038620002b6565b3d915062000581565b9091506020813d602011620005f2575b81620005d460209383620008f6565b81010312620004ec57620005ea6004916200091a565b919062000272565b3d9150620005c5565b90506020813d60201162000634575b816200061960209383620008f6565b81010312620004ec576200062d906200091a565b3862000230565b3d91506200060a565b015190503880620001b7565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f1984168510620006bc576001945083601f19811610620006a2575b505050811b01600455620001cd565b015160001960f88460031b161c1916905538808062000693565b8181015183556020948501946001909301929091019062000676565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81016020851062000742575b90849392915b601f830160051c82018110620007325750506200019e565b600081558594506001016200071a565b508062000714565b634e487b7160e01b600052602260045260246000fd5b91607f169162000188565b634e487b7160e01b600052604160045260246000fd5b0151905038806200014d565b600360009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9350601f198516905b818110620007ff5750908460019594939210620007e5575b505050811b0160035562000163565b015160001960f88460031b161c19169055388080620007d6565b92936020600181928786015181550195019301620007be565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000882575b90601f859493920160051c01905b81811062000872575062000134565b6000815584935060010162000863565b909150819062000855565b91607f16916200011e565b90506020813d602011620008d1575b81620008b660209383620008f6565b81010312620004ec57620008ca906200091a565b38620000aa565b3d9150620008a7565b604081019081106001600160401b038211176200076b57604052565b601f909101601f19168101906001600160401b038211908210176200076b57604052565b51906001600160a01b0382168203620004ec57565b519061ffff82168203620004ec5756fe608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146127ff575080630892cd8b146127b8578063095ea7b314612787578063156e29f614611de757806318160ddd14611da85780631dd19cb414611c2a57806323b872dd14611ad0578063252c09d714611a6c57806329910b11146117215780632c8ce6bc146116805780632f13b60c14611642578063313ce5671461160457806337d45e3a146114105780635b709f17146110a55780635cbadbe41461102857806370a0823114610fdb5780637206926414610fbd578063794052f314610f28578063883bdbfd14610ca35780639262187b14610a3957806395d89b41146108ff578063a9059cbb14610849578063a9f8d1811461082b578063c3fb90d6146107c4578063c45a015514610773578063c4f59f9b146106ff578063dd62ed3e146106a0578063e184c9be14610665578063e4f8b2e91461061e578063ea64a820146105b25763f6b911bc1461017457600080fd5b3461044e576101823661294a565b916002805490610197818360f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8093161781556101e733612b8d565b3015610548576101f6306144a7565b30600052602092600084526040600020548781106104de57879030600052600086520360406000205580871161044e578254818816828216038281116104af57827fff000000000000000000000000000000000000000000000000000000000000009116911617835560006040518881527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef863092a36102953061456a565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871161044e57861561048557838201956102d18751896135e7565b956102e26040850197885190613825565b976102f96102f186518c6135e7565b895190613825565b9789158061047d575b610453576103118b825161466b565b905261031e88865161466b565b855261032b89825161466b565b90526000881261044e576000871261044e577f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f908860409a6103c07f01000000000000000000000000000000000000000000000000000000000000009773ffffffffffffffffffffffffffffffffffffffff808716968530890361041b575b50508c81891698308a036103e8575b505050612fc3565b8b51908152602081019190915260408101899052606090a38254161790558351928352820152f35b610413927f0000000000000000000000000000000000000000000000000000000000000000166131f5565b388c816103b8565b61044791837f0000000000000000000000000000000000000000000000000000000000000000166131f5565b38856103a9565b600080fd5b60046040517fccbf5468000000000000000000000000000000000000000000000000000000008152fd5b508815610302565b60046040517f25daaec3000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6084856040519062461bcd60e51b82526004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b3461044e57602060031936011261044e5773ffffffffffffffffffffffffffffffffffffffff6105e0612904565b166000908152600760209081526040918290205482516fffffffffffffffffffffffffffffffff8216815260809190911c91810191909152f35b0390f35b3461044e57600060031936011261044e57602060405169ffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461044e57600060031936011261044e5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461044e57604060031936011261044e576106b9612904565b6106c1612927565b9073ffffffffffffffffffffffffffffffffffffffff8091166000526001602052604060002091166000526020526020604060002054604051908152f35b3461044e57600060031936011261044e57610718613626565b6040518091602080830160208452825180915260206040850193019160005b82811061074657505050500390f35b835173ffffffffffffffffffffffffffffffffffffffff1685528695509381019392810192600101610737565b3461044e57600060031936011261044e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461044e57600060031936011261044e5760c0600a54600b5461ffff906040519280600f0b845260801d600f0b60208401526bffffffffffffffffffffffff81166040840152818160601c166060840152818160701c16608084015260801c1660a0820152f35b3461044e57600060031936011261044e576020600654604051908152f35b3461044e57604060031936011261044e577f0100000000000000000000000000000000000000000000000000000000000000610883612904565b6108ec6002549161089a60028460f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176002556024359033613366565b6002541617600255602060405160018152f35b3461044e57600060031936011261044e5760405160009060045460018160011c9060018316928315610a2f575b6020938484108114610a00578386529081156109c25750600114610967575b61061a8461095b81880382612a5a565b604051918291826128bc565b600460009081529294507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8284106109af575050508161061a9361095b928201019361094b565b8054858501870152928501928101610993565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858501525050151560051b820101915061095b8161061a61094b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f169161092c565b3461044e5760208060031936011261044e57610a53612904565b9060025490610a6860028360f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80931617600255610ab9836144a7565b610ac28361456a565b610aca613626565b92610ad584516140a7565b90600073ffffffffffffffffffffffffffffffffffffffff95868316915b8151811015610c365787610b0782846140d8565b5116600052600590818752604060002084600052875260406000205491608092831c610b3383896140d8565b52610b3e82886140d8565b51610b4f575b506001915001610af3565b89610b5a83866140d8565b5116600052875260406000208460005287526040600020916fffffffffffffffffffffffffffffffff92838154169055610b9482886140d8565b519083821161044e578a610ba884876140d8565b5116600052600789528360406000209216908254901c039283116104af57600192610c0e91906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b610c3089610c1c83866140d8565b511686610c29848a6140d8565b51916145de565b89610b44565b61061a857f010000000000000000000000000000000000000000000000000000000000000089867f78d61a0c27b13f43911095f9f356f14daa3cd8b125eea1aa22421245e90e813d60405180610c8c8782612a95565b0390a2600254161760025560405191829182612a95565b3461044e5760208060031936011261044e5767ffffffffffffffff60043581811161044e573660238201121561044e578060040135610ce181612a7d565b91610cef6040519384612a5a565b8183528483016024819360051b8301019136831161044e57602401905b828210610f0c5750505063ffffffff91600b5461ffff906040519485937f1dd421ce00000000000000000000000000000000000000000000000000000000855260c4850190600c6004870152824216602487015260c060448701525180915260e4850195916000905b8a838310610eef578a88600081808d8c8c6bffffffffffffffffffffffff81166064850152818160601c16608485015260701c1660a4830152038173588af5f096c03c69ef5ad96b8677be4b3515a3cc5af4918215610ee357600092610e38575b5050906040519181839283018184528251809152816040850193019160005b828110610e0457505050500390f35b83517affffffffffffffffffffffffffffffffffffffffffffffffffffff1685528695509381019392810192600101610df5565b9091503d806000843e610e4b8184612a5a565b820191838184031261044e57805191821161044e57019080601f8301121561044e578151610e7881612a7d565b92610e866040519485612a5a565b818452848085019260051b82010192831161044e578401905b828210610eb0575050508280610dd6565b81517affffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361044e578152908401908401610e9f565b6040513d6000823e3d90fd5b845182168952978801978997509093019260019190910190610d75565b813563ffffffff8116810361044e578152908601908601610d0c565b3461044e57602060031936011261044e57610120610f4c610f47612904565b612b8d565b6040519080518252602081015160208301526040810151604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008091015190820152f35b3461044e57600060031936011261044e576020600854604051908152f35b3461044e57602060031936011261044e576020611020610ff9612904565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000205490565b604051908152f35b3461044e57604060031936011261044e57611041612904565b611049612927565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526005602090815260408083209390941682529182528290205482516fffffffffffffffffffffffffffffffff8216815260809190911c91810191909152f35b3461044e576110b33661298c565b9192906002546110c960028260f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600255427f000000000000000000000000000000000000000000000000000000000000000011156113e65761114233612b8d565b9261116c7f0000000000000000000000000000000000000000000000000000000000000000612f2b565b937f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818811908161044e576111a86111b2978a429184613bb5565b97919890986135b3565b9860008a1261044e576000891261044e576000881261044e5773ffffffffffffffffffffffffffffffffffffffff91828716968c3089036113b3575b505061122489847f00000000000000000000000000000000000000000000000000000000000000001694606087015116856131f5565b61122d84612fc3565b81611336575b5050602061124082613196565b9201918251906000821261044e57106112ec57505061044e57851161044e576040957f829000a5bc6a12d46e30cdcecd7c56b1efd88f6d7d059da6734a04f3764557c4857f0100000000000000000000000000000000000000000000000000000000000000956112d56112b28a6135b3565b8b5195865260208601526040850192909252606084015233929081906080820190565b0390a3600254161760025582519182526020820152f35b6112f590613196565b9051906000821261044e57604491604051917ff62951c700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b6000945090858b1161044e5761134b8b6135b3565b333b1561044e578c61138d60009360405195869485947ffa483e7200000000000000000000000000000000000000000000000000000000865260048601612b29565b038183335af18015610ee3576113a4575b80611233565b6113ad906129fb565b8a61139e565b6113df91857f0000000000000000000000000000000000000000000000000000000000000000166131f5565b8c8c6111ee565b60046040517fb2094b59000000000000000000000000000000000000000000000000000000008152fd5b3461044e5760208060031936011261044e576004359061ffff9081831680930361044e576002549161144860028460f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760025580600b5460801c16604051947f587cdc06000000000000000000000000000000000000000000000000000000008652600c60048701528160248701526044860152828560648173588af5f096c03c69ef5ad96b8677be4b3515a3cc5af4918215610ee3576000926115ae575b7f010000000000000000000000000000000000000000000000000000000000000095508216808203611535575b60028054861687179055005b7fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a936040937fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff71ffff00000000000000000000000000000000600b549260801b16911617600b558351928352820152a182808080611529565b91508285813d83116115fd575b6115c58183612a5a565b8101031261044e576115f77f010000000000000000000000000000000000000000000000000000000000000095612b5d565b916114fc565b503d6115bb565b3461044e57600060031936011261044e57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461044e57600060031936011261044e576020604051427f000000000000000000000000000000000000000000000000000000000000000011158152f35b3461044e57600060031936011261044e57606060405173ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000168252807f00000000000000000000000000000000000000000000000000000000000000001660208301527f0000000000000000000000000000000000000000000000000000000000000000166040820152f35b3461044e5761172f3661298c565b90919260025461174560028260f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600255427f000000000000000000000000000000000000000000000000000000000000000011156113e6576117be33612b8d565b916117e87f0000000000000000000000000000000000000000000000000000000000000000612f2b565b957f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96878211908161044e5761182a904290611823856135b3565b9088613bb5565b969198909760008a1261044e576000891261044e576000881261044e5773ffffffffffffffffffffffffffffffffffffffff91828716968b308903611a39575b505061189f8984606087015116857f0000000000000000000000000000000000000000000000000000000000000000166131f5565b6118a884612fc3565b816119ba575b50507f0000000000000000000000000000000000000000000000000000000000000000166118db81613196565b8251906000821261044e571061197057505061044e576118fa906135b3565b95851161044e576040957f829000a5bc6a12d46e30cdcecd7c56b1efd88f6d7d059da6734a04f3764557c46112d57f0100000000000000000000000000000000000000000000000000000000000000958951918291898b3397859094939260609260808301968352602083015260408201520152565b61197990613196565b9051906000821261044e57604491604051917f2c49ea0f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b60009450906119c8866135b3565b908c8c1161044e57333b1561044e57600091611a138d9260405195869485947ffa483e7200000000000000000000000000000000000000000000000000000000865260048601612b29565b038183335af18015610ee357611a2a575b806118ae565b611a33906129fb565b8a611a24565b611a6591857f0000000000000000000000000000000000000000000000000000000000000000166131f5565b8c8b61186a565b3461044e57602060031936011261044e5760043561ffff81101561044e57606090600c01546040519063ffffffff811682527affffffffffffffffffffffffffffffffffffffffffffffffffffff8160201c16602083015260f81c15156040820152f35b3461044e57611ade3661294a565b60025491611af260028460f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760025573ffffffffffffffffffffffffffffffffffffffff841660005260016020526040600020336000526020526040600020546000198103611ba2575b50906108ec917f010000000000000000000000000000000000000000000000000000000000000094613366565b9190818310611be6577f010000000000000000000000000000000000000000000000000000000000000094611bdd836108ec95033383612dea565b94509091611b75565b606460405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b3461044e57600060031936011261044e57600254611c4e60028260f81c1415612ad1565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600255611c9f33612b8d565b9073ffffffffffffffffffffffffffffffffffffffff91827f00000000000000000000000000000000000000000000000000000000000000001692611ce384613196565b82516000811261044e57611cf691612b1c565b90807f00000000000000000000000000000000000000000000000000000000000000001690611d2482613196565b956020850151966000881261044e577f010000000000000000000000000000000000000000000000000000000000000097611d5e91612b1c565b9380611d90575b505082611d785760028054861687179055005b6060611d8794015116906131f5565b82808080611529565b611da19183606088015116906131f5565b8680611d65565b3461044e57600060031936011261044e5760207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b3461044e57606060031936011261044e57611e00612904565b602435604435917f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254611e5b60028260f81c1415612ad1565b1617600255427f000000000000000000000000000000000000000000000000000000000000000011156113e657611e9133612b8d565b90611ebb7f0000000000000000000000000000000000000000000000000000000000000000612f2b565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384811161044e5784861161044e576000938115801561277f575b6104855760a083019542875111156113e657604084019586518015600014612702575050611f2688846135e7565b906000821261044e57600060038311156126f35750816001908060011c600181018091116104af5791905b8483106126d8575050505b811161044e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881019081136001166104af57956103e89297955b600088131561045357611fae8960208701516138c7565b6020860152611fbe8786516138c7565b8552611fd4611fcd858a6138c7565b82516138c7565b90526000831261044e576000871261044e576000881261044e576000861261044e5782612342575b50505073ffffffffffffffffffffffffffffffffffffffff8216156122fe57612024826144a7565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841161044e576002547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80861681831601116104af577fff000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808716818416011691161760025573ffffffffffffffffffffffffffffffffffffffff8216600052600060205260406000206120f7858254612fb6565b905560405184815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff861693a36121468261456a565b61214f81612fc3565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661218f81613196565b6020830151906000821261044e57106122b1575073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166121e381613196565b8251906000821261044e5710611970575050604080518481526020810186905290810183905261061a929173ffffffffffffffffffffffffffffffffffffffff16907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90606090a27f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002541617600255604051938493846040919493926060820195825260208201520152565b6122bc602091613196565b910151906000821261044e57604491604051917ff62951c700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606460405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b42815111156113e65761236961236061239e936020870151906138e3565b91429051612b1c565b907f000000000000000000000000000000000000000000000000000000000000000090612396838761395e565b9086516139f0565b6101008301526123ac6142f1565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161044e57600254907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831601917effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104af5760206000927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef927fff000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60019716911617600255848452838252604084206124c9828254612fb6565b9055604051908152a33060011415806124e4575b8080611ffc565b6124ed90614f63565b600160005260006020526040600020546040517fe268b3a400000000000000000000000000000000000000000000000000000000815260016004820152604081602481600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610ee357600091600091612691575b50826028810204602814831517156104af5760646028840204916fffffffffffffffffffffffffffffffff811661261e575b50509080821060001461261757505b6125e2816125dd6008546001600052600960205260406000205490612b1c565b612fb6565b600855600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3655856124dd565b90506125bd565b906126646fffffffffffffffffffffffffffffffff80612669941692167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002541661394b565b6139e6565b90603c820291808304603c14901517156104af57606461268a920490612fb6565b87806125ae565b9150506040813d6040116126d0575b816126ad60409383612a5a565b8101031261044e576126ca60206126c3836157cf565b92016157cf565b8861257c565b3d91506126a0565b909193506126ea846125dd81846139e6565b821c9190611f51565b9115611f5c5760019150611f5c565b899892506127169061271e9295989a6135e7565b855190613825565b6127298951886135e7565b9661273a6020870198895190613825565b908183121561275b5750506102f181612755929998516135e7565b97611f97565b98509896505061277961277189989986516135e7565b875190613825565b95611f97565b508615611ef8565b3461044e57604060031936011261044e576127ad6127a3612904565b6024359033612dea565b602060405160018152f35b3461044e57602060031936011261044e5773ffffffffffffffffffffffffffffffffffffffff6127e6612904565b1660005260096020526020604060002054604051908152f35b3461044e57600060031936011261044e5760009060035460018160011c90600183169283156128b2575b6020938484108114610a00578386529081156109c257506001146128575761061a8461095b81880382612a5a565b600360009081529294507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b82841061289f575050508161061a9361095b928201019361094b565b8054858501870152928501928101612883565b91607f1691612829565b60208082528251818301819052939260005b8581106128f057505050601f19601f8460006040809697860101520116010190565b8181018301518482016040015282016128ce565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361044e57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361044e57565b600319606091011261044e5773ffffffffffffffffffffffffffffffffffffffff90600435828116810361044e5791602435908116810361044e579060443590565b90606060031983011261044e5760043573ffffffffffffffffffffffffffffffffffffffff8116810361044e57916024359160443567ffffffffffffffff9283821161044e578060238301121561044e57816004013593841161044e576024848301011161044e576024019190565b67ffffffffffffffff8111612a0f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff821117612a0f57604052565b90601f601f19910116810190811067ffffffffffffffff821117612a0f57604052565b67ffffffffffffffff8111612a0f5760051b60200190565b602090602060408183019282815285518094520193019160005b828110612abd575050505090565b835185529381019392810192600101612aaf565b15612ad857565b606460405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b919082039182116104af57565b929380608095601f1994601f9487526020870152606060408701528160608701528686013760008582860101520116010190565b519061ffff8216820361044e57565b519073ffffffffffffffffffffffffffffffffffffffff8216820361044e57565b906040805192610120840184811067ffffffffffffffff821117612a0f57825260608401600090818152608086019180835260a087019381855260c088019282845260e089018381526101008a01978489528a600a5480600f0b825260801d600f0b60208201527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416907f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211612dcc5782015273ffffffffffffffffffffffffffffffffffffffff91828251957f5c098c11000000000000000000000000000000000000000000000000000000008752306004880152166024860152606085604481867f0000000000000000000000000000000000000000000000000000000000000000165afa8015612de057869287968892612d6c575b505060ff16905216905269ffffffffffffffffffff9150808216612d6757507f00000000000000000000000000000000000000000000000000000000000000005b1690527f000000000000000000000000000000000000000000000000000000000000000090527f000000000000000000000000000000000000000000000000000000000000000090526bffffffffffffffffffffffff600b54169052565b612d09565b93509550506060823d606011612dd8575b81612d8a60609383612a5a565b81010312612dd457612d9b82612b6c565b9460208301519269ffffffffffffffffffff84168403612dd05701519460ff86168603612dcc57919460ff38612cc8565b8680fd5b8780fd5b8580fd5b3d9150612d7d565b82513d88823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff809116918215612ec25716918215612e585760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b602073ffffffffffffffffffffffffffffffffffffffff600460009360405194859384927f1d52edc4000000000000000000000000000000000000000000000000000000008452165af1908115610ee357600091612f87575090565b90506020813d602011612fae575b81612fa260209383612a5a565b8101031261044e575190565b3d9150612f95565b919082018092116104af57565b610100810180516bffffffffffffffffffffffff80821161044e57612ff56020612fed8651613b66565b950151613b66565b93600b549161ffff956040968751947f4af74b68000000000000000000000000000000000000000000000000000000008652600c6004870152818160601c16602487015263ffffffff421660448701528381166064870152818160701c16608487015260801c1660a4850152868460c48173588af5f096c03c69ef5ad96b8677be4b3515a3cc5af491821561318b57600093600093613135575b6dffff0000000000000000000000009495507fffffffffffffffffffffffffffffffff00000000000000000000000000000000809360801b16906fffffffffffffffffffffffffffffffff1617600a556fffff0000000000000000000000000000600b549360701b1695169116179160601b161717600b555190519081527f5c0e21d57bb4cf91d8fe238d6f92e2685a695371b19209afcce6217b478f83e160204292a2565b925092508684813d8311613184575b61314e8183612a5a565b8101031261044e576dffff0000000000000000000000009261317b602061317487612b5d565b9601612b5d565b9285945061308f565b503d613144565b87513d6000823e3d90fd5b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937f70a08231000000000000000000000000000000000000000000000000000000008352306004840152165afa908115610ee357600091612f87575090565b9060405160208101937fa9059cbb00000000000000000000000000000000000000000000000000000000855273ffffffffffffffffffffffffffffffffffffffff8093166024830152604482015260448152608081019181831067ffffffffffffffff841117612a0f576132b69383604052169061327283612a3e565b602083527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460a0820152600080958192519082855af16132b061459e565b91615314565b908151918215928315613338575b505050156132ce57565b608460405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b819293509060209181010312613362576020015190811515820361335f57503880806132c4565b80fd5b5080fd5b91909173ffffffffffffffffffffffffffffffffffffffff8082169081156135495784169283156134df5783821461349b576133a285846144fb565b6000908282528160205260408220548181106134315760208260408587957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95878c99528286520382822055868152206133fd828254612fb6565b9055604051908152a33003613422575b5030036134175750565b61342090615126565b565b61342b90615126565b3861340d565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b606460405162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b90816000039180830560001914901517156104af57565b90670de0b6b3a7640000918281029281840514901517156104af57565b8181029291600082127f80000000000000000000000000000000000000000000000000000000000000008214166104af5781840514901517156104af57565b73ffffffffffffffffffffffffffffffffffffffff6040517fc4f59f9b0000000000000000000000000000000000000000000000000000000081526000918282600481847f0000000000000000000000000000000000000000000000000000000000000000165afa91821561381a57839261377b575b507f0000000000000000000000000000000000000000000000000000000000000000916136c9838261411b565b61377457805190600190600183019586841161374757601f196137046136ee89612a7d565b986136fc6040519a8b612a5a565b808a52612a7d565b013660208901375b8381106137275750505061372090846140d8565b9116905290565b80856137348593856140d8565b5116613740828a6140d8565b520161370c565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b9250505090565b9091503d8084833e61378d8183612a5a565b81019060209081818403126138165780519067ffffffffffffffff8211612dd457019180601f840112156138165782516137c681612a7d565b936137d46040519586612a5a565b818552838086019260051b820101928311612dcc578301905b8282106137ff5750505050903861369c565b83809161380b84612b6c565b8152019101906137ed565b8480fd5b6040513d85823e3d90fd5b811561385c5760001982147f80000000000000000000000000000000000000000000000000000000000000008214166104af570590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90670de0b6b3a7640000600083820393128184128116918413901516176104af57565b818103929160001380158285131691841216176104af57565b919091600083820193841291129080158216911516176104af57565b61390c670de0b6b3a76400009160008412600014613940576139076000199461416d565b61394b565b047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161044e5761393d916135e7565b90565b61390760019461416d565b818102929181159184041417156104af57565b60800151906301e13380918281029281840514901517156104af577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161044e576139a991613825565b9060008213156139b557565b602482604051907f1ca418760000000000000000000000000000000000000000000000000000000082526004820152fd5b811561385c570490565b9493929190600095868112613b2257613a15613a0f613a1a93836138c7565b916135ca565b6141c0565b670d529ae9e8600000808213613aeb5750613a499291613a15613a3f613a449361467c565b6135ca565b6138c7565b670de0b6b3a76400008112613aba57613a61906141ca565b838112613ab6576301e1338090818102918183041490151715613a895761393d9293506139e6565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b8380fd5b602490604051907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b60449250604051917ffc68d09e00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606460405162461bcd60e51b815260206004820152600860248201527f6e656761746976650000000000000000000000000000000000000000000000006044820152fd5b807fffffffffffffffffffffffffffffffff80000000000000000000000000000000131580613b9b575b1561044e57600f0b90565b506f7fffffffffffffffffffffffffffffff811315613b90565b93909360a081019484865111156113e65781518481131561407057506040918251946080860186811067ffffffffffffffff821117612a0f57845260009586815260208101938785528582019088825260608301948986528a8c51111561404757613c218b8d51612b1c565b95613c2c878361395e565b85526020820196613c3e8851856138e3565b808a528351908115801561403f575b61400957505082516101008401998a5192808251938a5195613c756301e1338094859261394b565b04957f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9687811161400257613ca9906153f3565b91670de0b6b3a764000096878412613fcf57613ce992613a15613a3f613cde85613a15613a0f613ce397613cf59c9b996138c7565b61467c565b906138ae565b8a5260c088015161394b565b04838111613fcb5790613d088a926153f3565b8552613d2d8651915191613a15613a0f8c5194613d278d51978561466b565b936138c7565b670d529ae9e8600000808213613f955750613d529291613a15613a3f613a449361467c565b818112613f65578d90613d70613d6b82613a158d6135ca565b6135b3565b9451918a1315613f405781613a15613d87926135ca565b828112613f105750613da2613d9c839261388b565b856135e7565b059c5b60e0850151838111613362578e6064613dc1613dc893836135e7565b05956138ae565b918183128015613ef85715613eed57613de36000199361416d565b818102918183041490151715613ec05786613dfd91612fb6565b6000198101908111613ec05786613e13916139e6565b92831161335f5750613e3091613e28916135e7565b9b5b84614a19565b90613e3b9084614a19565b9a8b919c819e5190613e4c91612b1c565b96835190613e599161466b565b8352875191613e67916138c7565b613e709161466b565b8096525194613e7e916138e3565b9151905191613e8c946139f0565b80915215613e975750565b600490517faa69ae1e000000000000000000000000000000000000000000000000000000008152fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b613de360019361416d565b505050613e309150613f0a9085614a19565b9b613e2a565b6024908d51907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b50613d6b81613f5a613f54613f5f9461388b565b876135e7565b613825565b9c613da5565b6024908c51907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b604492508e51917ffc68d09e00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8e80fd5b5050506024908f51907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b5050508f80fd5b604492508b51917fb1c4aefb00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b508015613c4d565b600488517fb2094b59000000000000000000000000000000000000000000000000000000008152fd5b60449085604051917f8615426c00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b906140b182612a7d565b6140be6040519182612a5a565b828152601f196140ce8294612a7d565b0190602036910137565b80518210156140ec5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9081519160005b8381106141325750505050600090565b73ffffffffffffffffffffffffffffffffffffffff8061415283856140d8565b51169084161461416457600101614122565b50505050600190565b60008082131561417b575090565b7f80000000000000000000000000000000000000000000000000000000000000008214613747570390565b801561385c576ec097ce7bc90715b34b9f10000000000590565b811561385c570590565b60008113156142ad5780670c7d713b49da0000128061429c575b1561429357670de0b6b3a7640000906ec097ce7bc90715b34b9f100000000090614237908302828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f0000000000183026141c0565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b0590565b61393d906146cd565b50670f43fc2c04ee000081126141e4565b606460405162461bcd60e51b815260206004820152600d60248201527f6f7574206f6620626f756e6473000000000000000000000000000000000000006044820152fd5b6142f9614a8d565b8151156144a357600190308214159081614314575b50505050565b6143218395949392614f63565b600082815260209060098252604091828220549582985b614349575b5050505083945061430e565b805189101561449e5773ffffffffffffffffffffffffffffffffffffffff6143718a836140d8565b51169861437e81876140d8565b519980855260059081855286862089875285526fffffffffffffffffffffffffffffffff8088882054168015614497575b8d811461448757816143f58f926143d98f6143d3670de0b6b3a76400009387612b1c565b9061394b565b04858b52868a528d8c8c20908c528a528b8b205460801c612fb6565b9111612dd057818111612dd0579261447e92828c9d9e9f93958d97968c519561441d87612a3e565b1685521688840152885286528787208488528652878720815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b01989796614338565b505050508697989950869061447e565b50896143af565b61433d565b5050565b6144af614a8d565b908051156144f65773ffffffffffffffffffffffffffffffffffffffff831680151590816144eb575b506144e257505050565b61342092614f99565b9050301415386144d8565b505050565b614503614a8d565b9181511561430e5773ffffffffffffffffffffffffffffffffffffffff908383838316801515908161455f575b5061454e575b505050831680151590816144eb57506144e257505050565b61455792614f99565b388383614536565b905030141538614530565b73ffffffffffffffffffffffffffffffffffffffff81168015159081614593575b506134175750565b90503014153861458b565b3d156145d9573d9067ffffffffffffffff8211612a0f57604051916145cd6020601f19601f8401160184612a5a565b82523d6000602084013e565b606090565b91909181156144f65773ffffffffffffffffffffffffffffffffffffffff169182614662576000809350809281925af161461661459e565b501561461e57565b606460405162461bcd60e51b815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b613420926131f5565b90808212613b225761393d916138ae565b670de0b6b3a764000081146146a35761469e81613a15613a0f61393d9461388b565b6141ca565b60046040517fa9c8b14d000000000000000000000000000000000000000000000000000000008152fd5b670de0b6b3a76400008112614a025760649060007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c00000000000008212156149d7575b73011798004d755d3c8bc8e03204cf44619e0000008212156149b6575b820290808302906e01855144814a7ff805980ff00840009081831215614993575b50506b02df0ab5a80a22c61ab5a70080821215614973575b50693f1fce3da636ea5cf85080821215614953575b50690127fa27722cc06cc5e280821215614933575b5068280e60114edb805d0380821215614913575b50680ebc5fb41746121110808212156148fc575b506808f00f760a4b2db55d808212156148dc575b506806f5f1775788937937808212156148bc575b506806248f33704b2866038082121561489d575b506805c548670b9510e7ac8082121561487e575b5061483d68056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000008183019201026141c0565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b010590565b68056bc75e2d631000006756bc75e2d631000092020591019038614801565b68056bc75e2d6310000067ad78ebc5ac620000920205910190386147ed565b68056bc75e2d6310000068015af1d78b58c40000920205910190386147d9565b68056bc75e2d631000006802b5e3af16b1880000920205910190386147c5565b68056bc75e2d6310000080920205910190386147b1565b68056bc75e2d63100000680ad78ebc5ac62000009202059101903861479d565b68056bc75e2d631000006815af1d78b58c40000092020591019038614789565b68056bc75e2d63100000682b5e3af16b1880000092020591019038614774565b68056bc75e2d631000006856bc75e2d6310000009202059101903861475f565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101903880614747565b906b1425982cf597cd205cef73806803782dace9d900000091059101614726565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b2000000614709565b614a0e614a13916141a6565b6146cd565b60000390565b6000821215614a8257614a2e6000199261416d565b90670de0b6b3a7640000918281029281840414901517156104af57614a52916139e6565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161044e5761393d916135e7565b614a2e60019261416d565b614a95613626565b90614aa082516140a7565b9180519260009315614f5d576006544314614ef8574360065560085490604051947fef5cfb8c00000000000000000000000000000000000000000000000000000000865260049530600482015281816024818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015614e6357614e6e575b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15613362578180916004604051809481937f58f3d1630000000000000000000000000000000000000000000000000000000083525af18015614e6357614e54575b5090815b8451811015614e4b5773ffffffffffffffffffffffffffffffffffffffff614bde82876140d8565b51169081845260079182602052604085209060405191614bfd83612a3e565b54916fffffffffffffffffffffffffffffffff8316815260208360801c9101526fffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff614c50858b6140d8565b511680614dbf5750614c67475b8260801c90612b1c565b6fffffffffffffffffffffffffffffffff821615614db6575b88614d54575b6fffffffffffffffffffffffffffffffff841161044e57614ca99160801c612fb6565b6fffffffffffffffffffffffffffffffff811161044e57600194614d43926fffffffffffffffffffffffffffffffff60405193614ce585612a3e565b8187168552166020840152885260205260408720815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b614d4d82856140d8565b5201614bb6565b92670de0b6b3a7640000808502908582041485151715614d885790614d7c8a614d82936139e6565b90612fb6565b92614c86565b60118d7f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b60019350614c80565b60208c6024604051809481937f70a0823100000000000000000000000000000000000000000000000000000000835230908301525afa8015614e40578890614e0c575b614c679150614c5d565b506020813d602011614e38575b81614e2660209383612a5a565b8101031261044e57614c679051614e02565b3d9150614e19565b6040513d8a823e3d90fd5b50939294505050565b614e5d906129fb565b38614bb2565b6040513d84823e3d90fd5b3d8083833e614e7d8183612a5a565b81016020918281830312613ab65780519067ffffffffffffffff8211613816570181601f82011215613ab6578051908380614eb784612a7d565b614ec46040519182612a5a565b848152019260051b820101928311613816578301905b828210614ee957505050614b37565b81518152908301908301614eda565b9092805b8451811015614f58578073ffffffffffffffffffffffffffffffffffffffff614f27600193886140d8565b5116835260076020526fffffffffffffffffffffffffffffffff604084205416614f5182866140d8565b5201614efc565b505090565b92509190565b15614f6a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b9291909273ffffffffffffffffffffffffffffffffffffffff8091168015158061511c575b614fc790614f63565b600094818652602090600982526040938488205491885b81518110156151105782614ff282846140d8565b5116908a615000828b6140d8565b5183825260058089528a83208a845289526fffffffffffffffffffffffffffffffff94858c852054168015615108575b8381146150fa57670de0b6b3a76400006150566150506150719387612b1c565b8c61394b565b04828652838c528d86208d87528c528d86205460801c612fb6565b9386841161335f5786851161335f57866150f4956001988f519661509488612a3e565b168652168b850152528852898d20898e528852898d20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b01614fde565b5050505050600191506150f4565b506001615030565b50505050505050509050565b5030811415614fbe565b73ffffffffffffffffffffffffffffffffffffffff615154818316928315158061530a575b610ff990614f63565b9060409182517fe268b3a40000000000000000000000000000000000000000000000000000000081528460048201528381602481600080977f0000000000000000000000000000000000000000000000000000000000000000165af190811561530057839084926152bf575b506fffffffffffffffffffffffffffffffff80911690602884028481046028148515171561529257606490049282615236575b5050509080821060001461522e5750925b615220846125dd60085484865260096020528686205490612b1c565b600855815260096020522055565b905092615204565b615269929161266491167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002541661394b565b603c810290808204603c1490151715613a895790606461528a920490612fb6565b3880806151f3565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b809250858092503d83116152f9575b6152d88183612a5a565b810103126152f5576152ee60206126c3836157cf565b90386151c0565b8280fd5b503d6152ce565b84513d85823e3d90fd5b503084141561514b565b919290156153755750815115615328575090565b3b156153315790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156153885750805190602001fd5b6153a49060405191829162461bcd60e51b8352600483016128bc565b0390fd5b156153af57565b606460405162461bcd60e51b815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc0000811215806157bc575b615426906153a8565b600081126157a7576064906806f05b59d3b20000008112615744577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac6200000081121561570b575b6856bc75e2d6310000008112156156d1575b682b5e3af16b18800000811215615699575b6815af1d78b58c400000811215615661575b680ad78ebc5ac620000081121561562a575b828112156155f3575b6802b5e3af16b18800008112156155bc575b68015af1d78b58c40000811215615585575b60028382800205058360038184840205056004828583020505600583868302050560068487830205056007858883020505906008868984020505926009878a8602050594600a888b8802050596600b898c8a02050599600c8a8d8d0205059b0101010101010101010101010205020590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590615513565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590615501565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000849201920205906154ef565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000849201920205906154e6565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00000849201920205906154d4565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906154c2565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906154b0565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000000161549e565b6803782dace9d90000008112615794577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef738092615489565b68056bc75e2d6310000082600192615489565b6157b3906000036153f3565b61393d906141a6565b5068070c1cc73b00c8000081131561541d565b51906fffffffffffffffffffffffffffffffff8216820361044e5756fea26469706673582212204207738245b4c8614e1a9db87f0850d04a7b45708aaecde24bef87598ac4413364736f6c63430008170033000000000000000000000000ba567cf0d8230c0ad8d8bfc50e587e06d6f118e90000000000000000000000000000000000000000000000000c2bda6c80727000000000000000000000000000000000000000000000000000193f8f79da76c000000000000000000000000000000000000000000000000000002359c5efe4034000000000000000000000000030c6d4e892871220b5ab66c10db577da96fb974b000000000000000000000000428f2f93afac3f96b0de59854038c585e06165c8