From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= Subject: Re: [PATCH] hotplug/Linux: add iscsi block hotplug script Date: Thu, 25 Apr 2013 14:32:25 +0200 Message-ID: <51792259.6090107@citrix.com> References: <1366821112-50951-1-git-send-email-roger.pau@citrix.com> <1366822108.20256.394.camel@zakaz.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1366822108.20256.394.camel@zakaz.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: Ian Jackson , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org T24gMjQvMDQvMTMgMTg6NDgsIElhbiBDYW1wYmVsbCB3cm90ZToKPiBPbiBXZWQsIDIwMTMtMDQt MjQgYXQgMTc6MzEgKzAxMDAsIFJvZ2VyIFBhdSBNb25uZSB3cm90ZToKPj4gVGhpcyBob3RwbHVn IHNjcmlwdCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBJRVQgYW5kIE5ldEJTRCBpU0NTSSB0YXJnZXRz LAo+PiB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLgo+Pgo+PiBUaGlzIGhvdHBsdWcgc2NyaXB0IHdp bGwgb25seSB3b3JrIHdpdGggUFYgZ3Vlc3RzIG5vdCB1c2luZyBweWdydWIuCj4gCj4gVGhhbmtz LiBEb2VzIHRoaXMgbmVlZCBhbnkgZG9jcyBzb21ld2hlcmUsIGUuZy4gaG93IHRvIGZvcm1hdCB0 aGUgdGFyZ2V0Cj4gc3BlYz8KPiAKPiBJcyB0aGlzIGRlcml2ZWQgZnJvbSBhbnkgb2YgdGhlIG90 aGVyIGJsb2NrLWlzY3NpIHNjcmlwdHMgZmxvYXRpbmcKPiBhcm91bmQgb24gdGhlIG5ldD8KPiAK Pj4gU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ Cj4+IENjOiBJYW4gQ2FtcGJlbGwgPGlhbi5jYW1wYmVsbEBjaXRyaXguY29tPgo+PiBDYzogSWFu IEphY2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+Cj4+IC0tLQo+PiBDaGFuZ2VzIGR1ZSB0 byA0LjMgcmVsZWFzZSBmcmVlemU6Cj4+ICAqIFdlIGNhbiBubyBsb25nZXIgcHJvdmlkZSBhIHVz ZXIvcGFzc3dvcmQsIGJlY2F1c2UgdGhleSB3aWxsIGJlCj4+ICAgIHN0b3JlZCBpbiB4ZW5zdG9y ZSAicGFyYW1zIiBiYWNrZW5kIG5vZGUsIHdoaWNoIGNhbiBiZSByZWFkIGJ5IHRoZQo+PiAgICBn dWVzdC4KPj4gICogT25seSB3b3JrcyB3aXRoIFBWIGRvbWFpbnMgYmVjYXVzZSB3ZSBkb24ndCBo YXZlIGEgaG9vayBpbiBsaWJ4bCB0bwo+PiAgICBwYXNzIHRoZSBibG9jayBkZXZpY2UgY3JlYXRl ZCBieSB0aGUgc2NyaXB0IHRvIFFlbXUuCj4+ICAqIERvZXNuJ3Qgd29yayB3aXRoIHB5Z3J1YiBi ZWNhdXNlIHdlIGRvbid0IGNhbGwgdGhlIHNjcmlwdCB1bnRpbAo+PiAgICBweWdydWIgaGFzIGFs cmVhZHkgYmVlbiBleGVjdXRlZCwgYW5kIGV2ZW4gaWYgd2UgY2FsbGVkIGl0IGVhcmxpZXIKPj4g ICAgd2Ugc3RpbGwgbmVlZCBhIGhvb2sgaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgcmlnaHQgYmxv Y2sgZGV2aWNlIHRvCj4+ICAgIHB5Z3J1Yi4KPj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4gICogQWRk IC1lIHRvIHNjcmlwdCBzaGViYW5nLCBhbmQgdXNlICdzZXQgK2UnIGlmIHdlIGtub3cgaG90cGx1 Zwo+PiAgICBleGVjdXRpb24gbWlnaHQgZmFpbC4KPj4gLS0tCj4+ICB0b29scy9ob3RwbHVnL0xp bnV4L01ha2VmaWxlICAgIHwgICAgMSArCj4+ICB0b29scy9ob3RwbHVnL0xpbnV4L2Jsb2NrLWlz Y3NpIHwgIDE5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIDIg ZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCj4+ICBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvaG90cGx1Zy9MaW51eC9ibG9jay1pc2NzaQo+Pgo+PiBkaWZm IC0tZ2l0IGEvdG9vbHMvaG90cGx1Zy9MaW51eC9NYWtlZmlsZSBiL3Rvb2xzL2hvdHBsdWcvTGlu dXgvTWFrZWZpbGUKPj4gaW5kZXggMDYwNTU1OS4uOThjNzczOCAxMDA2NDQKPj4gLS0tIGEvdG9v bHMvaG90cGx1Zy9MaW51eC9NYWtlZmlsZQo+PiArKysgYi90b29scy9ob3RwbHVnL0xpbnV4L01h a2VmaWxlCj4+IEBAIC0yMSw2ICsyMSw3IEBAIFhFTl9TQ1JJUFRTICs9IGJsa3RhcAo+PiAgWEVO X1NDUklQVFMgKz0geGVuLWhvdHBsdWctY2xlYW51cAo+PiAgWEVOX1NDUklQVFMgKz0gZXh0ZXJu YWwtZGV2aWNlLW1pZ3JhdGUKPj4gIFhFTl9TQ1JJUFRTICs9IHZzY3NpCj4+ICtYRU5fU0NSSVBU UyArPSBibG9jay1pc2NzaQo+PiAgWEVOX1NDUklQVF9EQVRBID0geGVuLXNjcmlwdC1jb21tb24u c2ggbG9ja2luZy5zaCBsb2dnaW5nLnNoCj4+ICBYRU5fU0NSSVBUX0RBVEEgKz0geGVuLWhvdHBs dWctY29tbW9uLnNoIHhlbi1uZXR3b3JrLWNvbW1vbi5zaCB2aWYtY29tbW9uLnNoCj4+ICBYRU5f U0NSSVBUX0RBVEEgKz0gYmxvY2stY29tbW9uLnNoCj4+IGRpZmYgLS1naXQgYS90b29scy9ob3Rw bHVnL0xpbnV4L2Jsb2NrLWlzY3NpIGIvdG9vbHMvaG90cGx1Zy9MaW51eC9ibG9jay1pc2NzaQo+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi4zY2Q2ZTM0Cj4+IC0tLSAv ZGV2L251bGwKPj4gKysrIGIvdG9vbHMvaG90cGx1Zy9MaW51eC9ibG9jay1pc2NzaQo+PiBAQCAt MCwwICsxLDE5OCBAQAo+PiArIyEvYmluL3NoIC1lCj4gCj4gRG9lcyB0aGlzIHJlbHkgb24gYW55 IGJhc2hpc21zPyBNb3N0IG9mIHRoZSBvdGhlciBzY3JpcHRzIHVzZSBiYXNoIGhlcmUsCj4gYW5k IEknZCBiZSBhIGJpdCB3b3JyaWVkIGFib3V0IGJhc2hpc21zIGluIHRoZSBjb21tb24gY29kZS4K ClRoaXMgc2NyaXB0IG9yaWdpbmFsbHkgZGlkbid0IHVzZSBhbnkgYmFzaGlzbXMsIGJ1dCBpZiBJ IGluY2x1ZGUKYmxvY2stY29tbW9uLnNoIEkgaGF2ZSB0byB1c2UgYmFzaCBmb3Igc3VyZS4KCj4g Cj4+ICsjCj4+ICsjIE9wZW4taVNDU0kgWGVuIGJsb2NrIGRldmljZSBob3RwbHVnIHNjcmlwdAo+ PiArIwo+PiArIyBBdXRob3IgUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ Cj4+ICsjCj4+ICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+ICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+PiArIyBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuMSBvbmx5LiB3aXRoIHRoZSBz cGVjaWFsCj4+ICsjIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VO U0UuCj4+ICsjCj4+ICsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+PiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiArIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+ICsjIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+PiArCj4+ICty ZW1vdmVfbGFiZWwoKQo+PiArewo+PiArICAgIGVjaG8gJDEgfCBzZWQgInMvXlwoIiQyIlwpLy8i Cj4+ICt9Cj4+ICsKPj4gK2NoZWNrX3Rvb2xzKCkKPj4gK3sKPj4gKyAgICBpZiAhIHR5cGUgaXNj c2lhZG0gPiAvZGV2L251bGwgMj4mMTsgdGhlbgo+IAo+IGFwcGFyZW50bHkgY29tbWFuZCAtdiBp cyBtb3JlIHBvcnRhYmxlPwoKT0ssIEkgaGF2ZSBubyBwcmVmZXJlbmNlLgoKPiAKPj4gKyAgICAg ICAgZWNobyAiVW5hYmxlIHRvIGZpbmQgaXNjc2lhZG0gdG9vbCIKPj4gKyAgICAgICAgcmV0dXJu IDEKPiAKPiBFcnJvciBwYXRocyBzaG91bGQgdXNlIGZhdGFsKCkgZnJvbSB4ZW4taG90cGx1Zy1j b21tb24uc2ggc28gdGhlIGVycm9yCj4gaXMgcHJvcGFnYXRlZCB0byB4ZW5zdG9yZSBhbmQgbGli eGwgY2FuIHByaW50IGl0LgoKWWVzLCBpZiB3ZSBjYWxsIHRoZSBzY3JpcHQgZGlyZWN0bHkgZnJv bSBsaWJ4bCB0aGUgb3V0cHV0IGZvcm0gdGhlCnNjcmlwdCB3aWxsIGJlIGxvZ2dlZCBieSBsaWJ4 bCwgYnV0IHNpbmNlIHRoaXMgc2NyaXB0IGNhbiBhbHNvIGJlIGNhbGxlZApmcm9tIHVkZXYgSSBo YXZlIHRvIHVzZSBmYXRhbC4KCj4+ICsgICAgZmkKPj4gKyAgICBpZiBbICIkbXVsdGlwYXRoIiA9 ICJ5IiBdICYmICEgdHlwZSBtdWx0aXBhdGggPiAvZGV2L251bGwgMj4mMTsgdGhlbgo+PiArICAg ICAgICBlY2hvICJVbmFibGUgdG8gZmluZCBtdWx0aXBhdGgiCj4+ICsgICAgICAgIHJldHVybiAx Cj4+ICsgICAgZmkKPj4gK30KPj4gKwo+PiArIyBTZXRzIHRoZSBmb2xsb3dpbmcgZ2xvYmFsIHZh cmlhYmxlcyBiYXNlZCBvbiB0aGUgcGFyYW1zIGZpZWxkIHBhc3NlZCBpbiBhcwo+PiArIyBhIHBh cmFtZXRlcjogaXFuLCBwb3J0YWwsIGF1dGhfbWV0aG9kLCB1c2VyLCBtdWx0aXBhdGgsIHBhc3N3 b3JkCj4+ICtwYXJzZV90YXJnZXQoKQo+PiArewo+PiArICAgICMgc2V0IG11bHRpcGF0aCBkZWZh dWx0IHZhbHVlCj4+ICsgICAgbXVsdGlwYXRoPSJuIgo+PiArICAgIGZvciBwYXJhbSBpbiAkKGVj aG8gIiQxIiB8IHRyICIsIiAiXG4iKQo+PiArICAgIGRvCj4+ICsgICAgICAgIGNhc2UgJHBhcmFt IGluCj4+ICsgICAgICAgIGlxbj0qKQo+PiArICAgICAgICAgICAgaXFuPSQocmVtb3ZlX2xhYmVs ICRwYXJhbSAiaXFuPSIpCj4+ICsgICAgICAgICAgICA7Owo+PiArICAgICAgICBwb3J0YWw9KikK Pj4gKyAgICAgICAgICAgIHBvcnRhbD0kKHJlbW92ZV9sYWJlbCAkcGFyYW0gInBvcnRhbD0iKQo+ PiArICAgICAgICAgICAgOzsKPj4gKyAgICAgICAgbXVsdGlwYXRoPSopCj4+ICsgICAgICAgICAg ICBtdWx0aXBhdGg9JChyZW1vdmVfbGFiZWwgJHBhcmFtICJtdWx0aXBhdGg9IikKPj4gKyAgICAg ICAgICAgIDs7Cj4+ICsgICAgICAgIGVzYWMKPj4gKyAgICBkb25lCj4+ICsgICAgaWYgWyAteiAi JGlxbiIgXSB8fCBbIC16ICIkcG9ydGFsIiBdOyB0aGVuCj4+ICsgICAgICAgIGVjaG8gImlxbj0g YW5kIHBvcnRhbD0gYXJlIHJlcXVpcmVkIHBhcmFtZXRlcnMiCj4+ICsgICAgICAgIHJldHVybiAx Cj4+ICsgICAgZmkKPj4gKyAgICBpZiBbICIkbXVsdGlwYXRoIiAhPSAieSIgXSAmJiBbICIkbXVs dGlwYXRoIiAhPSAibiIgXTsgdGhlbgo+PiArICAgICAgICBlY2hvICJtdWx0aXBhdGggdmFsaWQg dmFsdWVzIGFyZSB5IGFuZCBuLCAkbXVsdGlwYXRoIG5vdCBhIHZhbGlkIHZhbHVlIgo+PiArICAg ICAgICByZXR1cm4gMQo+PiArICAgIGZpCj4+ICsgICAgcmV0dXJuIDAKPj4gK30KPj4gKwo+PiAr IyBPdXRwdXRzIHRoZSBibG9jayBkZXZpY2UgbWFqb3I6bWlub3IKPj4gK2RldmljZV9tYWpvcl9t aW5vcigpCj4+ICt7Cj4+ICsgICAgc3RhdCAtTCAtYyAldDolVCAiJDEiCj4+ICt9Cj4gCj4gQ291 bGQgdXNlIGJsb2NrLWNvbW1vbi5zaCBwcm92aWRlZCBmdW5jdGlvbmFsaXR5IGhlcmUuCgpJJ3Zl IHJlbW92ZWQgdGhpcyBhbmQgdXNlZCB3cml0ZV9kZXYgaW5zdGVhZC4KCj4gCj4+ICsKPj4gKyMg U2V0cyAkZGV2IHRvIHBvaW50IHRvIHRoZSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1 ZSBpbiBpcW4KPj4gK2ZpbmRfZGV2aWNlKCkKPj4gK3sKPj4gKyAgICB3aGlsZSBbICEgLWUgL2Rl di9kaXNrL2J5LXBhdGgvKiIkaXFuIi1sdW4tMCBdOyBkbwo+PiArICAgICAgICBzbGVlcCAwLjEK Pj4gKyAgICBkb25lCj4gCj4gVGhpcyBsb29wIGlzIHBvdGVudGlhbGx5IGluZmluaXRlPyAoaS5l LiBpZiBzb21ldGhpbmcgaXMgYnJva2VuKQoKWWVzLCBJIHdhcyB0cnVzdGluZyB0aGUgdGltZW91 dCBpbiBsaWJ4bCB0byBwcmV2ZW50IHRoYXQsIGJ1dCBhZ2FpbgpzaW5jZSB0aGlzIGlzIG5vdCB1 c2luZyB0aGUgbmV3IGNhbGxpbmcgY29udmVudGlvbiBpdCBzaG91bGQgd29yawpwcm9wZXJseSB3 aXRoIHVkZXYgYW5kIEkgaGF2ZSBubyBpZGVhIGlmIHVkZXYgaGFzIGEgdGltZW91dCwgYnV0IHdl CnNob3VsZG4ndCByZWx5IG9uIHRoYXQuCgo+IAo+PiArICAgIHNldCArZQo+PiArICAgIHNkZGV2 PSQocmVhZGxpbmsgLWYgL2Rldi9kaXNrL2J5LXBhdGgvKiIkaXFuIi1sdW4tMCkKPj4gKyAgICBz ZXQgLWUKPiAKPiBDYW4ndCB5b3UganVzdCB0byB8fCB0cnVlIGluc3RlYWQgb2YgZnJvYmJpbmcg Ky8tZT8gT3IgdXNlCj4gZG9fd2l0aG91dF9lcnJvcj8KCnx8IHRydWUgc2VlbXMgYXBwcm9wcmlh dGUgaW4gdGhpcyBjYXNlLgoKPj4gKyAgICBpZiBbICEgLWIgIiRzZGRldiIgXTsgdGhlbgo+PiAr ICAgICAgICBlY2hvICJVbmFibGUgdG8gZmluZCBhdHRhY2hlZCBkZXZpY2UgcGF0aCIKPj4gKyAg ICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+PiArICAgIGlmIFsgIiRtdWx0aXBhdGgiID0gInki IF07IHRoZW4KPj4gKyAgICAgICAgbWRldj0kKG11bHRpcGF0aCAtbGwgIiRzZGRldiIgfCBoZWFk IC0xIHwgYXdrICd7IHByaW50ICQxfScpCj4+ICsgICAgICAgIGlmIFsgISAtYiAvZGV2L21hcHBl ci8iJG1kZXYiIF07IHRoZW4KPj4gKyAgICAgICAgICAgIGVjaG8gIlVuYWJsZSB0byBmaW5kIGF0 dGFjaGVkIGRldmljZSBtdWx0aXBhdGgiCj4+ICsgICAgICAgICAgICByZXR1cm4gMQo+PiArICAg ICAgICBmaQo+PiArICAgICAgICBkZXY9Ii9kZXYvbWFwcGVyLyRtZGV2Igo+PiArICAgIGVsc2UK Pj4gKyAgICAgICAgZGV2PSIkc2RkZXYiCj4+ICsgICAgZmkKPj4gKyAgICByZXR1cm4gMAo+PiAr fQo+PiArCj4+ICsjIEF0dGFjaGVzIHRoZSB0YXJnZXQgJGlxbiBpbiAkcG9ydGFsIGFuZCBzZXRz ICRkZXYgdG8gcG9pbnQgdG8gdGhlCj4+ICsjIG11bHRpcGF0aCBkZXZpY2UKPj4gK2F0dGFjaCgp Cj4+ICt7Cj4+ICsgICAgc2V0ICtlCj4+ICsgICAgaXNjc2lhZG0gLW0gbm9kZSAtLXRhcmdldG5h bWUgIiRpcW4iIC1wICIkcG9ydGFsIiAtLWxvZ2luID4gL2Rldi9udWxsIDI+JjEKPiAKPiBNaWdo dCB0aGUgZXJyb3IgbWVzc2FnZSBiZSB1c2VmdWwgaGVyZT8gaWYgeW91IGRvbid0IHJlZGlyZWN0 Cj4gdG8gL2Rldi9udWxsIHRoZW4geW91IGNhbiB1c2UgZXhlYyA+Pi90bXAvaG90cGx1Zy5sb2cg dHJpY2tzIHRvIGRlYnVnCj4gdGhpbmdzLi4uCgppc2NzaWFkbSBhbHdheXMgcHJpbnRzIG91dHB1 dCwgZXZlbiB3aGVuIHRoZSB0YXJnZXQgaXMgc3VjY2Vzc2Z1bGx5CmF0dGFjaGVkLCBhbmQgSSBo YXZlbid0IGZvdW5kIGFueSBvcHRpb24gdG8gcHJldmVudCBpdCwgc28gZm9yIG5vdyBJCmd1ZXNz IHdlIHdpbGwgaGF2ZSB0byByZWRpcmVjdCBpdCB0byAvZGV2L251bGwKCj4gCj4+ICsgICAgcmM9 JD8KPj4gKyAgICBzZXQgLWUKPj4gKyAgICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCj4+ICsgICAg ICAgIGVjaG8gIlVuYWJsZSB0byBjb25uZWN0IHRvIHRhcmdldCIKPj4gKyAgICAgICAgcmV0dXJu IDEKPj4gKyAgICBmaQo+PiArICAgIGZpbmRfZGV2aWNlCj4+ICsgICAgaWYgWyAkPyAtbmUgMCBd OyB0aGVuCj4+ICsgICAgICAgIGVjaG8gIlVuYWJsZSB0byBmaW5kIGlTQ1NJIGRldmljZSIKPj4g KyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+PiArICAgIHJldHVybiAwCj4+ICt9Cj4+ICsK Pj4gKyMgRGlzY292ZXJzIHRhcmdldHMgaW4gJHBvcnRhbCBhbmQgY2hlY2tzIHRoYXQgJGlxbiBp cyBvbmUgb2YgdGhvc2UgdGFyZ2V0cwo+PiArIyBBbHNvIHNldHMgdGhlIGF1dGggcGFyYW1ldGVy cyB0byBhdHRhY2ggdGhlIGRldmljZQo+PiArcHJlcGFyZSgpCj4+ICt7Cj4+ICsgICAgIyBDaGVj ayBpZiB0YXJnZXQgaXMgYWxyZWFkeSBvcGVuZWQKPj4gKyAgICBzZXQgK2UKPj4gKyAgICBpc2Nz aWFkbSAtbSBzZXNzaW9uIDI+JjEgfCBncmVwIC1xICIkaXFuIgo+PiArICAgIHJjPSQ/Cj4+ICsg ICAgc2V0IC1lCj4+ICsgICAgaWYgWyAkcmMgLWVxIDAgXTsgdGhlbgo+PiArICAgICAgICBlY2hv ICJEZXZpY2UgYWxyZWFkeSBvcGVuZWQiCj4+ICsgICAgICAgIHJldHVybiAxCj4+ICsgICAgZmkK Pj4gKyAgICAjIERpc2NvdmVyIHBvcnRhbCB0YXJnZXRzCj4+ICsgICAgc2V0ICtlCj4+ICsgICAg aXNjc2lhZG0gLW0gZGlzY292ZXJ5IC10IHN0IC1wICRwb3J0YWwgMj4mMSB8IGdyZXAgLXEgIiRp cW4iCj4+ICsgICAgcmM9JD8KPj4gKyAgICBzZXQgLWUKPj4gKyAgICBpZiBbICRyYyAtbmUgMCBd OyB0aGVuCj4+ICsgICAgICAgIGVjaG8gIk5vIG1hdGNoaW5nIHRhcmdldCBpcW4gZm91bmQiCj4+ ICsgICAgICAgIHJldHVybiAxCj4+ICsgICAgZmkKPj4gKyAgICByZXR1cm4gMAo+PiArfQo+PiAr Cj4+ICsjIEF0dGFjaGVzIHRoZSBkZXZpY2UgYW5kIHdyaXRlcyB4ZW5zdG9yZSBiYWNrZW5kIGVu dHJpZXMgdG8gY29ubmVjdAo+PiArIyB0aGUgZGV2aWNlCj4+ICthZGQoKQo+PiArewo+PiArICAg IGF0dGFjaAo+PiArICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgo+PiArICAgICAgICBlY2hvICJG YWlsZWQgdG8gYXR0YWNoIGRldmljZSIKPj4gKyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+ PiArICAgIG1tPSQoZGV2aWNlX21ham9yX21pbm9yICIkZGV2IikKPj4gKyAgICB4ZW5zdG9yZS13 cml0ZSAiJFhFTkJVU19QQVRIL3BoeXNpY2FsLWRldmljZSIgIiRtbSIKPiAKPiB0aGlzID09IHdy aXRlX2RldgoKRG9uZQoKPiAKPj4gKyAgICByZXR1cm4gMAo+PiArfQo+PiArCj4+ICsjIERpc2Nv bm5lY3RzIHRoZSBkZXZpY2UKPj4gK3JlbW92ZSgpCj4+ICt7Cj4+ICsgICAgZmluZF9kZXZpY2UK Pj4gKyAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KPj4gKyAgICAgICAgZWNobyAiVW5hYmxlIHRv IGZpbmQgZGV2aWNlIgo+PiArICAgICAgICByZXR1cm4gMQo+PiArICAgIGZpCj4+ICsgICAgc2V0 ICtlCj4+ICsgICAgaXNjc2lhZG0gLW0gbm9kZSAtLXRhcmdldG5hbWUgIiRpcW4iIC1wICIkcG9y dGFsIiAtLWxvZ291dCA+IC9kZXYvbnVsbCAyPiYxCj4+ICsgICAgcmM9JD8KPj4gKyAgICBzZXQg LWUKPj4gKyAgICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCj4+ICsgICAgICAgIGVjaG8gIlVuYWJs ZSB0byBkaXNjb25uZWN0IHRhcmdldCIKPj4gKyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+ PiArICAgIHJldHVybiAwCj4+ICt9Cj4+ICsKPj4gK2NvbW1hbmQ9JDEKPj4gK3NldCArZQo+PiAr dGFyZ2V0PSQoeGVuc3RvcmUtcmVhZCAkWEVOQlVTX1BBVEgvcGFyYW1zKQo+PiArc2V0IC1lCj4+ ICtpZiBbIC16ICIkdGFyZ2V0IiBdOyB0aGVuCj4+ICsgICAgZWNobyAiTm8gaW5mb3JtYXRpb24g YWJvdXQgdGhlIHRhcmdldCIKPj4gKyAgICBleGl0IDEKPj4gK2ZpCj4+ICsKPj4gK3BhcnNlX3Rh cmdldCAiJHRhcmdldCIKPj4gKwo+PiArY2hlY2tfdG9vbHMgfHwgZXhpdCAxCj4+ICsKPj4gK2Nh c2UgJGNvbW1hbmQgaW4KPj4gK2FkZCkKPj4gKyAgICBwcmVwYXJlCj4+ICsgICAgYWRkCj4+ICsg ICAgZXhpdCAkPwo+PiArICAgIDs7Cj4+ICtyZW1vdmUpCj4+ICsgICAgcmVtb3ZlCj4+ICsgICAg ZXhpdCAkPwo+PiArICAgIDs7Cj4gCj4gZXhpdCAxIGZvciB0aGUgZGVmYXVsdCBjYXNlPwoKWWVz Cgo+PiArZXNhYwo+IAo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==