60806040526040518060400160405280600581526020017f312e302e300000000000000000000000000000000000000000000000000000008152506003908051906020019062000051929190620002d9565b503480156200005f57600080fd5b506040516020806200206283398101806040526200008191908101906200039e565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000df336a14adf4b7320334b9000000620000e660201b60201c565b5062000535565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001509062000485565b60405180910390fd5b62000175816002546200028160201b620011441790919060201c565b600281905550620001d3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200028160201b620011441790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002759190620004c9565b60405180910390a35050565b600080828401905083811015620002cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c690620004a7565b60405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031c57805160ff19168380011785556200034d565b828001600101855582156200034d579182015b828111156200034c5782518255916020019190600101906200032f565b5b5090506200035c919062000360565b5090565b6200038591905b808211156200038157600081600090555060010162000367565b5090565b90565b600062000396825162000501565b905092915050565b600060208284031215620003b157600080fd5b6000620003c18482850162000388565b91505092915050565b6000620003d9602983620004e6565b91507f45524332303a3a5f6d696e743a2043616e6e6f74206d696e7420746f2061646460008301527f72657373207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600062000441601f83620004e6565b91507f536166654d6174683a3a6164643a20496e7465676572206f766572666c6f77006000830152602082019050919050565b6200047f81620004f7565b82525050565b60006020820190508181036000830152620004a081620003ca565b9050919050565b60006020820190508181036000830152620004c28162000432565b9050919050565b6000602082019050620004e0600083018462000474565b92915050565b600082825260208201905092915050565b6000819050919050565b60006200050e8262000515565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b611b1d80620005456000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806340c10f191161009757806395d89b411161006657806395d89b41146102b3578063a457c2d7146102d1578063a9059cbb14610301578063dd62ed3e1461033157610100565b806340c10f191461022b57806354fd4d501461024757806370a08231146102655780637b1039991461029557610100565b80632ff2e9dc116100d35780632ff2e9dc146101a1578063313ce567146101bf57806339509351146101dd57806339605da21461020d57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610361565b60405161011a919061187a565b60405180910390f35b61013d600480360361013891908101906113fd565b61039a565b60405161014a919061185f565b60405180910390f35b61015b6104fb565b60405161016891906119bc565b60405180910390f35b61018b600480360361018691908101906113ae565b610505565b604051610198919061185f565b60405180910390f35b6101a961070d565b6040516101b691906119bc565b60405180910390f35b6101c761071c565b6040516101d491906119d7565b60405180910390f35b6101f760048036036101f291908101906113fd565b610721565b604051610204919061185f565b60405180910390f35b61021561098c565b60405161022291906119bc565b60405180910390f35b610245600480360361024091908101906113fd565b61099b565b005b61024f610aa0565b60405161025c919061187a565b60405180910390f35b61027f600480360361027a9190810190611349565b610b3e565b60405161028c91906119bc565b60405180910390f35b61029d610b86565b6040516102aa9190611844565b60405180910390f35b6102bb610bac565b6040516102c8919061187a565b60405180910390f35b6102eb60048036036102e691908101906113fd565b610be5565b6040516102f8919061185f565b60405180910390f35b61031b600480360361031691908101906113fd565b610e50565b604051610328919061185f565b60405180910390f35b61034b60048036036103469190810190611372565b610e67565b60405161035891906119bc565b60405180910390f35b6040518060400160405280600881526020017f48756d616e69747900000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104029061193c565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104e991906119bc565b60405180910390a36001905092915050565b6000600254905090565b600061059682600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eee90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610621848484610f44565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516106fa91906119bc565b60405180910390a3600190509392505050565b6a14adf4b7320334b900000081565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610792576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107899061199c565b60405180910390fd5b61082182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114490919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161097a91906119bc565b60405180910390a36001905092915050565b6a52b7d2dcc80cd2e400000081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a22906118bc565b60405180910390fd5b6a52b7d2dcc80cd2e4000000610a5182610a436104fb565b61114490919063ffffffff16565b1115610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a899061195c565b60405180910390fd5b610a9c8282611199565b5050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f48554d000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d9061189c565b60405180910390fd5b610ce582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eee90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610e3e91906119bc565b60405180910390a36001905092915050565b6000610e5d338484610f44565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a906118dc565b60405180910390fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906118fc565b60405180910390fd5b611005816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eee90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611098816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161113791906119bc565b60405180910390a3505050565b60008082840190508381101561118f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111869061197c565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112009061191c565b60405180910390fd5b61121e8160025461114490919063ffffffff16565b600281905550611275816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161131591906119bc565b60405180910390a35050565b600061132d8235611a63565b905092915050565b60006113418235611a95565b905092915050565b60006020828403121561135b57600080fd5b600061136984828501611321565b91505092915050565b6000806040838503121561138557600080fd5b600061139385828601611321565b92505060206113a485828601611321565b9150509250929050565b6000806000606084860312156113c357600080fd5b60006113d186828701611321565b93505060206113e286828701611321565b92505060406113f386828701611335565b9150509250925092565b6000806040838503121561141057600080fd5b600061141e85828601611321565b925050602061142f85828601611335565b9150509250929050565b61144281611a0e565b82525050565b61145181611a20565b82525050565b6000611462826119f2565b61146c81856119fd565b935061147c818560208601611a9f565b61148581611ad2565b840191505092915050565b600061149d6044836119fd565b91507f45524332303a3a6465637265617365416c6c6f77616e63653a2043616e6e6f7460008301527f20646563726561736520616c6c6f77616e636520666f7220616464726573732060208301527f7a65726f000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006115296035836119fd565b91507f48756d616e6974793a3a6d696e743a204f6e6c7920746865207265676973747260008301527f792063616e206d696e74206e657720746f6b656e7300000000000000000000006020830152604082019050919050565b600061158f6020836119fd565b91507f536166654d6174683a3a7375623a20496e746567657220756e646572666c6f776000830152602082019050919050565b60006115cf6031836119fd565b91507f45524332303a3a5f7472616e736665723a2043616e6e6f74207472616e73666560008301527f7220746f2061646472657373207a65726f0000000000000000000000000000006020830152604082019050919050565b60006116356029836119fd565b91507f45524332303a3a5f6d696e743a2043616e6e6f74206d696e7420746f2061646460008301527f72657373207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061169b602b836119fd565b91507f45524332303a3a617070726f76653a2043616e6e6f7420617070726f7665206160008301527f646472657373207a65726f0000000000000000000000000000000000000000006020830152604082019050919050565b60006117016024836119fd565b91507f48756d616e6974793a3a6d696e743a20457863656564732066696e616c20737560008301527f70706c79000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611767601f836119fd565b91507f536166654d6174683a3a6164643a20496e7465676572206f766572666c6f77006000830152602082019050919050565b60006117a76044836119fd565b91507f45524332303a3a696e637265617365416c6c6f77616e63653a2043616e6e6f7460008301527f20696e63726561736520616c6c6f77616e636520666f7220616464726573732060208301527f7a65726f000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b61182f81611a4c565b82525050565b61183e81611a56565b82525050565b60006020820190506118596000830184611439565b92915050565b60006020820190506118746000830184611448565b92915050565b600060208201905081810360008301526118948184611457565b905092915050565b600060208201905081810360008301526118b581611490565b9050919050565b600060208201905081810360008301526118d58161151c565b9050919050565b600060208201905081810360008301526118f581611582565b9050919050565b60006020820190508181036000830152611915816115c2565b9050919050565b6000602082019050818103600083015261193581611628565b9050919050565b600060208201905081810360008301526119558161168e565b9050919050565b60006020820190508181036000830152611975816116f4565b9050919050565b600060208201905081810360008301526119958161175a565b9050919050565b600060208201905081810360008301526119b58161179a565b9050919050565b60006020820190506119d16000830184611826565b92915050565b60006020820190506119ec6000830184611835565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a1982611a2c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611a6e82611a75565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611abd578082015181840152602081019050611aa2565b83811115611acc576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a7230582099f73be95292aa1d72f76616f86347f805f0bff35f5775ec44cd9591210709936c6578706572696d656e74616cf500370000000000000000000000004ee46dc4962c2c2f6bcd4c098a0e2b28f66a5e90