60806040526040518060400160405280600581526020017f434c41494d000000000000000000000000000000000000000000000000000000815250600390816200004a9190620003fe565b506040518060400160405280600581526020017f434c41494d00000000000000000000000000000000000000000000000000000081525060049081620000919190620003fe565b503480156200009e575f80fd5b50620186a03373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4620186a060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200014e91906200050f565b92505081905550335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000549565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200021657607f821691505b6020821081036200022c576200022b620001d1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620002907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000253565b6200029c868362000253565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620002e6620002e0620002da84620002b4565b620002bd565b620002b4565b9050919050565b5f819050919050565b6200030183620002c6565b620003196200031082620002ed565b8484546200025f565b825550505050565b5f90565b6200032f62000321565b6200033c818484620002f6565b505050565b5b818110156200036357620003575f8262000325565b60018101905062000342565b5050565b601f821115620003b2576200037c8162000232565b620003878462000244565b8101602085101562000397578190505b620003af620003a68562000244565b83018262000341565b50505b505050565b5f82821c905092915050565b5f620003d45f1984600802620003b7565b1980831691505092915050565b5f620003ee8383620003c3565b9150826002028217905092915050565b62000409826200019a565b67ffffffffffffffff811115620004255762000424620001a4565b5b620004318254620001fe565b6200043e82828562000367565b5f60209050601f83116001811462000474575f84156200045f578287015190505b6200046b8582620003e1565b865550620004da565b601f198416620004848662000232565b5f5b82811015620004ad5784890151825560018201915060208501945060208101905062000486565b86831015620004cd5784890151620004c9601f891682620003c3565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200051b82620002b4565b91506200052883620002b4565b9250828201905080821115620005435762000542620004e2565b5b92915050565b61114f80620005575f395ff3fe608060405234801561000f575f80fd5b50600436106100fd575f3560e01c80636352211e11610095578063a22cb46511610064578063a22cb465146102cf578063b88d4fde146102eb578063e985e9c514610307578063f242432a14610337576100fd565b80636352211e1461023357806370a08231146102635780638da5cb5b1461029357806395d89b41146102b1576100fd565b8063095ea7b3116100d1578063095ea7b3146101af57806323b872dd146101cb57806327e235e3146101e757806342842e0e14610217576100fd565b8062fdd58e1461010157806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f575b5f80fd5b61011b60048036038101906101169190610b6f565b610353565b6040516101289190610bbc565b60405180910390f35b61014b60048036038101906101469190610c2a565b61039a565b6040516101589190610c6f565b60405180910390f35b6101696103cb565b6040516101769190610d12565b60405180910390f35b61019960048036038101906101949190610d32565b610457565b6040516101a69190610d6c565b60405180910390f35b6101c960048036038101906101c49190610b6f565b610490565b005b6101e560048036038101906101e09190610d85565b610494565b005b61020160048036038101906101fc9190610dd5565b6104f4565b60405161020e9190610bbc565b60405180910390f35b610231600480360381019061022c9190610d85565b61053a565b005b61024d60048036038101906102489190610d32565b61068d565b60405161025a9190610d6c565b60405180910390f35b61027d60048036038101906102789190610dd5565b61072b565b60405161028a9190610bbc565b60405180910390f35b61029b610771565b6040516102a89190610d6c565b60405180910390f35b6102b9610794565b6040516102c69190610d12565b60405180910390f35b6102e960048036038101906102e49190610e2a565b610820565b005b61030560048036038101906103009190610ec9565b610824565b005b610321600480360381019061031c9190610f4d565b610979565b60405161032e9190610c6f565b60405180910390f35b610351600480360381019061034c9190610f8b565b610984565b005b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600380546103d89061104e565b80601f01602080910402602001604051908101604052809291908181526020018280546104049061104e565b801561044f5780601f106104265761010080835404028352916020019161044f565b820191905f5260205f20905b81548152906001019060200180831161043257829003601f168201915b505050505081565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5050565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190610587906110ab565b919050555060015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906105d9906110d2565b91905055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156107265760025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600480546107a19061104e565b80601f01602080910402602001604051908101604052809291908181526020018280546107cd9061104e565b80156108185780601f106107ef57610100808354040283529160200191610818565b820191905f5260205f20905b8154815290600101906020018083116107fb57829003601f168201915b505050505081565b5050565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190610871906110ab565b919050555060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906108c3906110d2565b91905055508360025f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b5f6001905092915050565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906109d1906110ab565b919050555060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190610a23906110d2565b91905055508460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b0b82610ae2565b9050919050565b610b1b81610b01565b8114610b25575f80fd5b50565b5f81359050610b3681610b12565b92915050565b5f819050919050565b610b4e81610b3c565b8114610b58575f80fd5b50565b5f81359050610b6981610b45565b92915050565b5f8060408385031215610b8557610b84610ada565b5b5f610b9285828601610b28565b9250506020610ba385828601610b5b565b9150509250929050565b610bb681610b3c565b82525050565b5f602082019050610bcf5f830184610bad565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610c0981610bd5565b8114610c13575f80fd5b50565b5f81359050610c2481610c00565b92915050565b5f60208284031215610c3f57610c3e610ada565b5b5f610c4c84828501610c16565b91505092915050565b5f8115159050919050565b610c6981610c55565b82525050565b5f602082019050610c825f830184610c60565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610cbf578082015181840152602081019050610ca4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610ce482610c88565b610cee8185610c92565b9350610cfe818560208601610ca2565b610d0781610cca565b840191505092915050565b5f6020820190508181035f830152610d2a8184610cda565b905092915050565b5f60208284031215610d4757610d46610ada565b5b5f610d5484828501610b5b565b91505092915050565b610d6681610b01565b82525050565b5f602082019050610d7f5f830184610d5d565b92915050565b5f805f60608486031215610d9c57610d9b610ada565b5b5f610da986828701610b28565b9350506020610dba86828701610b28565b9250506040610dcb86828701610b5b565b9150509250925092565b5f60208284031215610dea57610de9610ada565b5b5f610df784828501610b28565b91505092915050565b610e0981610c55565b8114610e13575f80fd5b50565b5f81359050610e2481610e00565b92915050565b5f8060408385031215610e4057610e3f610ada565b5b5f610e4d85828601610b28565b9250506020610e5e85828601610e16565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610e8957610e88610e68565b5b8235905067ffffffffffffffff811115610ea657610ea5610e6c565b5b602083019150836001820283011115610ec257610ec1610e70565b5b9250929050565b5f805f805f60808688031215610ee257610ee1610ada565b5b5f610eef88828901610b28565b9550506020610f0088828901610b28565b9450506040610f1188828901610b5b565b935050606086013567ffffffffffffffff811115610f3257610f31610ade565b5b610f3e88828901610e74565b92509250509295509295909350565b5f8060408385031215610f6357610f62610ada565b5b5f610f7085828601610b28565b9250506020610f8185828601610b28565b9150509250929050565b5f805f805f8060a08789031215610fa557610fa4610ada565b5b5f610fb289828a01610b28565b9650506020610fc389828a01610b28565b9550506040610fd489828a01610b5b565b9450506060610fe589828a01610b5b565b935050608087013567ffffffffffffffff81111561100657611005610ade565b5b61101289828a01610e74565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061106557607f821691505b60208210810361107857611077611021565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110b582610b3c565b91505f82036110c7576110c661107e565b5b600182039050919050565b5f6110dc82610b3c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361110e5761110d61107e565b5b60018201905091905056fea264697066735822122078c0d895ef484749c134dcf2a9a51ef4a183c6373d96e79f169e8a370a9c604a64736f6c63430008170033