--- http_interactions: - request: method: post uri: "/v1.16/images/create?fromImage=debian%3Awheezy" body: encoding: US-ASCII string: '' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - text/plain response: status: code: 200 message: headers: Content-Type: - application/json Date: - Sun, 12 Jul 2015 09:21:21 GMT body: encoding: UTF-8 string: "{\"status\":\"Pulling from debian\",\"id\":\"wheezy\"}\r\n{\"status\":\"Already exists\",\"progressDetail\":{},\"id\":\"104de4492b99\"}{\"status\":\"Already exists\",\"progressDetail\":{},\"id\":\"065218d54d7d\"}{\"status\":\"Already exists\",\"progressDetail\":{},\"id\":\"065218d54d7d\"}{\"status\":\"Digest: sha256:a4bee4ac81a50d07ef8aae88171b8cb1aff17f8f466622bd599153e62ead3b76\"}\r\n{\"status\":\"Status: Image is up to date for debian:wheezy\"}\r\n" http_version: recorded_at: Sun, 12 Jul 2015 09:21:21 GMT - request: method: post uri: "/v1.16/build" body: encoding: UTF-8 string: !binary |- bGliAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NDAAMDAwMDAwMAAwMDAwMDAwADAwMDAwMTQ2MDAw ADEyNTUwNDMwNjIxADAxMjAwMgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMHdoZWVs AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABkb2NrZXIvYmFzZS5yYgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAwADAw MDAwMDAAMDAwMDAwMDE2MDEAMTI1MzYwMDY3MDQAMDE0MDI2ACAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzdGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3 aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBjbGFz cyBpcyBhIGJhc2UgY2xhc3MgZm9yIERvY2tlciBDb250YWluZXIgYW5kIElt YWdlLgojIEl0IGlzIGltcGxlbWVudGluZyBhY2Nlc3NvciBtZXRob2RzIGZv ciB0aGUgbW9kZWxzIGF0dHJpYnV0ZXMuCm1vZHVsZSBEb2NrZXI6OkJhc2UK ICBpbmNsdWRlIERvY2tlcjo6RXJyb3IKCiAgYXR0cl9hY2Nlc3NvciA6Y29u bmVjdGlvbiwgOmluZm8KICBhdHRyX3JlYWRlciA6aWQKCiAgIyBUaGUgcHJp dmF0ZSBuZXcgbWV0aG9kIGFjY2VwdHMgYSBjb25uZWN0aW9uIGFuZCBhIGhh c2ggb2Ygb3B0aW9ucyB0aGF0IG11c3QgaW5jbHVkZSBhbiBpZC4KICBkZWYg aW5pdGlhbGl6ZShjb25uZWN0aW9uLCBoYXNoPXt9KQogICAgdW5sZXNzIGNv bm5lY3Rpb24uaXNfYT8oRG9ja2VyOjpDb25uZWN0aW9uKQogICAgICByYWlz ZSBBcmd1bWVudEVycm9yLCAiRXhwZWN0ZWQgYSBEb2NrZXI6OkNvbm5lY3Rp b24sIGdvdDogI3tjb25uZWN0aW9ufS4iCiAgICBlbmQKICAgIG5vcm1hbGl6 ZV9oYXNoKGhhc2gpCiAgICBAY29ubmVjdGlvbiwgQGluZm8sIEBpZCA9IGNv bm5lY3Rpb24sIGhhc2gsIGhhc2hbJ2lkJ10KICAgIHJhaXNlIEFyZ3VtZW50 RXJyb3IsICJNdXN0IGhhdmUgaWQsIGdvdDogI3toYXNofSIgdW5sZXNzIEBp ZAogIGVuZAoKICAjIFRoZSBkb2NrZXItYXBpIHdpbGwgc29tZSB0aW1lIHJl dHVybiAiSUQiIG90aGVyIHRpbWVzIGl0IHdpbGwgcmV0dXJuICJJZCIKICAj IGFuZCBvdGhlciB0aW1lcyBpdCB3aWxsIHJldHVybiAiaWQiLiBUaGlzIG1l dGhvZCBub3JtYWxpemUgaXQgdG8gImlkIgogIGRlZiBub3JtYWxpemVfaGFz aChoYXNoKQogICAgaGFzaFsiaWQiXSB8fD0gaGFzaC5kZWxldGUoIklEIikg fHwgaGFzaC5kZWxldGUoIklkIikKICBlbmQKZW5kCgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkb2NrZXIvY29ubmVjdGlvbi5yYgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAw MDAwADAwMDAwMDAAMDAwMDAwMDYwNzAAMTI1MzYwMDY3MDQAMDE1MjYwACAw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHVzdGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAA MDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgVGhp cyBjbGFzcyByZXByZXNlbnRzIGEgQ29ubmVjdGlvbiB0byBhIERvY2tlciBz ZXJ2ZXIuIFRoZSBDb25uZWN0aW9uIGlzCiMgaW1tdXRhYmxlIGluIHRoYXQg b25jZSB0aGUgdXJsIGFuZCBvcHRpb25zIGlzIHNldCB0aGV5IGNhbm5vdCBi ZSBjaGFuZ2VkLgpjbGFzcyBEb2NrZXI6OkNvbm5lY3Rpb24KICBpbmNsdWRl IERvY2tlcjo6RXJyb3IKCiAgYXR0cl9yZWFkZXIgOnVybCwgOm9wdGlvbnMK CiAgIyBDcmVhdGUgYSBuZXcgQ29ubmVjdGlvbi4gVGhpcyBtZXRob2QgdGFr ZXMgYSB1cmwgKFN0cmluZykgYW5kIG9wdGlvbnMKICAjIChIYXNoKS4gVGhl c2UgYXJlIHBhc3NlZCB0byBFeGNvbiwgc28gYW55IG9wdGlvbnMgdmFsaWQg Zm9yIGBFeGNvbi5uZXdgCiAgIyBjYW4gYmUgcGFzc2VkIGhlcmUuCiAgZGVm IGluaXRpYWxpemUodXJsLCBvcHRzKQogICAgY2FzZQogICAgd2hlbiAhdXJs LmlzX2E/KFN0cmluZykKICAgICAgcmFpc2UgQXJndW1lbnRFcnJvciwgIkV4 cGVjdGVkIGEgU3RyaW5nLCBnb3Q6ICcje3VybH0nIgogICAgd2hlbiAhb3B0 cy5pc19hPyhIYXNoKQogICAgICByYWlzZSBBcmd1bWVudEVycm9yLCAiRXhw ZWN0ZWQgYSBIYXNoLCBnb3Q6ICcje29wdHN9JyIKICAgIGVsc2UKICAgICAg dXJpID0gVVJJLnBhcnNlKHVybCkKICAgICAgaWYgdXJpLnNjaGVtZSA9PSAi dW5peCIKICAgICAgICBAdXJsLCBAb3B0aW9ucyA9ICd1bml4Oi8vLycsIHs6 c29ja2V0ID0+IHVyaS5wYXRofS5tZXJnZShvcHRzKQogICAgICBlbHNpZiB1 cmkuc2NoZW1lID1+IC9eKGh0dHBzP3x0Y3ApJC8KICAgICAgICBAdXJsLCBA b3B0aW9ucyA9IHVybCwgb3B0cwogICAgICBlbHNlCiAgICAgICAgQHVybCwg QG9wdGlvbnMgPSAiaHR0cDovLyN7dXJpfSIsIG9wdHMKICAgICAgZW5kCiAg ICBlbmQKICBlbmQKCiAgIyBUaGUgYWN0dWFsIGNsaWVudCB0aGF0IHNlbmRz IEhUVFAgbWV0aG9kcyB0byB0aGUgRG9ja2VyIHNlcnZlci4gVGhpcyB2YWx1 ZQogICMgaXMgbm90IGNhY2hlZCwgc2luY2UgZG9pbmcgc28gbWF5IGNhdXNl IHNvY2tldCBlcnJvcnMgYWZ0ZXIgYmFkIHJlcXVlc3RzLgogIGRlZiByZXNv dXJjZQogICAgRXhjb24ubmV3KHVybCwgb3B0aW9ucykKICBlbmQKICBwcml2 YXRlIDpyZXNvdXJjZQoKICAjIFNlbmQgYSByZXF1ZXN0IHRvIHRoZSBzZXJ2 ZXIgd2l0aCB0aGUgYAogIGRlZiByZXF1ZXN0KCphcmdzLCAmYmxvY2spCiAg ICByZXF1ZXN0ID0gY29tcGlsZV9yZXF1ZXN0X3BhcmFtcygqYXJncywgJmJs b2NrKQogICAgbG9nX3JlcXVlc3QocmVxdWVzdCkKICAgIHJlc291cmNlLnJl cXVlc3QocmVxdWVzdCkuYm9keQogIHJlc2N1ZSBFeGNvbjo6RXJyb3JzOjpC YWRSZXF1ZXN0ID0+IGV4CiAgICByYWlzZSBDbGllbnRFcnJvciwgZXgucmVz cG9uc2UuYm9keQogIHJlc2N1ZSBFeGNvbjo6RXJyb3JzOjpVbmF1dGhvcml6 ZWQgPT4gZXgKICAgIHJhaXNlIFVuYXV0aG9yaXplZEVycm9yLCBleC5yZXNw b25zZS5ib2R5CiAgcmVzY3VlIEV4Y29uOjpFcnJvcnM6Ok5vdEZvdW5kID0+ IGV4CiAgICByYWlzZSBOb3RGb3VuZEVycm9yLCBleC5yZXNwb25zZS5ib2R5 CiAgcmVzY3VlIEV4Y29uOjpFcnJvcnM6OkNvbmZsaWN0ID0+IGV4CiAgICBy YWlzZSBDb25mbGljdEVycm9yLCBleC5yZXNwb25zZS5ib2R5CiAgcmVzY3Vl IEV4Y29uOjpFcnJvcnM6OkludGVybmFsU2VydmVyRXJyb3IgPT4gZXgKICAg IHJhaXNlIFNlcnZlckVycm9yLCBleC5yZXNwb25zZS5ib2R5CiAgcmVzY3Vl IEV4Y29uOjpFcnJvcnM6OlRpbWVvdXQgPT4gZXgKICAgIHJhaXNlIFRpbWVv dXRFcnJvciwgZXgubWVzc2FnZQogIGVuZAoKICBkZWYgbG9nX3JlcXVlc3Qo cmVxdWVzdCkKICAgIGlmIERvY2tlci5sb2dnZXIKICAgICAgRG9ja2VyLmxv Z2dlci5kZWJ1ZygKICAgICAgICBbcmVxdWVzdFs6bWV0aG9kXSwgcmVxdWVz dFs6cGF0aF0sIHJlcXVlc3RbOnF1ZXJ5XSwgcmVxdWVzdFs6Ym9keV1dCiAg ICAgICkKICAgIGVuZAogIGVuZAoKICAjIERlbGVnYXRlIGFsbCBIVFRQIG1l dGhvZHMgdG8gdGhlICNyZXF1ZXN0LgogIFs6Z2V0LCA6cHV0LCA6cG9zdCwg OmRlbGV0ZV0uZWFjaCBkbyB8bWV0aG9kfAogICAgZGVmaW5lX21ldGhvZCht ZXRob2QpIHsgfCphcmdzLCAmYmxvY2t8IHJlcXVlc3QobWV0aG9kLCAqYXJn cywgJmJsb2NrKSB9CiAgZW5kCgogIGRlZiB0b19zCiAgICAiRG9ja2VyOjpD b25uZWN0aW9uIHsgOnVybCA9PiAje3VybH0sIDpvcHRpb25zID0+ICN7b3B0 aW9uc30gfSIKICBlbmQKCnByaXZhdGUKICAjIEdpdmVuIGFuIEhUVFAgbWV0 aG9kLCBwYXRoLCBvcHRpb25hbCBxdWVyeSwgZXh0cmEgb3B0aW9ucywgYW5k IGJsb2NrLAogICMgY29tcGlsZXMgYSByZXF1ZXN0LgogIGRlZiBjb21waWxl X3JlcXVlc3RfcGFyYW1zKGh0dHBfbWV0aG9kLCBwYXRoLCBxdWVyeSA9IG5p bCwgb3B0cyA9IG5pbCwgJmJsb2NrKQogICAgcXVlcnkgfHw9IHt9CiAgICBv cHRzIHx8PSB7fQogICAgaGVhZGVycyA9IG9wdHMuZGVsZXRlKDpoZWFkZXJz KSB8fCB7fQogICAgY29udGVudF90eXBlID0gb3B0c1s6Ym9keV0ubmlsPyA/ ICAndGV4dC9wbGFpbicgOiAnYXBwbGljYXRpb24vanNvbicKICAgIHVzZXJf YWdlbnQgPSAiU3dpcGVseS9Eb2NrZXItQVBJICN7RG9ja2VyOjpWRVJTSU9O fSIKICAgIHsKICAgICAgOm1ldGhvZCAgICAgICAgPT4gaHR0cF9tZXRob2Qs CiAgICAgIDpwYXRoICAgICAgICAgID0+ICIvdiN7RG9ja2VyOjpBUElfVkVS U0lPTn0je3BhdGh9IiwKICAgICAgOnF1ZXJ5ICAgICAgICAgPT4gcXVlcnks CiAgICAgIDpoZWFkZXJzICAgICAgID0+IHsgJ0NvbnRlbnQtVHlwZScgPT4g Y29udGVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICdVc2Vy LUFnZW50JyAgID0+IHVzZXJfYWdlbnQsCiAgICAgICAgICAgICAgICAgICAg ICAgIH0ubWVyZ2UoaGVhZGVycyksCiAgICAgIDpleHBlY3RzICAgICAgID0+ ICgyMDAuLjIwNCkudG9fYSA8PCAzMDQsCiAgICAgIDppZGVtcG90ZW50ICAg ID0+IGh0dHBfbWV0aG9kID09IDpnZXQsCiAgICAgIDpyZXF1ZXN0X2Jsb2Nr ID0+IGJsb2NrCiAgICB9Lm1lcmdlKG9wdHMpLnJlamVjdCB7IHxfLCB2fCB2 Lm5pbD8gfQogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZG9ja2VyL2NvbnRhaW5lci5yYgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAw MDAwMAAwMDAwMDAwADAwMDAwMDE2NzYxADEyNTUwNDIzNjYyADAxNTExNQAg MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhcgAwMHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAw ADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRo aXMgY2xhc3MgcmVwcmVzZW50cyBhIERvY2tlciBDb250YWluZXIuIEl0J3Mg aW1wb3J0YW50IHRvIG5vdGUgdGhhdCBub3RoaW5nCiMgaXMgY2FjaGVkIHNv IHRoYXQgdGhlIGluZm9ybWF0aW9uIGlzIGFsd2F5cyB1cCB0byBkYXRlLgpj bGFzcyBEb2NrZXI6OkNvbnRhaW5lcgogIGluY2x1ZGUgRG9ja2VyOjpCYXNl CgogICMgUmV0dXJuIGEgTGlzdCBvZiBIYXNoZXMgdGhhdCByZXByZXNlbnRz IHRoZSB0b3AgcnVubmluZyBwcm9jZXNzZXMuCiAgZGVmIHRvcChvcHRzID0g e30pCiAgICByZXNwID0gRG9ja2VyOjpVdGlsLnBhcnNlX2pzb24oY29ubmVj dGlvbi5nZXQocGF0aF9mb3IoOnRvcCksIG9wdHMpKQogICAgaWYgcmVzcFsn UHJvY2Vzc2VzJ10ubmlsPwogICAgICBbXQogICAgZWxzZQogICAgICByZXNw WydQcm9jZXNzZXMnXS5tYXAgeyB8YXJ5fCBIYXNoW3Jlc3BbJ1RpdGxlcydd LnppcChhcnkpXSB9CiAgICBlbmQKICBlbmQKCiAgIyBXYWl0IGZvciB0aGUg Y3VycmVudCBjb21tYW5kIHRvIGZpbmlzaCBleGVjdXRpbmcuIERlZmF1bHQg d2FpdCB0aW1lIGlzCiAgIyBgRXhjb24ub3B0aW9uc1s6cmVhZF90aW1lb3V0 XWAuCiAgZGVmIHdhaXQodGltZSA9IG5pbCkKICAgIGV4Y29uX3BhcmFtcyA9 IHsgOnJlYWRfdGltZW91dCA9PiB0aW1lLCA6aWRlbXBvdGVudCA9PiB0cnVl IH0KICAgIHJlc3AgPSBjb25uZWN0aW9uLnBvc3QocGF0aF9mb3IoOndhaXQp LCBuaWwsIGV4Y29uX3BhcmFtcykKICAgIERvY2tlcjo6VXRpbC5wYXJzZV9q c29uKHJlc3ApCiAgZW5kCgogICMgR2l2ZW4gYSBjb21tYW5kIGFuZCBhbiBv cHRpb25hbCBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgY3Vy cmVudGx5CiAgIyBleGVjdXRpbmcgY29tbWFuZCwgY3JlYXRlcyBhIG5ldyBD b250YWluZXIgdG8gcnVuIHRoZSBzcGVjaWZpZWQgY29tbWFuZC4gSWYKICAj IHRoZSBjb21tYW5kIHRoYXQgaXMgY3VycmVudGx5IGV4ZWN1dGluZyBkb2Vz IG5vdCByZXR1cm4gYSAwIHN0YXR1cyBjb2RlLCBhbgogICMgVW5leHBlY3Rl ZFJlc3BvbnNlRXJyb3IgaXMgcmFpc2VkLgogIGRlZiBydW4oY21kLCB0aW1l ID0gMTAwMCkKICAgIGlmIChjb2RlID0gdGFwKCY6c3RhcnQpLndhaXQodGlt ZSlbJ1N0YXR1c0NvZGUnXSkuemVybz8KICAgICAgY29tbWl0LnJ1bihjbWQp CiAgICBlbHNlCiAgICAgIHJhaXNlIFVuZXhwZWN0ZWRSZXNwb25zZUVycm9y LCAiQ29tbWFuZCByZXR1cm5lZCBzdGF0dXMgY29kZSAje2NvZGV9LiIKICAg IGVuZAogIGVuZAoKICAjIENyZWF0ZSBhbiBFeGVjIGluc3RhbmNlIGluc2lk ZSB0aGUgY29udGFpbmVyCiAgIwogICMgQHBhcmFtIGNvbW1hbmQgW1N0cmlu ZywgQXJyYXldIFRoZSBjb21tYW5kIHRvIHJ1biBpbnNpZGUgdGhlIEV4ZWMg aW5zdGFuY2UKICAjIEBwYXJhbSBvcHRpb25zIFtIYXNoXSBUaGUgb3B0aW9u cyB0byBwYXNzIHRvIERvY2tlcjo6RXhlYwogICMKICAjIEByZXR1cm4gW0Rv Y2tlcjo6RXhlY10gVGhlIEV4ZWMgaW5zdGFuY2UKICBkZWYgZXhlYyhjb21t YW5kLCBvcHRzID0ge30sICZibG9jaykKICAgICMgRXN0YWJsaXNoIHZhbHVl cwogICAgdHR5ID0gb3B0cy5kZWxldGUoOnR0eSkgfHwgZmFsc2UKICAgIGRl dGFjaCA9IG9wdHMuZGVsZXRlKDpkZXRhY2gpIHx8IGZhbHNlCiAgICBzdGRp biA9IG9wdHMuZGVsZXRlKDpzdGRpbikKICAgIHN0ZG91dCA9IG9wdHMuZGVs ZXRlKDpzdGRvdXQpIHx8ICFkZXRhY2gKICAgIHN0ZGVyciA9IG9wdHMuZGVs ZXRlKDpzdGRlcnIpIHx8ICFkZXRhY2gKCiAgICAjIENyZWF0ZSBFeGVjIElu c3RhbmNlCiAgICBpbnN0YW5jZSA9IERvY2tlcjo6RXhlYy5jcmVhdGUoCiAg ICAgICdDb250YWluZXInID0+IHNlbGYuaWQsCiAgICAgICdBdHRhY2hTdGRp bicgPT4gISFzdGRpbiwKICAgICAgJ0F0dGFjaFN0ZG91dCcgPT4gc3Rkb3V0 LAogICAgICAnQXR0YWNoU3RkZXJyJyA9PiBzdGRlcnIsCiAgICAgICdUdHkn ID0+IHR0eSwKICAgICAgJ0NtZCcgPT4gY29tbWFuZAogICAgKQoKICAgIHN0 YXJ0X29wdHMgPSB7CiAgICAgIDp0dHkgPT4gdHR5LAogICAgICA6c3RkaW4g PT4gc3RkaW4sCiAgICAgIDpkZXRhY2ggPT4gZGV0YWNoCiAgICB9CgogICAg aWYgZGV0YWNoCiAgICAgIGluc3RhbmNlLnN0YXJ0IShzdGFydF9vcHRzKQog ICAgICByZXR1cm4gaW5zdGFuY2UKICAgIGVsc2UKICAgICAgaW5zdGFuY2Uu c3RhcnQhKHN0YXJ0X29wdHMsICZibG9jaykKICAgIGVuZAogIGVuZAoKICAj IEV4cG9ydCB0aGUgQ29udGFpbmVyIGFzIGEgdGFyLgogIGRlZiBleHBvcnQo JmJsb2NrKQogICAgY29ubmVjdGlvbi5nZXQocGF0aF9mb3IoOmV4cG9ydCks IHt9LCA6cmVzcG9uc2VfYmxvY2sgPT4gYmxvY2spCiAgICBzZWxmCiAgZW5k CgogICMgQXR0YWNoIHRvIGEgY29udGFpbmVyJ3Mgc3RhbmRhcmQgc3RyZWFt cyAvIGxvZ3MuCiAgZGVmIGF0dGFjaChvcHRpb25zID0ge30sICZibG9jaykK ICAgIHN0ZGluID0gb3B0aW9ucy5kZWxldGUoOnN0ZGluKQogICAgdHR5ICAg PSBvcHRpb25zLmRlbGV0ZSg6dHR5KQoKICAgIG9wdHMgPSB7CiAgICAgIDpz dHJlYW0gPT4gdHJ1ZSwgOnN0ZG91dCA9PiB0cnVlLCA6c3RkZXJyID0+IHRy dWUKICAgIH0ubWVyZ2Uob3B0aW9ucykKICAgICMgQ3JlYXRlcyBsaXN0IHRv IHN0b3JlIHN0ZG91dCBhbmQgc3RkZXJyIG1lc3NhZ2VzCiAgICBtc2dzID0g RG9ja2VyOjpNZXNzYWdlcy5uZXcKCiAgICBleGNvbl9wYXJhbXMgPSB7fQoK ICAgIGlmIHN0ZGluCiAgICAgICMgSWYgYXR0YWNoaW5nIHRvIHN0ZGluLCB3 ZSBtdXN0IGhpamFjayB0aGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbgog ICAgICAjIHNvIHdlIGNhbiBzdHJlYW0gc3RkaW4gdG8gdGhlIHJlbW90ZSBE b2NrZXIgcHJvY2VzcwogICAgICBvcHRzWzpzdGRpbl0gPSB0cnVlCiAgICAg IGV4Y29uX3BhcmFtc1s6aGlqYWNrX2Jsb2NrXSA9IERvY2tlcjo6VXRpbC5o aWphY2tfZm9yKHN0ZGluLCBibG9jaywKICAgICAgICBtc2dzLCB0dHkpCiAg ICBlbHNlCiAgICAgIGV4Y29uX3BhcmFtc1s6cmVzcG9uc2VfYmxvY2tdID0g RG9ja2VyOjpVdGlsLmF0dGFjaF9mb3IoYmxvY2ssIG1zZ3MsIHR0eSkKICAg IGVuZAoKICAgIGNvbm5lY3Rpb24ucG9zdCgKICAgICAgcGF0aF9mb3IoOmF0 dGFjaCksCiAgICAgIG9wdHMsCiAgICAgIGV4Y29uX3BhcmFtcwogICAgKQog ICAgW21zZ3Muc3Rkb3V0X21lc3NhZ2VzLCBtc2dzLnN0ZGVycl9tZXNzYWdl c10KICBlbmQKCiAgIyBDcmVhdGUgYW4gSW1hZ2UgZnJvbSBhIENvbnRhaW5l cidzIGNoYW5nZS5zCiAgZGVmIGNvbW1pdChvcHRpb25zID0ge30pCiAgICBv cHRpb25zLm1lcmdlISgnY29udGFpbmVyJyA9PiBzZWxmLmlkWzAuLjddKQog ICAgIyBbY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2RvdGNsb3VkL2RvY2tl ci9ibG9iL3YwLjYuMy9jb21tYW5kcy5nbyNMMTExNSkKICAgICMgQmFzZWQg b24gdGhlIGxpbmssIHRoZSBjb25maWcgcGFzc2VkIGFzIHJ1biwgbmVlZHMg dG8gYmUgcGFzc2VkIGFzIHRoZQogICAgIyBib2R5IG9mIHRoZSBwb3N0IHNv IGNhcHR1cmUgaXQsIHJlbW92ZSBmcm9tIHRoZSBvcHRpb25zLCBhbmQgcGFz cyBpdCB2aWEKICAgICMgdGhlIHBvc3QgYm9keQogICAgY29uZmlnID0gb3B0 aW9ucy5kZWxldGUoJ3J1bicpCiAgICBoYXNoID0gRG9ja2VyOjpVdGlsLnBh cnNlX2pzb24oY29ubmVjdGlvbi5wb3N0KCcvY29tbWl0JywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0 aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOmJvZHkgPT4gY29uZmlnLnRvX2pzb24pKQogICAgRG9j a2VyOjpJbWFnZS5zZW5kKDpuZXcsIHNlbGYuY29ubmVjdGlvbiwgaGFzaCkK ICBlbmQKCiAgIyBSZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2Yg dGhlIENvbnRhaW5lci4KICBkZWYgdG9fcwogICAgIkRvY2tlcjo6Q29udGFp bmVyIHsgOmlkID0+ICN7c2VsZi5pZH0sIDpjb25uZWN0aW9uID0+ICN7c2Vs Zi5jb25uZWN0aW9ufSB9IgogIGVuZAoKICAjICNqc29uIHJldHVybnMgaW5m b3JtYXRpb24gYWJvdXQgdGhlIENvbnRhaW5lciwgI2NoYW5nZXMgcmV0dXJu cyBhIGxpc3Qgb2YKICAjIHRoZSBjaGFuZ2VzIHRoZSBDb250YWluZXIgaGFz IG1hZGUgdG8gdGhlIGZpbGVzeXN0ZW0uCiAgWzpqc29uLCA6Y2hhbmdlc10u ZWFjaCBkbyB8bWV0aG9kfAogICAgZGVmaW5lX21ldGhvZChtZXRob2QpIGRv IHxvcHRzID0ge318CiAgICAgIERvY2tlcjo6VXRpbC5wYXJzZV9qc29uKGNv bm5lY3Rpb24uZ2V0KHBhdGhfZm9yKG1ldGhvZCksIG9wdHMpKQogICAgZW5k CiAgZW5kCgogIGRlZiBsb2dzKG9wdHMgPSB7fSkKICAgIGNvbm5lY3Rpb24u Z2V0KHBhdGhfZm9yKDpsb2dzKSwgb3B0cykKICBlbmQKCiAgZGVmIHJlbmFt ZShuZXdfbmFtZSkKICAgIHF1ZXJ5ID0ge30KICAgIHF1ZXJ5WyduYW1lJ10g PSBuZXdfbmFtZQogICAgY29ubmVjdGlvbi5wb3N0KHBhdGhfZm9yKDpyZW5h bWUpLCBxdWVyeSkKICBlbmQKCiAgZGVmIHN0cmVhbWluZ19sb2dzKG9wdHMg PSB7fSwgJmJsb2NrKQogICAgc3RhY2tfc2l6ZSA9IG9wdHMuZGVsZXRlKCdz dGFja19zaXplJykgfHwgLTEKICAgIG1zZ3MgPSBEb2NrZXI6Ok1lc3NhZ2Vz U3RhY2submV3KHN0YWNrX3NpemUpCiAgICBleGNvbl9wYXJhbXMgPSB7cmVz cG9uc2VfYmxvY2s6IERvY2tlcjo6VXRpbC5hdHRhY2hfZm9yX211bHRpcGxl eChibG9jaywgbXNncyl9CgogICAgY29ubmVjdGlvbi5nZXQocGF0aF9mb3Io OmxvZ3MpLCBvcHRzLCBleGNvbl9wYXJhbXMpCiAgICBtc2dzLm1lc3NhZ2Vz LmpvaW4KICBlbmQKCiAgZGVmIHN0YXJ0IShvcHRzID0ge30pCiAgICBjb25u ZWN0aW9uLnBvc3QocGF0aF9mb3IoOnN0YXJ0KSwge30sIDpib2R5ID0+IG9w dHMudG9fanNvbikKICAgIHNlbGYKICBlbmQKCiAgZGVmIGtpbGwhKG9wdHMg PSB7fSkKICAgIGNvbm5lY3Rpb24ucG9zdChwYXRoX2Zvcig6a2lsbCksIG9w dHMpCiAgICBzZWxmCiAgZW5kCgogICMgI3N0YXJ0ISBhbmQgI2tpbGwhIGJv dGggcGVyZm9ybSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24gYW5kCiAgIyByZXR1 cm4gdGhlIENvbnRhaW5lci4gI3N0YXJ0IGFuZCAja2lsbCBkbyB0aGUgc2Ft ZSwKICAjIGJ1dCByZXNjdWUgZnJvbSBTZXJ2ZXJFcnJvcnMuCiAgWzpzdGFy dCwgOmtpbGxdLmVhY2ggZG8gfG1ldGhvZHwKICAgIGRlZmluZV9tZXRob2Qo bWV0aG9kKSBkbyB8KmFyZ3N8CiAgICAgIGJlZ2luOyBwdWJsaWNfc2VuZCg6 IiN7bWV0aG9kfSEiLCAqYXJncyk7IHJlc2N1ZSBTZXJ2ZXJFcnJvcjsgc2Vs ZiBlbmQKICAgIGVuZAogIGVuZAoKICAjICNzdG9wISBhbmQgI3Jlc3RhcnQh IGJvdGggcGVyZm9ybSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24gYW5kCiAgIyBy ZXR1cm4gdGhlIENvbnRhaW5lci4gI3N0b3AgYW5kICNyZXN0YXJ0IGRvIHRo ZSBzYW1lLAogICMgYnV0IHJlc2N1ZSBmcm9tIFNlcnZlckVycm9ycy4KICBb OnN0b3AsIDpyZXN0YXJ0XS5lYWNoIGRvIHxtZXRob2R8CiAgICBkZWZpbmVf bWV0aG9kKDoiI3ttZXRob2R9ISIpIGRvIHxvcHRzID0ge318CiAgICAgIHRp bWVvdXQgPSBvcHRzLmRlbGV0ZSgndGltZW91dCcpCiAgICAgIHF1ZXJ5ID0g e30KICAgICAgcXVlcnlbJ3QnXSA9IHRpbWVvdXQgaWYgdGltZW91dAogICAg ICBjb25uZWN0aW9uLnBvc3QocGF0aF9mb3IobWV0aG9kKSwgcXVlcnksIDpi b2R5ID0+IG9wdHMudG9fanNvbikKICAgICAgc2VsZgogICAgZW5kCgogICAg ZGVmaW5lX21ldGhvZChtZXRob2QpIGRvIHwqYXJnc3wKICAgICAgYmVnaW47 IHB1YmxpY19zZW5kKDoiI3ttZXRob2R9ISIsICphcmdzKTsgcmVzY3VlIFNl cnZlckVycm9yOyBzZWxmIGVuZAogICAgZW5kCiAgZW5kCgogICMgcmVtb3Zl IGNvbnRhaW5lcgogIGRlZiByZW1vdmUob3B0aW9ucyA9IHt9KQogICAgY29u bmVjdGlvbi5kZWxldGUoIi9jb250YWluZXJzLyN7c2VsZi5pZH0iLCBvcHRp b25zKQogICAgbmlsCiAgZW5kCiAgYWxpYXNfbWV0aG9kIDpkZWxldGUsIDpy ZW1vdmUKCiAgIyBwYXVzZSBhbmQgdW5wYXVzZSBjb250YWluZXJzCiAgIyAj cGF1c2UhIGFuZCAjdW5wYXVzZSEgYm90aCBwZXJmb3JtIHRoZSBhc3NvY2lh dGVkIGFjdGlvbiBhbmQKICAjIHJldHVybiB0aGUgQ29udGFpbmVyLiAjcGF1 c2UgYW5kICN1bnBhdXNlIGRvIHRoZSBzYW1lLAogICMgYnV0IHJlc2N1ZSBm cm9tIFNlcnZlckVycm9ycy4KICBbOnBhdXNlLCA6dW5wYXVzZV0uZWFjaCBk byB8bWV0aG9kfAogICAgZGVmaW5lX21ldGhvZCg6IiN7bWV0aG9kfSEiKSBk bwogICAgICBjb25uZWN0aW9uLnBvc3QgcGF0aF9mb3IobWV0aG9kKQogICAg ICBzZWxmCiAgICBlbmQKCiAgICBkZWZpbmVfbWV0aG9kKG1ldGhvZCkgZG8K ICAgICAgYmVnaW47IHB1YmxpY19zZW5kKDoiI3ttZXRob2R9ISIpOyByZXNj dWUgU2VydmVyRXJyb3I7IHNlbGY7IGVuZAogICAgZW5kCiAgZW5kCgogIGRl ZiBjb3B5KHBhdGgsICZibG9jaykKICAgIGNvbm5lY3Rpb24ucG9zdChwYXRo X2Zvcig6Y29weSksIHt9LAogICAgICA6Ym9keSA9PiB7ICJSZXNvdXJjZSIg PT4gcGF0aCB9LnRvX2pzb24sCiAgICAgIDpyZXNwb25zZV9ibG9jayA9PiBi bG9jawogICAgKQogICAgc2VsZgogIGVuZAoKICAjIENyZWF0ZSBhIG5ldyBD b250YWluZXIuCiAgZGVmIHNlbGYuY3JlYXRlKG9wdHMgPSB7fSwgY29ubiA9 IERvY2tlci5jb25uZWN0aW9uKQogICAgbmFtZSA9IG9wdHMuZGVsZXRlKCdu YW1lJykKICAgIHF1ZXJ5ID0ge30KICAgIHF1ZXJ5WyduYW1lJ10gPSBuYW1l IGlmIG5hbWUKICAgIHJlc3AgPSBjb25uLnBvc3QoJy9jb250YWluZXJzL2Ny ZWF0ZScsIHF1ZXJ5LCA6Ym9keSA9PiBvcHRzLnRvX2pzb24pCiAgICBoYXNo ID0gRG9ja2VyOjpVdGlsLnBhcnNlX2pzb24ocmVzcCkgfHwge30KICAgIG5l dyhjb25uLCBoYXNoKQogIGVuZAoKICAjIFJldHVybiB0aGUgY29udGFpbmVy IHdpdGggc3BlY2lmaWVkIElECiAgZGVmIHNlbGYuZ2V0KGlkLCBvcHRzID0g e30sIGNvbm4gPSBEb2NrZXIuY29ubmVjdGlvbikKICAgIGNvbnRhaW5lcl9q c29uID0gY29ubi5nZXQoIi9jb250YWluZXJzLyN7VVJJLmVuY29kZShpZCl9 L2pzb24iLCBvcHRzKQogICAgaGFzaCA9IERvY2tlcjo6VXRpbC5wYXJzZV9q c29uKGNvbnRhaW5lcl9qc29uKSB8fCB7fQogICAgbmV3KGNvbm4sIGhhc2gp CiAgZW5kCgogICMgUmV0dXJuIGFsbCBvZiB0aGUgQ29udGFpbmVycy4KICBk ZWYgc2VsZi5hbGwob3B0cyA9IHt9LCBjb25uID0gRG9ja2VyLmNvbm5lY3Rp b24pCiAgICBoYXNoZXMgPSBEb2NrZXI6OlV0aWwucGFyc2VfanNvbihjb25u LmdldCgnL2NvbnRhaW5lcnMvanNvbicsIG9wdHMpKSB8fCBbXQogICAgaGFz aGVzLm1hcCB7IHxoYXNofCBuZXcoY29ubiwgaGFzaCkgfQogIGVuZAoKICAj IENvbnZlbmllbmNlIG1ldGhvZCB0byByZXR1cm4gdGhlIHBhdGggZm9yIGEg cGFydGljdWxhciByZXNvdXJjZS4KICBkZWYgcGF0aF9mb3IocmVzb3VyY2Up CiAgICAiL2NvbnRhaW5lcnMvI3tzZWxmLmlkfS8je3Jlc291cmNlfSIKICBl bmQKCiAgcHJpdmF0ZSA6cGF0aF9mb3IKICBwcml2YXRlX2NsYXNzX21ldGhv ZCA6bmV3CmVuZAoAAAAAAAAAAAAAAAAAAABkb2NrZXIvZXJyb3IucmIAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAw MDAwMDAwADAwMDAwMDAAMDAwMDAwMDIzMDMAMTI1MzYwMDY3MDQAMDE0MjQ1 ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAHVzdGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAw MDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMg VGhpcyBtb2R1bGUgaG9sZHMgdGhlIEVycm9ycyBmb3IgdGhlIGdlbS4KbW9k dWxlIERvY2tlcjo6RXJyb3IKCiAgIyBUaGUgZGVmYXVsdCBlcnJvci4gSXQn cyBuZXZlciBhY3R1YWxseSByYWlzZWQsIGJ1dCBjYW4gYmUgdXNlZCB0byBj YXRjaCBhbGwKICAjIGdlbS1zcGVjaWZpYyBlcnJvcnMgdGhhdCBhcmUgdGhy b3duIGFzIHRoZXkgYWxsIHN1YmNsYXNzIGZyb20gdGhpcy4KICBjbGFzcyBE b2NrZXJFcnJvciA8IFN0YW5kYXJkRXJyb3I7IGVuZAoKICAjIFJhaXNlZCB3 aGVuIGludmFsaWQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gYSBtZXRob2Qu CiAgY2xhc3MgQXJndW1lbnRFcnJvciA8IERvY2tlckVycm9yOyBlbmQKCiAg IyBSYWlzZWQgd2hlbiBhIHJlcXVlc3QgcmV0dXJucyBhIDQwMC4KICBjbGFz cyBDbGllbnRFcnJvciA8IERvY2tlckVycm9yOyBlbmQKCiAgIyBSYWlzZWQg d2hlbiBhIHJlcXVlc3QgcmV0dXJucyBhIDQwMS4KICBjbGFzcyBVbmF1dGhv cml6ZWRFcnJvciA8IERvY2tlckVycm9yOyBlbmQKCiAgIyBSYWlzZWQgd2hl biBhIHJlcXVlc3QgcmV0dXJucyBhIDQwNC4KICBjbGFzcyBOb3RGb3VuZEVy cm9yIDwgRG9ja2VyRXJyb3I7IGVuZAoKICAjIFJhaXNlZCB3aGVuIGEgcmVx dWVzdCByZXR1cm5zIGEgNDA5LgogIGNsYXNzIENvbmZsaWN0RXJyb3IgPCBE b2NrZXJFcnJvcjsgZW5kCgogICMgUmFpc2VkIHdoZW4gYSByZXF1ZXN0IHJl dHVybnMgYSA1MDAuCiAgY2xhc3MgU2VydmVyRXJyb3IgPCBEb2NrZXJFcnJv cjsgZW5kCgogICMgUmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gdW5leHBlY3Rl ZCByZXNwb25zZSBjb2RlIC8gYm9keS4KICBjbGFzcyBVbmV4cGVjdGVkUmVz cG9uc2VFcnJvciA8IERvY2tlckVycm9yOyBlbmQKCiAgIyBSYWlzZWQgd2hl biB0aGVyZSBpcyBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiBvZiBEb2NrZXIu CiAgY2xhc3MgVmVyc2lvbkVycm9yIDwgRG9ja2VyRXJyb3I7IGVuZAoKICAj IFJhaXNlZCB3aGVuIGEgcmVxdWVzdCB0aW1lcyBvdXQuCiAgY2xhc3MgVGlt ZW91dEVycm9yIDwgRG9ja2VyRXJyb3I7IGVuZAoKICAjIFJhaXNlZCB3aGVu IGxvZ2luIGZhaWxzLgogIGNsYXNzIEF1dGhlbnRpY2F0aW9uRXJyb3IgPCBE b2NrZXJFcnJvcjsgZW5kCgogICMgUmFpc2VkIHdoZW4gYW4gSU8gYWN0aW9u IGZhaWxzLgogIGNsYXNzIElPRXJyb3IgPCBEb2NrZXJFcnJvcjsgZW5kCmVu ZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAGRvY2tlci9ldmVudC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAw MTc1MQAxMjUzNjAwNjcwNAAwMTQyNDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDB3 aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAIyBUaGlzIGNsYXNzIHJlcHJlc2VudHMg YSBEb2NrZXIgRXZlbnQuCmNsYXNzIERvY2tlcjo6RXZlbnQKICBpbmNsdWRl IERvY2tlcjo6RXJyb3IKCiAgYXR0cl9hY2Nlc3NvciA6c3RhdHVzLCA6aWQs IDpmcm9tLCA6dGltZQoKICBkZWYgaW5pdGlhbGl6ZShzdGF0dXMsIGlkLCBm cm9tLCB0aW1lKQogICAgQHN0YXR1cywgQGlkLCBAZnJvbSwgQHRpbWUgPSBz dGF0dXMsIGlkLCBmcm9tLCB0aW1lCiAgZW5kCgogIGRlZiB0b19zCiAgICAi RG9ja2VyOjpFdmVudCB7IDpzdGF0dXMgPT4gI3tzZWxmLnN0YXR1c30sIDpp ZCA9PiAje3NlbGYuaWR9LCAiXAogICAgICAiOmZyb20gPT4gI3tzZWxmLmZy b219LCA6dGltZSA9PiAje3NlbGYudGltZX0gfSIKICBlbmQKCiAgY2xhc3Mg PDwgc2VsZgogICAgaW5jbHVkZSBEb2NrZXI6OkVycm9yCgogICAgZGVmIHN0 cmVhbShvcHRzID0ge30sIGNvbm4gPSBEb2NrZXIuY29ubmVjdGlvbiwgJmJs b2NrKQogICAgICBjb25uLmdldCgnL2V2ZW50cycsIG9wdHMsIDpyZXNwb25z ZV9ibG9jayA9PiBsYW1iZGEgeyB8YiwgciwgdHwKICAgICAgICBibG9jay5j YWxsKG5ld19ldmVudChiLCByLCB0KSkKICAgICAgfSkKICAgIGVuZAoKICAg IGRlZiBzaW5jZShzaW5jZSwgb3B0cyA9IHt9LCBjb25uID0gRG9ja2VyLmNv bm5lY3Rpb24sICZibG9jaykKICAgICAgc3RyZWFtKG9wdHMubWVyZ2UoOnNp bmNlID0+IHNpbmNlKSwgY29ubiwgJmJsb2NrKQogICAgZW5kCgogICAgZGVm IG5ld19ldmVudChib2R5LCByZW1haW5pbmcsIHRvdGFsKQogICAgICByZXR1 cm4gaWYgYm9keS5uaWw/IHx8IGJvZHkuZW1wdHk/CiAgICAgIGpzb24gPSBE b2NrZXI6OlV0aWwucGFyc2VfanNvbihib2R5KQogICAgICBEb2NrZXI6OkV2 ZW50Lm5ldygKICAgICAgICBqc29uWydzdGF0dXMnXSwKICAgICAgICBqc29u WydpZCddLAogICAgICAgIGpzb25bJ2Zyb20nXSwKICAgICAgICBqc29uWyd0 aW1lJ10KICAgICAgKQogICAgZW5kCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAGRvY2tlci9leGVjLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAw MDAwMDAwNjE1NgAxMjUzNjAwNjcwNAAwMTQwNTIAIDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0 YXIAMDB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyBUaGlzIGNsYXNzIHJlcHJl c2VudHMgYSBEb2NrZXIgRXhlYyBJbnN0YW5jZS4KY2xhc3MgRG9ja2VyOjpF eGVjCiAgaW5jbHVkZSBEb2NrZXI6OkJhc2UKCiAgIyBDb252ZXJ0IGRldGFp bHMgYWJvdXQgdGhlIG9iamVjdCBpbnRvIGEgc3RyaW5nCiAgIwogICMgQHJl dHVybiBbU3RyaW5nXSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIEV4 ZWMgaW5zdGFuY2Ugb2JqZWN0CiAgZGVmIHRvX3MKICAgICJEb2NrZXI6OkV4 ZWMgeyA6aWQgPT4gI3tzZWxmLmlkfSwgOmNvbm5lY3Rpb24gPT4gI3tzZWxm LmNvbm5lY3Rpb259IH0iCiAgZW5kCgogICMgQ3JlYXRlIGEgbmV3IEV4ZWMg aW5zdGFuY2UgaW4gYSBydW5uaW5nIGNvbnRhaW5lci4gUGxlYXNlIG5vdGUs IHRoaXMgZG9lcwogICMgTk9UIGV4ZWN1dGUgdGhlIGluc3RhbmNlIC0geW91 IG11c3QgcnVuICNzdGFydC4gQWxzbywgZWFjaCBpbnN0YW5jZSBpcwogICMg b25lLXRpbWUgdXNlIG9ubHkuCiAgIwogICMgQHBhcmFtIG9wdGlvbnMgW0hh c2hdIFBhcmFtZXRlcnMgdG8gcGFzcyBpbiB0byB0aGUgQVBJLgogICMgQHBh cmFtIGNvbm4gW0RvY2tlcjo6Q29ubmVjdGlvbl0gQ29ubmVjdGlvbiB0byBE b2NrZXIgUmVtb3RlIEFQSQogICMKICAjIEByZXR1cm4gW0RvY2tlcjo6RXhl Y10gc2VsZgogIGRlZiBzZWxmLmNyZWF0ZShvcHRpb25zID0ge30sIGNvbm4g PSBEb2NrZXIuY29ubmVjdGlvbikKICAgIGNvbnRhaW5lciA9IG9wdGlvbnMu ZGVsZXRlKCdDb250YWluZXInKQogICAgcmVzcCA9IGNvbm4ucG9zdCgiL2Nv bnRhaW5lcnMvI3tjb250YWluZXJ9L2V4ZWMiLCB7fSwKICAgICAgOmJvZHkg PT4gb3B0aW9ucy50b19qc29uKQogICAgaGFzaCA9IERvY2tlcjo6VXRpbC5w YXJzZV9qc29uKHJlc3ApIHx8IHt9CiAgICBuZXcoY29ubiwgaGFzaCkKICBl bmQKCiAgIyBHZXQgaW5mbyBhYm91dCB0aGUgRXhlYyBpbnN0YW5jZQogICMK ICBkZWYganNvbgogICAgRG9ja2VyOjpVdGlsLnBhcnNlX2pzb24oY29ubmVj dGlvbi5nZXQocGF0aF9mb3IoOmpzb24pLCB7fSkpCiAgZW5kCgogICMgU3Rh cnQgdGhlIEV4ZWMgaW5zdGFuY2UuIFRoZSBFeGVjIGluc3RhbmNlIGlzIGRl bGV0ZWQgYWZ0ZXIgdGhpcyBzbyB0aGlzCiAgIyBjb21tYW5kIGNhbiBvbmx5 IGJlIHJ1biBvbmNlLgogICMKICAjIEBwYXJhbSBvcHRpb25zIFtIYXNoXSBP cHRpb25zIHRvIGRpY3RhdGUgYmVoYXZpb3Igb2YgdGhlIGluc3RhbmNlCiAg IyBAb3B0aW9uIG9wdGlvbnMgW09iamVjdF0gOnN0ZGluIChuaWwpIFRoZSBv YmplY3QgdG8gcGFzcyB0byBTVERJTi4KICAjIEBvcHRpb24gb3B0aW9ucyBb VHJ1ZUNsYXNzLCBGYWxzZUNsYXNzXSA6ZGV0YWNoIChmYWxzZSkgV2hldGhl ciB0byBhdHRhY2gKICAjICAgICB0byBTVERPVVQvU1RERVJSLgogICMgQG9w dGlvbiBvcHRpb25zIFtUcnVlQ2xhc3MsIEZhbHNlQ2xhc3NdIDp0dHkgKGZh bHNlKSBXaGV0aGVyIHRvIGF0dGFjaCB1c2luZwogICMgICAgIGEgcHNldWRv LVRUWS4KICAjCiAgIyBAcmV0dXJuIFtBcnJheSwgQXJyYXksIEludF0gVGhl IFNURE9VVCwgU1RERVJSIGFuZCBleGl0IGNvZGUKICBkZWYgc3RhcnQhKG9w dGlvbnMgPSB7fSwgJmJsb2NrKQoKICAgICMgUGFyc2UgdGhlIE9wdGlvbnMK ICAgIHR0eSA9ICEhb3B0aW9ucy5kZWxldGUoOnR0eSkKICAgIGRldGFjaGVk ID0gISFvcHRpb25zLmRlbGV0ZSg6ZGV0YWNoKQogICAgc3RkaW4gPSBvcHRp b25zWzpzdGRpbl0KCiAgICAjIENyZWF0ZSBBUEkgUmVxdWVzdCBCb2R5CiAg ICBib2R5ID0gewogICAgICAiVHR5IiA9PiB0dHksCiAgICAgICJEZXRhY2gi ID0+IGRldGFjaGVkCiAgICB9CiAgICBleGNvbl9wYXJhbXMgPSB7IDpib2R5 ID0+IGJvZHkudG9fanNvbiB9CgogICAgbXNncyA9IERvY2tlcjo6TWVzc2Fn ZXMubmV3CiAgICB1bmxlc3MgZGV0YWNoZWQKICAgICAgaWYgc3RkaW4KICAg ICAgICBleGNvbl9wYXJhbXNbOmhpamFja19ibG9ja10gPSBEb2NrZXI6OlV0 aWwuaGlqYWNrX2ZvcihzdGRpbiwgYmxvY2ssCiAgICAgICAgICBtc2dzLCB0 dHkpCiAgICAgIGVsc2UKICAgICAgICBleGNvbl9wYXJhbXNbOnJlc3BvbnNl X2Jsb2NrXSA9IERvY2tlcjo6VXRpbC5hdHRhY2hfZm9yKGJsb2NrLAogICAg ICAgICAgbXNncywgdHR5KQogICAgICBlbmQKICAgIGVuZAoKICAgIGNvbm5l Y3Rpb24ucG9zdChwYXRoX2Zvcig6c3RhcnQpLCBuaWwsIGV4Y29uX3BhcmFt cykKICAgIFttc2dzLnN0ZG91dF9tZXNzYWdlcywgbXNncy5zdGRlcnJfbWVz c2FnZXMsIHNlbGYuanNvblsnRXhpdENvZGUnXV0KICBlbmQKCiAgIyAjc3Rh cnQhIHBlcmZvcm1zIHRoZSBhc3NvY2lhdGVkIGFjdGlvbiBhbmQgcmV0dXJu cyB0aGUgb3V0cHV0LgogICMgI3N0YXJ0IGRvZXMgdGhlIHNhbWUsIGJ1dCBy ZXNjdWVzIGZyb20gU2VydmVyRXJyb3JzLgogIFs6c3RhcnRdLmVhY2ggZG8g fG1ldGhvZHwKICAgIGRlZmluZV9tZXRob2QobWV0aG9kKSBkbyB8KmFyZ3N8 CiAgICAgIGJlZ2luOyBwdWJsaWNfc2VuZCg6IiN7bWV0aG9kfSEiLCAqYXJn cyk7IHJlc2N1ZSBTZXJ2ZXJFcnJvcjsgc2VsZiBlbmQKICAgIGVuZAogIGVu ZAoKICAjIFJlc2l6ZSB0aGUgVFRZIGFzc29jaWF0ZWQgd2l0aCB0aGUgRXhl YyBpbnN0YW5jZQogICMKICAjIEBwYXJhbSBxdWVyeSBbSGFzaF0gQVBJIHF1 ZXJ5IHBhcmFtZXRlcnMKICAjIEBvcHRpb24gcXVlcnkgW0ZpeG51bV0gaCBI ZWlnaHQgb2YgdGhlIFRUWQogICMgQG9wdGlvbiBxdWVyeSBbRml4bnVtXSB3 IFdpZHRoIG9mIHRoZSBUVFkKICAjCiAgIyBAcmV0dXJuIFtEb2NrZXI6OkV4 ZWNdIHNlbGYKICBkZWYgcmVzaXplKHF1ZXJ5ID0ge30pCiAgICBjb25uZWN0 aW9uLnBvc3QocGF0aF9mb3IoOnJlc2l6ZSksIHF1ZXJ5KQogICAgc2VsZgog IGVuZAoKICAjIEdldCB0aGUgcmVxdWVzdCBVUkkgZm9yIHRoZSBnaXZlbiBl bmRwb2ludAogICMKICAjIEBwYXJhbSBlbmRwb2ludCBbU3ltYm9sXSBUaGUg ZW5kcG9pbnQgdG8gZ3JhYgogICMgQHJldHVybiBbU3RyaW5nXSBUaGUgZnVs bCBSZW1vdGUgQVBJIGVuZHBvaW50IHdpdGggSUQKICBkZWYgcGF0aF9mb3Io ZW5kcG9pbnQpCiAgICAiL2V4ZWMvI3tzZWxmLmlkfS8je2VuZHBvaW50fSIK ICBlbmQKCiAgcHJpdmF0ZSA6cGF0aF9mb3IKICBwcml2YXRlX2NsYXNzX21l dGhvZCA6bmV3CmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABkb2NrZXIvaW1hZ2UucmIAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAwADAwMDAwMDAA MDAwMDAwMjM1MjAAMTI1MzYwMDY3MDQAMDE0MjAyACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz dGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBjbGFzcyByZXBy ZXNlbnRzIGEgRG9ja2VyIEltYWdlLgpjbGFzcyBEb2NrZXI6OkltYWdlCiAg aW5jbHVkZSBEb2NrZXI6OkJhc2UKCiAgIyBHaXZlbiBhIGNvbW1hbmQgYW5k IG9wdGlvbmFsIGxpc3Qgb2Ygc3RyZWFtcyB0byBhdHRhY2ggdG8sIHJ1biBh IGNvbW1hbmQgb24KICAjIGFuIEltYWdlLiBUaGlzIHdpbGwgbm90IG1vZGlm eSB0aGUgSW1hZ2UsIGJ1dCByYXRoZXIgY3JlYXRlIGEgbmV3IENvbnRhaW5l cgogICMgdG8gcnVuIHRoZSBJbWFnZS4gSWYgdGhlIGltYWdlIGhhcyBhbiBl bWJlZGRlZCBjb25maWcsIG5vIGNvbW1hbmQgaXMKICAjIG5lY2Vzc2FyeSwg YnV0IGl0IHdpbGwgZmFpbCB3aXRoIDUwMCBpZiBubyBjb25maWcgaXMgc2F2 ZWQgd2l0aCB0aGUgaW1hZ2UKICBkZWYgcnVuKGNtZD1uaWwpCiAgICBvcHRz ID0geyAnSW1hZ2UnID0+IHNlbGYuaWQgfQogICAgb3B0c1siQ21kIl0gPSBj bWQuaXNfYT8oU3RyaW5nKSA/IGNtZC5zcGxpdCgvXHMrLykgOiBjbWQKICAg IGJlZ2luCiAgICAgIERvY2tlcjo6Q29udGFpbmVyLmNyZWF0ZShvcHRzLCBj b25uZWN0aW9uKQogICAgICAgICAgICAgICAgICAgICAgIC50YXAoJjpzdGFy dCEpCiAgICByZXNjdWUgU2VydmVyRXJyb3IgPT4gZXgKICAgICAgaWYgY21k CiAgICAgICAgcmFpc2UgZXgKICAgICAgZWxzZQogICAgICAgIHJhaXNlIFNl cnZlckVycm9yLCAiTm8gY29tbWFuZCBzcGVjaWZpZWQuIgogICAgICBlbmQK ICAgIGVuZAogIGVuZAoKICAjIFB1c2ggdGhlIEltYWdlIHRvIHRoZSBEb2Nr ZXIgcmVnaXN0cnkuCiAgZGVmIHB1c2goY3JlZHMgPSBuaWwsIG9wdGlvbnMg PSB7fSwgJmJsb2NrKQogICAgcmVwb190YWcgPSBvcHRpb25zLmRlbGV0ZSg6 cmVwb190YWcpIHx8IGVuc3VyZV9yZXBvX3RhZ3MuZmlyc3QKICAgIHJhaXNl IEFyZ3VtZW50RXJyb3IsICJJbWFnZSBpcyB1bnRhZ2dlZCIgaWYgcmVwb190 YWcubmlsPwogICAgcmVwbywgdGFnID0gRG9ja2VyOjpVdGlsLnBhcnNlX3Jl cG9fdGFnKHJlcG9fdGFnKQogICAgcmFpc2UgQXJndW1lbnRFcnJvciwgIklt YWdlIGRvZXMgbm90IGhhdmUgYSBuYW1lIHRvIHB1c2guIiBpZiByZXBvLm5p bD8KCiAgICBib2R5ID0gIiIKICAgIGNyZWRlbnRpYWxzID0gY3JlZHMgfHwg RG9ja2VyLmNyZWRzIHx8IHt9CiAgICBoZWFkZXJzID0gRG9ja2VyOjpVdGls LmJ1aWxkX2F1dGhfaGVhZGVyKGNyZWRlbnRpYWxzKQogICAgb3B0cyA9IHs6 dGFnID0+IHRhZ30ubWVyZ2Uob3B0aW9ucykKICAgIGNvbm5lY3Rpb24ucG9z dCgiL2ltYWdlcy8je3JlcG99L3B1c2giLCBvcHRzLCA6aGVhZGVycyA9PiBo ZWFkZXJzLAogICAgICAgICAgICAgICAgICAgIDpyZXNwb25zZV9ibG9jayA9 PiBzZWxmLmNsYXNzLnJlc3BvbnNlX2Jsb2NrKGJvZHksICZibG9jaykpCiAg ICBzZWxmCiAgZW5kCgogICMgVGFnIHRoZSBJbWFnZS4KICBkZWYgdGFnKG9w dHMgPSB7fSkKICAgIHNlbGYuaW5mb1snUmVwb1RhZ3MnXSB8fD0gW10KICAg IGNvbm5lY3Rpb24ucG9zdChwYXRoX2Zvcig6dGFnKSwgb3B0cykKICAgIHJl cG8gPSBvcHRzWydyZXBvJ10gfHwgb3B0c1s6cmVwb10KICAgIHRhZyA9IG9w dHNbJ3RhZyddIHx8IG9wdHNbOnRhZ10gfHwgJ2xhdGVzdCcKICAgIHNlbGYu aW5mb1snUmVwb1RhZ3MnXSA8PCAiI3tyZXBvfToje3RhZ30iCiAgZW5kCgog ICMgR2l2ZW4gYSBwYXRoIG9mIGEgbG9jYWwgZmlsZSBhbmQgdGhlIHBhdGgg aXQgc2hvdWxkIGJlIGluc2VydGVkLCBjcmVhdGVzCiAgIyBhIG5ldyBJbWFn ZSB0aGF0IGhhcyB0aGF0IGZpbGUuCiAgZGVmIGluc2VydF9sb2NhbChvcHRz ID0ge30pCiAgICBsb2NhbF9wYXRocyA9IG9wdHMuZGVsZXRlKCdsb2NhbFBh dGgnKQogICAgb3V0cHV0X3BhdGggPSBvcHRzLmRlbGV0ZSgnb3V0cHV0UGF0 aCcpCgogICAgbG9jYWxfcGF0aHMgPSBbIGxvY2FsX3BhdGhzIF0gdW5sZXNz IGxvY2FsX3BhdGhzLmlzX2E/KEFycmF5KQoKICAgIGZpbGVfaGFzaCA9IERv Y2tlcjo6VXRpbC5maWxlX2hhc2hfZnJvbV9wYXRocyhsb2NhbF9wYXRocykK CiAgICBmaWxlX2hhc2hbJ0RvY2tlcmZpbGUnXSA9IGRvY2tlcmZpbGVfZm9y KGZpbGVfaGFzaCwgb3V0cHV0X3BhdGgpCgogICAgdGFyID0gRG9ja2VyOjpV dGlsLmNyZWF0ZV90YXIoZmlsZV9oYXNoKQogICAgYm9keSA9IGNvbm5lY3Rp b24ucG9zdCgnL2J1aWxkJywgb3B0cywgOmJvZHkgPT4gdGFyKQogICAgc2Vs Zi5jbGFzcy5zZW5kKDpuZXcsIGNvbm5lY3Rpb24sICdpZCcgPT4gRG9ja2Vy OjpVdGlsLmV4dHJhY3RfaWQoYm9keSkpCiAgZW5kCgogICMgUmVtb3ZlIHRo ZSBJbWFnZSBmcm9tIHRoZSBzZXJ2ZXIuCiAgZGVmIHJlbW92ZShvcHRzID0g e30pCiAgICBuYW1lID0gb3B0cy5kZWxldGUoOm5hbWUpIHx8IHNlbGYuaWQK ICAgIGNvbm5lY3Rpb24uZGVsZXRlKCIvaW1hZ2VzLyN7bmFtZX0iLCBvcHRz KQogIGVuZAogIGFsaWFzX21ldGhvZCA6ZGVsZXRlLCA6cmVtb3ZlCgogICMg UmV0dXJuIGEgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBJbWFnZS4K ICBkZWYgdG9fcwogICAgIkRvY2tlcjo6SW1hZ2UgeyA6aWQgPT4gI3tzZWxm LmlkfSwgOmluZm8gPT4gI3tzZWxmLmluZm8uaW5zcGVjdH0sICJcCiAgICAg ICI6Y29ubmVjdGlvbiA9PiAje3NlbGYuY29ubmVjdGlvbn0gfSIKICBlbmQK CiAgIyAjanNvbiByZXR1cm5zIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IGFu IEltYWdlLCAjaGlzdG9yeSByZXR1cm5zIGl0cwogICMgaGlzdG9yeS4KICBb Ompzb24sIDpoaXN0b3J5XS5lYWNoIGRvIHxtZXRob2R8CiAgICBkZWZpbmVf bWV0aG9kKG1ldGhvZCkgZG8gfG9wdHMgPSB7fXwKICAgICAgRG9ja2VyOjpV dGlsLnBhcnNlX2pzb24oY29ubmVjdGlvbi5nZXQocGF0aF9mb3IobWV0aG9k KSwgb3B0cykpCiAgICBlbmQKICBlbmQKCiAgIyBTYXZlIHRoZSBpbWFnZSBh cyBhIHRhcmJhbGwKICBkZWYgc2F2ZShmaWxlbmFtZSA9IG5pbCkKICAgIHNl bGYuY2xhc3Muc2F2ZShzZWxmLmlkLCBmaWxlbmFtZSwgY29ubmVjdGlvbikK ICBlbmQKCiAgIyBVcGRhdGUgdGhlIEBpbmZvIGhhc2gsIHdoaWNoIGlzIHRo ZSBvbmx5IG11dGFibGUgc3RhdGUgaW4gdGhpcyBvYmplY3QuCiAgZGVmIHJl ZnJlc2ghCiAgICBpbWcgPSBEb2NrZXI6OkltYWdlLmFsbCh7OmFsbCA9PiB0 cnVlfSwgY29ubmVjdGlvbikuZmluZCB7IHxpbWFnZXwKICAgICAgaW1hZ2Uu aWQuc3RhcnRfd2l0aD8oc2VsZi5pZCkgfHwgc2VsZi5pZC5zdGFydF93aXRo PyhpbWFnZS5pZCkKICAgIH0KICAgIGluZm8ubWVyZ2UhKHNlbGYuanNvbikK ICAgIGltZyAmJiBpbmZvLm1lcmdlIShpbWcuaW5mbykKICAgIHNlbGYKICBl bmQKCiAgY2xhc3MgPDwgc2VsZgoKICAgICMgQ3JlYXRlIGEgbmV3IEltYWdl LgogICAgZGVmIGNyZWF0ZShvcHRzID0ge30sIGNyZWRzID0gbmlsLCBjb25u ID0gRG9ja2VyLmNvbm5lY3Rpb24sICZibG9jaykKICAgICAgY3JlZGVudGlh bHMgPSBjcmVkcy5uaWw/ID8gRG9ja2VyLmNyZWRzIDogY3JlZHMudG9fanNv bgogICAgICBoZWFkZXJzID0gY3JlZGVudGlhbHMgJiYgRG9ja2VyOjpVdGls LmJ1aWxkX2F1dGhfaGVhZGVyKGNyZWRlbnRpYWxzKSB8fCB7fQogICAgICBi b2R5ID0gJycKICAgICAgY29ubi5wb3N0KAogICAgICAgICcvaW1hZ2VzL2Ny ZWF0ZScsCiAgICAgICAgb3B0cywKICAgICAgICA6aGVhZGVycyA9PiBoZWFk ZXJzLAogICAgICAgIDpyZXNwb25zZV9ibG9jayA9PiByZXNwb25zZV9ibG9j ayhib2R5LCAmYmxvY2spCiAgICAgICkKICAgICAganNvbiA9IERvY2tlcjo6 VXRpbC5maXhfanNvbihib2R5KQogICAgICBpbWFnZSA9IGpzb24ucmV2ZXJz ZV9lYWNoLmZpbmQgeyB8ZWx8IGVsICYmIGVsLmtleT8oJ2lkJykgfQogICAg ICBuZXcoY29ubiwgJ2lkJyA9PiBpbWFnZSAmJiBpbWFnZS5mZXRjaCgnaWQn KSwgOmhlYWRlcnMgPT4gaGVhZGVycykKICAgIGVuZAoKICAgICMgUmV0dXJu IGEgc3BlY2lmaWMgaW1hZ2UuCiAgICBkZWYgZ2V0KGlkLCBvcHRzID0ge30s IGNvbm4gPSBEb2NrZXIuY29ubmVjdGlvbikKICAgICAgaW1hZ2VfanNvbiA9 IGNvbm4uZ2V0KCIvaW1hZ2VzLyN7VVJJLmVuY29kZShpZCl9L2pzb24iLCBv cHRzKQogICAgICBoYXNoID0gRG9ja2VyOjpVdGlsLnBhcnNlX2pzb24oaW1h Z2VfanNvbikgfHwge30KICAgICAgbmV3KGNvbm4sIGhhc2gpCiAgICBlbmQK CiAgICAjIFNhdmUgdGhlIHJhdyBiaW5hcnkgcmVwcmVzZW50YXRpb24gb3Ig b25lIG9yIG1vcmUgRG9ja2VyIGltYWdlcwogICAgIwogICAgIyBAcGFyYW0g bmFtZXMgW1N0cmluZywgQXJyYXkjU3RyaW5nXSBUaGUgaW1hZ2UocykgeW91 IHdpc2ggdG8gc2F2ZQogICAgIyBAcGFyYW0gZmlsZW5hbWUgW1N0cmluZ10g VGhlIGZpbGUgdG8gZXhwb3J0IHRoZSBkYXRhIHRvLgogICAgIyBAcGFyYW0g Y29ubiBbRG9ja2VyOjpDb25uZWN0aW9uXSBUaGUgRG9ja2VyIGNvbm5lY3Rp b24gdG8gdXNlCiAgICAjCiAgICAjIEByZXR1cm4gW05pbENsYXNzLCBTdHJp bmddIElmIGZpbGVuYW1lIGlzIG5pbCwgcmV0dXJuIHRoZSBzdHJpbmcKICAg ICMgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJpbmFyeSBkYXRhLiBJZiB0aGUg ZmlsZW5hbWUgaXMgbm90IG5pbCwgdGhlbgogICAgIyByZXR1cm4gbmlsLgog ICAgZGVmIHNhdmUobmFtZXMsIGZpbGVuYW1lID0gbmlsLCBjb25uID0gRG9j a2VyLmNvbm5lY3Rpb24pCiAgICAgICMgQnkgdXNpbmcgY29tcGFyZV9ieV9p ZGVudGl0eSB3ZSBjYW4gY3JlYXRlIGEgSGFzaCB0aGF0IGhhcwogICAgICAj IHRoZSBzYW1lIGtleSBtdWx0aXBsZSB0aW1lcy4KICAgICAgcXVlcnkgPSB7 fQogICAgICBxdWVyeS5jb21wYXJlX2J5X2lkZW50aXR5CiAgICAgIEFycmF5 KG5hbWVzKS5lYWNoIGRvIHxuYW1lfAogICAgICAgIHF1ZXJ5WyduYW1lcydd ID0gVVJJLmVuY29kZShuYW1lKQogICAgICBlbmQKCiAgICAgIGlmIGZpbGVu YW1lCiAgICAgICAgZmlsZSA9IEZpbGUub3BlbihmaWxlbmFtZSwgJ3diJykK ICAgICAgICBjb25uLmdldCgKICAgICAgICAgICcvaW1hZ2VzL2dldCcsIHF1 ZXJ5LAogICAgICAgICAgOnJlc3BvbnNlX2Jsb2NrID0+IHJlc3BvbnNlX2Js b2NrX2Zvcl9zYXZlKGZpbGUpCiAgICAgICAgKQogICAgICAgIGZpbGUuY2xv c2UKICAgICAgICBuaWwKICAgICAgZWxzZQogICAgICAgIGNvbm4uZ2V0KCcv aW1hZ2VzL2dldCcsIHF1ZXJ5KQogICAgICBlbmQKICAgIGVuZAoKICAgICMg Q2hlY2sgaWYgYW4gaW1hZ2UgZXhpc3RzLgogICAgZGVmIGV4aXN0PyhpZCwg b3B0cyA9IHt9LCBjb25uID0gRG9ja2VyLmNvbm5lY3Rpb24pCiAgICAgIGdl dChpZCwgb3B0cywgY29ubikKICAgICAgdHJ1ZQogICAgcmVzY3VlIERvY2tl cjo6RXJyb3I6Ok5vdEZvdW5kRXJyb3IKICAgICAgZmFsc2UKICAgIGVuZAoK ICAgICMgUmV0dXJuIGV2ZXJ5IEltYWdlLgogICAgZGVmIGFsbChvcHRzID0g e30sIGNvbm4gPSBEb2NrZXIuY29ubmVjdGlvbikKICAgICAgaGFzaGVzID0g RG9ja2VyOjpVdGlsLnBhcnNlX2pzb24oY29ubi5nZXQoJy9pbWFnZXMvanNv bicsIG9wdHMpKSB8fCBbXQogICAgICBoYXNoZXMubWFwIHsgfGhhc2h8IG5l dyhjb25uLCBoYXNoKSB9CiAgICBlbmQKCiAgICAjIEdpdmVuIGEgcXVlcnkg bGlrZSBgeyA6dGVybSA9PiAnc3NoZCcgfWAsIHF1ZXJpZXMgdGhlIERvY2tl ciBSZWdpc3RyeSBmb3IKICAgICMgYSBjb3JyZXNwb25kaW5nIEltYWdlLgog ICAgZGVmIHNlYXJjaChxdWVyeSA9IHt9LCBjb25uZWN0aW9uID0gRG9ja2Vy LmNvbm5lY3Rpb24pCiAgICAgIGJvZHkgPSBjb25uZWN0aW9uLmdldCgnL2lt YWdlcy9zZWFyY2gnLCBxdWVyeSkKICAgICAgaGFzaGVzID0gRG9ja2VyOjpV dGlsLnBhcnNlX2pzb24oYm9keSkgfHwgW10KICAgICAgaGFzaGVzLm1hcCB7 IHxoYXNofCBuZXcoY29ubmVjdGlvbiwgJ2lkJyA9PiBoYXNoWyduYW1lJ10p IH0KICAgIGVuZAoKICAgICMgSW1wb3J0IGFuIEltYWdlIGZyb20gdGhlIG91 dHB1dCBvZiBEb2NrZXI6OkNvbnRhaW5lciNleHBvcnQuIFRoZSBmaXJzdAog ICAgIyBhcmd1bWVudCBtYXkgZWl0aGVyIGJlIGEgRmlsZSBvciBVUkkuCiAg ICBkZWYgaW1wb3J0KGltcCwgb3B0cyA9IHt9LCBjb25uID0gRG9ja2VyLmNv bm5lY3Rpb24pCiAgICAgIG9wZW4oaW1wKSBkbyB8aW98CiAgICAgICAgaW1w b3J0X3N0cmVhbShvcHRzLCBjb25uKSBkbwogICAgICAgICAgaW8ucmVhZChF eGNvbi5kZWZhdWx0c1s6Y2h1bmtfc2l6ZV0pLnRvX3MKICAgICAgICBlbmQK ICAgICAgZW5kCiAgICByZXNjdWUgU3RhbmRhcmRFcnJvcgogICAgICByYWlz ZSBEb2NrZXI6OkVycm9yOjpJT0Vycm9yLCAiQ291bGQgbm90IGltcG9ydCAn I3tpbXB9JyIKICAgIGVuZAoKICAgIGRlZiBpbXBvcnRfc3RyZWFtKG9wdGlv bnMgPSB7fSwgY29ubmVjdGlvbiA9IERvY2tlci5jb25uZWN0aW9uLCAmYmxv Y2spCiAgICAgIGJvZHkgPSBjb25uZWN0aW9uLnBvc3QoCiAgICAgICAgJy9p bWFnZXMvY3JlYXRlJywKICAgICAgICAgb3B0aW9ucy5tZXJnZSgnZnJvbVNy YycgPT4gJy0nKSwKICAgICAgICAgOmhlYWRlcnMgPT4geyAnQ29udGVudC1U eXBlJyA9PiAnYXBwbGljYXRpb24vdGFyJywKICAgICAgICAgICAgICAgICAg ICAgICAnVHJhbnNmZXItRW5jb2RpbmcnID0+ICdjaHVua2VkJyB9LAogICAg ICAgICAmYmxvY2sKICAgICAgKQogICAgICBuZXcoY29ubmVjdGlvbiwgJ2lk Jz0+IERvY2tlcjo6VXRpbC5wYXJzZV9qc29uKGJvZHkpWydzdGF0dXMnXSkK ICAgIGVuZAoKICAgICMgR2l2ZW4gYSBEb2NrZXJmaWxlIGFzIGEgc3RyaW5n LCBidWlsZHMgYW4gSW1hZ2UuCiAgICBkZWYgYnVpbGQoY29tbWFuZHMsIG9w dHMgPSB7fSwgY29ubmVjdGlvbiA9IERvY2tlci5jb25uZWN0aW9uLCAmYmxv Y2spCiAgICAgIGJvZHkgPSAiIgogICAgICBjb25uZWN0aW9uLnBvc3QoCiAg ICAgICAgJy9idWlsZCcsIG9wdHMsCiAgICAgICAgOmJvZHkgPT4gRG9ja2Vy OjpVdGlsLmNyZWF0ZV90YXIoJ0RvY2tlcmZpbGUnID0+IGNvbW1hbmRzKSwK ICAgICAgICA6cmVzcG9uc2VfYmxvY2sgPT4gcmVzcG9uc2VfYmxvY2soYm9k eSwgJmJsb2NrKQogICAgICApCiAgICAgIG5ldyhjb25uZWN0aW9uLCAnaWQn ID0+IERvY2tlcjo6VXRpbC5leHRyYWN0X2lkKGJvZHkpKQogICAgcmVzY3Vl IERvY2tlcjo6RXJyb3I6OlNlcnZlckVycm9yCiAgICAgIHJhaXNlIERvY2tl cjo6RXJyb3I6OlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yCiAgICBlbmQKCiAg ICAjIEdpdmVuIEZpbGUgbGlrZSBvYmplY3QgY29udGFpbmluZyBhIHRhciBm aWxlLCBidWlsZHMgYW4gSW1hZ2UuCiAgICAjCiAgICAjIElmIGEgYmxvY2sg aXMgcGFzc2VkLCBjaHVua3Mgb2Ygb3V0cHV0IHByb2R1Y2VkIGJ5IERvY2tl ciB3aWxsIGJlIHBhc3NlZAogICAgIyB0byB0aGF0IGJsb2NrLgogICAgZGVm IGJ1aWxkX2Zyb21fdGFyKHRhciwgb3B0cyA9IHt9LCBjb25uZWN0aW9uID0g RG9ja2VyLmNvbm5lY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgY3Jl ZHMgPSBuaWwsICZibG9jaykKCiAgICAgIGhlYWRlcnMgPSBidWlsZF9oZWFk ZXJzKGNyZWRzKQoKICAgICAgIyBUaGUgcmVzcG9uc2VfYmxvY2sgcGFzc2Vk IHRvIEV4Y29uIHdpbGwgYnVpbGQgdXAgdGhpcyBib2R5IHZhcmlhYmxlLgog ICAgICBib2R5ID0gIiIKICAgICAgY29ubmVjdGlvbi5wb3N0KAogICAgICAg ICcvYnVpbGQnLCBvcHRzLAogICAgICAgIDpoZWFkZXJzID0+IGhlYWRlcnMs CiAgICAgICAgOnJlc3BvbnNlX2Jsb2NrID0+IHJlc3BvbnNlX2Jsb2NrKGJv ZHksICZibG9jaykKICAgICAgKSB7IHRhci5yZWFkKEV4Y29uLmRlZmF1bHRz WzpjaHVua19zaXplXSkudG9fcyB9CgogICAgICBuZXcoY29ubmVjdGlvbiwK ICAgICAgICAgICdpZCcgPT4gRG9ja2VyOjpVdGlsLmV4dHJhY3RfaWQoYm9k eSksCiAgICAgICAgICA6aGVhZGVycyA9PiBoZWFkZXJzKQogICAgZW5kCgog ICAgIyBHaXZlbiBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGEgRG9ja2Vy ZmlsZSwgYnVpbGRzIGFuIEltYWdlLgogICAgIwogICAgIyBJZiBhIGJsb2Nr IGlzIHBhc3NlZCwgY2h1bmtzIG9mIG91dHB1dCBwcm9kdWNlZCBieSBEb2Nr ZXIgd2lsbCBiZSBwYXNzZWQKICAgICMgdG8gdGhhdCBibG9jay4KICAgIGRl ZiBidWlsZF9mcm9tX2RpcihkaXIsIG9wdHMgPSB7fSwgY29ubmVjdGlvbiA9 IERvY2tlci5jb25uZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgIGNy ZWRzID0gbmlsLCAmYmxvY2spCgogICAgICB0YXIgPSBEb2NrZXI6OlV0aWwu Y3JlYXRlX2Rpcl90YXIoZGlyKQogICAgICBidWlsZF9mcm9tX3RhciB0YXIs IG9wdHMsIGNvbm5lY3Rpb24sIGNyZWRzLCAmYmxvY2sKICAgIGVuc3VyZQog ICAgICB1bmxlc3MgdGFyLm5pbD8KICAgICAgICB0YXIuY2xvc2UKICAgICAg ICBGaWxlVXRpbHMucm0odGFyLnBhdGgsIGZvcmNlOiB0cnVlKQogICAgICBl bmQKICAgIGVuZAogIGVuZAoKICBwcml2YXRlCgogICMgQSBtZXRob2QgdG8g YnVpbGQgdGhlIGNvbmZpZyBoZWFkZXIgYW5kIG1lcmdlIGl0IGludG8gdGhl CiAgIyBoZWFkZXJzIHNlbnQgYnkgYnVpbGRfZnJvbV9kaXIuCiAgZGVmIHNl bGYuYnVpbGRfaGVhZGVycyhjcmVkcz1uaWwpCiAgICBjcmVkZW50aWFscyA9 IGNyZWRzIHx8IERvY2tlci5jcmVkcyB8fCB7fQogICAgY29uZmlnX2hlYWRl ciA9IERvY2tlcjo6VXRpbC5idWlsZF9jb25maWdfaGVhZGVyKGNyZWRlbnRp YWxzKQoKICAgIGhlYWRlcnMgPSB7ICdDb250ZW50LVR5cGUnICAgICAgPT4g J2FwcGxpY2F0aW9uL3RhcicsCiAgICAgICAgICAgICAgICAnVHJhbnNmZXIt RW5jb2RpbmcnID0+ICdjaHVua2VkJyB9CiAgICBoZWFkZXJzID0gaGVhZGVy cy5tZXJnZShjb25maWdfaGVhZGVyKSBpZiBjb25maWdfaGVhZGVyCiAgICBo ZWFkZXJzCiAgZW5kCgogICMgQ29udmVuaWVuY2UgbWV0aG9kIHRvIHJldHVy biB0aGUgcGF0aCBmb3IgYSBwYXJ0aWN1bGFyIHJlc291cmNlLgogIGRlZiBw YXRoX2ZvcihyZXNvdXJjZSkKICAgICIvaW1hZ2VzLyN7c2VsZi5pZH0vI3ty ZXNvdXJjZX0iCiAgZW5kCgoKICAjIENvbnZpZW5jZSBtZXRob2QgdG8gZ2V0 IHRoZSBEb2NrZXJmaWxlIGZvciBhIGZpbGUgaGFzaCBhbmQgYSBwYXRoIHRv CiAgIyBvdXRwdXQgdG8uCiAgZGVmIGRvY2tlcmZpbGVfZm9yKGZpbGVfaGFz aCwgb3V0cHV0X3BhdGgpCiAgICBkb2NrZXJmaWxlID0gImZyb20gI3tzZWxm LmlkfVxuIgoKICAgIGZpbGVfaGFzaC5rZXlzLmVhY2ggZG8gfGJhc2VuYW1l fAogICAgICBkb2NrZXJmaWxlIDw8ICJhZGQgI3tiYXNlbmFtZX0gI3tvdXRw dXRfcGF0aH1cbiIKICAgIGVuZAoKICAgIGRvY2tlcmZpbGUKICBlbmQKCiAg ZGVmIGVuc3VyZV9yZXBvX3RhZ3MKICAgIHJlZnJlc2ghIHVubGVzcyBpbmZv Lmhhc19rZXk/KCdSZXBvVGFncycpCiAgICBpbmZvWydSZXBvVGFncyddCiAg ZW5kCgogICMgR2VuZXJhdGVzIHRoZSBibG9jayB0byBiZSBwYXNzZWQgYXMg YSByZXBvbnNlIGJsb2NrIHRvIEV4Y29uLiBUaGUgcmV0dXJuZWQKICAjIGxh bWJkYSB3aWxsIGFwcGVuZCBEb2NrZXIgb3V0cHV0IHRvIHRoZSBmaXJzdCBh cmd1bWVudCwgYW5kIHlpZWxkIG91dHB1dCB0bwogICMgdGhlIHBhc3NlZCBi bG9jaywgaWYgYSBibG9jayBpcyBnaXZlbi4KICBkZWYgc2VsZi5yZXNwb25z ZV9ibG9jayhib2R5KQogICAgbGFtYmRhIGRvIHxjaHVuaywgcmVtYWluaW5n LCB0b3RhbHwKICAgICAgYm9keSA8PCBjaHVuawogICAgICB5aWVsZCBjaHVu ayBpZiBibG9ja19naXZlbj8KICAgIGVuZAogIGVuZAoKICAjIEdlbmVyYXRl cyB0aGUgYmxvY2sgdG8gYmUgcGFzc2VkIGluIHRvIHRoZSBzYXZlIHJlcXVl c3QuIFRoaXMgbGFtYmRhIHdpbGwKICAjIGFwcGVuZCB0aGUgc3RyZWFtaW5n IGRhdGEgdG8gdGhlIGZpbGUgcHJvdmlkZWQuCiAgZGVmIHNlbGYucmVzcG9u c2VfYmxvY2tfZm9yX3NhdmUoZmlsZSkKICAgIGxhbWJkYSBkbyB8Y2h1bmss IHJlbWlhbmluZywgdG90YWx8CiAgICAgIGZpbGUgPDwgY2h1bmsKICAgIGVu ZAogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABkb2NrZXIvbWVzc2FnZXMucmIAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAw MDAwMDI1NzUAMTI1MzYwMDY3MDQAMDE0NzM2ACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBjbGFzcyByZXByZXNl bnRzIGFsbCB0aGUgbWVzc2FnZXMgZWl0aGVyIHJlY2VpdmVkIGJ5IGNodW5r cyBmcm9tIGF0dGFjaApjbGFzcyBEb2NrZXI6Ok1lc3NhZ2VzCgogIGF0dHJf YWNjZXNzb3IgOmJ1ZmZlciwgOnN0ZG91dF9tZXNzYWdlcywgOnN0ZGVycl9t ZXNzYWdlcywgOmFsbF9tZXNzYWdlcwoKICBkZWYgaW5pdGlhbGl6ZShzdGRv dXRfbWVzc2FnZXM9W10sCiAgICAgICAgICAgICAgICAgc3RkZXJyX21lc3Nh Z2VzPVtdLAogICAgICAgICAgICAgICAgIGFsbF9tZXNzYWdlcz1bXSwKICAg ICAgICAgICAgICAgICBidWZmZXI9IiIpCiAgICBAc3Rkb3V0X21lc3NhZ2Vz ID0gc3Rkb3V0X21lc3NhZ2VzCiAgICBAc3RkZXJyX21lc3NhZ2VzID0gc3Rk ZXJyX21lc3NhZ2VzCiAgICBAYWxsX21lc3NhZ2VzID0gYWxsX21lc3NhZ2Vz CiAgICBAYnVmZmVyID0gYnVmZmVyCiAgZW5kCgogIGRlZiBhZGRfbWVzc2Fn ZShzb3VyY2UsIG1lc3NhZ2UpCiAgICBjYXNlIHNvdXJjZQogICAgd2hlbiAx CiAgICAgIHN0ZG91dF9tZXNzYWdlcyA8PCBtZXNzYWdlCiAgICB3aGVuIDIK ICAgICAgc3RkZXJyX21lc3NhZ2VzIDw8IG1lc3NhZ2UKICAgIGVuZAogICAg YWxsX21lc3NhZ2VzIDw8IG1lc3NhZ2UKICBlbmQKCiAgZGVmIGdldF9tZXNz YWdlKHJhd190ZXh0KQogICAgaGVhZGVyID0gcmF3X3RleHQuc2xpY2UhKDAs OCkKICAgIGlmIGhlYWRlci5sZW5ndGggPCA4CiAgICAgIEBidWZmZXIgPSBo ZWFkZXIKICAgICAgcmV0dXJuCiAgICBlbmQKICAgIHR5cGUsIGxlbmd0aCA9 IGhlYWRlci51bnBhY2soIkN4eHhOIikKCiAgICBtZXNzYWdlID0gcmF3X3Rl eHQuc2xpY2UhKDAsbGVuZ3RoKQogICAgaWYgbWVzc2FnZS5sZW5ndGggPCBs ZW5ndGgKICAgICAgQGJ1ZmZlciA9IGhlYWRlciArIG1lc3NhZ2UKICAgIGVs c2UKICAgICAgYWRkX21lc3NhZ2UodHlwZSwgbWVzc2FnZSkKICAgIGVuZAog IGVuZAoKICBkZWYgYXBwZW5kKG1lc3NhZ2VzKQogICAgQHN0ZG91dF9tZXNz YWdlcyArPSBtZXNzYWdlcy5zdGRvdXRfbWVzc2FnZXMKICAgIEBzdGRlcnJf bWVzc2FnZXMgKz0gbWVzc2FnZXMuc3RkZXJyX21lc3NhZ2VzCiAgICBAYWxs X21lc3NhZ2VzICs9IG1lc3NhZ2VzLmFsbF9tZXNzYWdlcwogIGVuZAoKICAj IE1ldGhvZCB0byBicmVhayBhcGFydCBhcHBsaWNhdGlvbi92bmQuZG9ja2Vy LnJhdy1zdHJlYW0gaGVhZGVycwogIGRlZiBkZWNpcGhlcl9tZXNzYWdlcyhi b2R5KQogICAgcmF3X3RleHQgPSBidWZmZXIgKyBib2R5LmR1cAogICAgbWVz c2FnZXMgPSBEb2NrZXI6Ok1lc3NhZ2VzLm5ldwogICAgd2hpbGUgIXJhd190 ZXh0LmVtcHR5PwogICAgICBtZXNzYWdlcy5nZXRfbWVzc2FnZShyYXdfdGV4 dCkKICAgIGVuZAoKICAgIG1lc3NhZ2VzCiAgZW5kCmVuZAoAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRvY2tlci9tZXNzYWdl c19zdGFjay5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAw NjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDcxNQAxMjU1MDQyMDYxNwAw MTYxMTQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDB3aGVlbAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAY2xhc3MgRG9ja2VyOjpNZXNzYWdlc1N0YWNrCgogIGF0dHJfYWNjZXNz b3IgOm1lc3NhZ2VzCgogICMgSW5pdGlhbGl6ZSBzdGFjayB3aXRoIG9wdGlv bmFsIHNpemUKICAjCiAgIyBAcGFyYW0gc2l6ZSBbSW50ZWdlcl0KICBkZWYg aW5pdGlhbGl6ZShzaXplID0gLTEpCiAgICBAbWVzc2FnZXMgPSBbXQogICAg QHNpemUgPSBzaXplCiAgZW5kCgogICMgQXBwZW5kIG1lc3NhZ2VzIHRvIHN0 YWNrCiAgIwogICMgQHBhcmFtIG1lc3NhZ2VzIFtEb2NrZXI6Ok1lc3NhZ2Vz XQogIGRlZiBhcHBlbmQobWVzc2FnZXMpCiAgICByZXR1cm4gaWYgQHNpemUg PT0gMAoKICAgIG1lc3NhZ2VzLmFsbF9tZXNzYWdlcy5lYWNoIGRvIHxtc2d8 CiAgICAgIEBtZXNzYWdlcyA8PCBtc2cKICAgICAgQG1lc3NhZ2VzLnNoaWZ0 IGlmIEBzaXplID4gLTEgJiYgQG1lc3NhZ2VzLnNpemUgPiBAc2l6ZQogICAg ZW5kCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABkb2NrZXIvcmFrZV90YXNrLnJiAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAw ADAwMDAwMDAAMDAwMDAwMDEyMTcAMTI1MzYwMDY3MDQAMDE1MDYzACAwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHVzdGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAw MDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBj bGFzcyBhbGxvd3MgaW1hZ2UtYmFzZWQgdGFza3MgdG8gYmUgY3JlYXRlZC4K Y2xhc3MgRG9ja2VyOjpJbWFnZVRhc2sgPCBSYWtlOjpUYXNrCiAgZGVmIHNl bGYuc2NvcGVfbmFtZShfc2NvcGUsIHRhc2tfbmFtZSkKICAgIHRhc2tfbmFt ZQogIGVuZAoKICBkZWYgbmVlZGVkPwogICAgIWhhc19yZXBvX3RhZz8KICBl bmQKCiAgcHJpdmF0ZQoKICBkZWYgaGFzX3JlcG9fdGFnPwogICAgaW1hZ2Vz LmFueT8geyB8aW1hZ2V8IGltYWdlLmluZm9bJ1JlcG9UYWdzJ10uaW5jbHVk ZT8ocmVwb190YWcpIH0KICBlbmQKCiAgZGVmIGltYWdlcwogICAgQGltYWdl cyB8fD0gRG9ja2VyOjpJbWFnZS5hbGwoOmFsbCA9PiB0cnVlKQogIGVuZAoK ICBkZWYgcmVwbwogICAgbmFtZS5zcGxpdCgnOicpWzBdCiAgZW5kCgogIGRl ZiB0YWcKICAgIG5hbWUuc3BsaXQoJzonKVsxXSB8fCAnbGF0ZXN0JwogIGVu ZAoKICBkZWYgcmVwb190YWcKICAgICIje3JlcG99OiN7dGFnfSIKICBlbmQK ZW5kCgojIE1vbmtleXBhdGNoIFJha2UgdG8gYWRkIHRoZSBgaW1hZ2VgIHRh c2suCm1vZHVsZSBSYWtlOjpEU0wKICBkZWYgaW1hZ2UoKmFyZ3MsICZibG9j aykKICAgIERvY2tlcjo6SW1hZ2VUYXNrLmRlZmluZV90YXNrKCphcmdzLCAm YmxvY2spCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkb2NrZXIvdXRpbC5yYgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAw MDAwMDAwADAwMDAwMDAAMDAwMDAwMTM3NjEAMTI1MzYwMTE1NjMAMDE0MTAy ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAHVzdGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAw MDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMg VGhpcyBtb2R1bGUgaG9sZHMgc2hhcmVkIGxvZ2ljIHRoYXQgZG9lc24ndCBy ZWFsbHkgYmVsb25nIGFueXdoZXJlIGVsc2UgaW4gdGhlCiMgZ2VtLgptb2R1 bGUgRG9ja2VyOjpVdGlsCiAgaW5jbHVkZSBEb2NrZXI6OkVycm9yCgogIG1v ZHVsZV9mdW5jdGlvbgoKICAjIEF0dGFjaGVzIHRvIGEgSFRUUCBzdHJlYW0K ICAjCiAgIyBAcGFyYW0gYmxvY2sKICAjIEBwYXJhbSBtc2dfc3RhY2sgW0Rv Y2tlcjo6TWVzc2FnZXNdCiAgIyBAcGFyYW0gdHR5IFtib29sZWFuXQogIGRl ZiBhdHRhY2hfZm9yKGJsb2NrLCBtc2dfc3RhY2ssIHR0eSA9IGZhbHNlKQog ICAgIyBJZiBUVFkgaXMgZW5hYmxlZCBleHBlY3QgcmF3IGRhdGEgYW5kIGFw cGVuZCB0byBzdGRvdXQKICAgIGlmIHR0eQogICAgICBhdHRhY2hfZm9yX3R0 eShibG9jaywgbXNnX3N0YWNrKQogICAgZWxzZQogICAgICBhdHRhY2hfZm9y X211bHRpcGxleChibG9jaywgbXNnX3N0YWNrKQogICAgZW5kCiAgZW5kCgog IGRlZiBhdHRhY2hfZm9yX3R0eShibG9jaywgbXNnX3N0YWNrKQogICAgcmV0 dXJuIGxhbWJkYSBkbyB8YyxyLHR8CiAgICAgIG1zZ19zdGFjay5zdGRvdXRf bWVzc2FnZXMgPDwgYwogICAgICBtc2dfc3RhY2suYWxsX21lc3NhZ2VzIDw8 IGMKICAgICAgYmxvY2suY2FsbCBjIGlmIGJsb2NrCiAgICBlbmQKICBlbmQK CiAgZGVmIGF0dGFjaF9mb3JfbXVsdGlwbGV4KGJsb2NrLCBtc2dfc3RhY2sp CiAgICBtZXNzYWdlcyA9IERvY2tlcjo6TWVzc2FnZXMubmV3CiAgICBsYW1i ZGEgZG8gfGMscix0fAogICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzLmRlY2lw aGVyX21lc3NhZ2VzKGMpCiAgICAgIG1zZ19zdGFjay5hcHBlbmQobWVzc2Fn ZXMpCgogICAgICB1bmxlc3MgYmxvY2submlsPwogICAgICAgIG1lc3NhZ2Vz LnN0ZG91dF9tZXNzYWdlcy5lYWNoIGRvIHxtc2d8CiAgICAgICAgICBibG9j ay5jYWxsKDpzdGRvdXQsIG1zZykKICAgICAgICBlbmQKICAgICAgICBtZXNz YWdlcy5zdGRlcnJfbWVzc2FnZXMuZWFjaCBkbyB8bXNnfAogICAgICAgICAg YmxvY2suY2FsbCg6c3RkZXJyLCBtc2cpCiAgICAgICAgZW5kCiAgICAgIGVu ZAogICAgZW5kCiAgZW5kCgogIGRlZiBkZWJ1Zyhtc2cpCiAgICBEb2NrZXIu bG9nZ2VyLmRlYnVnKG1zZykgaWYgRG9ja2VyLmxvZ2dlcgogIGVuZAoKICBk ZWYgaGlqYWNrX2ZvcihzdGRpbiwgYmxvY2ssIG1zZ19zdGFjaywgdHR5KQog ICAgYXR0YWNoX2Jsb2NrID0gYXR0YWNoX2ZvcihibG9jaywgbXNnX3N0YWNr LCB0dHkpCgogICAgbGFtYmRhIGRvIHxzb2NrZXR8CiAgICAgIGRlYnVnICJo aWphY2s6IGhpamFja2luZyB0aGUgSFRUUCBzb2NrZXQiCiAgICAgIHRocmVh ZHMgPSBbXQoKICAgICAgZGVidWcgImhpamFjazogc3RhcnRpbmcgc3RkaW4g Y29weSB0aHJlYWQiCiAgICAgIHRocmVhZHMgPDwgVGhyZWFkLnN0YXJ0IGRv CiAgICAgICAgZGVidWcgImhpamFjazogY29weWluZyBzdGRpbiA9PiBzb2Nr ZXQiCiAgICAgICAgSU8uY29weV9zdHJlYW0gc3RkaW4sIHNvY2tldAoKICAg ICAgICBkZWJ1ZyAiaGlqYWNrOiBjbG9zaW5nIHdyaXRlIGVuZCBvZiBoaWph Y2tlZCBzb2NrZXQiCiAgICAgICAgY2xvc2Vfd3JpdGUoc29ja2V0KQogICAg ICBlbmQKCiAgICAgIGRlYnVnICJoaWphY2s6IHN0YXJ0aW5nIGhpamFja2Vk IHNvY2tldCByZWFkIHRocmVhZCIKICAgICAgdGhyZWFkcyA8PCBUaHJlYWQu c3RhcnQgZG8KICAgICAgICBkZWJ1ZyAiaGlqYWNrOiByZWFkaW5nIGZyb20g aGlqYWNrZWQgc29ja2V0IgoKICAgICAgICBiZWdpbgogICAgICAgICAgd2hp bGUgY2h1bmsgPSBzb2NrZXQucmVhZHBhcnRpYWwoNTEyKQogICAgICAgICAg ICBkZWJ1ZyAiaGlqYWNrOiBnb3QgI3tjaHVuay5ieXRlc2l6ZX0gYnl0ZXMg ZnJvbSBoaWphY2tlZCBzb2NrZXQiCiAgICAgICAgICAgIGF0dGFjaF9ibG9j ay5jYWxsIGNodW5rLCBuaWwsIG5pbAogICAgICAgICAgZW5kCiAgICAgICAg cmVzY3VlIEVPRkVycm9yCiAgICAgICAgZW5kCgogICAgICAgIGRlYnVnICJo aWphY2s6IGtpbGxpbmcgc3RkaW4gY29weSB0aHJlYWQiCiAgICAgICAgdGhy ZWFkcy5maXJzdC5raWxsCiAgICAgIGVuZAoKICAgICAgdGhyZWFkcy5lYWNo KCY6am9pbikKICAgIGVuZAogIGVuZAoKICBkZWYgY2xvc2Vfd3JpdGUoc29j a2V0KQogICAgaWYgc29ja2V0LnJlc3BvbmRfdG8/KDpjbG9zZV93cml0ZSkK ICAgICAgc29ja2V0LmNsb3NlX3dyaXRlCiAgICBlbHNpZiBzb2NrZXQucmVz cG9uZF90bz8oOmlvKQogICAgICBzb2NrZXQuaW8uY2xvc2Vfd3JpdGUKICAg IGVsc2UKICAgICAgcmFpc2UgSU9FcnJvciwgJ0Nhbm5vdCBjbG9zZSBzb2Nr ZXQnCiAgICBlbmQKICBlbmQKCiAgZGVmIHBhcnNlX2pzb24oYm9keSkKICAg IEpTT04ucGFyc2UoYm9keSkgdW5sZXNzIGJvZHkubmlsPyB8fCBib2R5LmVt cHR5PyB8fCAoYm9keSA9PSAnbnVsbCcpCiAgcmVzY3VlIEpTT046OlBhcnNl ckVycm9yID0+IGV4CiAgICByYWlzZSBVbmV4cGVjdGVkUmVzcG9uc2VFcnJv ciwgZXgubWVzc2FnZQogIGVuZAoKICBkZWYgcGFyc2VfcmVwb190YWcoc3Ry KQogICAgaWYgbWF0Y2ggPSBzdHIubWF0Y2goL1xBKC4qKTooW146XSopXHov KQogICAgICBtYXRjaC5jYXB0dXJlcwogICAgZWxzZQogICAgICBbc3RyLCAn J10KICAgIGVuZAogIGVuZAoKICBkZWYgZml4X2pzb24oYm9keSkKICAgIHBh cnNlX2pzb24oIlsje2JvZHkuZ3N1YigvfVxzKnsvLCAnfSx7Jyl9XSIpCiAg ZW5kCgogIGRlZiBjcmVhdGVfdGFyKGhhc2ggPSB7fSkKICAgIG91dHB1dCA9 IFN0cmluZ0lPLm5ldwogICAgR2VtOjpQYWNrYWdlOjpUYXJXcml0ZXIubmV3 KG91dHB1dCkgZG8gfHRhcnwKICAgICAgaGFzaC5lYWNoIGRvIHxmaWxlX25h bWUsIGlucHV0fAogICAgICAgIHRhci5hZGRfZmlsZShmaWxlX25hbWUsIDA2 NDApIHsgfHRhcl9maWxlfCB0YXJfZmlsZS53cml0ZShpbnB1dCkgfQogICAg ICBlbmQKICAgIGVuZAogICAgb3V0cHV0LnRhcCgmOnJld2luZCkuc3RyaW5n CiAgZW5kCgogIGRlZiBjcmVhdGVfZGlyX3RhcihkaXJlY3RvcnkpCiAgICB0 ZW1wZmlsZSA9IGNyZWF0ZV90ZW1wX2ZpbGUKICAgIGRpcmVjdG9yeSArPSAn LycgdW5sZXNzIGRpcmVjdG9yeS5lbmRfd2l0aD8oJy8nKQoKICAgIGNyZWF0 ZV9yZWxhdGl2ZV9kaXJfdGFyKGRpcmVjdG9yeSwgdGVtcGZpbGUpCgogICAg RmlsZS5uZXcodGVtcGZpbGUucGF0aCwgJ3InKQogIGVuZAoKICBkZWYgY3Jl YXRlX3JlbGF0aXZlX2Rpcl90YXIoZGlyZWN0b3J5LCBvdXRwdXQpCiAgICBH ZW06OlBhY2thZ2U6OlRhcldyaXRlci5uZXcob3V0cHV0KSBkbyB8dGFyfAog ICAgICBGaW5kLmZpbmQoZGlyZWN0b3J5KSBkbyB8cHJlZml4ZWRfZmlsZV9u YW1lfAogICAgICAgIHN0YXQgPSBGaWxlLnN0YXQocHJlZml4ZWRfZmlsZV9u YW1lKQogICAgICAgIG5leHQgdW5sZXNzIHN0YXQuZmlsZT8KCiAgICAgICAg dW5wcmVmaXhlZF9maWxlX25hbWUgPSBwcmVmaXhlZF9maWxlX25hbWVbZGly ZWN0b3J5Lmxlbmd0aC4uLTFdCiAgICAgICAgYWRkX2ZpbGVfdG9fdGFyKAog ICAgICAgICAgdGFyLCB1bnByZWZpeGVkX2ZpbGVfbmFtZSwgc3RhdC5tb2Rl LCBzdGF0LnNpemUsIHN0YXQubXRpbWUKICAgICAgICApIGRvIHx0YXJfZmls ZXwKICAgICAgICAgIElPLmNvcHlfc3RyZWFtKEZpbGUub3BlbihwcmVmaXhl ZF9maWxlX25hbWUsICdyYicpLCB0YXJfZmlsZSkKICAgICAgICBlbmQKICAg ICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIGFkZF9maWxlX3RvX3Rhcih0 YXIsIG5hbWUsIG1vZGUsIHNpemUsIG10aW1lKQogICAgdGFyLmNoZWNrX2Ns b3NlZAoKICAgIGlvID0gdGFyLmluc3RhbmNlX3ZhcmlhYmxlX2dldCg6QGlv KQoKICAgIG5hbWUsIHByZWZpeCA9IHRhci5zcGxpdF9uYW1lKG5hbWUpCgog ICAgaGVhZGVyID0gR2VtOjpQYWNrYWdlOjpUYXJIZWFkZXIubmV3KDpuYW1l ID0+IG5hbWUsIDptb2RlID0+IG1vZGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOnNpemUgPT4gc2l6ZSwgOnByZWZpeCA9 PiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOm10aW1lID0+IG10aW1lKS50b19zCgogICAgaW8ud3JpdGUgaGVh ZGVyCiAgICBvcyA9IEdlbTo6UGFja2FnZTo6VGFyV3JpdGVyOjpCb3VuZGVk U3RyZWFtLm5ldyBpbywgc2l6ZQoKICAgIHlpZWxkIG9zIGlmIGJsb2NrX2dp dmVuPwoKICAgIG1pbl9wYWRkaW5nID0gc2l6ZSAtIG9zLndyaXR0ZW4KICAg IGlvLndyaXRlKCJcMCIgKiBtaW5fcGFkZGluZykKCiAgICByZW1haW5kZXIg PSAoNTEyIC0gKHNpemUgJSA1MTIpKSAlIDUxMgogICAgaW8ud3JpdGUoIlww IiAqIHJlbWFpbmRlcikKCiAgICB0YXIKICBlbmQKCiAgZGVmIGNyZWF0ZV90 ZW1wX2ZpbGUKICAgIHRlbXBmaWxlX25hbWUgPSBEaXI6OlRtcG5hbWUuY3Jl YXRlKCdvdXQnKSB7fQogICAgRmlsZS5vcGVuKHRlbXBmaWxlX25hbWUsICd3 YisnKQogIGVuZAoKICBkZWYgZXh0cmFjdF9pZChib2R5KQogICAgYm9keS5s aW5lcy5yZXZlcnNlX2VhY2ggZG8gfGxpbmV8CiAgICAgIGlmIChpZCA9IGxp bmUubWF0Y2goL1N1Y2Nlc3NmdWxseSBidWlsdCAoW2EtZjAtOV0rKS8pKSAm JiAhaWRbMV0uZW1wdHk/CiAgICAgICAgcmV0dXJuIGlkWzFdCiAgICAgIGVu ZAogICAgZW5kCiAgICByYWlzZSBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciwg IkNvdWxkbid0IGZpbmQgaWQ6ICN7Ym9keX0iCiAgZW5kCgogICMgQ29udmVu aWVuY2UgbWV0aG9kIHRvIGdldCB0aGUgZmlsZSBoYXNoIGNvcnJlc3BvbmRp bmcgdG8gYW4gYXJyYXkgb2YKICAjIGxvY2FsIHBhdGhzLgogIGRlZiBmaWxl X2hhc2hfZnJvbV9wYXRocyhsb2NhbF9wYXRocykKICAgIGxvY2FsX3BhdGhz LmVhY2hfd2l0aF9vYmplY3Qoe30pIGRvIHxsb2NhbF9wYXRoLCBmaWxlX2hh c2h8CiAgICAgIHVubGVzcyBGaWxlLmV4aXN0Pyhsb2NhbF9wYXRoKQogICAg ICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IsICIje2xvY2FsX3BhdGh9IGRvZXMg bm90IGV4aXN0LiIKICAgICAgZW5kCgogICAgICBiYXNlbmFtZSA9IEZpbGUu YmFzZW5hbWUobG9jYWxfcGF0aCkKICAgICAgaWYgRmlsZS5kaXJlY3Rvcnk/ KGxvY2FsX3BhdGgpCiAgICAgICAgdGFyID0gY3JlYXRlX2Rpcl90YXIobG9j YWxfcGF0aCkKICAgICAgICBmaWxlX2hhc2hbYmFzZW5hbWVdID0gdGFyLnJl YWQKICAgICAgICB0YXIuY2xvc2UKICAgICAgICBGaWxlVXRpbHMucm0odGFy LnBhdGgpCiAgICAgIGVsc2UKICAgICAgICBmaWxlX2hhc2hbYmFzZW5hbWVd ID0gRmlsZS5yZWFkKGxvY2FsX3BhdGgpCiAgICAgIGVuZAogICAgZW5kCiAg ZW5kCgogIGRlZiBidWlsZF9hdXRoX2hlYWRlcihjcmVkZW50aWFscykKICAg IGNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHMudG9fanNvbiBpZiBjcmVkZW50 aWFscy5pc19hPyhIYXNoKQogICAgZW5jb2RlZF9jcmVkcyA9IEJhc2U2NC5l bmNvZGU2NChjcmVkZW50aWFscykuZ3N1YigvXG4vLCAnJykKICAgIHsKICAg ICAgJ1gtUmVnaXN0cnktQXV0aCcgPT4gZW5jb2RlZF9jcmVkcwogICAgfQog IGVuZAoKICBkZWYgYnVpbGRfY29uZmlnX2hlYWRlcihjcmVkZW50aWFscykK ICAgIGlmIGNyZWRlbnRpYWxzLmlzX2E/KFN0cmluZykKICAgICAgY3JlZGVu dGlhbHMgPSBKU09OLnBhcnNlKGNyZWRlbnRpYWxzLCBzeW1ib2xpemVfbmFt ZXM6IHRydWUpCiAgICBlbmQKICAgIGhlYWRlciA9IHsKICAgICAgImNvbmZp Z3MiID0+IHsKICAgICAgICBjcmVkZW50aWFsc1s6c2VydmVyYWRkcmVzc10u dG9fcyA9PiB7CiAgICAgICAgICAidXNlcm5hbWUiID0+IGNyZWRlbnRpYWxz Wzp1c2VybmFtZV0udG9fcywKICAgICAgICAgICJwYXNzd29yZCIgPT4gY3Jl ZGVudGlhbHNbOnBhc3N3b3JkXS50b19zLAogICAgICAgICAgImVtYWlsIiA9 PiBjcmVkZW50aWFsc1s6ZW1haWxdLnRvX3MKICAgICAgICB9CiAgICAgIH0K ICAgIH0udG9fanNvbgoKICAgIGVuY29kZWRfaGVhZGVyID0gQmFzZTY0LmVu Y29kZTY0KGhlYWRlcikuZ3N1YigvXG4vLCAnJykKCiAgICB7CiAgICAgICdY LVJlZ2lzdHJ5LUNvbmZpZycgPT4gZW5jb2RlZF9oZWFkZXIKICAgIH0KICBl bmQKZW5kCgAAAAAAAAAAAAAAAAAAAGRvY2tlci92ZXJzaW9uLnJiAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAw MDAAMDAwMDAwMAAwMDAwMDAwMDIzMwAxMjUzNjAwNjcwNAAwMTQ2MDEAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIAMDB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAw MDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW9kdWxl IERvY2tlcgogICMgVGhlIHZlcnNpb24gb2YgdGhlIGRvY2tlci1hcGkgZ2Vt LgogIFZFUlNJT04gPSAnMS4yMS40JwoKICAjIFRoZSB2ZXJzaW9uIG9mIHRo ZSBjb21wYXRpYmxlIERvY2tlciByZW1vdGUgQVBJLgogIEFQSV9WRVJTSU9O ID0gJzEuMTYnCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABkb2NrZXIucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAwADAwMDAwMDAA MDAwMDAwMDY1MjYAMTI1MzYwMTcxNTUAMDEzMTMxACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz dGFyADAwd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgJ2NnaScKcmVx dWlyZSAnanNvbicKcmVxdWlyZSAnZXhjb24nCnJlcXVpcmUgJ3RlbXBmaWxl JwpyZXF1aXJlICdiYXNlNjQnCnJlcXVpcmUgJ2ZpbmQnCnJlcXVpcmUgJ3J1 YnlnZW1zL3BhY2thZ2UnCnJlcXVpcmUgJ3VyaScKcmVxdWlyZSAnb3Blbi11 cmknCgojIEFkZCB0aGUgSGlqYWNrIG1pZGRsZXdhcmUgYXQgdGhlIHRvcCBv ZiB0aGUgbWlkZGxld2FyZSBzdGFjayBzbyBpdCBjYW4KIyBwb3RlbnRpYWxs eSBoaWphY2sgSFRUUCBzb2NrZXRzICh3aGVuIGF0dGFjaGluZyB0byBzdGRp bikgYmVmb3JlIG90aGVyCiMgbWlkZGxld2FyZXMgdHJ5IGFuZCBwYXJzZSB0 aGUgcmVzcG9uc2UuCnJlcXVpcmUgJ2V4Y29uL21pZGRsZXdhcmVzL2hpamFj aycKRXhjb24uZGVmYXVsdHNbOm1pZGRsZXdhcmVzXS51bnNoaWZ0IEV4Y29u OjpNaWRkbGV3YXJlOjpIaWphY2sKCiMgVGhlIHRvcC1sZXZlbCBtb2R1bGUg Zm9yIHRoaXMgZ2VtLiBJdCdzIHB1cnBvc2UgaXMgdG8gaG9sZCBnbG9iYWwK IyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IGFyZSB1c2VkIGFzIGRl ZmF1bHRzIGluIG90aGVyIGNsYXNzZXMuCm1vZHVsZSBEb2NrZXIKICBhdHRy X2FjY2Vzc29yIDpjcmVkcywgOmxvZ2dlcgoKICByZXF1aXJlICdkb2NrZXIv ZXJyb3InCiAgcmVxdWlyZSAnZG9ja2VyL2Nvbm5lY3Rpb24nCiAgcmVxdWly ZSAnZG9ja2VyL2Jhc2UnCiAgcmVxdWlyZSAnZG9ja2VyL2NvbnRhaW5lcicK ICByZXF1aXJlICdkb2NrZXIvZXZlbnQnCiAgcmVxdWlyZSAnZG9ja2VyL2V4 ZWMnCiAgcmVxdWlyZSAnZG9ja2VyL2ltYWdlJwogIHJlcXVpcmUgJ2RvY2tl ci9tZXNzYWdlc19zdGFjaycKICByZXF1aXJlICdkb2NrZXIvbWVzc2FnZXMn CiAgcmVxdWlyZSAnZG9ja2VyL3V0aWwnCiAgcmVxdWlyZSAnZG9ja2VyL3Zl cnNpb24nCiAgcmVxdWlyZSAnZG9ja2VyL3Jha2VfdGFzaycgaWYgZGVmaW5l ZD8oUmFrZTo6VGFzaykKCiAgZGVmIGRlZmF1bHRfc29ja2V0X3VybAogICAg JzxET0NLRVJfSE9TVD4nCiAgZW5kCgogIGRlZiBlbnZfdXJsCiAgICBFTlZb J0RPQ0tFUl9VUkwnXSB8fCBFTlZbJ0RPQ0tFUl9IT1NUJ10KICBlbmQKCiAg ZGVmIGVudl9vcHRpb25zCiAgICBpZiBjZXJ0X3BhdGggPSBFTlZbJ0RPQ0tF Ul9DRVJUX1BBVEgnXQogICAgICB7CiAgICAgICAgY2xpZW50X2NlcnQ6IEZp bGUuam9pbihjZXJ0X3BhdGgsICdjZXJ0LnBlbScpLAogICAgICAgIGNsaWVu dF9rZXk6IEZpbGUuam9pbihjZXJ0X3BhdGgsICdrZXkucGVtJyksCiAgICAg ICAgc3NsX2NhX2ZpbGU6IEZpbGUuam9pbihjZXJ0X3BhdGgsICdjYS5wZW0n KSwKICAgICAgICBzY2hlbWU6ICdodHRwcycKICAgICAgfS5tZXJnZShzc2xf b3B0aW9ucykKICAgIGVsc2UKICAgICAge30KICAgIGVuZAogIGVuZAoKICBk ZWYgc3NsX29wdGlvbnMKICAgIGlmIEVOVlsnRE9DS0VSX1NTTF9WRVJJRlkn XSA9PSAnZmFsc2UnCiAgICAgIHsKICAgICAgICBzc2xfdmVyaWZ5X3BlZXI6 IGZhbHNlCiAgICAgIH0KICAgIGVsc2UKICAgICAge30KICAgIGVuZAogIGVu ZAoKICBkZWYgdXJsCiAgICBAdXJsIHx8PSBlbnZfdXJsIHx8IGRlZmF1bHRf c29ja2V0X3VybAogICAgIyBkb2NrZXIgdXNlcyBhIGRlZmF1bHQgbm90YXRp b24gdGNwOi8vIHdoaWNoIG1lYW5zIHRjcDovL2xvY2FsaG9zdDoyMzc1CiAg ICBpZiBAdXJsID09ICd0Y3A6Ly8nCiAgICAgIEB1cmwgPSAndGNwOi8vbG9j YWxob3N0OjIzNzUnCiAgICBlbmQKICAgIEB1cmwKICBlbmQKCiAgZGVmIG9w dGlvbnMKICAgIEBvcHRpb25zIHx8PSBlbnZfb3B0aW9ucwogIGVuZAoKICBk ZWYgdXJsPShuZXdfdXJsKQogICAgQHVybCA9IG5ld191cmwKICAgIHJlc2V0 X2Nvbm5lY3Rpb24hCiAgZW5kCgogIGRlZiBvcHRpb25zPShuZXdfb3B0aW9u cykKICAgIEBvcHRpb25zID0gZW52X29wdGlvbnMubWVyZ2UobmV3X29wdGlv bnMgfHwge30pCiAgICByZXNldF9jb25uZWN0aW9uIQogIGVuZAoKICBkZWYg Y29ubmVjdGlvbgogICAgQGNvbm5lY3Rpb24gfHw9IENvbm5lY3Rpb24ubmV3 KHVybCwgb3B0aW9ucykKICBlbmQKCiAgZGVmIHJlc2V0IQogICAgQHVybCA9 IG5pbAogICAgQG9wdGlvbnMgPSBuaWwKICAgIHJlc2V0X2Nvbm5lY3Rpb24h CiAgZW5kCgogIGRlZiByZXNldF9jb25uZWN0aW9uIQogICAgQGNvbm5lY3Rp b24gPSBuaWwKICBlbmQKCiAgIyBHZXQgdGhlIHZlcnNpb24gb2YgR28sIERv Y2tlciwgYW5kIG9wdGlvbmFsbHkgdGhlIEdpdCBjb21taXQuCiAgZGVmIHZl cnNpb24oY29ubmVjdGlvbiA9IHNlbGYuY29ubmVjdGlvbikKICAgIFV0aWwu cGFyc2VfanNvbihjb25uZWN0aW9uLmdldCgnL3ZlcnNpb24nKSkKICBlbmQK CiAgIyBHZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgRG9ja2VyIHNl cnZlci4KICBkZWYgaW5mbyhjb25uZWN0aW9uID0gc2VsZi5jb25uZWN0aW9u KQogICAgVXRpbC5wYXJzZV9qc29uKGNvbm5lY3Rpb24uZ2V0KCcvaW5mbycp KQogIGVuZAoKICAjIExvZ2luIHRvIHRoZSBEb2NrZXIgcmVnaXN0cnkuCiAg ZGVmIGF1dGhlbnRpY2F0ZSEob3B0aW9ucyA9IHt9LCBjb25uZWN0aW9uID0g c2VsZi5jb25uZWN0aW9uKQogICAgY3JlZHMgPSBvcHRpb25zLnRvX2pzb24K ICAgIGNvbm5lY3Rpb24ucG9zdCgnL2F1dGgnLCB7fSwgOmJvZHkgPT4gY3Jl ZHMpCiAgICBAY3JlZHMgPSBjcmVkcwogICAgdHJ1ZQogIHJlc2N1ZSBEb2Nr ZXI6OkVycm9yOjpTZXJ2ZXJFcnJvciwgRG9ja2VyOjpFcnJvcjo6VW5hdXRo b3JpemVkRXJyb3IKICAgIHJhaXNlIERvY2tlcjo6RXJyb3I6OkF1dGhlbnRp Y2F0aW9uRXJyb3IKICBlbmQKCiAgIyBXaGVuIHRoZSBjb3JyZWN0IHZlcnNp b24gb2YgRG9ja2VyIGlzIGluc3RhbGxlZCwgcmV0dXJucyB0cnVlLiBPdGhl cndpc2UsCiAgIyByYWlzZXMgYSBWZXJzaW9uRXJyb3IuCiAgZGVmIHZhbGlk YXRlX3ZlcnNpb24hCiAgICBEb2NrZXIuaW5mbwogICAgdHJ1ZQogIHJlc2N1 ZSBEb2NrZXI6OkVycm9yOjpEb2NrZXJFcnJvcgogICAgcmFpc2UgRG9ja2Vy OjpFcnJvcjo6VmVyc2lvbkVycm9yLCAiRXhwZWN0ZWQgQVBJIFZlcnNpb246 ICN7QVBJX1ZFUlNJT059IgogIGVuZAoKICBtb2R1bGVfZnVuY3Rpb24gOmRl ZmF1bHRfc29ja2V0X3VybCwgOmVudl91cmwsIDp1cmwsIDp1cmw9LCA6ZW52 X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgIDpvcHRpb25zLCA6b3B0aW9u cz0sIDpjcmVkcywgOmNyZWRzPSwgOmxvZ2dlciwgOmxvZ2dlcj0sCiAgICAg ICAgICAgICAgICAgIDpjb25uZWN0aW9uLCA6cmVzZXQhLCA6cmVzZXRfY29u bmVjdGlvbiEsIDp2ZXJzaW9uLCA6aW5mbywKICAgICAgICAgICAgICAgICAg OmF1dGhlbnRpY2F0ZSEsIDp2YWxpZGF0ZV92ZXJzaW9uISwgOnNzbF9vcHRp b25zCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV4 Y29uL21pZGRsZXdhcmVzL2hpamFjay5yYgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMzIwNAAx MjUzNjAwNjcwNAAwMTY1MTMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDB3aGVlbAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAbW9kdWxlIEV4Y29uCiAgVkFMSURfUkVRVUVTVF9L RVlTIDw8IDpoaWphY2tfYmxvY2sKCiAgbW9kdWxlIE1pZGRsZXdhcmUKICAg ICMgSGlqYWNrIGlzIGFuIEV4Y29uIG1pZGRsZXdhcmUgd2hpY2ggcGFyc2Vz IHJlc3BvbnNlIGhlYWRlcnMgYW5kIHRoZW4KICAgICMgeWllbGRzIHRoZSB1 bmRlcmx5aW5nIFRDUCBzb2NrZXQgZm9yIHJhdyBUQ1AgY29tbXVuaWNhdGlv biAodXNlZCB0bwogICAgIyBhdHRhY2ggdG8gU1RESU4gb2YgY29udGFpbmVy cykuCiAgICBjbGFzcyBIaWphY2sgPCBCYXNlCiAgICAgIGRlZiBidWlsZF9y ZXNwb25zZShzdGF0dXMsIHNvY2tldCkKICAgICAgICByZXNwb25zZSA9IHsK ICAgICAgICAgIDpib2R5ICAgICAgICAgID0+ICcnLAogICAgICAgICAgOmhl YWRlcnMgICAgICAgPT4gRXhjb246OkhlYWRlcnMubmV3LAogICAgICAgICAg OnN0YXR1cyAgICAgICAgPT4gc3RhdHVzLAogICAgICAgICAgOnJlbW90ZV9p cCAgICAgPT4gc29ja2V0LnJlc3BvbmRfdG8/KDpyZW1vdGVfaXApICYmCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQucmVtb3RlX2lwLAog ICAgICAgIH0KICAgICAgICBpZiBzb2NrZXQuZGF0YVs6c2NoZW1lXSA9fiAv XihodHRwcz98dGNwKSQvCiAgICAgICAgICByZXNwb25zZS5tZXJnZSh7CiAg ICAgICAgICAgIDpsb2NhbF9wb3J0ICAgID0+IHNvY2tldC5yZXNwb25kX3Rv Pyg6bG9jYWxfcG9ydCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc29ja2V0LmxvY2FsX3BvcnQsCiAgICAgICAgICAgIDpsb2NhbF9hZGRy ZXNzID0+IHNvY2tldC5yZXNwb25kX3RvPyg6bG9jYWxfYWRkcmVzcykgJiYK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LmxvY2FsX2Fk ZHJlc3MKICAgICAgICAgIH0pCiAgICAgICAgZW5kCiAgICAgICAgcmVzcG9u c2UKICAgICAgZW5kCgogICAgICBkZWYgcmVzcG9uc2VfY2FsbChkYXR1bSkK ICAgICAgICBpZiBkYXR1bVs6aGlqYWNrX2Jsb2NrXQogICAgICAgICAgIyBO ZWVkIHRvIHByb2Nlc3MgdGhlIHJlc3BvbnNlIGhlYWRlcnMgaGVyZSByYXRo ZXIgdGhhbiBpbgogICAgICAgICAgIyBFeGNvbjo6TWlkZGxld2FyZTo6UmVz cG9uc2VQYXJzZXIgYXMgdGhlIHJlc3BvbnNlIHBhcnNlciB3aWxsCiAgICAg ICAgICAjIGJsb2NrIHRyeWluZyB0byByZWFkIHRoZSBib2R5LgogICAgICAg ICAgc29ja2V0ID0gZGF0dW1bOmNvbm5lY3Rpb25dLnNlbmQoOnNvY2tldCkK CiAgICAgICAgICAjIGMuZi4gRXhjb246OlJlc3BvbnNlLnBhcnNlCiAgICAg ICAgICB1bnRpbCBtYXRjaCA9IC9eSFRUUFwvXGQrXC5cZCtccyhcZHszfSlc cy8ubWF0Y2goc29ja2V0LnJlYWRsaW5lKTsgZW5kCiAgICAgICAgICBzdGF0 dXMgPSBtYXRjaFsxXS50b19pCgogICAgICAgICAgZGF0dW1bOnJlc3BvbnNl XSA9IGJ1aWxkX3Jlc3BvbnNlKHN0YXR1cywgc29ja2V0KQoKICAgICAgICAg IEV4Y29uOjpSZXNwb25zZS5wYXJzZV9oZWFkZXJzKHNvY2tldCwgZGF0dW0p CiAgICAgICAgICBkYXR1bVs6aGlqYWNrX2Jsb2NrXS5jYWxsIHNvY2tldC5p bnN0YW5jZV92YXJpYWJsZV9nZXQoOkBzb2NrZXQpCiAgICAgICAgZW5kCgog ICAgICAgIEBzdGFjay5yZXNwb25zZV9jYWxsKGRhdHVtKQogICAgICBlbmQK ICAgIGVuZAogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARG9ja2VyZmlsZQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDAA MDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMDM3ADEyNTUwNDMwNjIxADAxMzMw MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAB1c3RhcgAwMHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAw MDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm cm9tIDA2NTIxOGQ1NGQ3ZAphZGQgbGliIC9saWIKAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAA= headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - application/json response: status: code: 200 message: headers: Content-Type: - application/json Date: - Sun, 12 Jul 2015 09:21:21 GMT body: encoding: UTF-8 string: "{\"stream\":\"Step 0 : FROM 065218d54d7d\\n\"}\r\n{\"stream\":\" ---\\u003e 065218d54d7d\\n\"}\r\n{\"stream\":\"Step 1 : ADD lib /lib\\n\"}\r\n{\"stream\":\" ---\\u003e c6204e3c0a2b\\n\"}\r\n{\"stream\":\"Removing intermediate container eef339f931c7\\n\"}\r\n{\"stream\":\"Successfully built c6204e3c0a2b\\n\"}\r\n" http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: post uri: "/v1.16/containers/create" body: encoding: UTF-8 string: '{"Image":"c6204e3c0a2b","Cmd":["ls","-a","/lib/docker"]}' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - application/json response: status: code: 201 message: headers: Content-Type: - application/json Date: - Sun, 12 Jul 2015 09:21:22 GMT Content-Length: - '90' body: encoding: UTF-8 string: | {"Id":"6802b274b8a84faaa8298043b6088bb1f3b52106591038170c40c5399b295ce7","Warnings":null} http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: post uri: "/v1.16/containers/6802b274b8a84faaa8298043b6088bb1f3b52106591038170c40c5399b295ce7/start" body: encoding: UTF-8 string: "{}" headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - application/json response: status: code: 204 message: headers: Date: - Sun, 12 Jul 2015 09:21:22 GMT body: encoding: UTF-8 string: '' http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: post uri: "/v1.16/containers/6802b274b8a84faaa8298043b6088bb1f3b52106591038170c40c5399b295ce7/wait" body: encoding: US-ASCII string: '' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - text/plain response: status: code: 200 message: headers: Content-Type: - application/json Date: - Sun, 12 Jul 2015 09:21:22 GMT Content-Length: - '17' body: encoding: UTF-8 string: | {"StatusCode":0} http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: get uri: "/v1.16/containers/6802b274b8a84faaa8298043b6088bb1f3b52106591038170c40c5399b295ce7/logs?stdout=true" body: encoding: US-ASCII string: '' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - text/plain response: status: code: 200 message: headers: Date: - Sun, 12 Jul 2015 09:21:22 GMT Content-Type: - application/octet-stream body: encoding: UTF-8 string: !binary |- AQAAAAAAAAIuCgEAAAAAAAADLi4KAQAAAAAAAAhiYXNlLnJiCgEAAAAAAAAO Y29ubmVjdGlvbi5yYgoBAAAAAAAADWNvbnRhaW5lci5yYgoBAAAAAAAACWVy cm9yLnJiCgEAAAAAAAAJZXZlbnQucmIKAQAAAAAAAAhleGVjLnJiCgEAAAAA AAAJaW1hZ2UucmIKAQAAAAAAAAxtZXNzYWdlcy5yYgoBAAAAAAAAEm1lc3Nh Z2VzX3N0YWNrLnJiCgEAAAAAAAANcmFrZV90YXNrLnJiCgEAAAAAAAAIdXRp bC5yYgoBAAAAAAAAC3ZlcnNpb24ucmIK http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: post uri: "/v1.16/containers/6802b274b8a84faaa8298043b6088bb1f3b52106591038170c40c5399b295ce7/wait" body: encoding: US-ASCII string: '' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - text/plain response: status: code: 200 message: headers: Content-Type: - application/json Date: - Sun, 12 Jul 2015 09:21:22 GMT Content-Length: - '17' body: encoding: UTF-8 string: | {"StatusCode":0} http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: delete uri: "/v1.16/containers/6802b274b8a84faaa8298043b6088bb1f3b52106591038170c40c5399b295ce7" body: encoding: US-ASCII string: '' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - text/plain response: status: code: 204 message: headers: Date: - Sun, 12 Jul 2015 09:21:22 GMT body: encoding: UTF-8 string: '' http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT - request: method: delete uri: "/v1.16/images/c6204e3c0a2b" body: encoding: US-ASCII string: '' headers: User-Agent: - Swipely/Docker-API 1.21.4 Content-Type: - text/plain response: status: code: 200 message: headers: Content-Type: - application/json Date: - Sun, 12 Jul 2015 09:21:22 GMT Content-Length: - '81' body: encoding: UTF-8 string: |- [{"Deleted":"c6204e3c0a2bb6d7affd7d578040f9dfcb68c44bd8d5db3b27251b4630ad47db"} ] http_version: recorded_at: Sun, 12 Jul 2015 09:21:22 GMT recorded_with: VCR 2.9.3