60806040526000600c60146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162002b1a38038062002b1a8339818101604052810190620000529190620008e8565b6040518060400160405280600681526020017f4d756e31353700000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4d756e31353700000000000000000000000000000000000000000000000000008152508160039081620000cf919062000ba9565b508060049081620000e1919062000ba9565b50505062000104620000f86200063060201b60201c565b6200063860201b60201c565b620001433362000119620006fe60201b60201c565b600a62000127919062000e20565b620f424062000137919062000e71565b6200070760201b60201c565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000218919062000ebc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c8919062000ebc565b6040518363ffffffff1660e01b8152600401620002e792919062000eff565b6020604051808303816000875af115801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000ebc565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600681905550610e10600654620003c7919062000f2c565b600781905550620003dd6200063060201b60201c565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000620004336200063060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001018565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000779576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007709062000fc8565b60405180910390fd5b6200078d600083836200087460201b60201c565b8060026000828254620007a1919062000f2c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000854919062000ffb565b60405180910390a362000870600083836200087960201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008b08262000883565b9050919050565b620008c281620008a3565b8114620008ce57600080fd5b50565b600081519050620008e281620008b7565b92915050565b600080604083850312156200090257620009016200087e565b5b60006200091285828601620008d1565b92505060206200092585828601620008d1565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009b157607f821691505b602082108103620009c757620009c662000969565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009f2565b62000a3d8683620009f2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a8a62000a8462000a7e8462000a55565b62000a5f565b62000a55565b9050919050565b6000819050919050565b62000aa68362000a69565b62000abe62000ab58262000a91565b848454620009ff565b825550505050565b600090565b62000ad562000ac6565b62000ae281848462000a9b565b505050565b5b8181101562000b0a5762000afe60008262000acb565b60018101905062000ae8565b5050565b601f82111562000b595762000b2381620009cd565b62000b2e84620009e2565b8101602085101562000b3e578190505b62000b5662000b4d85620009e2565b83018262000ae7565b50505b505050565b600082821c905092915050565b600062000b7e6000198460080262000b5e565b1980831691505092915050565b600062000b99838362000b6b565b9150826002028217905092915050565b62000bb4826200092f565b67ffffffffffffffff81111562000bd05762000bcf6200093a565b5b62000bdc825462000998565b62000be982828562000b0e565b600060209050601f83116001811462000c21576000841562000c0c578287015190505b62000c18858262000b8b565b86555062000c88565b601f19841662000c3186620009cd565b60005b8281101562000c5b5784890151825560018201915060208501945060208101905062000c34565b8683101562000c7b578489015162000c77601f89168262000b6b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d1e5780860481111562000cf65762000cf562000c90565b5b600185161562000d065780820291505b808102905062000d168562000cbf565b945062000cd6565b94509492505050565b60008262000d39576001905062000e0c565b8162000d49576000905062000e0c565b816001811462000d62576002811462000d6d5762000da3565b600191505062000e0c565b60ff84111562000d825762000d8162000c90565b5b8360020a91508482111562000d9c5762000d9b62000c90565b5b5062000e0c565b5060208310610133831016604e8410600b841016171562000ddd5782820a90508381111562000dd75762000dd662000c90565b5b62000e0c565b62000dec848484600162000ccc565b9250905081840481111562000e065762000e0562000c90565b5b81810290505b9392505050565b600060ff82169050919050565b600062000e2d8262000a55565b915062000e3a8362000e13565b925062000e697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d27565b905092915050565b600062000e7e8262000a55565b915062000e8b8362000a55565b925082820262000e9b8162000a55565b9150828204841483151762000eb55762000eb462000c90565b5b5092915050565b60006020828403121562000ed55762000ed46200087e565b5b600062000ee584828501620008d1565b91505092915050565b62000ef981620008a3565b82525050565b600060408201905062000f16600083018562000eee565b62000f25602083018462000eee565b9392505050565b600062000f398262000a55565b915062000f468362000a55565b925082820190508082111562000f615762000f6062000c90565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fb0601f8362000f67565b915062000fbd8262000f78565b602082019050919050565b6000602082019050818103600083015262000fe38162000fa1565b9050919050565b62000ff58162000a55565b82525050565b600060208201905062001012600083018462000fea565b92915050565b611af280620010286000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063a51c9ace1161007c578063a51c9ace1461036d578063a9059cbb1461038b578063dd62ed3e146103bb578063e80ddf65146103eb578063f0fcce6314610409578063f2fde38b1461042757610142565b8063715018a6146102d957806378e97925146102e35780638da5cb5b1461030157806395d89b411461031f578063a457c2d71461033d57610142565b806323b872dd1161010a57806323b872dd146101ef578063246287a01461021f578063313ce5671461023d5780633197cbb61461025b578063395093511461027957806370a08231146102a957610142565b806306fdde0314610147578063095ea7b31461016557806311723c671461019557806316f0abf8146101b357806318160ddd146101d1575b600080fd5b61014f610443565b60405161015c919061113f565b60405180910390f35b61017f600480360381019061017a91906111fa565b6104d5565b60405161018c9190611255565b60405180910390f35b61019d6104f8565b6040516101aa919061127f565b60405180910390f35b6101bb6104fe565b6040516101c8919061127f565b60405180910390f35b6101d9610506565b6040516101e6919061127f565b60405180910390f35b6102096004803603810190610204919061129a565b610510565b6040516102169190611255565b60405180910390f35b61022761053f565b604051610234919061127f565b60405180910390f35b610245610544565b6040516102529190611309565b60405180910390f35b61026361054d565b604051610270919061127f565b60405180910390f35b610293600480360381019061028e91906111fa565b610553565b6040516102a09190611255565b60405180910390f35b6102c360048036038101906102be9190611324565b61058a565b6040516102d0919061127f565b60405180910390f35b6102e16105d2565b005b6102eb6105e6565b6040516102f8919061127f565b60405180910390f35b6103096105ec565b6040516103169190611360565b60405180910390f35b610327610616565b604051610334919061113f565b60405180910390f35b610357600480360381019061035291906111fa565b6106a8565b6040516103649190611255565b60405180910390f35b61037561071f565b604051610382919061127f565b60405180910390f35b6103a560048036038101906103a091906111fa565b610726565b6040516103b29190611255565b60405180910390f35b6103d560048036038101906103d0919061137b565b610749565b6040516103e2919061127f565b60405180910390f35b6103f36107d0565b604051610400919061127f565b60405180910390f35b6104116107e3565b60405161041e919061127f565b60405180910390f35b610441600480360381019061043c9190611324565b610864565b005b606060038054610452906113ea565b80601f016020809104026020016040519081016040528092919081815260200182805461047e906113ea565b80156104cb5780601f106104a0576101008083540402835291602001916104cb565b820191906000526020600020905b8154815290600101906020018083116104ae57829003601f168201915b5050505050905090565b6000806104e06108e7565b90506104ed8185856108ef565b600191505092915050565b610e1081565b6305f5e10081565b6000600254905090565b60008061051b6108e7565b9050610528858285610ab8565b610533858585610b44565b60019150509392505050565b600081565b60006012905090565b60075481565b60008061055e6108e7565b905061057f8185856105708589610749565b61057a919061144a565b6108ef565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105da610ceb565b6105e46000610d69565b565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610625906113ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610651906113ea565b801561069e5780601f106106735761010080835404028352916020019161069e565b820191906000526020600020905b81548152906001019060200180831161068157829003601f168201915b5050505050905090565b6000806106b36108e7565b905060006106c18286610749565b905083811015610706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fd906114f0565b60405180910390fd5b61071382868684036108ef565b60019250505092915050565b620f424081565b6000806107316108e7565b905061073e818585610b44565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b620f424060036107e09190611510565b81565b600060075442106107f75760009050610861565b6000600654426108079190611552565b90506000610e10826000620f424060036108219190611510565b61082b9190611552565b6108359190611510565b61083f91906115b5565b620f4240600361084f9190611510565b6108599190611552565b905080925050505b90565b61086c610ceb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d290611658565b60405180910390fd5b6108e481610d69565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361095e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610955906116ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c49061177c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610aab919061127f565b60405180910390a3505050565b6000610ac48484610749565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b3e5781811015610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b27906117e8565b60405180910390fd5b610b3d84848484036108ef565b5b50505050565b60008111610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e9061187a565b60405180910390fd5b6000610b916107e3565b905060008103610bac57610ba6848484610e2f565b50610ce6565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610c4d5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610c6357610c5d848484610e2f565b50610ce6565b600c60149054906101000a900460ff1615610c8957610c83848484610e2f565b50610ce6565b60006305f5e1008284610c9c9190611510565b610ca691906115b5565b90506000811115610cd757610cbc853083610e2f565b610cd285858386610ccd9190611552565b610e2f565b610ce3565b610ce2858585610e2f565b5b50505b505050565b610cf36108e7565b73ffffffffffffffffffffffffffffffffffffffff16610d116105ec565b73ffffffffffffffffffffffffffffffffffffffff1614610d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5e906118e6565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590611978565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490611a0a565b60405180910390fd5b610f188383836110a5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590611a9c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161108c919061127f565b60405180910390a361109f8484846110aa565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156110e95780820151818401526020810190506110ce565b60008484015250505050565b6000601f19601f8301169050919050565b6000611111826110af565b61111b81856110ba565b935061112b8185602086016110cb565b611134816110f5565b840191505092915050565b600060208201905081810360008301526111598184611106565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061119182611166565b9050919050565b6111a181611186565b81146111ac57600080fd5b50565b6000813590506111be81611198565b92915050565b6000819050919050565b6111d7816111c4565b81146111e257600080fd5b50565b6000813590506111f4816111ce565b92915050565b6000806040838503121561121157611210611161565b5b600061121f858286016111af565b9250506020611230858286016111e5565b9150509250929050565b60008115159050919050565b61124f8161123a565b82525050565b600060208201905061126a6000830184611246565b92915050565b611279816111c4565b82525050565b60006020820190506112946000830184611270565b92915050565b6000806000606084860312156112b3576112b2611161565b5b60006112c1868287016111af565b93505060206112d2868287016111af565b92505060406112e3868287016111e5565b9150509250925092565b600060ff82169050919050565b611303816112ed565b82525050565b600060208201905061131e60008301846112fa565b92915050565b60006020828403121561133a57611339611161565b5b6000611348848285016111af565b91505092915050565b61135a81611186565b82525050565b60006020820190506113756000830184611351565b92915050565b6000806040838503121561139257611391611161565b5b60006113a0858286016111af565b92505060206113b1858286016111af565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061140257607f821691505b602082108103611415576114146113bb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611455826111c4565b9150611460836111c4565b92508282019050808211156114785761147761141b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114da6025836110ba565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b600061151b826111c4565b9150611526836111c4565b9250828202611534816111c4565b9150828204841483151761154b5761154a61141b565b5b5092915050565b600061155d826111c4565b9150611568836111c4565b92508282039050818111156115805761157f61141b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006115c0826111c4565b91506115cb836111c4565b9250826115db576115da611586565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006116426026836110ba565b915061164d826115e6565b604082019050919050565b6000602082019050818103600083015261167181611635565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006116d46024836110ba565b91506116df82611678565b604082019050919050565b60006020820190508181036000830152611703816116c7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006117666022836110ba565b91506117718261170a565b604082019050919050565b6000602082019050818103600083015261179581611759565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006117d2601d836110ba565b91506117dd8261179c565b602082019050919050565b60006020820190508181036000830152611801816117c5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006118646029836110ba565b915061186f82611808565b604082019050919050565b6000602082019050818103600083015261189381611857565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118d06020836110ba565b91506118db8261189a565b602082019050919050565b600060208201905081810360008301526118ff816118c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006119626025836110ba565b915061196d82611906565b604082019050919050565b6000602082019050818103600083015261199181611955565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006119f46023836110ba565b91506119ff82611998565b604082019050919050565b60006020820190508181036000830152611a23816119e7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611a866026836110ba565b9150611a9182611a2a565b604082019050919050565b60006020820190508181036000830152611ab581611a79565b905091905056fea2646970667358221220576a82e72eb990dcfb84b49b008db04b0489c9ae92a0d785e32f5e56d867297864736f6c634300081100330000000000000000000000000f3eeb69a20d06bcc81249d157cd18358be1de4d000000000000000000000000fe4142999a35d9b69af1b3d7f7fc632ac153f0bf