60806040526000600660006101000a81548160ff021916908315150217905550601960085560196009556002600a556002600b556045600c556101a4600d556014600e556000600f55606460026009600a6200005c919062000cfb565b641784abd3126200006e919062000d4c565b6200007a919062000d4c565b62000086919062000dc6565b601055606460026009600a6200009d919062000cfb565b641784abd312620000af919062000d4c565b620000bb919062000d4c565b620000c7919062000dc6565b6011556103e860086009600a620000df919062000cfb565b641784abd312620000f1919062000d4c565b620000fd919062000d4c565b62000109919062000dc6565b6012556103e860086009600a62000121919062000cfb565b641784abd31262000133919062000d4c565b6200013f919062000d4c565b6200014b919062000dc6565b60135573566fac22d03cf6e00c92ece53879aa14322f1e10601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff021916908315150217905550348015620001e557600080fd5b50604051620048a8380380620048a883398181016040528101906200020b919062000e68565b60006200021d6200093860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200032d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003249062000f21565b60405180910390fd5b6200033d6200093860201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000620004186103e8620004046103a36009600a620003de919062000cfb565b641784abd312620003f0919062000d4c565b6200094060201b620014721790919060201c565b620009c360201b620014ec1790919060201c565b90506000620004736103e86200045f60456009600a62000439919062000cfb565b641784abd3126200044b919062000d4c565b6200094060201b620014721790919060201c565b620009c360201b620014ec1790919060201c565b9050620004c981620004b5846009600a6200048f919062000cfb565b641784abd312620004a1919062000d4c565b62000a1560201b620015361790919060201c565b62000a1560201b620015361790919060201c565b60016000620004dd6200093860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620005db62000a6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007886200093860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60016000620007eb6200093860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000835919062000f54565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200089d919062000f54565b60405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000927919062000f54565b60405180910390a3505050620010f1565b600033905090565b6000808303620009545760009050620009bd565b6000828462000964919062000d4c565b905082848262000975919062000dc6565b14620009b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009af9062000fe7565b60405180910390fd5b809150505b92915050565b600062000a0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a9060201b60201c565b905092915050565b600062000a5f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000af860201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad1919062001092565b60405180910390fd5b506000838562000aeb919062000dc6565b9050809150509392505050565b600083831115829062000b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3a919062001092565b60405180910390fd5b506000838562000b549190620010b6565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000bef5780860481111562000bc75762000bc662000b61565b5b600185161562000bd75780820291505b808102905062000be78562000b90565b945062000ba7565b94509492505050565b60008262000c0a576001905062000cdd565b8162000c1a576000905062000cdd565b816001811462000c33576002811462000c3e5762000c74565b600191505062000cdd565b60ff84111562000c535762000c5262000b61565b5b8360020a91508482111562000c6d5762000c6c62000b61565b5b5062000cdd565b5060208310610133831016604e8410600b841016171562000cae5782820a90508381111562000ca85762000ca762000b61565b5b62000cdd565b62000cbd848484600162000b9d565b9250905081840481111562000cd75762000cd662000b61565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d088262000ce4565b915062000d158362000cee565b925062000d447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf8565b905092915050565b600062000d598262000ce4565b915062000d668362000ce4565b925082820262000d768162000ce4565b9150828204841483151762000d905762000d8f62000b61565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dd38262000ce4565b915062000de08362000ce4565b92508262000df35762000df262000d97565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e308262000e03565b9050919050565b62000e428162000e23565b811462000e4e57600080fd5b50565b60008151905062000e628162000e37565b92915050565b60006020828403121562000e815762000e8062000dfe565b5b600062000e918482850162000e51565b91505092915050565b600082825260208201905092915050565b7f496e76616c6964206164647265737320666f72206d61726b6574696e6720776160008201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b600062000f0960248362000e9a565b915062000f168262000eab565b604082019050919050565b6000602082019050818103600083015262000f3c8162000efa565b9050919050565b62000f4e8162000ce4565b82525050565b600060208201905062000f6b600083018462000f43565b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000fcf60218362000e9a565b915062000fdc8262000f71565b604082019050919050565b60006020820190508181036000830152620010028162000fc0565b9050919050565b600081519050919050565b60005b838110156200103457808201518184015260208101905062001017565b60008484015250505050565b6000601f19601f8301169050919050565b60006200105e8262001009565b6200106a818562000e9a565b93506200107c81856020860162001014565b620010878162001040565b840191505092915050565b60006020820190508181036000830152620010ae818462001051565b905092915050565b6000620010c38262000ce4565b9150620010d08362000ce4565b9250828203905081811115620010eb57620010ea62000b61565b5b92915050565b6137a780620011016000396000f3fe6080604052600436106101695760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063c36956a011610064578063c36956a0146104f0578063c876d0b91461051b578063d34628cc14610546578063dd62ed3e1461056f57610170565b8063a9059cbb14610471578063b155a054146104ae578063bf474bed146104c557610170565b8063715018a614610397578063751039fc146103ae5780637d1db4a5146103c55780638da5cb5b146103f05780638f9a55c01461041b57806395d89b411461044657610170565b806323b872dd1161012357806323b872dd14610275578063313ce567146102b257806331c2d847146102dd5780633bbac5791461030657806351bc3c851461034357806370a082311461035a57610170565b8062390c851461017557806306fdde031461018c578063095ea7b3146101b75780630c193045146101f45780630faee56f1461021f57806318160ddd1461024a57610170565b3661017057005b600080fd5b34801561018157600080fd5b5061018a6105ac565b005b34801561019857600080fd5b506101a1610ae4565b6040516101ae9190612666565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612730565b610b21565b6040516101eb919061278b565b60405180910390f35b34801561020057600080fd5b50610209610b3f565b60405161021691906127b5565b60405180910390f35b34801561022b57600080fd5b50610234610b45565b60405161024191906127b5565b60405180910390f35b34801561025657600080fd5b5061025f610b4b565b60405161026c91906127b5565b60405180910390f35b34801561028157600080fd5b5061029c600480360381019061029791906127d0565b610b70565b6040516102a9919061278b565b60405180910390f35b3480156102be57600080fd5b506102c7610c49565b6040516102d4919061283f565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff91906129a2565b610c52565b005b34801561031257600080fd5b5061032d600480360381019061032891906129eb565b610d7c565b60405161033a919061278b565b60405180910390f35b34801561034f57600080fd5b50610358610dd2565b005b34801561036657600080fd5b50610381600480360381019061037c91906129eb565b610e6f565b60405161038e91906127b5565b60405180910390f35b3480156103a357600080fd5b506103ac610eb8565b005b3480156103ba57600080fd5b506103c361100b565b005b3480156103d157600080fd5b506103da611169565b6040516103e791906127b5565b60405180910390f35b3480156103fc57600080fd5b5061040561116f565b6040516104129190612a27565b60405180910390f35b34801561042757600080fd5b50610430611198565b60405161043d91906127b5565b60405180910390f35b34801561045257600080fd5b5061045b61119e565b6040516104689190612666565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190612730565b6111db565b6040516104a5919061278b565b60405180910390f35b3480156104ba57600080fd5b506104c36111f9565b005b3480156104d157600080fd5b506104da6112a2565b6040516104e791906127b5565b60405180910390f35b3480156104fc57600080fd5b506105056112a8565b60405161051291906127b5565b60405180910390f35b34801561052757600080fd5b506105306112ae565b60405161053d919061278b565b60405180910390f35b34801561055257600080fd5b5061056d600480360381019061056891906129a2565b6112c1565b005b34801561057b57600080fd5b5061059660048036038101906105919190612a42565b6113eb565b6040516105a391906127b5565b60405180910390f35b6105b4611580565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890612ace565b60405180910390fd5b601660149054906101000a900460ff1615610691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068890612b3a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061073030601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61071b9190612cbc565b641784abd31261072b9190612d07565b611588565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c19190612d5e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190612d5e565b6040518363ffffffff1660e01b815260040161088b929190612d8b565b6020604051808303816000875af11580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce9190612d5e565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061095730610e6f565b60008061096261116f565b426040518863ffffffff1660e01b815260040161098496959493929190612df9565b60606040518083038185885af11580156109a2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109c79190612e6f565b505050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a69929190612ec2565b6020604051808303816000875af1158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190612f17565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b60606040518060400160405280600a81526020017f4f6f676120426f6f676100000000000000000000000000000000000000000000815250905090565b6000610b35610b2e611580565b8484611588565b6001905092915050565b600c5481565b60135481565b60006009600a610b5b9190612cbc565b641784abd312610b6b9190612d07565b905090565b6000610b7d848484611751565b610c3e84610b89611580565b610c398560405180606001604052806028815260200161374a60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bef611580565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121949092919063ffffffff16565b611588565b600190509392505050565b60006009905090565b610c5a611580565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90612ace565b60405180910390fd5b60005b8151811015610d7857600060046000848481518110610d0c57610d0b612f44565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d7090612f73565b915050610cea565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e13611580565b73ffffffffffffffffffffffffffffffffffffffff1614610e3357600080fd5b6000610e3e30610e6f565b90506000811115610e5357610e52816121f8565b5b60004790506000811115610e6b57610e6a81612490565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec0611580565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490612ace565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611013611580565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790612ace565b60405180910390fd5b6009600a6110ae9190612cbc565b641784abd3126110be9190612d07565b6010819055506009600a6110d29190612cbc565b641784abd3126110e29190612d07565b6011819055506000600660006101000a81548160ff021916908315150217905550600a600d81905550600a600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6111429190612cbc565b641784abd3126111529190612d07565b60405161115f91906127b5565b60405180910390a1565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f4f4f474100000000000000000000000000000000000000000000000000000000815250905090565b60006111ef6111e8611580565b8484611751565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661123a611580565b73ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790613007565b60405180910390fd5b6000600a819055506000600b81905550565b60125481565b600d5481565b600660009054906101000a900460ff1681565b6112c9611580565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90612ace565b60405180910390fd5b60005b81518110156113e75760016004600084848151811061137b5761137a612f44565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113df90612f73565b915050611359565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080830361148457600090506114e6565b600082846114929190612d07565b90508284826114a19190613056565b146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d8906130f9565b60405180910390fd5b809150505b92915050565b600061152e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fc565b905092915050565b600061157883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612194565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee9061318b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d9061321d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161174491906127b5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b7906132af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613341565b60405180910390fd5b60008111611872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611869906133d3565b60405180910390fd5b600061187c61116f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118ea57506118ba61116f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ed757600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119935750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61199c57600080fd5b600660009054906101000a900460ff1615611b2957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a5d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b285743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90613465565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bd45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce557601054821115611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b906134d1565b60405180910390fd5b60115482611c8185610e6f565b611c8b91906134f1565b1115611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc390613571565b60405180910390fd5b600f6000815480929190611cdf90612f73565b91905055505b611d216064611d13600c54600f5411611d0057600854611d04565b600a545b8561147290919063ffffffff16565b6114ec90919063ffffffff16565b9050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dac57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611df057611ded6064611ddf600d54600f5411611dcc57600954611dd0565b600b545b8561147290919063ffffffff16565b6114ec90919063ffffffff16565b90505b6000611dfb30610e6f565b9050601660159054906101000a900460ff16158015611e675750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e7d575060168054906101000a900460ff165b8015611e8a575060125481115b8015611e995750600e54600f54115b15611ed557611ebb611eb684611eb18460135461255f565b61255f565b6121f8565b60004790506000811115611ed357611ed247612490565b5b505b505b6000811115611fdb57611f3281600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fd291906127b5565b60405180910390a35b61202d82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120d4612086828461153690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612179848661153690919063ffffffff16565b60405161218691906127b5565b60405180910390a350505050565b60008383111582906121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d39190612666565b60405180910390fd5b50600083856121eb9190613591565b9050809150509392505050565b6001601660156101000a81548160ff021916908315150217905550600081031561247257601660149054906101000a900460ff1615612472576000600267ffffffffffffffff81111561224e5761224d61285f565b5b60405190808252806020026020018201604052801561227c5781602001602082028036833780820191505090505b509050308160008151811061229457612293612f44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235f9190612d5e565b8160018151811061237357612372612f44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123da30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611588565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161243e959493929190613683565b600060405180830381600087803b15801561245857600080fd5b505af115801561246c573d6000803e3d6000fd5b50505050505b6000601660156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124f8573d6000803e3d6000fd5b5050565b60008083118290612543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253a9190612666565b60405180910390fd5b50600083856125529190613056565b9050809150509392505050565b600081831161256e5782612570565b815b905092915050565b600080828461258791906134f1565b9050838110156125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c390613729565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126105780820151818401526020810190506125f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612638826125d6565b61264281856125e1565b93506126528185602086016125f2565b61265b8161261c565b840191505092915050565b60006020820190508181036000830152612680818461262d565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126c78261269c565b9050919050565b6126d7816126bc565b81146126e257600080fd5b50565b6000813590506126f4816126ce565b92915050565b6000819050919050565b61270d816126fa565b811461271857600080fd5b50565b60008135905061272a81612704565b92915050565b6000806040838503121561274757612746612692565b5b6000612755858286016126e5565b92505060206127668582860161271b565b9150509250929050565b60008115159050919050565b61278581612770565b82525050565b60006020820190506127a0600083018461277c565b92915050565b6127af816126fa565b82525050565b60006020820190506127ca60008301846127a6565b92915050565b6000806000606084860312156127e9576127e8612692565b5b60006127f7868287016126e5565b9350506020612808868287016126e5565b92505060406128198682870161271b565b9150509250925092565b600060ff82169050919050565b61283981612823565b82525050565b60006020820190506128546000830184612830565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128978261261c565b810181811067ffffffffffffffff821117156128b6576128b561285f565b5b80604052505050565b60006128c9612688565b90506128d5828261288e565b919050565b600067ffffffffffffffff8211156128f5576128f461285f565b5b602082029050602081019050919050565b600080fd5b600061291e612919846128da565b6128bf565b9050808382526020820190506020840283018581111561294157612940612906565b5b835b8181101561296a578061295688826126e5565b845260208401935050602081019050612943565b5050509392505050565b600082601f8301126129895761298861285a565b5b813561299984826020860161290b565b91505092915050565b6000602082840312156129b8576129b7612692565b5b600082013567ffffffffffffffff8111156129d6576129d5612697565b5b6129e284828501612974565b91505092915050565b600060208284031215612a0157612a00612692565b5b6000612a0f848285016126e5565b91505092915050565b612a21816126bc565b82525050565b6000602082019050612a3c6000830184612a18565b92915050565b60008060408385031215612a5957612a58612692565b5b6000612a67858286016126e5565b9250506020612a78858286016126e5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ab86020836125e1565b9150612ac382612a82565b602082019050919050565b60006020820190508181036000830152612ae781612aab565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612b246017836125e1565b9150612b2f82612aee565b602082019050919050565b60006020820190508181036000830152612b5381612b17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612be057808604811115612bbc57612bbb612b5a565b5b6001851615612bcb5780820291505b8081029050612bd985612b89565b9450612ba0565b94509492505050565b600082612bf95760019050612cb5565b81612c075760009050612cb5565b8160018114612c1d5760028114612c2757612c56565b6001915050612cb5565b60ff841115612c3957612c38612b5a565b5b8360020a915084821115612c5057612c4f612b5a565b5b50612cb5565b5060208310610133831016604e8410600b8410161715612c8b5782820a905083811115612c8657612c85612b5a565b5b612cb5565b612c988484846001612b96565b92509050818404811115612caf57612cae612b5a565b5b81810290505b9392505050565b6000612cc7826126fa565b9150612cd283612823565b9250612cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612be9565b905092915050565b6000612d12826126fa565b9150612d1d836126fa565b9250828202612d2b816126fa565b91508282048414831517612d4257612d41612b5a565b5b5092915050565b600081519050612d58816126ce565b92915050565b600060208284031215612d7457612d73612692565b5b6000612d8284828501612d49565b91505092915050565b6000604082019050612da06000830185612a18565b612dad6020830184612a18565b9392505050565b6000819050919050565b6000819050919050565b6000612de3612dde612dd984612db4565b612dbe565b6126fa565b9050919050565b612df381612dc8565b82525050565b600060c082019050612e0e6000830189612a18565b612e1b60208301886127a6565b612e286040830187612dea565b612e356060830186612dea565b612e426080830185612a18565b612e4f60a08301846127a6565b979650505050505050565b600081519050612e6981612704565b92915050565b600080600060608486031215612e8857612e87612692565b5b6000612e9686828701612e5a565b9350506020612ea786828701612e5a565b9250506040612eb886828701612e5a565b9150509250925092565b6000604082019050612ed76000830185612a18565b612ee460208301846127a6565b9392505050565b612ef481612770565b8114612eff57600080fd5b50565b600081519050612f1181612eeb565b92915050565b600060208284031215612f2d57612f2c612692565b5b6000612f3b84828501612f02565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612f7e826126fa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb057612faf612b5a565b5b600182019050919050565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b6000612ff1600e836125e1565b9150612ffc82612fbb565b602082019050919050565b6000602082019050818103600083015261302081612fe4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613061826126fa565b915061306c836126fa565b92508261307c5761307b613027565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130e36021836125e1565b91506130ee82613087565b604082019050919050565b60006020820190508181036000830152613112816130d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131756024836125e1565b915061318082613119565b604082019050919050565b600060208201905081810360008301526131a481613168565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132076022836125e1565b9150613212826131ab565b604082019050919050565b60006020820190508181036000830152613236816131fa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132996025836125e1565b91506132a48261323d565b604082019050919050565b600060208201905081810360008301526132c88161328c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061332b6023836125e1565b9150613336826132cf565b604082019050919050565b6000602082019050818103600083015261335a8161331e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133bd6029836125e1565b91506133c882613361565b604082019050919050565b600060208201905081810360008301526133ec816133b0565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b600061344f6024836125e1565b915061345a826133f3565b604082019050919050565b6000602082019050818103600083015261347e81613442565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006134bb6019836125e1565b91506134c682613485565b602082019050919050565b600060208201905081810360008301526134ea816134ae565b9050919050565b60006134fc826126fa565b9150613507836126fa565b925082820190508082111561351f5761351e612b5a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061355b601a836125e1565b915061356682613525565b602082019050919050565b6000602082019050818103600083015261358a8161354e565b9050919050565b600061359c826126fa565b91506135a7836126fa565b92508282039050818111156135bf576135be612b5a565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135fa816126bc565b82525050565b600061360c83836135f1565b60208301905092915050565b6000602082019050919050565b6000613630826135c5565b61363a81856135d0565b9350613645836135e1565b8060005b8381101561367657815161365d8882613600565b975061366883613618565b925050600181019050613649565b5085935050505092915050565b600060a08201905061369860008301886127a6565b6136a56020830187612dea565b81810360408301526136b78186613625565b90506136c66060830185612a18565b6136d360808301846127a6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613713601b836125e1565b915061371e826136dd565b602082019050919050565b6000602082019050818103600083015261374281613706565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e7f8897fd7e8e04aad5ab946d491b8c1f5a028bd298dd0faeca61c6ea1eb986164736f6c6343000812003300000000000000000000000061f3b386a0e47661efec93bf6e408fdbd21f5e31