60806040525f60075f6101000a81548160ff02191690831515021790555034801562000029575f80fd5b506040518060400160405280600881526020017f534c4552462041490000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f534c4552464149000000000000000000000000000000000000000000000000008152508160039081620000a791906200062a565b508060049081620000b991906200062a565b505050620000dc620000d06200018260201b60201c565b6200018960201b60201c565b5f6b019d96a464c32fd4e67c00009050600160065f736da5c755f5827ec42adbd88f5e979ddf11605aa573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200017b736da5c755f5827ec42adbd88f5e979ddf11605aa5826200024c60201b60201c565b506200081f565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b4906200076c565b60405180910390fd5b620002d05f8383620003bc60201b60201c565b8060025f828254620002e39190620007b9565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620003379190620007b9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200039d919062000804565b60405180910390a3620003b85f8383620003c160201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200044257607f821691505b602082108103620004585762000457620003fd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200047f565b620004c886836200047f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005126200050c6200050684620004e0565b620004e9565b620004e0565b9050919050565b5f819050919050565b6200052d83620004f2565b620005456200053c8262000519565b8484546200048b565b825550505050565b5f90565b6200055b6200054d565b6200056881848462000522565b505050565b5b818110156200058f57620005835f8262000551565b6001810190506200056e565b5050565b601f821115620005de57620005a8816200045e565b620005b38462000470565b81016020851015620005c3578190505b620005db620005d28562000470565b8301826200056d565b50505b505050565b5f82821c905092915050565b5f620006005f1984600802620005e3565b1980831691505092915050565b5f6200061a8383620005ef565b9150826002028217905092915050565b6200063582620003c6565b67ffffffffffffffff811115620006515762000650620003d0565b5b6200065d82546200042a565b6200066a82828562000593565b5f60209050601f831160018114620006a0575f84156200068b578287015190505b6200069785826200060d565b86555062000706565b601f198416620006b0866200045e565b5f5b82811015620006d957848901518255600182019150602085019450602081019050620006b2565b86831015620006f95784890151620006f5601f891682620005ef565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000754601f836200070e565b915062000761826200071e565b602082019050919050565b5f6020820190508181035f830152620007858162000746565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007c582620004e0565b9150620007d283620004e0565b9250828201905080821115620007ed57620007ec6200078c565b5b92915050565b620007fe81620004e0565b82525050565b5f602082019050620008195f830184620007f3565b92915050565b611dd0806200082d5f395ff3fe60806040526004361061010c575f3560e01c80638716944c11610094578063a457c2d711610063578063a457c2d714610369578063a9059cbb146103a5578063dd62ed3e146103e1578063f2fde38b1461041d578063ffb54a991461044557610113565b80638716944c146102c35780638a8c523c146102ff5780638da5cb5b1461031557806395d89b411461033f57610113565b8063313ce567116100db578063313ce567146101e3578063395093511461020d5780633cd17c961461024957806370a0823114610271578063715018a6146102ad57610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d57806323b872dd146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b61046f565b60405161013891906114d6565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611587565b6104ff565b60405161017491906115df565b60405180910390f35b348015610188575f80fd5b5061019161051c565b60405161019e9190611607565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611620565b610525565b6040516101da91906115df565b60405180910390f35b3480156101ee575f80fd5b506101f7610617565b604051610204919061168b565b60405180910390f35b348015610218575f80fd5b50610233600480360381019061022e9190611587565b61061f565b60405161024091906115df565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906116ce565b6106c6565b005b34801561027c575f80fd5b506102976004803603810190610292919061170c565b61079a565b6040516102a49190611607565b60405180910390f35b3480156102b8575f80fd5b506102c16107df565b005b3480156102ce575f80fd5b506102e960048036038101906102e4919061170c565b610866565b6040516102f691906115df565b60405180910390f35b34801561030a575f80fd5b50610313610883565b005b348015610320575f80fd5b5061032961091b565b6040516103369190611746565b60405180910390f35b34801561034a575f80fd5b50610353610943565b60405161036091906114d6565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190611587565b6109d3565b60405161039c91906115df565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c69190611587565b610ab9565b6040516103d891906115df565b60405180910390f35b3480156103ec575f80fd5b506104076004803603810190610402919061175f565b610ad6565b6040516104149190611607565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e919061170c565b610b58565b005b348015610450575f80fd5b50610459610c4e565b60405161046691906115df565b60405180910390f35b60606003805461047e906117ca565b80601f01602080910402602001604051908101604052809291908181526020018280546104aa906117ca565b80156104f55780601f106104cc576101008083540402835291602001916104f5565b820191905f5260205f20905b8154815290600101906020018083116104d857829003601f168201915b5050505050905090565b5f61051261050b610c60565b8484610c67565b6001905092915050565b5f600254905090565b5f610531848484610e2a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610578610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee9061186a565b60405180910390fd5b61060b85610603610c60565b858403610c67565b60019150509392505050565b5f6012905090565b5f6106bc61062b610c60565b848460015f610638610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106b791906118b5565b610c67565b6001905092915050565b6106ce610c60565b73ffffffffffffffffffffffffffffffffffffffff166106ec61091b565b73ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611932565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107e7610c60565b73ffffffffffffffffffffffffffffffffffffffff1661080561091b565b73ffffffffffffffffffffffffffffffffffffffff161461085b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085290611932565b60405180910390fd5b6108645f61110a565b565b6006602052805f5260405f205f915054906101000a900460ff1681565b61088b610c60565b73ffffffffffffffffffffffffffffffffffffffff166108a961091b565b73ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611932565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610952906117ca565b80601f016020809104026020016040519081016040528092919081815260200182805461097e906117ca565b80156109c95780601f106109a0576101008083540402835291602001916109c9565b820191905f5260205f20905b8154815290600101906020018083116109ac57829003601f168201915b5050505050905090565b5f8060015f6109e0610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906119c0565b60405180910390fd5b610aae610aa5610c60565b85858403610c67565b600191505092915050565b5f610acc610ac5610c60565b8484610e2a565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b60610c60565b73ffffffffffffffffffffffffffffffffffffffff16610b7e61091b565b73ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611932565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990611a4e565b60405180910390fd5b610c4b8161110a565b50565b60075f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90611adc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90611b6a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e1d9190611607565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90611bf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90611c86565b60405180910390fd5b5f8103610f1d57610f1883835f6111cd565b611105565b610f2561091b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f935750610f6361091b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610fcb57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611005575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110f95760075f9054906101000a900460ff166110f85760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806110b8575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611cee565b60405180910390fd5b5b5b6111048383836111cd565b5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290611bf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090611c86565b60405180910390fd5b6112b4838383611442565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90611d7c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113c591906118b5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114299190611607565b60405180910390a361143c848484611447565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611483578082015181840152602081019050611468565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114a88261144c565b6114b28185611456565b93506114c2818560208601611466565b6114cb8161148e565b840191505092915050565b5f6020820190508181035f8301526114ee818461149e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611523826114fa565b9050919050565b61153381611519565b811461153d575f80fd5b50565b5f8135905061154e8161152a565b92915050565b5f819050919050565b61156681611554565b8114611570575f80fd5b50565b5f813590506115818161155d565b92915050565b5f806040838503121561159d5761159c6114f6565b5b5f6115aa85828601611540565b92505060206115bb85828601611573565b9150509250929050565b5f8115159050919050565b6115d9816115c5565b82525050565b5f6020820190506115f25f8301846115d0565b92915050565b61160181611554565b82525050565b5f60208201905061161a5f8301846115f8565b92915050565b5f805f60608486031215611637576116366114f6565b5b5f61164486828701611540565b935050602061165586828701611540565b925050604061166686828701611573565b9150509250925092565b5f60ff82169050919050565b61168581611670565b82525050565b5f60208201905061169e5f83018461167c565b92915050565b6116ad816115c5565b81146116b7575f80fd5b50565b5f813590506116c8816116a4565b92915050565b5f80604083850312156116e4576116e36114f6565b5b5f6116f185828601611540565b9250506020611702858286016116ba565b9150509250929050565b5f60208284031215611721576117206114f6565b5b5f61172e84828501611540565b91505092915050565b61174081611519565b82525050565b5f6020820190506117595f830184611737565b92915050565b5f8060408385031215611775576117746114f6565b5b5f61178285828601611540565b925050602061179385828601611540565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117e157607f821691505b6020821081036117f4576117f361179d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611854602883611456565b915061185f826117fa565b604082019050919050565b5f6020820190508181035f83015261188181611848565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6118bf82611554565b91506118ca83611554565b92508282019050808211156118e2576118e1611888565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61191c602083611456565b9150611927826118e8565b602082019050919050565b5f6020820190508181035f83015261194981611910565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6119aa602583611456565b91506119b582611950565b604082019050919050565b5f6020820190508181035f8301526119d78161199e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611a38602683611456565b9150611a43826119de565b604082019050919050565b5f6020820190508181035f830152611a6581611a2c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ac6602483611456565b9150611ad182611a6c565b604082019050919050565b5f6020820190508181035f830152611af381611aba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b54602283611456565b9150611b5f82611afa565b604082019050919050565b5f6020820190508181035f830152611b8181611b48565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611be2602583611456565b9150611bed82611b88565b604082019050919050565b5f6020820190508181035f830152611c0f81611bd6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611c70602383611456565b9150611c7b82611c16565b604082019050919050565b5f6020820190508181035f830152611c9d81611c64565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f611cd8601683611456565b9150611ce382611ca4565b602082019050919050565b5f6020820190508181035f830152611d0581611ccc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611d66602683611456565b9150611d7182611d0c565b604082019050919050565b5f6020820190508181035f830152611d9381611d5a565b905091905056fea26469706673582212207855c73ad605191dbbf34feac563964a828d4177bb0e3b2ccec6689f8044dcca64736f6c63430008180033