60806040523480156200001157600080fd5b506040518060400160405280600f81526020017f424c50204d696e657220546f6b656e00000000000000000000000000000000008152506040518060400160405280600681526020017f24624d494e45000000000000000000000000000000000000000000000000000081525081600390816200008f91906200042d565b508060049081620000a191906200042d565b5050506000600560006101000a81548160ff021916908315150217905550620000df620000d3620000e560201b60201c565b620000ed60201b60201c565b62000514565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200023557607f821691505b6020821081036200024b576200024a620001ed565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000276565b620002c1868362000276565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200030e620003086200030284620002d9565b620002e3565b620002d9565b9050919050565b6000819050919050565b6200032a83620002ed565b62000342620003398262000315565b84845462000283565b825550505050565b600090565b620003596200034a565b620003668184846200031f565b505050565b5b818110156200038e57620003826000826200034f565b6001810190506200036c565b5050565b601f821115620003dd57620003a78162000251565b620003b28462000266565b81016020851015620003c2578190505b620003da620003d18562000266565b8301826200036b565b50505b505050565b600082821c905092915050565b60006200040260001984600802620003e2565b1980831691505092915050565b60006200041d8383620003ef565b9150826002028217905092915050565b6200043882620001b3565b67ffffffffffffffff811115620004545762000453620001be565b5b6200046082546200021c565b6200046d82828562000392565b600060209050601f831160018114620004a5576000841562000490578287015190505b6200049c85826200040f565b8655506200050c565b601f198416620004b58662000251565b60005b82811015620004df57848901518255600182019150602085019450602081019050620004b8565b86831015620004ff5784890151620004fb601f891682620003ef565b8355505b6001600288020188555050505b505050505050565b611e9480620005246000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b85780638da5cb5b1161007c5780638da5cb5b1461030257806395d89b4114610320578063a457c2d71461033e578063a9059cbb1461036e578063dd62ed3e1461039e578063f2fde38b146103ce57610137565b80635c975abb1461028457806370a08231146102a2578063715018a6146102d257806379cc6790146102dc5780638456cb59146102f857610137565b8063313ce567116100ff578063313ce567146101f457806339509351146102125780633f4ba83a1461024257806340c10f191461024c57806342966c681461026857610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806323b872dd146101a857806328e1a604146101d8575b600080fd5b6101446103ea565b60405161015191906113b4565b60405180910390f35b610174600480360381019061016f919061146f565b61047c565b60405161018191906114ca565b60405180910390f35b61019261049f565b60405161019f91906114f4565b60405180910390f35b6101c260048036038101906101bd919061150f565b6104a9565b6040516101cf91906114ca565b60405180910390f35b6101f260048036038101906101ed919061146f565b6104d8565b005b6101fc6104ee565b604051610209919061157e565b60405180910390f35b61022c6004803603810190610227919061146f565b6104f7565b60405161023991906114ca565b60405180910390f35b61024a61052e565b005b6102666004803603810190610261919061146f565b610540565b005b610282600480360381019061027d9190611599565b610556565b005b61028c61056a565b60405161029991906114ca565b60405180910390f35b6102bc60048036038101906102b791906115c6565b610581565b6040516102c991906114f4565b60405180910390f35b6102da6105c9565b005b6102f660048036038101906102f1919061146f565b6105dd565b005b6103006105fd565b005b61030a61060f565b6040516103179190611602565b60405180910390f35b610328610639565b60405161033591906113b4565b60405180910390f35b6103586004803603810190610353919061146f565b6106cb565b60405161036591906114ca565b60405180910390f35b6103886004803603810190610383919061146f565b610742565b60405161039591906114ca565b60405180910390f35b6103b860048036038101906103b3919061161d565b610765565b6040516103c591906114f4565b60405180910390f35b6103e860048036038101906103e391906115c6565b6107ec565b005b6060600380546103f99061168c565b80601f01602080910402602001604051908101604052809291908181526020018280546104259061168c565b80156104725780601f1061044757610100808354040283529160200191610472565b820191906000526020600020905b81548152906001019060200180831161045557829003601f168201915b5050505050905090565b60008061048761086f565b9050610494818585610877565b600191505092915050565b6000600254905090565b6000806104b461086f565b90506104c1858285610a40565b6104cc858585610acc565b60019150509392505050565b6104e0610d42565b6104ea8282610dc0565b5050565b60006012905090565b60008061050261086f565b90506105238185856105148589610765565b61051e91906116ec565b610877565b600191505092915050565b610536610d42565b61053e610f8d565b565b610548610d42565b6105528282610ff0565b5050565b61056761056161086f565b82610dc0565b50565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105d1610d42565b6105db6000611146565b565b6105ef826105e961086f565b83610a40565b6105f98282610dc0565b5050565b610605610d42565b61060d61120c565b565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106489061168c565b80601f01602080910402602001604051908101604052809291908181526020018280546106749061168c565b80156106c15780601f10610696576101008083540402835291602001916106c1565b820191906000526020600020905b8154815290600101906020018083116106a457829003601f168201915b5050505050905090565b6000806106d661086f565b905060006106e48286610765565b905083811015610729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072090611792565b60405180910390fd5b6107368286868403610877565b60019250505092915050565b60008061074d61086f565b905061075a818585610acc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107f4610d42565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90611824565b60405180910390fd5b61086c81611146565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dd906118b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90611948565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a3391906114f4565b60405180910390a3505050565b6000610a4c8484610765565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac65781811015610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf906119b4565b60405180910390fd5b610ac58484848403610877565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3290611a46565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba190611ad8565b60405180910390fd5b610bb583838361126f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290611b6a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d2991906114f4565b60405180910390a3610d3c848484611287565b50505050565b610d4a61086f565b73ffffffffffffffffffffffffffffffffffffffff16610d6861060f565b73ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611bd6565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2690611c68565b60405180910390fd5b610e3b8260008361126f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890611cfa565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f7491906114f4565b60405180910390a3610f8883600084611287565b505050565b610f9561128c565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610fd961086f565b604051610fe69190611602565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105690611d66565b60405180910390fd5b61106b6000838361126f565b806002600082825461107d91906116ec565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161112e91906114f4565b60405180910390a361114260008383611287565b5050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112146112d5565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861125861086f565b6040516112659190611602565b60405180910390a1565b6112776112d5565b61128283838361131f565b505050565b505050565b61129461056a565b6112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca90611dd2565b60405180910390fd5b565b6112dd61056a565b1561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490611e3e565b60405180910390fd5b565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561135e578082015181840152602081019050611343565b60008484015250505050565b6000601f19601f8301169050919050565b600061138682611324565b611390818561132f565b93506113a0818560208601611340565b6113a98161136a565b840191505092915050565b600060208201905081810360008301526113ce818461137b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611406826113db565b9050919050565b611416816113fb565b811461142157600080fd5b50565b6000813590506114338161140d565b92915050565b6000819050919050565b61144c81611439565b811461145757600080fd5b50565b60008135905061146981611443565b92915050565b60008060408385031215611486576114856113d6565b5b600061149485828601611424565b92505060206114a58582860161145a565b9150509250929050565b60008115159050919050565b6114c4816114af565b82525050565b60006020820190506114df60008301846114bb565b92915050565b6114ee81611439565b82525050565b600060208201905061150960008301846114e5565b92915050565b600080600060608486031215611528576115276113d6565b5b600061153686828701611424565b935050602061154786828701611424565b92505060406115588682870161145a565b9150509250925092565b600060ff82169050919050565b61157881611562565b82525050565b6000602082019050611593600083018461156f565b92915050565b6000602082840312156115af576115ae6113d6565b5b60006115bd8482850161145a565b91505092915050565b6000602082840312156115dc576115db6113d6565b5b60006115ea84828501611424565b91505092915050565b6115fc816113fb565b82525050565b600060208201905061161760008301846115f3565b92915050565b60008060408385031215611634576116336113d6565b5b600061164285828601611424565b925050602061165385828601611424565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116a457607f821691505b6020821081036116b7576116b661165d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116f782611439565b915061170283611439565b925082820190508082111561171a576117196116bd565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061177c60258361132f565b915061178782611720565b604082019050919050565b600060208201905081810360008301526117ab8161176f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061180e60268361132f565b9150611819826117b2565b604082019050919050565b6000602082019050818103600083015261183d81611801565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006118a060248361132f565b91506118ab82611844565b604082019050919050565b600060208201905081810360008301526118cf81611893565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061193260228361132f565b915061193d826118d6565b604082019050919050565b6000602082019050818103600083015261196181611925565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061199e601d8361132f565b91506119a982611968565b602082019050919050565b600060208201905081810360008301526119cd81611991565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611a3060258361132f565b9150611a3b826119d4565b604082019050919050565b60006020820190508181036000830152611a5f81611a23565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ac260238361132f565b9150611acd82611a66565b604082019050919050565b60006020820190508181036000830152611af181611ab5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611b5460268361132f565b9150611b5f82611af8565b604082019050919050565b60006020820190508181036000830152611b8381611b47565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611bc060208361132f565b9150611bcb82611b8a565b602082019050919050565b60006020820190508181036000830152611bef81611bb3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c5260218361132f565b9150611c5d82611bf6565b604082019050919050565b60006020820190508181036000830152611c8181611c45565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ce460228361132f565b9150611cef82611c88565b604082019050919050565b60006020820190508181036000830152611d1381611cd7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611d50601f8361132f565b9150611d5b82611d1a565b602082019050919050565b60006020820190508181036000830152611d7f81611d43565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000611dbc60148361132f565b9150611dc782611d86565b602082019050919050565b60006020820190508181036000830152611deb81611daf565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000611e2860108361132f565b9150611e3382611df2565b602082019050919050565b60006020820190508181036000830152611e5781611e1b565b905091905056fea264697066735822122013958bfb9dbc4a01d402e635e7ba7ed91551071ee0dbff0037d64ac5bc065edd64736f6c63430008110033