From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95Etfkk223982 for ; Tue, 5 Oct 2010 09:55:42 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5482EAC006 for ; Tue, 5 Oct 2010 07:56:42 -0700 (PDT) Subject: XFS Filename Hash and metadump From: Alex Elder Date: Tue, 05 Oct 2010 09:55:47 -0500 Message-ID: <1286290547.1960.3.camel@doink> Mime-Version: 1.0 Reply-To: aelder@sgi.com List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com SW4geGZzX2RiLCB0aGUgbWV0YWR1bXAgY3JlYXRpb24gcHJvY2VkdXJlIG9wdGlvbmFsbHkgYWxs b3dzIHlvdSB0bwpyZXBsYWNlIGFsbCBmaWxlIG5hbWVzIGluIHRoZSBkdW1wIHdpdGggb2JmdXNj YXRlZCB2ZXJzaW9ucyBvZiB0aG9zZQpuYW1lcy4gIFRoaXMgaGFzIHRvIGJlIGRvbmUgaW4gc3Vj aCBhIHdheSB0aGF0IHRoZSBoYXNoIHZhbHVlCmFzc29jaWF0ZWQgd2l0aCB0aGUgb2JmdXNjYXRl ZCBuYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBoYXNoIGFzc2lnbmVkCnRvIHRoZSBvcmlnaW5hbCBm aWxlLgoKVGhlIGFsZ29yaXRobSB0aGF0IGNyZWF0ZXMgdGhlc2Ugb2JmdXNjYXRlZCBmaWxlIG5h bWVzIGNyZWF0ZXMgdGhlbQpieSBnZW5lcmF0aW5nIGEgcmFuZG9tIHNldCBvZiBjaGFyYWN0ZXJz ICh1c2luZyB0aGUgZnVsbCA4LWJpdApyYW5nZSwgb25seSBkaXNhbGxvd2luZyAnLycgYW5kICdc MCcpIHVwIHRvIHRoZSBsYXN0IGZpdmUuICBBbG9uZwp0aGUgd2F5LCB0aGUgaGFzaCBmb3IgdGhl IG5hbWUgaXMgY29tcHV0ZWQsIGFuZCBpdC0tYWxvbmcgd2l0aCB0aGUKaGFzaCBmb3IgdGhlIG9y aWdpbmFsIGZpbGUtLWlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgdGhlIGxhc3QgZml2ZQpjaGFy YWN0ZXJzIG5lZWQgdG8gYmUgaW4gb3JkZXIgdG8gbWF0Y2guCgpUaGVyZSBhcmUgc29tZSBjYXNl cyBpbiB0aGlzIHNjaGVtZSwgaG93ZXZlciwgd2hlcmUgZmlsZXMgY2FuJ3QgZ2V0CmFuIGVxdWl2 YWxlbnQgbmFtZSB1c2luZyBnZW5lcmF0ZV9vYmZ1c2NhdGVkX25hbWUoKSBhcyBjdXJyZW50bHkK d3JpdHRlbiAob25lIG9mIHdoaWNoIEFya2FkaXVzeiBNacWba2lld2ljeiBmb3VuZCkuCgpCZWxv dyBJJ20gZ29pbmcgdG8gZGVzY3JpYmUgYSBiaXQgbW9yZSBzcGVjaWZpY2FsbHkgaG93IHRoZSBo YXNoCndvcmtzLCBhbmQgd2h5IHNvbWUgY2FzZXMgcnVuIGludG8gdHJvdWJsZS4gIEkgYWxzbyBk ZXNjcmliZSBhCndheSB0byBhZGp1c3QgdGhlIGFsZ29yaXRobSB0byBhdm9pZCB0aGlzIHBpdGZh bGwuCgoKWEZTIGNvbXB1dGVzIGEgZmlsZW5hbWUgaGFzaCBieSBhY2N1bXVsYXRpbmcgYSAzMi1i aXQgdmFsdWUgYnkKc2hpZnRpbmcgKHJvdGF0aW5nKSBhbmQgWE9SJ2luZyBlYWNoIGNoYXJhY3Rl ciBpbiB0aGUgbmFtZS4KCi0gQSAzMi1iaXQgYWNjdW11bGF0b3IgaXMgaW5pdGlhbGx5IHplcm8t ZmlsbGVkLgpUaGVuIHdpdGggZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGZpbGUgbmFtZToKLSBSb3Rh dGUgTGVmdCB0aGUgY29udGVudHMgb2YgdGhlIDMyLWJpdCBhY2N1bXVsYXRvciBieSA3IGJpdHMK LSBYT1IgdGhlIG5leHQgYnl0ZSBvZiB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGxlYXN0LXNpZ25p ZmljYW50IGJ5dGUKICBvZiB0aGUgYWNjdW11bGF0b3IKClRoZSBhbGdvcml0aG0gZm9yIGdlbmVy YXRpbmcgYW5vdGhlciBmaWxlbmFtZSBoYXZpbmcgdGhlIHNhbWUgbGVuZ3RoCmFuZCBzYW1lIGhh c2ggc3RhcnRzIGJ5IGdlbmVyYXRpbmcgYSBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzIChvdGhlcgp0 aGFuICdcMCcgYW5kICcvJykgdG8gcmVwbGFjZSBlYWNoIGJ5dGUgaW4gdGhlIG9yaWdpbmFsIG5h bWUsIGZvcgphbGwgYnV0IGZpdmUgY2hhcmFjdGVycyBpbiB0aGUgbmFtZS4gIFRoZSBpbmNyZW1l bnRhbCBoYXNoIGZvciB0aGUKbmV3IGZpbGUgbmFtZSBpcyBjb21wdXRlZCBhcyBlYWNoIGJ5dGUg aXMgcmVwbGFjZWQuICBUaGUgbGFzdCBmaXZlCmNoYXJhY3RlcnMgYXJlIHRoZW4gc2VsZWN0ZWQg c3VjaCB0aGF0IHRoZXkgY29udHJpYnV0ZSB0byB0aGUgaGFzaApleGFjdGx5IHdoYXQgaXMgbmVl ZGVkIHRvIHByb2R1Y2UgYSBoYXNoIHRoYXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwKbmFtZSdzIGhh c2guICBOb3RlIHRoYXQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGNvbWUgdXAgd2l0aCBhbgphbHRl cm5hdGl2ZSBuYW1lIGZvciBuYW1lcyBzaG9ydGVyIHRoYW4gZml2ZSBjaGFyYWN0ZXJzLgoKQXJr YWRpdXN6IE1pxZtraWV3aWN6IGZvdW5kIHRoYXQgYSBmaWxlIG5hbWVkICJSXDMyM1wyNTdORSIg Y2F1c2VkIGFuCmF0dGVtcHQgdG8gY3JlYXRlIGEgbWV0YWR1bXAgdG8gaGFuZy4gIFRoYXQgNS1j aGFyYWN0ZXIgZmlsZSBuYW1lLAppbnRlcnByZXRlZCBpbiBoZXhhZGVjaW1hbCwgaXM6IDB4NTIg ZDMgYWYgNGUgNDUsIGFuZCB3aGVuIHJ1bgp0aHJvdWdoIHRoZSBoYXNoaW5nIGFsZ29yaXRobSB0 aGUgcmVzdWx0IGlzIDB4M2E0YmU3NDAuCgpTaW5jZSB0aGVyZSBhcmUgb25seSBmaXZlIGNoYXJh Y3RlcnMgaW4gdGhpcyBuYW1lLCBubyByYW5kb20KY2hhcmFjdGVycyBhcmUgZ2VuZXJhdGVkIChz byB0aGUgaGFzaCB2YWx1ZSBiZWZvcmUgc2VsZWN0aW5nIHRoZQpsYXN0IGZpdmUgY2hhcmFjdGVy cyBpcyB6ZXJvKS4gIFRvIGRldGVybWluZSB0aGUgbGFzdCBmaXZlCmNoYXJhY3RlcnMsIHRoZSBh Y2N1bXVsYXRlZCBoYXNoICh6ZXJvIGluIHRoaXMgY2FzZSkgaXMgWE9SJ2Qgd2l0aAp0aGUgY29t cGxldGUgaGFzaCBmb3IgdGhlIG9yaWdpbmFsIGZpbGVuYW1lLiAgVGhlIHJlc3VsdGluZwpiaXRz LS1hZnRlciBhcHByb3ByaWF0ZSBzaGlmdGluZy0tZGVmaW5lIGV4YWN0bHkgdGhlIGJ5dGVzIHRv IHVzZSBzbwp0aGUgbmV3IGZpbGUgbmFtZSBoYXMgdGhlIHNhbWUgaGFzaCBhcyB0aGUgb3JpZ2lu YWwuICBJZiBvbmUgb2YKdGhvc2UgYnl0ZXMgaGFwcGVucyB0byBiZSBpbGxlZ2FsICgnXDAnIG9y ICcvJyksIHRoZSBwcm9jZXNzCnJlc3RhcnRzIGluIGhvcGVzIGEgZGlmZmVyZW50IHJhbmRvbSBz dHJpbmcgb2YgYnl0ZXMgd2lsbCBwcm9kdWNlCm9uZSB0aGF0IGRvZXMgd29yay4KClRoZSBwcm9i bGVtIGluIHRoaXMgY2FzZSBpcyB0aGF0IHRoZXJlIGFyZSBubyByYW5kb20gY2hhcmFjdGVycyBp bgp0aGUgbmFtZS4gIFNvIGlmIGFueSBjaGFyYWN0ZXIgZGljdGF0ZWQgYnkgdGhlIG9yaWdpbmFs IGhhc2ggaXMKaWxsZWdhbCwgaXQgd2lsbCBhbHdheXMgYmUgaWxsZWdhbCBhbmQgdGhlIHByb2Nl c3Mgd2lsbCByZXBlYXQKZm9yZXZlci4KClRoYXQgaXMgdGhlIGNhc2UgaGVyZS4gIEluIHRoZSAi UlwzMjNcMjU3TkUiIHN0cmluZywgb25lIG9mIHRoZQpjaGFyYWN0ZXJzIHRoYXQgY29tZXMgb3V0 IGFzIGEgbmVjZXNzYXJ5IGNvbXBvbmVudCBvZiB0aGUgb2JmdXNjYXRlZApuYW1lIGlzICcvJywg d2hpY2ggaXMgbm90IGFsbG93ZWQuICBIZW5jZSB0aGUgYWxnb3JpdGhtIGxvb3BzCndpdGhvdXQg dGVybWluYXRpbmcuCgoKU28gaG93IGRvIHdlIGZpeCB0aGlzPyAgV2UgY2FuIHR3ZWFrIHRoZSBh bGdvcml0aG0gYSBiaXQsIGJhc2VkIG9uIGEKZmV3IG9ic2VydmF0aW9ucywgYW5kIHRoZSByZXN1 bHQgd2lsbCBzdGlsbCBnZW5lcmF0ZSBmaWxlbmFtZXMKaGF2aW5nIHRoZSBkZXNpcmVkIHByb3Bl cnRpZXMgYnV0IHdpbGwgYWxzbyBhdm9pZCB0aGUgaW5maW5pdGUgbG9vcApwcm9ibGVtIGRlc2Ny aWJlZCBhYm92ZS4KCkxldCdzIGxvb2sgYXQgc29tZSBkZXRhaWxzLiAgSGVyZSBpcyBob3cgdGhl IGZpcnN0IChvZiB0aGUgbGFzdApmaXZlKSBieXRlIGlzIGNvbXB1dGVkOgogICAgICAgIG5ld25h bWVbbmFtZWxlbiAtIDRdID0gKG5ld2hhc2ggPj4gMjEpICYgMHg3ZjsKVGhlIGhhc2ggZm9yIHRo ZSBwcm9ibGVtIG5hbWUgaXMgMHgzYTRiMzc0MC4gIFRoZSByZXN1bHQgYWZ0ZXIgdGhlCnNoaWZ0 IGlzIDB4MWQyLCBhbmQgYWZ0ZXIgdGhlIG1hc2sgMHg1Mi4gIFRoYXQncyBhbiBPSyBjaGFyYWN0 ZXIuCgpUaGUgbmV4dCBieXRlIGlzIGNvbXB1dGVzIGxpa2UgdGhpczoKICAgICAgICBuZXduYW1l W25hbWVsZW4gLSAzXSA9IChuZXdoYXNoID4+IDE0KSAmIDB4N2Y7CkZvciB0aGUgcHJvYmxlbSBu YW1lIHRoZSBzaGlmdCBnaXZlcyAweGU5MmMsIGFuZCBhZnRlciB0aGUgbWFzayBpdCdzCjB4MmYu ICBUaGF0IGlzIE5PVCBPSywgaXQncyB0aGUgJy8nIGNoYXJhY3Rlci4gIEFuZCBzaW5jZSB0aGVy ZSB3YXMKbmV2ZXIgYW55IHJhbmRvbWl6YXRpb24gb2YgY2hhcmFjdGVycyBpbnZvbHZlZCwgdGhl cmUncyBubyBjaGFuY2UKdGhhdCByZXRyeWluZyB0aGUgYWxnb3JpdGhtIHdpbGwgY29tZSB1cCB3 aXRoIGFueSBvdGhlciByZXN1bHQuCgpJdCB0dXJucyBvdXQgdGhhdCB0aGlzIGlzIGp1c3Qgb25l IG9mIGEgd2hvbGUgY2xhc3Mgb2YgZmlsZSBuYW1lcwp0aGF0IHdpbGwgcnVuIGludG8gdGhpcyBw cm9ibGVtLiAgSSB3b3JrZWQgb3V0IGFuIGV4YW1wbGUgb2YgZWFjaCBvZgp0aGVzZS4KICAgICAg ICAiXDEyMFwwMDFcMjU3XDExNlwxMDUiLCAvKiBCeXRlIDAgKGZpcnN0KSBtdXN0IGJlIHplcm8g Ki8KICAgICAgICAiXDEyMlwwMDFcMjU3XDExNlwxMDUiLCAvKiBCeXRlIDEgbXVzdCBiZSB6ZXJv ICovCiAgICAgICAgIlwxMjJcMzIzXDIwMFwxMTZcMTA1IiwgLyogQnl0ZSAyIG11c3QgYmUgemVy byAqLwogICAgICAgICJcMTIyXDMyM1wyNTRcMDAxXDMwNSIsIC8qIEJ5dGUgMyBtdXN0IGJlIHpl cm8gKi8KICAgICAgICAiXDEyMlwzMjNcMjQ3XDExNlwwMDUiLCAvKiBCeXRlIDQgKGxhc3QpIG11 c3QgYmUgemVybyAqLwoKICAgICAgICAiXDE3MlwwNTdcMTQ3XDExNlwxMDUiLCAvKiBCeXRlIDEg bXVzdCBiZSAnLycgKi8KICAgICAgICAiXDEyMlwzMjBcMDU3XDExNlwxMDUiLCAvKiBCeXRlIDIg bXVzdCBiZSAnLycgKi8KICAgICAgICAiXDEyMlwzMjNcMjQ3XDA1N1wxMDUiLCAvKiBCeXRlIDMg bXVzdCBiZSAnLycgKi8KICAgICAgICAiXDAwMlwzMjNcMjQ3XDExNlwwNTciLCAvKiBCeXRlIDQg KGxhc3QpIG11c3QgYmUgJy8nICovCihJIGRpZG4ndCBjb21lIHVwIHdpdGggb25lIGluIHdoaWNo IHRoZSBmaXJzdCBieXRlIGVuZHMgdXAgaGF2aW5nIHRvCmJlIGEgJy8nLikgIEFsbCBvZiB0aGUg YWJvdmUgYXJlIDUtY2hhcmFjdGVyIG5hbWVzLiAgSXQgbWF5IGJlIHRoYXQKd2l0aCBsb25nZXIg bmFtZXMgdGhlIHJhbmRvbWl6YXRpb24gb2YgY2hhcmFjdGVycyBnaXZlIHRoZQpvcHBvcnR1bml0 eSB0byBhdm9pZCB0aGlzLiAgQW5kIGlmIHNvLCBhIHZlcnkgc2ltcGxlIHNvbHV0aW9uIG1pZ2h0 CmJlIHRvIGp1c3QgZXh0ZW5kIHRoZSBsZW5ndGggb2YgZmlsZSBuYW1lcyB0aGF0IGFyZSBub3Qg b2JmdXNjYXRlZApmcm9tIDQgdG8gKHNheSkgOC4gIChCdXQgdGhhdCBwcm9iYWJseSBtZWFucyBh IExPVCBtb3JlIGZpbGVzJyBuYW1lcwphcmUgcHV0IGluIHRoZSBtZXRhZHVtcCB3aXRob3V0IG9i ZnVzY2F0aW9uLikKCgpGaXJzdCBvYnNlcnZhdGlvbiBvbiB0aGUgYWxnb3JpdGhtLiAgV2h5IGlz IHRoZSBoaWdoIGJpdCBvZiBlYWNoCmNvbXB1dGVkIGNoYXJhY3RlciBtYXNrZWQgb2ZmPyAgVGhl IHJlYXNvbiBpcyB0aGF0IHRoZSBoaWdoIGJpdCBvZgplYWNoIGJ5dGUgaXMgWE9SJ2Qgd2l0aCB0 aGUgbG93IGJpdCBvZiBpdHMgbmVpZ2hib3IsIGFuZCBtYXNraW5nIHRoZQpoaWdoIGJpdCBvZmYg YWxsb3dzIHRoZSBsb3cgYml0IG9mIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgdG8gYmUKc2VsZWN0 ZWQgd2l0aG91dCBjb25jZXJuIGFib3V0IHRoZSBlZmZlY3Qgb2YgdGhlIFhPUi4KClNlY29uZCBv YnNlcnZhdGlvbi4gIE1hc2tpbmcgb2ZmIHRoZSBsb3cgYml0IGNvdWxkIGJlIHVzZWQgaW5zdGVh ZAp0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBqdXN0IGRlc2NyaWJlZC4KClRoaXJkIG9ic2Vy dmF0aW9uLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIGEKZmls ZSBuYW1lIGFyZSAnXDAnIGFuZCAnLycuICBUaGVpciBoZXggdmFsdWVzIGFyZSAweDAwIGFuZCAw eDJmLgpUaGUgY3VycmVudCBhbGdvcml0aG0gY2xlYXJzIG9ubHkgdGhlIGhpZ2ggYml0IHRvIHBy b2R1Y2UgYSBuZXcgZmlsZQpuYW1lIGNoYXJhY3RlciwgYW5kIHRoYXQgYWxsb3dzIGVpdGhlciBv ZiB0aGVzZSB0d28gYmUgdGhlIHJlc3VsdCBvZgp0aGUgbWFzay4gIENsZWFyaW5nIHRoZSBsb3ct b3JkZXIgYml0IGluc3RlYWQgd2lsbCBuZXZlciBwcm9kdWNlIHRoZQonLycgY2hhcmFjdGVyLgoK U28gaWYgd2UgY2FuIGNoYW5nZSB0aGUgbWFzaywgd2UgY2FuIGVsaW1pbmF0ZSBoYWxmIG9mIHRo ZSBwb3NzaWJsZQpjaGFyYWN0ZXJzIHRoYXQgd2lsbCBjYXVzZSB1cyBwcm9ibGVtcy4gIFdlIGFy ZSBzdGlsbCBsZWZ0IHdpdGggdGhlCmNhc2UgdGhhdCBhbiBpbXBvcnRhbnQgaHVuayBvZiB0aGUg b3JpZ2luYWwgZmlsZSdzIGhhc2ggaXMgMHgwMSwKd2hpY2ggcHJvZHVjZXMgMHgwMCB3aGVuIHRo ZSBib3R0b20gYml0IGlzIG1hc2tlZCBvZmYuCgpUbyBhZGRyZXNzIHRoYXQgd2UgY2FuIGZsaXAg dGhlIGxvdyBiaXQgYW5kIGZsaXAgdGhlIGNvcnJlc3BvbmRpbmcKaGlnaCBiaXQgaW4gdGhlIG5l aWdoYm9yIGJ5dGUgdGhhdCBpdCdzIFhPUidkIHdpdGgsIGVuc3VyaW5nIHRoZQpyZXN1bHQgcHJl c2VydmVzIHRoZSBkZXNpcmVkIGhhc2ggdmFsdWUuCgpXZSBjYW4gZG8gdGhpcyBmb3IgYW55IG9y aWdpbmFsIGhhc2ggdmFsdWUsIGFuZCB3ZSBjYW4gZG8gdGhpcwp3aXRob3V0IGFueSBuZWVkIHRv IGV2ZXIgcmUtdHJ5IGdlbmVyYXRpbmcgYSByYW5kb20gbmFtZS4gIEkgaGF2ZW4ndApkZXRlcm1p bmVkIHlldCB3aGV0aGVyIHRoZXJlIHN0aWxsIG1pZ2h0IGJlIGEgY2FzZSB0aGF0IHJlcXVpcmVz IGFuCmludmFsaWQgY2hhcmFjdGVyIHRvIHJlc29sdmUuICBJZiB3ZSByZWFjaCB0aGF0IHBvaW50 IHdlIGNhbiBzaW1wbHkKd2FybiB0aGF0IHRoZSBmaWxlIGlzIG5vdCBnZXR0aW5nIG9iZnVzY2F0 ZWQgYW5kIGxlYXZlIHRoZSBvcmlnaW5hbApmaWxlIG5hbWUgYXMtaXMuCgoKSSdsbCBmb2xsb3cg dXAgbGF0ZXIgd2l0aCBhIHByb3Bvc2VkIGNoYW5nZSB0byBpbXBsZW1lbnQgd2hhdCBJIGhhdmUK ZGVzY3JpYmVkIGhlcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt QWxleAoKUFMgIFR3byBtb3JlIG9ic2VydmF0aW9uczoKICAgIC0gVGhlcmUgaXMgcmVhbGx5IG5v IG5lZWQgZm9yIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIHRydWx5IHJhbmRvbS4KICAgICAgTWFraW5n IHRoZSBnZW5lcmF0ZWQgbmFtZSB1bmlxdWUgYW5kIGRpZmZlcmVudCBmcm9tIHRoZQogICAgICBv cmlnaW5hbCBpcyBzdWZmaWNpZW50LiAgU28gKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgbGFz dAogICAgICBmaXZlIGJ5dGVzKSB3ZSBjYW4gc2VsZWN0IHRoZSBjaGFyYWN0ZXJzIGhvd2V2ZXIg d2UgbGlrZS4KICAgICAgVGhleSBjb3VsZCBiZSBhIHNlcXVlbnRpYWwgc2VyaWVzIG9mIG5hbWVz LCBmb3IgZXhhbXBsZSwKICAgICAgcmF0aGVyIHRoYW4gY29tcHV0aW5nIGEgcmFuZG9tIHZhbHVl IGZvciBlYWNoLgogICAgLSBTaW1pbGFybHkgd2UgY291bGQgc2VsZWN0IChtb3N0IG9mKSB0aGUg Y2hhcmFjdGVycyBmcm9tIGEKICAgICAgc21hbGxlciBzdWJzZXQgdGhhbiBpcyBjdXJyZW50bHkg dXNlZC4gIEkuZS4sIHJhdGhlciB0aGFuCiAgICAgIHVzaW5nIGFueSBvZiAyNTQgcG9zc2libGUg dmFsdWVzLCB3ZSBjb3VsZCByZXN0cmljdCBpdCB0byBqdXN0CiAgICAgIHByaW50YWJsZSBjaGFy YWN0ZXJzIChvciBldmVuIGEgc3Vic2V0IG9mIHRob3NlKS4gIFRoZSBsYXN0CiAgICAgIGZpdmUg Y2hhcmFjdGVycyB3b3VsZCBiZSBjb21wdXRlZCBhcyBhYm92ZSwgYW5kIHRoZXkgd291bGQKICAg ICAgaGF2ZSB0byBiZSB1bnJlc3RyaWN0ZWQgaW4gb3JkZXIgdG8gcHJvZHVjZSB0aGUgcmlnaHQg aGFzaC4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4 ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1h bi9saXN0aW5mby94ZnMK