60806040523480156200001157600080fd5b5060405162001fba38038062001fba8339818101604052810190620000379190620002a4565b6040518060400160405280600781526020017f4f63746f496e6b000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4f63746f000000000000000000000000000000000000000000000000000000008152508160039081620000b4919062000546565b508060049081620000c6919062000546565b505050620000db3382620000e260201b60201c565b5062000748565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014b906200068e565b60405180910390fd5b62000168600083836200025a60201b60201c565b80600260008282546200017c9190620006df565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001d39190620006df565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200023a91906200072b565b60405180910390a362000256600083836200025f60201b60201c565b5050565b505050565b505050565b600080fd5b6000819050919050565b6200027e8162000269565b81146200028a57600080fd5b50565b6000815190506200029e8162000273565b92915050565b600060208284031215620002bd57620002bc62000264565b5b6000620002cd848285016200028d565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200035857607f821691505b6020821081036200036e576200036d62000310565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000399565b620003e4868362000399565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000427620004216200041b8462000269565b620003fc565b62000269565b9050919050565b6000819050919050565b620004438362000406565b6200045b62000452826200042e565b848454620003a6565b825550505050565b600090565b6200047262000463565b6200047f81848462000438565b505050565b5b81811015620004a7576200049b60008262000468565b60018101905062000485565b5050565b601f821115620004f657620004c08162000374565b620004cb8462000389565b81016020851015620004db578190505b620004f3620004ea8562000389565b83018262000484565b50505b505050565b600082821c905092915050565b60006200051b60001984600802620004fb565b1980831691505092915050565b600062000536838362000508565b9150826002028217905092915050565b6200055182620002d6565b67ffffffffffffffff8111156200056d576200056c620002e1565b5b6200057982546200033f565b62000586828285620004ab565b600060209050601f831160018114620005be5760008415620005a9578287015190505b620005b5858262000528565b86555062000625565b601f198416620005ce8662000374565b60005b82811015620005f857848901518255600182019150602085019450602081019050620005d1565b8683101562000618578489015162000614601f89168262000508565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000676601f836200062d565b915062000683826200063e565b602082019050919050565b60006020820190508181036000830152620006a98162000667565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006ec8262000269565b9150620006f98362000269565b9250828201905080821115620007145762000713620006b0565b5b92915050565b620007258162000269565b82525050565b60006020820190506200074260008301846200071a565b92915050565b61186280620007586000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190610f02565b60405180910390f35b61010c60048036038101906101079190610fbd565b610366565b6040516101199190611018565b60405180910390f35b61012a610384565b6040516101379190611042565b60405180910390f35b61015a6004803603810190610155919061105d565b61038e565b6040516101679190611018565b60405180910390f35b610178610486565b60405161018591906110cc565b60405180910390f35b6101a860048036038101906101a39190610fbd565b61048f565b6040516101b59190611018565b60405180910390f35b6101d860048036038101906101d391906110e7565b61053b565b005b6101f460048036038101906101ef9190611114565b61054f565b6040516102019190611042565b60405180910390f35b610224600480360381019061021f9190610fbd565b610597565b005b61022e6105a5565b60405161023b9190610f02565b60405180910390f35b61025e60048036038101906102599190610fbd565b610637565b60405161026b9190611018565b60405180910390f35b61028e60048036038101906102899190610fbd565b610722565b60405161029b9190611018565b60405180910390f35b6102be60048036038101906102b99190611141565b610740565b6040516102cb9190611042565b60405180910390f35b6060600380546102e3906111b0565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906111b0565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a6103736107c7565b84846107cf565b6001905092915050565b6000600254905090565b600061039b848484610998565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e66107c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611253565b60405180910390fd5b61047a856104726107c7565b8584036107cf565b60019150509392505050565b60006012905090565b600061053161049c6107c7565b8484600160006104aa6107c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461052c91906112a2565b6107cf565b6001905092915050565b61054c6105466107c7565b82610c17565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105a18282610ded565b5050565b6060600480546105b4906111b0565b80601f01602080910402602001604051908101604052809291908181526020018280546105e0906111b0565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b5050505050905090565b600080600160006106466107c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90611348565b60405180910390fd5b61071761070e6107c7565b858584036107cf565b600191505092915050565b600061073661072f6107c7565b8484610998565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361083e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610835906113da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a49061146c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161098b9190611042565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe906114fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611590565b60405180910390fd5b610a81838383610e68565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe90611622565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9a91906112a2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bfe9190611042565b60405180910390a3610c11848484610e6d565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d906116b4565b60405180910390fd5b610c9282600083610e68565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f90611746565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610d6f9190611766565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dd49190611042565b60405180910390a3610de883600084610e6d565b505050565b6000610e0083610dfb6107c7565b610740565b905081811015610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c9061180c565b60405180910390fd5b610e5983610e516107c7565b8484036107cf565b610e638383610c17565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610eac578082015181840152602081019050610e91565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ed482610e72565b610ede8185610e7d565b9350610eee818560208601610e8e565b610ef781610eb8565b840191505092915050565b60006020820190508181036000830152610f1c8184610ec9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f5482610f29565b9050919050565b610f6481610f49565b8114610f6f57600080fd5b50565b600081359050610f8181610f5b565b92915050565b6000819050919050565b610f9a81610f87565b8114610fa557600080fd5b50565b600081359050610fb781610f91565b92915050565b60008060408385031215610fd457610fd3610f24565b5b6000610fe285828601610f72565b9250506020610ff385828601610fa8565b9150509250929050565b60008115159050919050565b61101281610ffd565b82525050565b600060208201905061102d6000830184611009565b92915050565b61103c81610f87565b82525050565b60006020820190506110576000830184611033565b92915050565b60008060006060848603121561107657611075610f24565b5b600061108486828701610f72565b935050602061109586828701610f72565b92505060406110a686828701610fa8565b9150509250925092565b600060ff82169050919050565b6110c6816110b0565b82525050565b60006020820190506110e160008301846110bd565b92915050565b6000602082840312156110fd576110fc610f24565b5b600061110b84828501610fa8565b91505092915050565b60006020828403121561112a57611129610f24565b5b600061113884828501610f72565b91505092915050565b6000806040838503121561115857611157610f24565b5b600061116685828601610f72565b925050602061117785828601610f72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111c857607f821691505b6020821081036111db576111da611181565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061123d602883610e7d565b9150611248826111e1565b604082019050919050565b6000602082019050818103600083015261126c81611230565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112ad82610f87565b91506112b883610f87565b92508282019050808211156112d0576112cf611273565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611332602583610e7d565b915061133d826112d6565b604082019050919050565b6000602082019050818103600083015261136181611325565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c4602483610e7d565b91506113cf82611368565b604082019050919050565b600060208201905081810360008301526113f3816113b7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611456602283610e7d565b9150611461826113fa565b604082019050919050565b6000602082019050818103600083015261148581611449565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006114e8602583610e7d565b91506114f38261148c565b604082019050919050565b60006020820190508181036000830152611517816114db565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061157a602383610e7d565b91506115858261151e565b604082019050919050565b600060208201905081810360008301526115a98161156d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061160c602683610e7d565b9150611617826115b0565b604082019050919050565b6000602082019050818103600083015261163b816115ff565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061169e602183610e7d565b91506116a982611642565b604082019050919050565b600060208201905081810360008301526116cd81611691565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611730602283610e7d565b915061173b826116d4565b604082019050919050565b6000602082019050818103600083015261175f81611723565b9050919050565b600061177182610f87565b915061177c83610f87565b925082820390508181111561179457611793611273565b5b92915050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006117f6602483610e7d565b91506118018261179a565b604082019050919050565b60006020820190508181036000830152611825816117e9565b905091905056fea26469706673582212202141d4a506c7d3ab128c096bb48868c76ac003bb5189849fea7269b802081b5164736f6c634300081800330000000000000000000000000000000000000000000c685fa11e01ec6f000000