{
	"address": "1654653399040a61",
	"balance": "24964085160",
	"keys": [
		{
			"index": "0",
			"public_key": "0x3588eb28b60e28d24c1e8b03f9a00f73ebd3f6707ee813e27d58ecb6439b8dde1413d7a74a7cc7e8939cbef2e0aa6acc51d5c7010afdb4c6dba55d4cc2ca8bed",
			"signing_algorithm": "ECDSA_P256",
			"hashing_algorithm": "SHA2_256",
			"sequence_number": "3",
			"weight": "1000",
			"revoked": false
		}
	],
	"contracts": {
		"FlowToken": "aW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweDFkN2U1N2FhNTU4MTc0NDgKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCgphY2Nlc3MoYWxsKSBjb250cmFjdCBGbG93VG9rZW46IEZ1bmdpYmxlVG9rZW4gewoKICAgIC8vIFRvdGFsIHN1cHBseSBvZiBGbG93IHRva2VucyBpbiBleGlzdGVuY2UKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFN1cHBseTogVUZpeDY0CgogICAgLy8gRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdG9rZW5zIGFyZSB3aXRoZHJhd24gZnJvbSBhIFZhdWx0CiAgICBhY2Nlc3MoYWxsKSBldmVudCBUb2tlbnNXaXRoZHJhd24oYW1vdW50OiBVRml4NjQsIGZyb206IEFkZHJlc3M/KQoKICAgIC8vIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRva2VucyBhcmUgZGVwb3NpdGVkIHRvIGEgVmF1bHQKICAgIGFjY2VzcyhhbGwpIGV2ZW50IFRva2Vuc0RlcG9zaXRlZChhbW91bnQ6IFVGaXg2NCwgdG86IEFkZHJlc3M/KQoKICAgIC8vIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIG5ldyB0b2tlbnMgYXJlIG1pbnRlZAogICAgYWNjZXNzKGFsbCkgZXZlbnQgVG9rZW5zTWludGVkKGFtb3VudDogVUZpeDY0KQoKICAgIC8vIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIGEgbmV3IG1pbnRlciByZXNvdXJjZSBpcyBjcmVhdGVkCiAgICBhY2Nlc3MoYWxsKSBldmVudCBNaW50ZXJDcmVhdGVkKGFsbG93ZWRBbW91bnQ6IFVGaXg2NCkKCiAgICAvLyBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBidXJuZXIgcmVzb3VyY2UgaXMgY3JlYXRlZAogICAgYWNjZXNzKGFsbCkgZXZlbnQgQnVybmVyQ3JlYXRlZCgpCgogICAgLy8gVmF1bHQKICAgIC8vCiAgICAvLyBFYWNoIHVzZXIgc3RvcmVzIGFuIGluc3RhbmNlIG9mIG9ubHkgdGhlIFZhdWx0IGluIHRoZWlyIHN0b3JhZ2UKICAgIC8vIFRoZSBmdW5jdGlvbnMgaW4gdGhlIFZhdWx0IGFuZCBnb3Zlcm5lZCBieSB0aGUgcHJlIGFuZCBwb3N0IGNvbmRpdGlvbnMKICAgIC8vIGluIEZ1bmdpYmxlVG9rZW4gd2hlbiB0aGV5IGFyZSBjYWxsZWQuCiAgICAvLyBUaGUgY2hlY2tzIGhhcHBlbiBhdCBydW50aW1lIHdoZW5ldmVyIGEgZnVuY3Rpb24gaXMgY2FsbGVkLgogICAgLy8KICAgIC8vIFJlc291cmNlcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjb250cmFjdCB0aGF0IHRoZXkKICAgIC8vIGFyZSBkZWZpbmVkIGluLCBzbyB0aGVyZSBpcyBubyB3YXkgZm9yIGEgbWFsaWNpb3VzIHVzZXIgdG8gY3JlYXRlIFZhdWx0cwogICAgLy8gb3V0IG9mIHRoaW4gYWlyLiBBIHNwZWNpYWwgTWludGVyIHJlc291cmNlIG5lZWRzIHRvIGJlIGRlZmluZWQgdG8gbWludAogICAgLy8gbmV3IHRva2Vucy4KICAgIC8vCiAgICBhY2Nlc3MoYWxsKSByZXNvdXJjZSBWYXVsdDogRnVuZ2libGVUb2tlbi5WYXVsdCB7CgogICAgICAgIC8vIGhvbGRzIHRoZSBiYWxhbmNlIG9mIGEgdXNlcnMgdG9rZW5zCiAgICAgICAgYWNjZXNzKGFsbCkgdmFyIGJhbGFuY2U6IFVGaXg2NAoKICAgICAgICAvLyBpbml0aWFsaXplIHRoZSBiYWxhbmNlIGF0IHJlc291cmNlIGNyZWF0aW9uIHRpbWUKICAgICAgICBpbml0KGJhbGFuY2U6IFVGaXg2NCkgewogICAgICAgICAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCiAgICAgICAgfQoKICAgICAgICAvLy8gQ2FsbGVkIHdoZW4gYSBmdW5naWJsZSB0b2tlbiBpcyBidXJuZWQgdmlhIHRoZSBgQnVybmVyLmJ1cm4oKWAgbWV0aG9kCiAgICAgICAgYWNjZXNzKGNvbnRyYWN0KSBmdW4gYnVybkNhbGxiYWNrKCkgewogICAgICAgICAgICBpZiBzZWxmLmJhbGFuY2UgPiAwLjAgewogICAgICAgICAgICAgICAgRmxvd1Rva2VuLnRvdGFsU3VwcGx5ID0gRmxvd1Rva2VuLnRvdGFsU3VwcGx5IC0gc2VsZi5iYWxhbmNlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VsZi5iYWxhbmNlID0gMC4wCiAgICAgICAgfQoKICAgICAgICAvLy8gZ2V0U3VwcG9ydGVkVmF1bHRUeXBlcyBvcHRpb25hbGx5IHJldHVybnMgYSBsaXN0IG9mIHZhdWx0IHR5cGVzIHRoYXQgdGhpcyByZWNlaXZlciBhY2NlcHRzCiAgICAgICAgYWNjZXNzKGFsbCkgdmlldyBmdW4gZ2V0U3VwcG9ydGVkVmF1bHRUeXBlcygpOiB7VHlwZTogQm9vbH0gewogICAgICAgICAgICByZXR1cm4ge3NlbGYuZ2V0VHlwZSgpOiB0cnVlfQogICAgICAgIH0KCiAgICAgICAgYWNjZXNzKGFsbCkgdmlldyBmdW4gaXNTdXBwb3J0ZWRWYXVsdFR5cGUodHlwZTogVHlwZSk6IEJvb2wgewogICAgICAgICAgICBpZiAodHlwZSA9PSBzZWxmLmdldFR5cGUoKSkgeyByZXR1cm4gdHJ1ZSB9IGVsc2UgeyByZXR1cm4gZmFsc2UgfQogICAgICAgIH0KCiAgICAgICAgLy8vIEFza3MgaWYgdGhlIGFtb3VudCBjYW4gYmUgd2l0aGRyYXduIGZyb20gdGhpcyB2YXVsdAogICAgICAgIGFjY2VzcyhhbGwpIHZpZXcgZnVuIGlzQXZhaWxhYmxlVG9XaXRoZHJhdyhhbW91bnQ6IFVGaXg2NCk6IEJvb2wgewogICAgICAgICAgICByZXR1cm4gYW1vdW50IDw9IHNlbGYuYmFsYW5jZQogICAgICAgIH0KCiAgICAgICAgLy8gd2l0aGRyYXcKICAgICAgICAvLwogICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gaW50ZWdlciBhbW91bnQgYXMgYW4gYXJndW1lbnQKICAgICAgICAvLyBhbmQgd2l0aGRyYXdzIHRoYXQgYW1vdW50IGZyb20gdGhlIFZhdWx0LgogICAgICAgIC8vIEl0IGNyZWF0ZXMgYSBuZXcgdGVtcG9yYXJ5IFZhdWx0IHRoYXQgaXMgdXNlZCB0byBob2xkCiAgICAgICAgLy8gdGhlIG1vbmV5IHRoYXQgaXMgYmVpbmcgdHJhbnNmZXJyZWQuIEl0IHJldHVybnMgdGhlIG5ld2x5CiAgICAgICAgLy8gY3JlYXRlZCBWYXVsdCB0byB0aGUgY29udGV4dCB0aGF0IGNhbGxlZCBzbyBpdCBjYW4gYmUgZGVwb3NpdGVkCiAgICAgICAgLy8gZWxzZXdoZXJlLgogICAgICAgIC8vCiAgICAgICAgYWNjZXNzKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpIGZ1biB3aXRoZHJhdyhhbW91bnQ6IFVGaXg2NCk6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gewogICAgICAgICAgICBzZWxmLmJhbGFuY2UgPSBzZWxmLmJhbGFuY2UgLSBhbW91bnQKCiAgICAgICAgICAgIC8vIElmIHRoZSBvd25lciBpcyB0aGUgc3Rha2luZyBhY2NvdW50LCBkbyBub3QgZW1pdCB0aGUgY29udHJhY3QgZGVmaW5lZCBldmVudHMKICAgICAgICAgICAgLy8gdGhpcyBpcyB0byBoZWxwIHdpdGggdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBlcG9jaCB0cmFuc2l0aW9uIG9wZXJhdGlvbnMKICAgICAgICAgICAgLy8gRWl0aGVyIHdheSwgZXZlbnQgbGlzdGVuZXJzIHNob3VsZCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvIHRoZQogICAgICAgICAgICAvLyBGdW5naWJsZVRva2VuLldpdGhkcmF3biBldmVudHMgYW55d2F5IGJlY2F1c2UgdGhvc2UgY29udGFpbgogICAgICAgICAgICAvLyBtdWNoIG1vcmUgY29tcHJlaGVuc2l2ZSBtZXRhZGF0YQogICAgICAgICAgICAvLyBBZGRpdGlvbmFsbHksIHRoZXNlIGV2ZW50cyB3aWxsIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCBmcm9tIHRoaXMgY29udHJhY3QgY29tcGxldGVseQogICAgICAgICAgICAvLyBpbiBmYXZvciBvZiB0aGUgRnVuZ2libGVUb2tlbiBldmVudHMKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gTk9URTogVGhlIGFkZHJlc3MgZXhjbHVzaW9ucyBiZWxvdyBhcmUgTk9UIGEgc2VjdXJpdHkgYnlwYXNzIOKAlCB0aGV5IGFyZSBhIGRvY3VtZW50ZWQKICAgICAgICAgICAgLy8gcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGZvciBrbm93biBzZXJ2aWNlIGFjY291bnRzIHRoYXQgcHJvY2VzcyBoaWdoIHZvbHVtZXMgb2YKICAgICAgICAgICAgLy8gdG9rZW4gbW92ZW1lbnRzIGR1cmluZyBlcG9jaCB0cmFuc2l0aW9ucy4gVGhlc2UgYXJlIGZpeGVkLCB3ZWxsLWtub3duIHByb3RvY29sCiAgICAgICAgICAgIC8vIGFkZHJlc3NlcyAoZW11bGF0b3Igc2VydmljZSBhY2NvdW50LCB0ZXN0bmV0IHN0YWtpbmcgY29udHJhY3QsIG1haW5uZXQgc3Rha2luZyBjb250cmFjdCkuCiAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBzZWN1cml0eSBvZiB1c2VyIGZ1bmRzIGluIGFueSB3YXkuCiAgICAgICAgICAgIGlmIGxldCBhZGRyZXNzID0gc2VsZi5vd25lcj8uYWRkcmVzcyB7CiAgICAgICAgICAgICAgICBpZiBhZGRyZXNzICE9IDB4ZjhkNmUwNTg2YjBhMjBjNyAmJgogICAgICAgICAgICAgICAgICAgYWRkcmVzcyAhPSAweGY0NTI3NzkzZWU2OGFlZGUgJiYKICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgIT0gMHg5ZWNhMmIzOGIxOGI1ZGZlICYmCiAgICAgICAgICAgICAgICAgICBhZGRyZXNzICE9IDB4ODYyNGI1MmY5ZGRjZDA0YQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVtaXQgVG9rZW5zV2l0aGRyYXduKGFtb3VudDogYW1vdW50LCBmcm9tOiBhZGRyZXNzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZW1pdCBUb2tlbnNXaXRoZHJhd24oYW1vdW50OiBhbW91bnQsIGZyb206IG5pbCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gPC1jcmVhdGUgVmF1bHQoYmFsYW5jZTogYW1vdW50KQogICAgICAgIH0KCiAgICAgICAgLy8gZGVwb3NpdAogICAgICAgIC8vCiAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCB0YWtlcyBhIFZhdWx0IG9iamVjdCBhcyBhbiBhcmd1bWVudCBhbmQgYWRkcwogICAgICAgIC8vIGl0cyBiYWxhbmNlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBvd25lcnMgVmF1bHQuCiAgICAgICAgLy8gSXQgaXMgYWxsb3dlZCB0byBkZXN0cm95IHRoZSBzZW50IFZhdWx0IGJlY2F1c2UgdGhlIFZhdWx0CiAgICAgICAgLy8gd2FzIGEgdGVtcG9yYXJ5IGhvbGRlciBvZiB0aGUgdG9rZW5zLiBUaGUgVmF1bHQncyBiYWxhbmNlIGhhcwogICAgICAgIC8vIGJlZW4gY29uc3VtZWQgYW5kIHRoZXJlZm9yZSBjYW4gYmUgZGVzdHJveWVkLgogICAgICAgIGFjY2VzcyhhbGwpIGZ1biBkZXBvc2l0KGZyb206IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0pIHsKICAgICAgICAgICAgbGV0IHZhdWx0IDwtIGZyb20gYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgICAgICAgICAgc2VsZi5iYWxhbmNlID0gc2VsZi5iYWxhbmNlICsgdmF1bHQuYmFsYW5jZQoKICAgICAgICAgICAgLy8gSWYgdGhlIG93bmVyIGlzIHRoZSBzdGFraW5nIGFjY291bnQsIGRvIG5vdCBlbWl0IHRoZSBjb250cmFjdCBkZWZpbmVkIGV2ZW50cwogICAgICAgICAgICAvLyB0aGlzIGlzIHRvIGhlbHAgd2l0aCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGVwb2NoIHRyYW5zaXRpb24gb3BlcmF0aW9ucwogICAgICAgICAgICAvLyBFaXRoZXIgd2F5LCBldmVudCBsaXN0ZW5lcnMgc2hvdWxkIGJlIHBheWluZyBhdHRlbnRpb24gdG8gdGhlIAogICAgICAgICAgICAvLyBGdW5naWJsZVRva2VuLkRlcG9zaXRlZCBldmVudHMgYW55d2F5IGJlY2F1c2UgdGhvc2UgY29udGFpbgogICAgICAgICAgICAvLyBtdWNoIG1vcmUgY29tcHJlaGVuc2l2ZSBtZXRhZGF0YQogICAgICAgICAgICAvLyBBZGRpdGlvbmFsbHksIHRoZXNlIGV2ZW50cyB3aWxsIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCBmcm9tIHRoaXMgY29udHJhY3QgY29tcGxldGVseQogICAgICAgICAgICAvLyBpbiBmYXZvciBvZiB0aGUgRnVuZ2libGVUb2tlbiBldmVudHMKICAgICAgICAgICAgaWYgbGV0IGFkZHJlc3MgPSBzZWxmLm93bmVyPy5hZGRyZXNzIHsKICAgICAgICAgICAgICAgIGlmIGFkZHJlc3MgIT0gMHhmOGQ2ZTA1ODZiMGEyMGM3ICYmCiAgICAgICAgICAgICAgICAgICBhZGRyZXNzICE9IDB4ZjQ1Mjc3OTNlZTY4YWVkZSAmJgogICAgICAgICAgICAgICAgICAgYWRkcmVzcyAhPSAweDllY2EyYjM4YjE4YjVkZmUgJiYKICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgIT0gMHg4NjI0YjUyZjlkZGNkMDRhIAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVtaXQgVG9rZW5zRGVwb3NpdGVkKGFtb3VudDogdmF1bHQuYmFsYW5jZSwgdG86IGFkZHJlc3MpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlbWl0IFRva2Vuc0RlcG9zaXRlZChhbW91bnQ6IHZhdWx0LmJhbGFuY2UsIHRvOiBuaWwpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmF1bHQuYmFsYW5jZSA9IDAuMAogICAgICAgICAgICBkZXN0cm95IHZhdWx0CiAgICAgICAgfQoKICAgICAgICAvLy8gR2V0IGFsbCB0aGUgTWV0YWRhdGEgVmlld3MgaW1wbGVtZW50ZWQgYnkgRmxvd1Rva2VuCiAgICAgICAgLy8vCiAgICAgICAgLy8vIEByZXR1cm4gQW4gYXJyYXkgb2YgVHlwZXMgZGVmaW5pbmcgdGhlIGltcGxlbWVudGVkIHZpZXdzLiBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBieQogICAgICAgIC8vLyAgICAgICAgIGRldmVsb3BlcnMgdG8ga25vdyB3aGljaCBwYXJhbWV0ZXIgdG8gcGFzcyB0byB0aGUgcmVzb2x2ZVZpZXcoKSBtZXRob2QuCiAgICAgICAgLy8vCiAgICAgICAgYWNjZXNzKGFsbCkgdmlldyBmdW4gZ2V0Vmlld3MoKTogW1R5cGVdewogICAgICAgICAgICByZXR1cm4gRmxvd1Rva2VuLmdldENvbnRyYWN0Vmlld3MocmVzb3VyY2VUeXBlOiBuaWwpCiAgICAgICAgfQoKICAgICAgICAvLy8gR2V0IGEgTWV0YWRhdGEgVmlldyBmcm9tIEZsb3dUb2tlbgogICAgICAgIC8vLwogICAgICAgIC8vLyBAcGFyYW0gdmlldzogVGhlIFR5cGUgb2YgdGhlIGRlc2lyZWQgdmlldy4KICAgICAgICAvLy8gQHJldHVybiBBIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3RlZCB2aWV3LgogICAgICAgIC8vLwogICAgICAgIGFjY2VzcyhhbGwpIGZ1biByZXNvbHZlVmlldyhfIHZpZXc6IFR5cGUpOiBBbnlTdHJ1Y3Q/IHsKICAgICAgICAgICAgcmV0dXJuIEZsb3dUb2tlbi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogdmlldykKICAgICAgICB9CgogICAgICAgIGFjY2VzcyhhbGwpIGZ1biBjcmVhdGVFbXB0eVZhdWx0KCk6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gewogICAgICAgICAgICByZXR1cm4gPC1jcmVhdGUgVmF1bHQoYmFsYW5jZTogMC4wKQogICAgICAgIH0KICAgIH0KCiAgICAvLyBjcmVhdGVFbXB0eVZhdWx0CiAgICAvLwogICAgLy8gRnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbmV3IFZhdWx0IHdpdGggYSBiYWxhbmNlIG9mIHplcm8KICAgIC8vIGFuZCByZXR1cm5zIGl0IHRvIHRoZSBjYWxsaW5nIGNvbnRleHQuIEEgdXNlciBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbgogICAgLy8gYW5kIHN0b3JlIHRoZSByZXR1cm5lZCBWYXVsdCBpbiB0aGVpciBzdG9yYWdlIGluIG9yZGVyIHRvIGFsbG93IHRoZWlyCiAgICAvLyBhY2NvdW50IHRvIGJlIGFibGUgdG8gcmVjZWl2ZSBkZXBvc2l0cyBvZiB0aGlzIHRva2VuIHR5cGUuCiAgICAvLwogICAgYWNjZXNzKGFsbCkgZnVuIGNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlKTogQEZsb3dUb2tlbi5WYXVsdCB7CiAgICAgICAgcmV0dXJuIDwtY3JlYXRlIFZhdWx0KGJhbGFuY2U6IDAuMCkKICAgIH0KCiAgICAvLy8gR2V0cyBhIGxpc3Qgb2YgdGhlIG1ldGFkYXRhIHZpZXdzIHRoYXQgdGhpcyBjb250cmFjdCBzdXBwb3J0cwogICAgYWNjZXNzKGFsbCkgdmlldyBmdW4gZ2V0Q29udHJhY3RWaWV3cyhyZXNvdXJjZVR5cGU6IFR5cGU/KTogW1R5cGVdIHsKICAgICAgICByZXR1cm4gW1R5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWaWV3PigpLAogICAgICAgICAgICAgICAgVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXk+KCksCiAgICAgICAgICAgICAgICBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpLAogICAgICAgICAgICAgICAgVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5Ub3RhbFN1cHBseT4oKV0KICAgIH0KCiAgICAvLy8gR2V0IGEgTWV0YWRhdGEgVmlldyBmcm9tIEZsb3dUb2tlbgogICAgLy8vCiAgICAvLy8gQHBhcmFtIHZpZXc6IFRoZSBUeXBlIG9mIHRoZSBkZXNpcmVkIHZpZXcuCiAgICAvLy8gQHJldHVybiBBIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3RlZCB2aWV3LgogICAgLy8vCiAgICBhY2Nlc3MoYWxsKSBmdW4gcmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IFR5cGU/LCB2aWV3VHlwZTogVHlwZSk6IEFueVN0cnVjdD8gewogICAgICAgIHN3aXRjaCB2aWV3VHlwZSB7CiAgICAgICAgICAgIGNhc2UgVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZpZXc+KCk6CiAgICAgICAgICAgICAgICByZXR1cm4gRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWaWV3KAogICAgICAgICAgICAgICAgICAgIGZ0RGlzcGxheTogc2VsZi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXk+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXk/LAogICAgICAgICAgICAgICAgICAgIGZ0VmF1bHREYXRhOiBzZWxmLnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGNhc2UgVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXk+KCk6CiAgICAgICAgICAgICAgICBsZXQgbWVkaWEgPSBNZXRhZGF0YVZpZXdzLk1lZGlhKAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlOiBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IEZsb3dUb2tlbi5nZXRMb2dvVVJJKCkKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZTogImltYWdlL3N2Zyt4bWwiCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBsZXQgbWVkaWFzID0gTWV0YWRhdGFWaWV3cy5NZWRpYXMoW21lZGlhXSkKICAgICAgICAgICAgICAgIHJldHVybiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXkoCiAgICAgICAgICAgICAgICAgICAgbmFtZTogIkZMT1cgTmV0d29yayBUb2tlbiIsCiAgICAgICAgICAgICAgICAgICAgc3ltYm9sOiAiRkxPVyIsCiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJGTE9XIGlzIHRoZSBuYXRpdmUgdG9rZW4gZm9yIHRoZSBGbG93IGJsb2NrY2hhaW4uIEl0IGlzIHJlcXVpcmVkIGZvciBzZWN1cmluZyB0aGUgbmV0d29yaywgdHJhbnNhY3Rpb24gZmVlcywgc3RvcmFnZSBmZWVzLCBzdGFraW5nLCBGTElQIHZvdGluZyBhbmQgbWF5IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zIGJ1aWx0IG9uIHRoZSBGbG93IEJsb2NrY2hhaW4iLAogICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVVJMOiBNZXRhZGF0YVZpZXdzLkV4dGVybmFsVVJMKCJodHRwczovL2Zsb3cuY29tIiksCiAgICAgICAgICAgICAgICAgICAgbG9nb3M6IG1lZGlhcywKICAgICAgICAgICAgICAgICAgICBzb2NpYWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0d2l0dGVyIjogTWV0YWRhdGFWaWV3cy5FeHRlcm5hbFVSTCgiaHR0cHM6Ly90d2l0dGVyLmNvbS9mbG93X2Jsb2NrY2hhaW4iKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgY2FzZSBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpOgogICAgICAgICAgICAgICAgbGV0IHZhdWx0UmVmID0gRmxvd1Rva2VuLmFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKCQkJICAgICAgICA/PyBwYW5pYygiRmxvd1Rva2VuLnJlc29sdmVDb250cmFjdFZpZXc6IENvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBjb250cmFjdCdzIFZhdWx0ISIpCiAgICAgICAgICAgICAgICByZXR1cm4gRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGEoCiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVBhdGg6IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0LAogICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyUGF0aDogL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlciwKICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVBhdGg6IC9wdWJsaWMvZmxvd1Rva2VuQmFsYW5jZSwKICAgICAgICAgICAgICAgICAgICByZWNlaXZlckxpbmtlZFR5cGU6IFR5cGU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyLCBGdW5naWJsZVRva2VuLlZhdWx0fT4oKSwKICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YUxpbmtlZFR5cGU6IFR5cGU8JntGdW5naWJsZVRva2VuLkJhbGFuY2UsIEZ1bmdpYmxlVG9rZW4uVmF1bHR9PigpLAogICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVtcHR5VmF1bHRGdW5jdGlvbjogKGZ1biAoKTogQHtGdW5naWJsZVRva2VuLlZhdWx0fSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8LXZhdWx0UmVmLmNyZWF0ZUVtcHR5VmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGNhc2UgVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5Ub3RhbFN1cHBseT4oKToKICAgICAgICAgICAgICAgIHJldHVybiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5Ub3RhbFN1cHBseSh0b3RhbFN1cHBseTogRmxvd1Rva2VuLnRvdGFsU3VwcGx5KQogICAgICAgIH0KICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgYWNjZXNzKGFsbCkgcmVzb3VyY2UgQWRtaW5pc3RyYXRvciB7CiAgICAgICAgLy8gY3JlYXRlTmV3TWludGVyCiAgICAgICAgLy8KICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgbWludGVyIHJlc291cmNlCiAgICAgICAgLy8KICAgICAgICBhY2Nlc3MoYWxsKSBmdW4gY3JlYXRlTmV3TWludGVyKGFsbG93ZWRBbW91bnQ6IFVGaXg2NCk6IEBNaW50ZXIgewogICAgICAgICAgICBlbWl0IE1pbnRlckNyZWF0ZWQoYWxsb3dlZEFtb3VudDogYWxsb3dlZEFtb3VudCkKICAgICAgICAgICAgcmV0dXJuIDwtY3JlYXRlIE1pbnRlcihhbGxvd2VkQW1vdW50OiBhbGxvd2VkQW1vdW50KQogICAgICAgIH0KICAgIH0KCiAgICAvLyBNaW50ZXIKICAgIC8vCiAgICAvLyBSZXNvdXJjZSBvYmplY3QgdGhhdCB0b2tlbiBhZG1pbiBhY2NvdW50cyBjYW4gaG9sZCB0byBtaW50IG5ldyB0b2tlbnMuCiAgICAvLwogICAgYWNjZXNzKGFsbCkgcmVzb3VyY2UgTWludGVyIHsKCiAgICAgICAgLy8gdGhlIGFtb3VudCBvZiB0b2tlbnMgdGhhdCB0aGUgbWludGVyIGlzIGFsbG93ZWQgdG8gbWludAogICAgICAgIGFjY2VzcyhhbGwpIHZhciBhbGxvd2VkQW1vdW50OiBVRml4NjQKCiAgICAgICAgLy8gbWludFRva2VucwogICAgICAgIC8vCiAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBtaW50cyBuZXcgdG9rZW5zLCBhZGRzIHRoZW0gdG8gdGhlIHRvdGFsIHN1cHBseSwKICAgICAgICAvLyBhbmQgcmV0dXJucyB0aGVtIHRvIHRoZSBjYWxsaW5nIGNvbnRleHQuCiAgICAgICAgLy8KICAgICAgICBhY2Nlc3MoYWxsKSBmdW4gbWludFRva2VucyhhbW91bnQ6IFVGaXg2NCk6IEBGbG93VG9rZW4uVmF1bHQgewogICAgICAgICAgICBwcmUgewogICAgICAgICAgICAgICAgYW1vdW50ID4gVUZpeDY0KDApOiAiRmxvd1Rva2VuLk1pbnRlci5taW50VG9rZW5zOiBBbW91bnQgbWludGVkIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYnV0IGdvdCBcKGFtb3VudCkiCiAgICAgICAgICAgICAgICBhbW91bnQgPD0gc2VsZi5hbGxvd2VkQW1vdW50OiAiRmxvd1Rva2VuLk1pbnRlci5taW50VG9rZW5zOiBBbW91bnQgbWludGVkIChcKGFtb3VudCkpIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBhbGxvd2VkIGFtb3VudCAoXChzZWxmLmFsbG93ZWRBbW91bnQpKSIKICAgICAgICAgICAgfQogICAgICAgICAgICBGbG93VG9rZW4udG90YWxTdXBwbHkgPSBGbG93VG9rZW4udG90YWxTdXBwbHkgKyBhbW91bnQKICAgICAgICAgICAgc2VsZi5hbGxvd2VkQW1vdW50ID0gc2VsZi5hbGxvd2VkQW1vdW50IC0gYW1vdW50CiAgICAgICAgICAgIGVtaXQgVG9rZW5zTWludGVkKGFtb3VudDogYW1vdW50KQogICAgICAgICAgICByZXR1cm4gPC1jcmVhdGUgVmF1bHQoYmFsYW5jZTogYW1vdW50KQogICAgICAgIH0KCiAgICAgICAgaW5pdChhbGxvd2VkQW1vdW50OiBVRml4NjQpIHsKICAgICAgICAgICAgc2VsZi5hbGxvd2VkQW1vdW50ID0gYWxsb3dlZEFtb3VudAogICAgICAgIH0KICAgIH0KCiAgICAvLy8gR2V0cyB0aGUgRmxvdyBMb2dvIFhNTCBVUkkgZnJvbSBzdG9yYWdlCiAgICBhY2Nlc3MoYWxsKSB2aWV3IGZ1biBnZXRMb2dvVVJJKCk6IFN0cmluZyB7CiAgICAgICAgcmV0dXJuIEZsb3dUb2tlbi5hY2NvdW50LnN0b3JhZ2UuY29weTxTdHJpbmc+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlbkxvZ29VUkkpID8/ICIiCiAgICB9CgogICAgaW5pdCgpIHsKICAgICAgICBzZWxmLnRvdGFsU3VwcGx5ID0gMC4wCgogICAgICAgIC8vIENyZWF0ZSB0aGUgVmF1bHQgd2l0aCB0aGUgdG90YWwgc3VwcGx5IG9mIHRva2VucyBhbmQgc2F2ZSBpdCBpbiBzdG9yYWdlCiAgICAgICAgLy8KICAgICAgICBsZXQgdmF1bHQgPC0gY3JlYXRlIFZhdWx0KGJhbGFuY2U6IHNlbGYudG90YWxTdXBwbHkpCgogICAgICAgIHNlbGYuYWNjb3VudC5zdG9yYWdlLnNhdmUoPC12YXVsdCwgdG86IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQoKICAgICAgICAvLyBDcmVhdGUgYSBwdWJsaWMgY2FwYWJpbGl0eSB0byB0aGUgc3RvcmVkIFZhdWx0IHRoYXQgb25seSBleHBvc2VzCiAgICAgICAgLy8gdGhlIGBkZXBvc2l0YCBtZXRob2QgdGhyb3VnaCB0aGUgYFJlY2VpdmVyYCBpbnRlcmZhY2UKICAgICAgICAvLwogICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzZWxmLmFjY291bnQuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkZsb3dUb2tlbi5WYXVsdD4oL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpCiAgICAgICAgc2VsZi5hY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpCgogICAgICAgIC8vIENyZWF0ZSBhIHB1YmxpYyBjYXBhYmlsaXR5IHRvIHRoZSBzdG9yZWQgVmF1bHQgdGhhdCBvbmx5IGV4cG9zZXMKICAgICAgICAvLyB0aGUgYGJhbGFuY2VgIGZpZWxkIHRocm91Z2ggdGhlIGBCYWxhbmNlYCBpbnRlcmZhY2UKICAgICAgICAvLwogICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNlbGYuYWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmRmxvd1Rva2VuLlZhdWx0Pigvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICBzZWxmLmFjY291bnQuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiAvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpCgogICAgICAgIGxldCBhZG1pbiA8LSBjcmVhdGUgQWRtaW5pc3RyYXRvcigpCiAgICAgICAgc2VsZi5hY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LWFkbWluLCB0bzogL3N0b3JhZ2UvZmxvd1Rva2VuQWRtaW4pCgogICAgfQp9Cg=="
	},
	"_expandable": {},
	"_links": {
		"_self": "/v1/accounts/1654653399040a61"
	}
}