0x608060405234801561001057600080fd5b506040518060400160405280600681526020017f5a75675a756700000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5a55475a55470000000000000000000000000000000000000000000000000000815250816003908161008c9190610666565b50806004908161009c9190610666565b506012600560006101000a81548160ff021916908360ff16021790555050506100d76100cc61010560201b60201c565b61010d60201b60201c565b6101006100e86101d360201b60201c565b6b033b2e3c9fd0803ce80000006101fd60201b60201c565b6108ae565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361026c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026390610795565b60405180910390fd5b61027e600083836103a860201b60201c565b610293816002546103ad60201b90919060201c565b6002819055506102ea816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103ad60201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161038a91906107c4565b60405180910390a36103a46000838361040b60201b60201c565b5050565b505050565b60008082846103bc919061080e565b905083811015610401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f89061088e565b60405180910390fd5b8091505092915050565b600081905050505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061049757607f821691505b6020821081036104aa576104a9610450565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104d5565b61051c86836104d5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061056361055e61055984610534565b61053e565b610534565b9050919050565b6000819050919050565b61057d83610548565b6105916105898261056a565b8484546104e2565b825550505050565b600090565b6105a6610599565b6105b1818484610574565b505050565b5b818110156105d5576105ca60008261059e565b6001810190506105b7565b5050565b601f82111561061a576105eb816104b0565b6105f4846104c5565b81016020851015610603578190505b61061761060f856104c5565b8301826105b6565b50505b505050565b600082821c905092915050565b600061063d6000198460080261061f565b1980831691505092915050565b6000610656838361062c565b9150826002028217905092915050565b61066f82610416565b67ffffffffffffffff81111561068857610687610421565b5b610692825461047f565b61069d8282856105d9565b600060209050601f8311600181146106d057600084156106be578287015190505b6106c8858261064a565b865550610730565b601f1984166106de866104b0565b60005b82811015610706578489015182556001820191506020850194506020810190506106e1565b86831015610723578489015161071f601f89168261062c565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061077f601f83610738565b915061078a82610749565b602082019050919050565b600060208201905081810360008301526107ae81610772565b9050919050565b6107be81610534565b82525050565b60006020820190506107d960008301846107b5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061081982610534565b915061082483610534565b925082820190508082111561083c5761083b6107df565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000610878601b83610738565b915061088382610842565b602082019050919050565b600060208201905081810360008301526108a78161086b565b9050919050565b6116a5806108bd6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d714610204578063a9059cbb14610234578063dd62ed3e14610264578063f2fde38b14610294576100cf565b8063715018a6146101be5780638da5cb5b146101c857806395d89b41146101e6576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce5671461017057806370a082311461018e575b600080fd5b6100dc6102b0565b6040516100e99190610ed7565b60405180910390f35b61010c60048036038101906101079190610f92565b610342565b6040516101199190610fed565b60405180910390f35b61012a610360565b6040516101379190611017565b60405180910390f35b61015a60048036038101906101559190611032565b61036a565b6040516101679190610fed565b60405180910390f35b610178610443565b60405161018591906110a1565b60405180910390f35b6101a860048036038101906101a391906110bc565b61045a565b6040516101b59190611017565b60405180910390f35b6101c66104a2565b005b6101d06104b6565b6040516101dd91906110f8565b60405180910390f35b6101ee6104e0565b6040516101fb9190610ed7565b60405180910390f35b61021e60048036038101906102199190610f92565b610572565b60405161022b9190610fed565b60405180910390f35b61024e60048036038101906102499190610f92565b610664565b60405161025b9190610fed565b60405180910390f35b61027e60048036038101906102799190611113565b610682565b60405161028b9190611017565b60405180910390f35b6102ae60048036038101906102a991906110bc565b610709565b005b6060600380546102bf90611182565b80601f01602080910402602001604051908101604052809291908181526020018280546102eb90611182565b80156103385780601f1061030d57610100808354040283529160200191610338565b820191906000526020600020905b81548152906001019060200180831161031b57829003601f168201915b5050505050905090565b600061035661034f61078c565b8484610794565b6001905092915050565b6000600254905090565b600061037784848461095d565b6104388461038361078c565b6104338560405180606001604052806028815260200161162360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e961078c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfb9092919063ffffffff16565b610794565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104aa610c5f565b6104b46000610cdd565b565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104ef90611182565b80601f016020809104026020016040519081016040528092919081815260200182805461051b90611182565b80156105685780601f1061053d57610100808354040283529160200191610568565b820191906000526020600020905b81548152906001019060200180831161054b57829003601f168201915b5050505050905090565b600061057c610da3565b15610598576105938361058d61078c565b84610794565b61065a565b6106596105a361078c565b846106548560405180606001604052806025815260200161164b60259139600160006105cd61078c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfb9092919063ffffffff16565b610794565b5b6001905092915050565b600061067861067161078c565b848461095d565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610711610c5f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077790611225565b60405180910390fd5b61078981610cdd565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906112b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086990611349565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109509190611017565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c3906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a329061146d565b60405180910390fd5b610a46838383610dd9565b610ab1816040518060600160405280602681526020016115fd602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfb9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b44816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dde90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610be39190611017565b60405180910390a3610bf6838383610e3c565b505050565b6000838311158290610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a9190610ed7565b60405180910390fd5b5060008385610c5291906114bc565b9050809150509392505050565b610c6761078c565b73ffffffffffffffffffffffffffffffffffffffff16610c856104b6565b73ffffffffffffffffffffffffffffffffffffffff1614610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd29061153c565b60405180910390fd5b565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007340a3a028a4c2470bdc356002b2eb9674f3980a5173343093c100eabe000000000000000000000000000133811491505090565b505050565b6000808284610ded919061155c565b905083811015610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e29906115dc565b60405180910390fd5b8091505092915050565b600081905050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e81578082015181840152602081019050610e66565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ea982610e47565b610eb38185610e52565b9350610ec3818560208601610e63565b610ecc81610e8d565b840191505092915050565b60006020820190508181036000830152610ef18184610e9e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f2982610efe565b9050919050565b610f3981610f1e565b8114610f4457600080fd5b50565b600081359050610f5681610f30565b92915050565b6000819050919050565b610f6f81610f5c565b8114610f7a57600080fd5b50565b600081359050610f8c81610f66565b92915050565b60008060408385031215610fa957610fa8610ef9565b5b6000610fb785828601610f47565b9250506020610fc885828601610f7d565b9150509250929050565b60008115159050919050565b610fe781610fd2565b82525050565b60006020820190506110026000830184610fde565b92915050565b61101181610f5c565b82525050565b600060208201905061102c6000830184611008565b92915050565b60008060006060848603121561104b5761104a610ef9565b5b600061105986828701610f47565b935050602061106a86828701610f47565b925050604061107b86828701610f7d565b9150509250925092565b600060ff82169050919050565b61109b81611085565b82525050565b60006020820190506110b66000830184611092565b92915050565b6000602082840312156110d2576110d1610ef9565b5b60006110e084828501610f47565b91505092915050565b6110f281610f1e565b82525050565b600060208201905061110d60008301846110e9565b92915050565b6000806040838503121561112a57611129610ef9565b5b600061113885828601610f47565b925050602061114985828601610f47565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061119a57607f821691505b6020821081036111ad576111ac611153565b5b50919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061120f602683610e52565b915061121a826111b3565b604082019050919050565b6000602082019050818103600083015261123e81611202565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006112a1602483610e52565b91506112ac82611245565b604082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611333602283610e52565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602583610e52565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602383610e52565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114c782610f5c565b91506114d283610f5c565b92508282039050818111156114ea576114e961148d565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611526602083610e52565b9150611531826114f0565b602082019050919050565b6000602082019050818103600083015261155581611519565b9050919050565b600061156782610f5c565b915061157283610f5c565b925082820190508082111561158a5761158961148d565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006115c6601b83610e52565b91506115d182611590565b602082019050919050565b600060208201905081810360008301526115f5816115b9565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122028dec90a4a7ef9bd8eda998e2307aa16dc3f79d87565d79935a1bbb36ddf94fc64736f6c634300081a0033