0x60806040526004361061016a5760003560e01c80637d1db4a5116100d1578063c9567bf91161008a578063dd62ed3e11610064578063dd62ed3e14610505578063edac985b14610542578063fe00e0df1461056b578063ffb54a991461059457610171565b8063c9567bf914610498578063ca9ec199146104af578063caa2dc83146104da57610171565b80637d1db4a5146103725780638da5cb5b1461039d5780638f9a55c0146103c857806395d89b41146103f35780639b19251a1461041e578063a9059cbb1461045b57610171565b806342a110951161012357806342a110951461029a57806350ae1c67146102c557806351bc3c85146102f057806370a0823114610307578063715018a614610344578063751039fc1461035b57610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de578063232452161461020957806323b872dd14610232578063313ce5671461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105bf565b6040516101989190612a69565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612521565b6105fc565b6040516101d59190612a4e565b60405180910390f35b3480156101ea57600080fd5b506101f3610613565b6040516102009190612b8b565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061255d565b610627565b005b34801561023e57600080fd5b50610259600480360381019061025491906124d2565b610780565b6040516102669190612a4e565b60405180910390f35b34801561027b57600080fd5b5061028461082a565b6040516102919190612c45565b60405180910390f35b3480156102a657600080fd5b506102af610833565b6040516102bc9190612b8b565b60405180910390f35b3480156102d157600080fd5b506102da610839565b6040516102e79190612b8b565b60405180910390f35b3480156102fc57600080fd5b5061030561083f565b005b34801561031357600080fd5b5061032e60048036038101906103299190612444565b6108d5565b60405161033b9190612b8b565b60405180910390f35b34801561035057600080fd5b5061035961091e565b005b34801561036757600080fd5b50610370610a6a565b005b34801561037e57600080fd5b50610387610b76565b6040516103949190612b8b565b60405180910390f35b3480156103a957600080fd5b506103b2610b7c565b6040516103bf91906129a9565b60405180910390f35b3480156103d457600080fd5b506103dd610ba5565b6040516103ea9190612b8b565b60405180910390f35b3480156103ff57600080fd5b50610408610bab565b6040516104159190612a69565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190612444565b610be8565b6040516104529190612a4e565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190612521565b610c08565b60405161048f9190612a4e565b60405180910390f35b3480156104a457600080fd5b506104ad610c1f565b005b3480156104bb57600080fd5b506104c4611058565b6040516104d19190612b8b565b60405180910390f35b3480156104e657600080fd5b506104ef61105e565b6040516104fc9190612b8b565b60405180910390f35b34801561051157600080fd5b5061052c60048036038101906105279190612496565b611064565b6040516105399190612b8b565b60405180910390f35b34801561054e57600080fd5b506105696004803603810190610564919061255d565b6110eb565b005b34801561057757600080fd5b50610592600480360381019061058d91906125f1565b611244565b005b3480156105a057600080fd5b506105a96113a8565b6040516105b69190612a4e565b60405180910390f35b60606040518060400160405280600b81526020017f54726164696e6720626f74000000000000000000000000000000000000000000815250905090565b60006106093384846113bb565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90612b0b565b60405180910390fd5b60005b8282905081101561077b576000600e6000858585818110610702577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107179190612444565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061077390612e64565b9150506106b8565b505050565b600061078d8484846114a6565b61081f843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461081a9190612d96565b6113bb565b600190509392505050565b60006012905090565b60055481565b600d5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089957600080fd5b60006108a4306108d5565b905060008111156108b9576108b8816118db565b5b600047905060008111156108d1576108d081611bfd565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a390612b0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612b0b565b60405180910390fd5b6b033b2e3c9fd0803ce80000006007819055506b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6b033b2e3c9fd0803ce8000000604051610b6c9190612b8b565b60405180910390a1565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60606040518060400160405280600481526020017f54424f5400000000000000000000000000000000000000000000000000000000815250905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610c153384846114a6565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca490612b0b565b60405180910390fd5b601160149054906101000a900460ff1615610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612b6b565b60405180910390fd5b610d3630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006113bb565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd6919061246d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5a57600080fd5b505afa158015610e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e92919061246d565b6040518363ffffffff1660e01b8152600401610eaf9291906129c4565b602060405180830381600087803b158015610ec957600080fd5b505af1158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f01919061246d565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730600b54610f8d306108d5565b610f979190612d96565b600080610fa2610b7c565b426040518863ffffffff1660e01b8152600401610fc4969594939291906129ed565b6060604051808303818588803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061101691906125a2565b5050506001601160166101000a81548160ff0219169083151502179055506001601160146101000a81548160ff02191690831515021790555043601281905550565b60065481565b600c5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117090612b0b565b60405180910390fd5b60005b8282905081101561123f576001600e60008585858181106111c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906111db9190612444565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061123790612e64565b91505061117c565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990612b0b565b60405180910390fd5b60055484111580156112e657506006548311155b80156112f45750600c548211155b80156113025750600d548111155b611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133890612aeb565b60405180910390fd5b836005819055508260068190555081600c8190555080600d819055507f42f773a26531834b9d9fb1891f7bf40fc29c7c0fa47165b80c9ac2c1ff1b80c3600554600654600c54600d5460405161139a9493929190612c00565b60405180910390a150505050565b601160149054906101000a900460ff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114999190612b8b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d90612a8b565b60405180910390fd5b60008111611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090612b2b565b60405180910390fd5b6000611566848484611c69565b90506000611573306108d5565b9050601160159054906101000a900460ff161580156115df5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156115f75750601160169054906101000a900460ff165b8015611604575060095481115b15611640576116266116218461161c84600a5461238d565b61238d565b6118db565b6000479050600081111561163e5761163d47611bfd565b5b505b600082111561173d5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116949190612cb5565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117349190612b8b565b60405180910390a35b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117889190612d96565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508183600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118179190612cb5565b6118219190612d96565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866118bf9190612d96565b6040516118cc9190612b8b565b60405180910390a35050505050565b6001601160156101000a81548160ff021916908315150217905550600081141561190457611bdf565b601160149054906101000a900460ff1661191d57611bdf565b6000600267ffffffffffffffff811115611960577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561198e5781602001602082028036833780820191505090505b50905030816000815181106119cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6e57600080fd5b505afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa6919061246d565b81600181518110611ae0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b4730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113bb565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611bab959493929190612ba6565b600060405180830381600087803b158015611bc557600080fd5b505af1158015611bd9573d6000803e3d6000fd5b50505050505b6000601160156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c65573d6000803e3d6000fd5b5050565b60008060009050611c78610b7c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ce65750611cb6610b7c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3c5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d925750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561206f57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611e425750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e985750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f465760085483611eaa866108d5565b611eb49190612cb5565b1115611ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eec90612b4b565b60405180910390fd5b6001601254611f049190612cb5565b4311611f28576064604684611f199190612d3c565b611f239190612d0b565b611f43565b606460055484611f389190612d3c565b611f429190612d0b565b5b90505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fcf57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561206a57600754831115612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090612aab565b60405180910390fd5b60016012546120289190612cb5565b431161204c57606460468461203d9190612d3c565b6120479190612d0b565b612067565b60646006548461205c9190612d3c565b6120669190612d0b565b5b90505b612382565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121105750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561238157601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156121c05750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122165750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229057600f5483612228866108d5565b6122329190612cb5565b1115612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a90612acb565b60405180910390fd5b6064600c54846122839190612d3c565b61228d9190612d0b565b90505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561231957503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561238057600f54831115612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a90612acb565b60405180910390fd5b6064600d54846123739190612d3c565b61237d9190612d0b565b90505b5b5b809150509392505050565b600081831161239c578261239e565b815b905092915050565b6000813590506123b581612f1c565b92915050565b6000815190506123ca81612f1c565b92915050565b60008083601f8401126123e257600080fd5b8235905067ffffffffffffffff8111156123fb57600080fd5b60208301915083602082028301111561241357600080fd5b9250929050565b60008135905061242981612f33565b92915050565b60008151905061243e81612f33565b92915050565b60006020828403121561245657600080fd5b6000612464848285016123a6565b91505092915050565b60006020828403121561247f57600080fd5b600061248d848285016123bb565b91505092915050565b600080604083850312156124a957600080fd5b60006124b7858286016123a6565b92505060206124c8858286016123a6565b9150509250929050565b6000806000606084860312156124e757600080fd5b60006124f5868287016123a6565b9350506020612506868287016123a6565b92505060406125178682870161241a565b9150509250925092565b6000806040838503121561253457600080fd5b6000612542858286016123a6565b92505060206125538582860161241a565b9150509250929050565b6000806020838503121561257057600080fd5b600083013567ffffffffffffffff81111561258a57600080fd5b612596858286016123d0565b92509250509250929050565b6000806000606084860312156125b757600080fd5b60006125c58682870161242f565b93505060206125d68682870161242f565b92505060406125e78682870161242f565b9150509250925092565b6000806000806080858703121561260757600080fd5b60006126158782880161241a565b94505060206126268782880161241a565b93505060406126378782880161241a565b92505060606126488782880161241a565b91505092959194509250565b6000612660838361266c565b60208301905092915050565b61267581612dca565b82525050565b61268481612dca565b82525050565b600061269582612c70565b61269f8185612c93565b93506126aa83612c60565b8060005b838110156126db5781516126c28882612654565b97506126cd83612c86565b9250506001810190506126ae565b5085935050505092915050565b6126f181612ddc565b82525050565b61270081612e1f565b82525050565b600061271182612c7b565b61271b8185612ca4565b935061272b818560208601612e31565b61273481612f0b565b840191505092915050565b600061274c602383612ca4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006127b2601983612ca4565b91507f4578636565647320746865205f6d61785478416d6f756e742e000000000000006000830152602082019050919050565b60006127f2602083612ca4565b91507f4578636565647320746865205f77686974656c6973744d6178416d6f756e742e6000830152602082019050919050565b6000612832600b83612ca4565b91507f496e76616c6964207461780000000000000000000000000000000000000000006000830152602082019050919050565b6000612872602083612ca4565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006128b2602983612ca4565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612918601a83612ca4565b91507f4578636565647320746865206d617857616c6c657453697a652e0000000000006000830152602082019050919050565b6000612958601783612ca4565b91507f74726164696e6720697320616c7265616479206f70656e0000000000000000006000830152602082019050919050565b61299481612e08565b82525050565b6129a381612e12565b82525050565b60006020820190506129be600083018461267b565b92915050565b60006040820190506129d9600083018561267b565b6129e6602083018461267b565b9392505050565b600060c082019050612a02600083018961267b565b612a0f602083018861298b565b612a1c60408301876126f7565b612a2960608301866126f7565b612a36608083018561267b565b612a4360a083018461298b565b979650505050505050565b6000602082019050612a6360008301846126e8565b92915050565b60006020820190508181036000830152612a838184612706565b905092915050565b60006020820190508181036000830152612aa48161273f565b9050919050565b60006020820190508181036000830152612ac4816127a5565b9050919050565b60006020820190508181036000830152612ae4816127e5565b9050919050565b60006020820190508181036000830152612b0481612825565b9050919050565b60006020820190508181036000830152612b2481612865565b9050919050565b60006020820190508181036000830152612b44816128a5565b9050919050565b60006020820190508181036000830152612b648161290b565b9050919050565b60006020820190508181036000830152612b848161294b565b9050919050565b6000602082019050612ba0600083018461298b565b92915050565b600060a082019050612bbb600083018861298b565b612bc860208301876126f7565b8181036040830152612bda818661268a565b9050612be9606083018561267b565b612bf6608083018461298b565b9695505050505050565b6000608082019050612c15600083018761298b565b612c22602083018661298b565b612c2f604083018561298b565b612c3c606083018461298b565b95945050505050565b6000602082019050612c5a600083018461299a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612cc082612e08565b9150612ccb83612e08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d0057612cff612ead565b5b828201905092915050565b6000612d1682612e08565b9150612d2183612e08565b925082612d3157612d30612edc565b5b828204905092915050565b6000612d4782612e08565b9150612d5283612e08565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d8b57612d8a612ead565b5b828202905092915050565b6000612da182612e08565b9150612dac83612e08565b925082821015612dbf57612dbe612ead565b5b828203905092915050565b6000612dd582612de8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612e2a82612e08565b9050919050565b60005b83811015612e4f578082015181840152602081019050612e34565b83811115612e5e576000848401525b50505050565b6000612e6f82612e08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ea257612ea1612ead565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b612f2581612dca565b8114612f3057600080fd5b50565b612f3c81612e08565b8114612f4757600080fd5b5056fea26469706673582212205cc75aa4789593b376a6443e276bb2e735f8025182878b2075212ad3f7acdbef64736f6c63430008000033
0x60806040526019600555601e600655606460016b033b2e3c9fd0803ce80000006200002b919062000542565b6200003791906200050a565b600755606460016b033b2e3c9fd0803ce800000062000057919062000542565b6200006391906200050a565b600855606460016b033b2e3c9fd0803ce800000062000083919062000542565b6200008f91906200050a565b600955606460016b033b2e3c9fd0803ce8000000620000af919062000542565b620000bb91906200050a565b600a55606460056b033b2e3c9fd0803ce8000000620000db919062000542565b620000e791906200050a565b600b55600a600c55600f600d55606460016b033b2e3c9fd0803ce800000062000111919062000542565b6200011d91906200050a565b600f55737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160146101000a81548160ff0219169083151502179055506000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff021916908315150217905550348015620001d357600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016003600062000316620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620004a59190620004ed565b60405180910390a36200060b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004e781620005a3565b82525050565b6000602082019050620005046000830184620004dc565b92915050565b60006200051782620005a3565b91506200052483620005a3565b925082620005375762000536620005dc565b5b828204905092915050565b60006200054f82620005a3565b91506200055c83620005a3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005985762000597620005ad565b5b828202905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b612f80806200061b6000396000f3fe60806040526004361061016a5760003560e01c80637d1db4a5116100d1578063c9567bf91161008a578063dd62ed3e11610064578063dd62ed3e14610505578063edac985b14610542578063fe00e0df1461056b578063ffb54a991461059457610171565b8063c9567bf914610498578063ca9ec199146104af578063caa2dc83146104da57610171565b80637d1db4a5146103725780638da5cb5b1461039d5780638f9a55c0146103c857806395d89b41146103f35780639b19251a1461041e578063a9059cbb1461045b57610171565b806342a110951161012357806342a110951461029a57806350ae1c67146102c557806351bc3c85146102f057806370a0823114610307578063715018a614610344578063751039fc1461035b57610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de578063232452161461020957806323b872dd14610232578063313ce5671461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105bf565b6040516101989190612a69565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612521565b6105fc565b6040516101d59190612a4e565b60405180910390f35b3480156101ea57600080fd5b506101f3610613565b6040516102009190612b8b565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061255d565b610627565b005b34801561023e57600080fd5b50610259600480360381019061025491906124d2565b610780565b6040516102669190612a4e565b60405180910390f35b34801561027b57600080fd5b5061028461082a565b6040516102919190612c45565b60405180910390f35b3480156102a657600080fd5b506102af610833565b6040516102bc9190612b8b565b60405180910390f35b3480156102d157600080fd5b506102da610839565b6040516102e79190612b8b565b60405180910390f35b3480156102fc57600080fd5b5061030561083f565b005b34801561031357600080fd5b5061032e60048036038101906103299190612444565b6108d5565b60405161033b9190612b8b565b60405180910390f35b34801561035057600080fd5b5061035961091e565b005b34801561036757600080fd5b50610370610a6a565b005b34801561037e57600080fd5b50610387610b76565b6040516103949190612b8b565b60405180910390f35b3480156103a957600080fd5b506103b2610b7c565b6040516103bf91906129a9565b60405180910390f35b3480156103d457600080fd5b506103dd610ba5565b6040516103ea9190612b8b565b60405180910390f35b3480156103ff57600080fd5b50610408610bab565b6040516104159190612a69565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190612444565b610be8565b6040516104529190612a4e565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190612521565b610c08565b60405161048f9190612a4e565b60405180910390f35b3480156104a457600080fd5b506104ad610c1f565b005b3480156104bb57600080fd5b506104c4611058565b6040516104d19190612b8b565b60405180910390f35b3480156104e657600080fd5b506104ef61105e565b6040516104fc9190612b8b565b60405180910390f35b34801561051157600080fd5b5061052c60048036038101906105279190612496565b611064565b6040516105399190612b8b565b60405180910390f35b34801561054e57600080fd5b506105696004803603810190610564919061255d565b6110eb565b005b34801561057757600080fd5b50610592600480360381019061058d91906125f1565b611244565b005b3480156105a057600080fd5b506105a96113a8565b6040516105b69190612a4e565b60405180910390f35b60606040518060400160405280600b81526020017f54726164696e6720626f74000000000000000000000000000000000000000000815250905090565b60006106093384846113bb565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90612b0b565b60405180910390fd5b60005b8282905081101561077b576000600e6000858585818110610702577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107179190612444565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061077390612e64565b9150506106b8565b505050565b600061078d8484846114a6565b61081f843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461081a9190612d96565b6113bb565b600190509392505050565b60006012905090565b60055481565b600d5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089957600080fd5b60006108a4306108d5565b905060008111156108b9576108b8816118db565b5b600047905060008111156108d1576108d081611bfd565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a390612b0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612b0b565b60405180910390fd5b6b033b2e3c9fd0803ce80000006007819055506b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6b033b2e3c9fd0803ce8000000604051610b6c9190612b8b565b60405180910390a1565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60606040518060400160405280600481526020017f54424f5400000000000000000000000000000000000000000000000000000000815250905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610c153384846114a6565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca490612b0b565b60405180910390fd5b601160149054906101000a900460ff1615610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612b6b565b60405180910390fd5b610d3630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006113bb565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd6919061246d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5a57600080fd5b505afa158015610e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e92919061246d565b6040518363ffffffff1660e01b8152600401610eaf9291906129c4565b602060405180830381600087803b158015610ec957600080fd5b505af1158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f01919061246d565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730600b54610f8d306108d5565b610f979190612d96565b600080610fa2610b7c565b426040518863ffffffff1660e01b8152600401610fc4969594939291906129ed565b6060604051808303818588803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061101691906125a2565b5050506001601160166101000a81548160ff0219169083151502179055506001601160146101000a81548160ff02191690831515021790555043601281905550565b60065481565b600c5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117090612b0b565b60405180910390fd5b60005b8282905081101561123f576001600e60008585858181106111c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906111db9190612444565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061123790612e64565b91505061117c565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990612b0b565b60405180910390fd5b60055484111580156112e657506006548311155b80156112f45750600c548211155b80156113025750600d548111155b611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133890612aeb565b60405180910390fd5b836005819055508260068190555081600c8190555080600d819055507f42f773a26531834b9d9fb1891f7bf40fc29c7c0fa47165b80c9ac2c1ff1b80c3600554600654600c54600d5460405161139a9493929190612c00565b60405180910390a150505050565b601160149054906101000a900460ff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114999190612b8b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d90612a8b565b60405180910390fd5b60008111611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090612b2b565b60405180910390fd5b6000611566848484611c69565b90506000611573306108d5565b9050601160159054906101000a900460ff161580156115df5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156115f75750601160169054906101000a900460ff165b8015611604575060095481115b15611640576116266116218461161c84600a5461238d565b61238d565b6118db565b6000479050600081111561163e5761163d47611bfd565b5b505b600082111561173d5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116949190612cb5565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117349190612b8b565b60405180910390a35b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117889190612d96565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508183600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118179190612cb5565b6118219190612d96565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866118bf9190612d96565b6040516118cc9190612b8b565b60405180910390a35050505050565b6001601160156101000a81548160ff021916908315150217905550600081141561190457611bdf565b601160149054906101000a900460ff1661191d57611bdf565b6000600267ffffffffffffffff811115611960577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561198e5781602001602082028036833780820191505090505b50905030816000815181106119cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6e57600080fd5b505afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa6919061246d565b81600181518110611ae0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b4730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113bb565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611bab959493929190612ba6565b600060405180830381600087803b158015611bc557600080fd5b505af1158015611bd9573d6000803e3d6000fd5b50505050505b6000601160156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c65573d6000803e3d6000fd5b5050565b60008060009050611c78610b7c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ce65750611cb6610b7c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3c5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d925750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561206f57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611e425750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e985750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f465760085483611eaa866108d5565b611eb49190612cb5565b1115611ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eec90612b4b565b60405180910390fd5b6001601254611f049190612cb5565b4311611f28576064604684611f199190612d3c565b611f239190612d0b565b611f43565b606460055484611f389190612d3c565b611f429190612d0b565b5b90505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fcf57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561206a57600754831115612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090612aab565b60405180910390fd5b60016012546120289190612cb5565b431161204c57606460468461203d9190612d3c565b6120479190612d0b565b612067565b60646006548461205c9190612d3c565b6120669190612d0b565b5b90505b612382565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121105750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561238157601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156121c05750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122165750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229057600f5483612228866108d5565b6122329190612cb5565b1115612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a90612acb565b60405180910390fd5b6064600c54846122839190612d3c565b61228d9190612d0b565b90505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561231957503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561238057600f54831115612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a90612acb565b60405180910390fd5b6064600d54846123739190612d3c565b61237d9190612d0b565b90505b5b5b809150509392505050565b600081831161239c578261239e565b815b905092915050565b6000813590506123b581612f1c565b92915050565b6000815190506123ca81612f1c565b92915050565b60008083601f8401126123e257600080fd5b8235905067ffffffffffffffff8111156123fb57600080fd5b60208301915083602082028301111561241357600080fd5b9250929050565b60008135905061242981612f33565b92915050565b60008151905061243e81612f33565b92915050565b60006020828403121561245657600080fd5b6000612464848285016123a6565b91505092915050565b60006020828403121561247f57600080fd5b600061248d848285016123bb565b91505092915050565b600080604083850312156124a957600080fd5b60006124b7858286016123a6565b92505060206124c8858286016123a6565b9150509250929050565b6000806000606084860312156124e757600080fd5b60006124f5868287016123a6565b9350506020612506868287016123a6565b92505060406125178682870161241a565b9150509250925092565b6000806040838503121561253457600080fd5b6000612542858286016123a6565b92505060206125538582860161241a565b9150509250929050565b6000806020838503121561257057600080fd5b600083013567ffffffffffffffff81111561258a57600080fd5b612596858286016123d0565b92509250509250929050565b6000806000606084860312156125b757600080fd5b60006125c58682870161242f565b93505060206125d68682870161242f565b92505060406125e78682870161242f565b9150509250925092565b6000806000806080858703121561260757600080fd5b60006126158782880161241a565b94505060206126268782880161241a565b93505060406126378782880161241a565b92505060606126488782880161241a565b91505092959194509250565b6000612660838361266c565b60208301905092915050565b61267581612dca565b82525050565b61268481612dca565b82525050565b600061269582612c70565b61269f8185612c93565b93506126aa83612c60565b8060005b838110156126db5781516126c28882612654565b97506126cd83612c86565b9250506001810190506126ae565b5085935050505092915050565b6126f181612ddc565b82525050565b61270081612e1f565b82525050565b600061271182612c7b565b61271b8185612ca4565b935061272b818560208601612e31565b61273481612f0b565b840191505092915050565b600061274c602383612ca4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006127b2601983612ca4565b91507f4578636565647320746865205f6d61785478416d6f756e742e000000000000006000830152602082019050919050565b60006127f2602083612ca4565b91507f4578636565647320746865205f77686974656c6973744d6178416d6f756e742e6000830152602082019050919050565b6000612832600b83612ca4565b91507f496e76616c6964207461780000000000000000000000000000000000000000006000830152602082019050919050565b6000612872602083612ca4565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006128b2602983612ca4565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612918601a83612ca4565b91507f4578636565647320746865206d617857616c6c657453697a652e0000000000006000830152602082019050919050565b6000612958601783612ca4565b91507f74726164696e6720697320616c7265616479206f70656e0000000000000000006000830152602082019050919050565b61299481612e08565b82525050565b6129a381612e12565b82525050565b60006020820190506129be600083018461267b565b92915050565b60006040820190506129d9600083018561267b565b6129e6602083018461267b565b9392505050565b600060c082019050612a02600083018961267b565b612a0f602083018861298b565b612a1c60408301876126f7565b612a2960608301866126f7565b612a36608083018561267b565b612a4360a083018461298b565b979650505050505050565b6000602082019050612a6360008301846126e8565b92915050565b60006020820190508181036000830152612a838184612706565b905092915050565b60006020820190508181036000830152612aa48161273f565b9050919050565b60006020820190508181036000830152612ac4816127a5565b9050919050565b60006020820190508181036000830152612ae4816127e5565b9050919050565b60006020820190508181036000830152612b0481612825565b9050919050565b60006020820190508181036000830152612b2481612865565b9050919050565b60006020820190508181036000830152612b44816128a5565b9050919050565b60006020820190508181036000830152612b648161290b565b9050919050565b60006020820190508181036000830152612b848161294b565b9050919050565b6000602082019050612ba0600083018461298b565b92915050565b600060a082019050612bbb600083018861298b565b612bc860208301876126f7565b8181036040830152612bda818661268a565b9050612be9606083018561267b565b612bf6608083018461298b565b9695505050505050565b6000608082019050612c15600083018761298b565b612c22602083018661298b565b612c2f604083018561298b565b612c3c606083018461298b565b95945050505050565b6000602082019050612c5a600083018461299a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612cc082612e08565b9150612ccb83612e08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d0057612cff612ead565b5b828201905092915050565b6000612d1682612e08565b9150612d2183612e08565b925082612d3157612d30612edc565b5b828204905092915050565b6000612d4782612e08565b9150612d5283612e08565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d8b57612d8a612ead565b5b828202905092915050565b6000612da182612e08565b9150612dac83612e08565b925082821015612dbf57612dbe612ead565b5b828203905092915050565b6000612dd582612de8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612e2a82612e08565b9050919050565b60005b83811015612e4f578082015181840152602081019050612e34565b83811115612e5e576000848401525b50505050565b6000612e6f82612e08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ea257612ea1612ead565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b612f2581612dca565b8114612f3057600080fd5b50565b612f3c81612e08565b8114612f4757600080fd5b5056fea26469706673582212205cc75aa4789593b376a6443e276bb2e735f8025182878b2075212ad3f7acdbef64736f6c63430008000033