60806040526611c37937e080005f196200001a9190620006f8565b5f196200002891906200075c565b6006555f60085560196009555f600a556023600b55600a54600c55600b54600d55600c54600e55600d54600f55738dc401b08e371fe3175bf10a15135ba89203506c60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738dc401b08e371fe3175bf10a15135ba89203506c60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506544364c5bb0006016556544364c5bb0006017556506d23ad5f80060185534801562000175575f80fd5b505f620001876200069460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002396200069460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033e9190620007fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ca9190620007fb565b6040518363ffffffff1660e01b8152600401620003e99291906200083c565b6020604051808303815f875af115801562000406573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200042c9190620007fb565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004806200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006206200069460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6611c37937e0800060405162000685919062000878565b60405180910390a35062000893565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070482620006c2565b91506200071183620006c2565b925082620007245762000723620006cb565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076882620006c2565b91506200077583620006c2565b925082820390508181111562000790576200078f6200072f565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007c5826200079a565b9050919050565b620007d781620007b9565b8114620007e2575f80fd5b50565b5f81519050620007f581620007cc565b92915050565b5f6020828403121562000813576200081262000796565b5b5f6200082284828501620007e5565b91505092915050565b6200083681620007b9565b82525050565b5f604082019050620008515f8301856200082b565b6200086060208301846200082b565b9392505050565b6200087281620006c2565b82525050565b5f6020820190506200088d5f83018462000867565b92915050565b613bc280620008a15f395ff3fe6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612c5d565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d1e565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d71565b610850565b60405161025f9190612dc9565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612e3d565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e65565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e7e565b6108a0565b6040516102ef9190612dc9565b60405180910390f35b348015610303575f80fd5b5061030c610974565b6040516103199190612e65565b60405180910390f35b34801561032d575f80fd5b5061033661097a565b6040516103439190612ee9565b60405180910390f35b348015610357575f80fd5b50610360610982565b60405161036d9190612f11565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612f2a565b6109a7565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f7f565b610a92565b005b3480156103d1575f80fd5b506103da610b43565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f2a565b610c10565b60405161040f9190612e65565b60405180910390f35b348015610423575f80fd5b5061042c610c5e565b005b348015610439575f80fd5b50610454600480360381019061044f9190612faa565b610dac565b005b348015610461575f80fd5b5061046a610e4a565b6040516104779190612e65565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612f2a565b610e50565b6040516104b39190612e65565b60405180910390f35b3480156104c7575f80fd5b506104d0610e65565b6040516104dd9190612f11565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f7f565b610e8c565b005b348015610519575f80fd5b50610522610f3d565b60405161052f9190612e65565b60405180910390f35b348015610543575f80fd5b5061054c610f43565b6040516105599190612d1e565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612faa565b610f80565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612fd5565b61101e565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d71565b6110d4565b6040516105e59190612dc9565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612f2a565b6110f1565b6040516106219190612dc9565b60405180910390f35b348015610635575f80fd5b5061063e61110e565b005b34801561064b575f80fd5b5061066660048036038101906106619190613092565b6111e3565b005b348015610673575f80fd5b5061068e600480360381019061068991906130ef565b611312565b60405161069b9190612e65565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612faa565b611394565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612f2a565b611432565b005b6106fc6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613177565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613195565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600f81526020017f5468697264204579652046696c6d730000000000000000000000000000000000815250905090565b5f61086361085c6115ef565b84846115f6565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6611c37937e08000905090565b5f6108ac8484846117b9565b610969846108b86115ef565b61096485604051806060016040528060288152602001613b656028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091b6115ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120199092919063ffffffff16565b6115f6565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109af6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3290613177565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9a6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613177565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b836115ef565b73ffffffffffffffffffffffffffffffffffffffff161480610bf8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be06115ef565b73ffffffffffffffffffffffffffffffffffffffff16145b610c00575f80fd5b5f479050610c0d8161207b565b50565b5f610c5760025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e3565b9050919050565b610c666115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990613177565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db46115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3790613177565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e946115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1790613177565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600881526020017f5468697264457965000000000000000000000000000000000000000000000000815250905090565b610f886115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b90613177565b60405180910390fd5b8060188190555050565b6110266115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a990613177565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110e76110e06115ef565b84846117b9565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661114e6115ef565b73ffffffffffffffffffffffffffffffffffffffff1614806111c3575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ab6115ef565b73ffffffffffffffffffffffffffffffffffffffff16145b6111cb575f80fd5b5f6111d530610c10565b90506111e08161214f565b50565b6111eb6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e90613177565b60405180910390fd5b5f5b8383905081101561130c578160055f86868581811061129b5761129a613195565b5b90506020020160208101906112b09190612f2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611279565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139c6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f90613177565b60405180910390fd5b8060178190555050565b61143a6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613177565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613232565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b906132c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c99061334e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ac9190612e65565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906133dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c9061346a565b60405180910390fd5b5f81116118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce906134f8565b60405180910390fd5b6118df610e65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194d575061191d610e65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2657601560149054906101000a900460ff166119dc5761196e610e65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290613586565b60405180910390fd5b5b601654811115611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a18906135ee565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611abf575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af59061367c565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611baa5760175481611b5f84610c10565b611b6991906136c7565b10611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba09061376a565b60405180910390fd5b5b5f611bb430610c10565b90505f60185482101590506016548210611bce5760165491505b808015611be6575060158054906101000a900460ff16155b8015611c3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750601560169054906101000a900460ff165b8015611caa575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cfd575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2357611d0b8261214f565b5f4790505f811115611d2157611d204761207b565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc6575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e77575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e76575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e84575f9050612007565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fee575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200657600a54600c81905550600b54600d819055505b5b612013848484846123b8565b50505050565b5f838311158290612060576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120579190612d1e565b60405180910390fd5b505f838561206e9190613788565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120df573d5f803e3d5ffd5b5050565b5f600654821115612129576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121209061382b565b60405180910390fd5b5f6121326123e5565b9050612147818461240e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218557612184612ac7565b5b6040519080825280602002602001820160405280156121b35781602001602082028036833780820191505090505b50905030815f815181106121ca576121c9613195565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612292919061385d565b816001815181106122a6576122a5613195565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161236e959493929190613978565b5f604051808303815f87803b158015612385575f80fd5b505af1158015612397573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c6576123c5612457565b5b6123d1848484612490565b806123df576123de612650565b5b50505050565b5f805f6123f0612664565b91509150612407818361240e90919063ffffffff16565b9250505090565b5f61244f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126bd565b905092915050565b5f600c5414801561246957505f600d54145b61248e57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061249f8761271e565b9550955095509550955095506124fb8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277e90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258c8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d681612824565b6125e084836128db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263d9190612e65565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6611c37937e0800090506126936611c37937e0800060065461240e90919063ffffffff16565b8210156126b0576006546611c37937e080009350935050506126b9565b81819350935050505b9091565b5f8083118290612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa9190612d1e565b60405180910390fd5b505f838561271191906139fd565b9050809150509392505050565b5f805f805f805f805f6127368a600c54600d54612915565b9250925092505f6127456123e5565b90505f805f6127568e8787876129a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612019565b905092915050565b5f8082846127d591906136c7565b90508381101561281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281190613a77565b60405180910390fd5b8091505092915050565b5f61282d6123e5565b90505f6128438284612a2b90919063ffffffff16565b90506128958160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128f08260065461277e90919063ffffffff16565b60068190555061290b816007546127c790919063ffffffff16565b6007819055505050565b5f805f8061293f6064612931888a612a2b90919063ffffffff16565b61240e90919063ffffffff16565b90505f612968606461295a888b612a2b90919063ffffffff16565b61240e90919063ffffffff16565b90505f61299082612982858c61277e90919063ffffffff16565b61277e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129be8589612a2b90919063ffffffff16565b90505f6129d48689612a2b90919063ffffffff16565b90505f6129ea8789612a2b90919063ffffffff16565b90505f612a1282612a04858761277e90919063ffffffff16565b61277e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a3b575f9050612a9c565b5f8284612a489190613a95565b9050828482612a5791906139fd565b14612a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8e90613b46565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afd82612ab7565b810181811067ffffffffffffffff82111715612b1c57612b1b612ac7565b5b80604052505050565b5f612b2e612aa2565b9050612b3a8282612af4565b919050565b5f67ffffffffffffffff821115612b5957612b58612ac7565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9782612b6e565b9050919050565b612ba781612b8d565b8114612bb1575f80fd5b50565b5f81359050612bc281612b9e565b92915050565b5f612bda612bd584612b3f565b612b25565b90508083825260208201905060208402830185811115612bfd57612bfc612b6a565b5b835b81811015612c265780612c128882612bb4565b845260208401935050602081019050612bff565b5050509392505050565b5f82601f830112612c4457612c43612ab3565b5b8135612c54848260208601612bc8565b91505092915050565b5f60208284031215612c7257612c71612aab565b5b5f82013567ffffffffffffffff811115612c8f57612c8e612aaf565b5b612c9b84828501612c30565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612cdb578082015181840152602081019050612cc0565b5f8484015250505050565b5f612cf082612ca4565b612cfa8185612cae565b9350612d0a818560208601612cbe565b612d1381612ab7565b840191505092915050565b5f6020820190508181035f830152612d368184612ce6565b905092915050565b5f819050919050565b612d5081612d3e565b8114612d5a575f80fd5b50565b5f81359050612d6b81612d47565b92915050565b5f8060408385031215612d8757612d86612aab565b5b5f612d9485828601612bb4565b9250506020612da585828601612d5d565b9150509250929050565b5f8115159050919050565b612dc381612daf565b82525050565b5f602082019050612ddc5f830184612dba565b92915050565b5f819050919050565b5f612e05612e00612dfb84612b6e565b612de2565b612b6e565b9050919050565b5f612e1682612deb565b9050919050565b5f612e2782612e0c565b9050919050565b612e3781612e1d565b82525050565b5f602082019050612e505f830184612e2e565b92915050565b612e5f81612d3e565b82525050565b5f602082019050612e785f830184612e56565b92915050565b5f805f60608486031215612e9557612e94612aab565b5b5f612ea286828701612bb4565b9350506020612eb386828701612bb4565b9250506040612ec486828701612d5d565b9150509250925092565b5f60ff82169050919050565b612ee381612ece565b82525050565b5f602082019050612efc5f830184612eda565b92915050565b612f0b81612b8d565b82525050565b5f602082019050612f245f830184612f02565b92915050565b5f60208284031215612f3f57612f3e612aab565b5b5f612f4c84828501612bb4565b91505092915050565b612f5e81612daf565b8114612f68575f80fd5b50565b5f81359050612f7981612f55565b92915050565b5f60208284031215612f9457612f93612aab565b5b5f612fa184828501612f6b565b91505092915050565b5f60208284031215612fbf57612fbe612aab565b5b5f612fcc84828501612d5d565b91505092915050565b5f805f8060808587031215612fed57612fec612aab565b5b5f612ffa87828801612d5d565b945050602061300b87828801612d5d565b935050604061301c87828801612d5d565b925050606061302d87828801612d5d565b91505092959194509250565b5f80fd5b5f8083601f84011261305257613051612ab3565b5b8235905067ffffffffffffffff81111561306f5761306e613039565b5b60208301915083602082028301111561308b5761308a612b6a565b5b9250929050565b5f805f604084860312156130a9576130a8612aab565b5b5f84013567ffffffffffffffff8111156130c6576130c5612aaf565b5b6130d28682870161303d565b935093505060206130e586828701612f6b565b9150509250925092565b5f806040838503121561310557613104612aab565b5b5f61311285828601612bb4565b925050602061312385828601612bb4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613161602083612cae565b915061316c8261312d565b602082019050919050565b5f6020820190508181035f83015261318e81613155565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61321c602683612cae565b9150613227826131c2565b604082019050919050565b5f6020820190508181035f83015261324981613210565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132aa602483612cae565b91506132b582613250565b604082019050919050565b5f6020820190508181035f8301526132d78161329e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613338602283612cae565b9150613343826132de565b604082019050919050565b5f6020820190508181035f8301526133658161332c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133c6602583612cae565b91506133d18261336c565b604082019050919050565b5f6020820190508181035f8301526133f3816133ba565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613454602383612cae565b915061345f826133fa565b604082019050919050565b5f6020820190508181035f83015261348181613448565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134e2602983612cae565b91506134ed82613488565b604082019050919050565b5f6020820190508181035f83015261350f816134d6565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613570603f83612cae565b915061357b82613516565b604082019050919050565b5f6020820190508181035f83015261359d81613564565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135d8601c83612cae565b91506135e3826135a4565b602082019050919050565b5f6020820190508181035f830152613605816135cc565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613666602383612cae565b91506136718261360c565b604082019050919050565b5f6020820190508181035f8301526136938161365a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136d182612d3e565b91506136dc83612d3e565b92508282019050808211156136f4576136f361369a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613754602383612cae565b915061375f826136fa565b604082019050919050565b5f6020820190508181035f83015261378181613748565b9050919050565b5f61379282612d3e565b915061379d83612d3e565b92508282039050818111156137b5576137b461369a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613815602a83612cae565b9150613820826137bb565b604082019050919050565b5f6020820190508181035f83015261384281613809565b9050919050565b5f8151905061385781612b9e565b92915050565b5f6020828403121561387257613871612aab565b5b5f61387f84828501613849565b91505092915050565b5f819050919050565b5f6138ab6138a66138a184613888565b612de2565b612d3e565b9050919050565b6138bb81613891565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138f381612b8d565b82525050565b5f61390483836138ea565b60208301905092915050565b5f602082019050919050565b5f613926826138c1565b61393081856138cb565b935061393b836138db565b805f5b8381101561396b57815161395288826138f9565b975061395d83613910565b92505060018101905061393e565b5085935050505092915050565b5f60a08201905061398b5f830188612e56565b61399860208301876138b2565b81810360408301526139aa818661391c565b90506139b96060830185612f02565b6139c66080830184612e56565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a0782612d3e565b9150613a1283612d3e565b925082613a2257613a216139d0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a61601b83612cae565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b5f613a9f82612d3e565b9150613aaa83612d3e565b9250828202613ab881612d3e565b91508282048414831517613acf57613ace61369a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b30602183612cae565b9150613b3b82613ad6565b604082019050919050565b5f6020820190508181035f830152613b5d81613b24565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203a56b066c9e44456a882466accd9bd83399672671bd3f4738cfae8e4b7bbecdd64736f6c63430008180033