<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>142132</bug_id>
          
          <creation_ts>2015-02-28 10:55:07 -0800</creation_ts>
          <short_desc>[WK2][Mac] Fullscreen animations with mismatched aspect ratios are &quot;squished&quot;.</short_desc>
          <delta_ts>2015-04-27 14:24:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142121</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jberlin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1073047</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-02-28 10:55:07 -0800</bug_when>
    <thetext>[WK2][Mac] Use CALayer animations rather than NSWindow animations for the Fullscreen transition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073051</commentid>
    <comment_count>1</comment_count>
      <attachid>247605</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-02-28 11:28:17 -0800</bug_when>
    <thetext>Created attachment 247605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073409</commentid>
    <comment_count>2</comment_count>
      <attachid>247605</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-02 12:02:40 -0800</bug_when>
    <thetext>Comment on attachment 247605
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=247605&amp;action=review

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [WK2][Mac] Use CALayer animations rather than NSWindow animations for the Fullscreen transition

The title is not great. Why not explain what you&apos;re fixing instead of how?

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:97
&gt; +    NSView* contentView = [window contentView];

star&apos;s on the wrong side.

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:378
&gt; +    NSView* contentView = [[self window] contentView];

star&apos;s on the wrong side

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:441
&gt;  - (NSArray *)customWindowsToEnterFullScreenForWindow:(NSWindow *)window

Do we still need this customWindowsToEnterFullScreenForWindow: mechanism at all?

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:562
&gt; +        fadeAnimation.toValue = (id)CGColorGetConstantColor(kCGColorBlack);

Could always use [NSColor blackColor] here (either way!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073437</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-02 14:09:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 247605 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247605&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:3
&gt; &gt; +        [WK2][Mac] Use CALayer animations rather than NSWindow animations for the Fullscreen transition
&gt; 
&gt; The title is not great. Why not explain what you&apos;re fixing instead of how?

Sure thing; I&apos;ll update the title.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:97
&gt; &gt; +    NSView* contentView = [window contentView];
&gt; 
&gt; star&apos;s on the wrong side.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:378
&gt; &gt; +    NSView* contentView = [[self window] contentView];
&gt; 
&gt; star&apos;s on the wrong side

Ditto.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:441
&gt; &gt;  - (NSArray *)customWindowsToEnterFullScreenForWindow:(NSWindow *)window
&gt; 
&gt; Do we still need this customWindowsToEnterFullScreenForWindow: mechanism at
&gt; all?

Yes. You won&apos;t get the custom start callback unless you implement this delegate method.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:562
&gt; &gt; +        fadeAnimation.toValue = (id)CGColorGetConstantColor(kCGColorBlack);
&gt; 
&gt; Could always use [NSColor blackColor] here (either way!).

Or! WebKit::cachedCGColor(WebKit::Color::black, WebKit::ColorSpaceDeviceRGB)!

(I&apos;ll just leave it as is.) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074284</commentid>
    <comment_count>4</comment_count>
      <attachid>247908</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-04 16:15:31 -0800</bug_when>
    <thetext>Created attachment 247908
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078691</commentid>
    <comment_count>5</comment_count>
      <attachid>247908</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-19 17:21:30 -0700</bug_when>
    <thetext>Comment on attachment 247908
Patch for landing

Clearing flags on attachment: 247908

Committed r181770: &lt;http://trac.webkit.org/changeset/181770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078718</commentid>
    <comment_count>6</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2015-03-19 18:55:14 -0700</bug_when>
    <thetext>I attempted to fix the 32-bit build breakage in http://trac.webkit.org/changeset/181776</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078731</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-19 20:19:38 -0700</bug_when>
    <thetext>Thanks Jessie!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247605</attachid>
            <date>2015-02-28 11:28:17 -0800</date>
            <delta_ts>2015-03-02 12:02:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142132-20150228112803.patch</filename>
            <type>text/plain</type>
            <size>25620</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJkMDcyNzFmMzZlN2Ew
OTI4OTUwM2JkNzg3MDBkOWNjYzE3N2FjZS4uOGE0M2QyMWU4YTRlMjllOGU3YjQxZjJjMzk0NGQ5
MWEzYjljNTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW01hY10gVXNlIENB
TGF5ZXIgYW5pbWF0aW9ucyByYXRoZXIgdGhhbiBOU1dpbmRvdyBhbmltYXRpb25zIGZvciB0aGUg
RnVsbHNjcmVlbiB0cmFuc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDIxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBuZXcgdXRpbGl0eSBtZXRob2QgdG8gY2FsY3VsYXRlIGEgcmVj
dCB3aXRoIGEgc3BlY2lmaWMgYXNwZWN0IHJhdGlvIHdyYXBwaW5nIGEgc21hbGxlciBvbmUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oOgorCiAyMDE1LTAx
LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJl
dHVybiBtdWx0aXBsZSByYW5nZXMgZm9yIHNlZWthYmxlIGZyb20gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI2ZjZmNjU2OGM0YWExNmJlNTgzNjFkOTk5Njk4
MTNjNWZkNDVhMzQuLmUzZTcyOTNlOWY2ZDI0MTQ5YTQ1ZTA1ODA5OWQwMWYwYjg4NjgzOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxNS0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtNYWNdIFVzZSBDQUxheWVyIGFuaW1hdGlv
bnMgcmF0aGVyIHRoYW4gTlNXaW5kb3cgYW5pbWF0aW9ucyBmb3IgdGhlIEZ1bGxzY3JlZW4gdHJh
bnNpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyMTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIENBTGF5ZXIgYW5pbWF0aW9ucyBmb3IgdGhlIHRyYW5zaXRpb24gaW50byBhbmQgb3V0IG9m
IGZ1bGxzY3JlZW4uCisKKyAgICAgICAgVGhlIGZ1bGxzY3JlZW4gdHJhbnNpdGlvbiBjb25zaXN0
cyBvZiB0aHJlZSBzZXBhcmF0ZSBhbmltYXRpb25zOgorICAgICAgICAxLiBBbiBvcGFjaXR5IGFu
aW1hdGlvbiBmb3IgdGhlIGJsYWNrIGJhY2tkcm9wIGJlaGluZCB0aGUgZnVsbHNjcmVlbiBjb250
ZW50CisgICAgICAgIDIuIEEgc2NhbGUvdHJhbnNsYXRpb24gYW5pbWF0aW9uIGZyb20gZnVsbHNj
cmVlbiBlbGVtZW50J3MgaW5pdGlhbCBzY3JlZW4gdG8gaXRzIGZpbmFsIG9uZS4KKyAgICAgICAg
My4gQSBjbGlwIGFuaW1hdGlvbiBmcm9tIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQncyBpbml0aWFs
IGFzcGVjdCByYXRpbyB0byBpdHMgZmluYWwgb25lLgorCisgICAgICAgIFRoZSBvcGFjaXR5IGFu
aW1hdGlvbiB3aWxsIGFwcGx5IHRvIHRoZSBmdWxsc2NyZWVuIHdpbmRvdydzIGNvbnRlbnQgdmll
dydzIGxheWVyJ3MKKyAgICAgICAgYmFja2dyb3VuZCBjb2xvci4gVG8gc2VwYXJhdGVseSBhbmlt
YXRlIHRoZSB0cmFuc2Zvcm0gYW5kIG1hc2sgb2YgdGhlIHdlYiB2aWV3J3MgY29udGVudCwgYQor
ICAgICAgICBsYXllci1iYWNrZWQgc3VidmlldyBpcyBhZGRlZCB0byB0aGUgY29udGVudCB2aWV3
LCBhbmQgdGhlIHNjYWxlL3RyYW5zbGF0aW9uICYgY2xpcAorICAgICAgICBhbmltYXRpb25zIGFy
ZSBhcHBsaWVkIHRvIGl0cyB0cmFuc2Zvcm0gcHJvcGVydHkgYW5kIG1hc2sgbGF5ZXIgcmVzcGVj
dGl2ZWx5LgorCisgICAgICAgIFV0aWxpdHkgbWV0aG9kcyB0byBjcmVhdGUgZWFjaCBhbmltYXRp
b24gaGF2ZSBiZWVuIGFkZGVkLCBhbmQgZWFjaCBpbmNsdWRlcyBhIHBhcmFtZXRlciBmb3IKKyAg
ICAgICAgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYW5pbWF0aW9uLCBzbyB0aGF0IHRoZSBzYW1lIG1l
dGhvZHMgY2FuIGJlIHVzZWQgZm9yIGVudGVyaW5nIGFuZAorICAgICAgICBleGl0aW5nIGZ1bGxz
Y3JlZW4gdHJhbnNpdGlvbnMuCisKKyAgICAgICAgVGhlIHVzZXItdmlzaWJsZSBjaGFuZ2VzIHRv
IHRoaXMgbmV3IHRyYW5zaXRpb24gYXJlIHdoZW4gdGhlIGFzcGVjdCByYXRpb3Mgb2YgdGhlIGlu
aXRpYWwKKyAgICAgICAgYW5kIGZpbmFsIHNjcmVlbiBsb2NhdGlvbnMgYXJlIGRpZmZlcmVudDog
cHJldmlvdXNseSB0aGUgdHJhbnNpdGlvbiB3b3VsZCB1c2UgYSBzY2FsZQorICAgICAgICB0cmFu
c2Zvcm0gdG8gInNxdWlzaCIgdGhlIGZ1bGxzY3JlZW4gY29udGVudCBpbnRvIHRoZSBpbml0aWFs
IGFzcGVjdCByYXRpby4gVGhlIG5ldworICAgICAgICB0cmFuc2l0aW9uIGluc3RlYWQgImNsaXBz
IiB0aGUgZnVsbHNjcmVlbiBjb250ZW50IHRvIHRoZSBpbml0aWFsIGFzcGVjdCByYXRpby4gRm9y
IGNvbW1vbgorICAgICAgICBvcGVyYXRpb25zIHN1Y2ggYSA8dmlkZW8+IGVsZW1lbnQgd2l0aCBh
IGRpZmZlcmVudCBhc3BlY3QgcmF0aW8gdGhhbiB0aGUgc2NyZWVuLCB0aGlzIG1ha2VzCisgICAg
ICAgIHRoZSBibGFjayBsZXR0ZXJib3ggImdyb3ciIGR1cmluZyB0aGUgdHJhbnNpdGlvbiwgYW5k
IG1ha2VzIHRoZSB0cmFuc2l0aW9uIG92ZXJhbGwgbXVjaAorICAgICAgICBzbW9vdGhlci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3
ZWJWaWV3Ol0pOiBDcmVhdGUgYW5kIGluaXRpYWx6ZSB0aGUgY2xpcHBpbmcgdmlldy4KKyAgICAg
ICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNj
cmVlblBhcmFtZXRlcnM6XSk6IF9iYWNrZ3JvdW5kV2luZG93IHdhcyByZW1vdmVkLgorICAgICAg
ICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbjpdKTogQWRk
IHRoZSB3ZWJWaWV3IHRvIHRoZSBfY2xpcFZpZXcsIG5vdCB0aGUgY29udGVudFZpZXcuCisgICAg
ICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FbnRlckZ1bGxTY3JlZW5X
aXRoSW5pdGlhbEZyYW1lOmZpbmFsRnJhbWU6XSk6IF9iYWNrZ3JvdW5kV2luZG93LAorICAgICAg
ICAgICAgICAgIF9mYWRlQW5pbWF0aW9uLCBhbmQgX3NjYWxlQW5pbWF0aW9uIGFyZSBhbGwgcmVt
b3ZlZC4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hlZEVu
dGVyRnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogRGl0
dG8uICBIaWRlIHRoZSBjb250ZW50VmlldydzCisgICAgICAgICAgICAgICAgbGF5ZXIuIFBhdXNl
IHZpc2liaWxpdHkgdXBkYXRlcy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlciBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50XSk6
IFJlc3VtZSB2aXNpYmlsaXR5IHVwZGF0ZXMuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgY2xvc2VdKTogX2ZhZGVBbmltYXRpb24gYW5kIF9zY2FsZUFuaW1hdGlvbiBh
cmUgcmVtb3ZlZC4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0
b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6XSk6IFJldHVybiBvbmx5IHRoZSBm
dWxsc2NyZWVuCisgICAgICAgICAgICAgICAgd2luZG93LgorICAgICAgICAoLVtXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93
Ol0pOiBEaXR0by4KKyAgICAgICAgKHpvb21BbmltYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKG1h
c2tBbmltYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKGZhZGVBbmltYXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBfc3RhcnRFbnRlckZ1bGxTY3Jl
ZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6IFVzZSB0aGUgdXRpbGl0eQorICAgICAgICAgICAg
ICAgIG1ldGhvZHMgYWJvdmUgdG8gc2V0IHVwIHRoZSBhbmltYXRpb24uCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25X
aXRoRHVyYXRpb246XSk6IERpdHRvLgorICAgICAgICAoY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3Jl
ZW5XaW5kb3cpOiBEZWxldGVkLgorICAgICAgICAod2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFt
ZXMpOiBEZWxldGVkLgorCiAyMDE1LTAyLTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXSzFdW1dLMl1bTWFjXSBGdWxsc2NyZWVuIGFuaW1hdGlvbiBpcyBp
bmNvcnJlY3Qgd2hlbiBwYWdlIGlzIHNjYWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcAppbmRleCBkMThhYzJiMmI5
YjY0OTk0MTY3NDYyNDhiZjE4ZmRhY2JiM2FjZWZlLi4xYmMyMzU4ZjQxMTQzNDg3NWQ3NWRmNTQz
YWY1NDc3MTMwZDExNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCkBAIC0xMTUsNCArMTE1LDE4IEBAIEZsb2F0
UmVjdCBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QoZmxvYXQgYXNwZWN0UmF0
aW8sIGNvbnN0IEZsb2F0UmVjCiAgICAgcmV0dXJuIGRlc3RSZWN0OwogfQogCitGbG9hdFJlY3Qg
c21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdChmbG9hdCBhc3BlY3RSYXRpbywg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IHNy
Y1JlY3Q7CisKKyAgICBpZiAoYXNwZWN0UmF0aW8gPCBzcmNSZWN0LnNpemUoKS5hc3BlY3RSYXRp
bygpKSB7CisgICAgICAgIGZsb2F0IGR5ID0gZGVzdFJlY3Qud2lkdGgoKSAvIGFzcGVjdFJhdGlv
IC0gZGVzdFJlY3QuaGVpZ2h0KCk7CisgICAgICAgIGRlc3RSZWN0LmluZmxhdGVZKGR5IC8gMik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmxvYXQgZHggPSBkZXN0UmVjdC5oZWlnaHQoKSAqIGFz
cGVjdFJhdGlvIC0gZGVzdFJlY3Qud2lkdGgoKTsKKyAgICAgICAgZGVzdFJlY3QuaW5mbGF0ZVgo
ZHggLyAyKTsKKyAgICB9CisgICAgcmV0dXJuIGRlc3RSZWN0OworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaAppbmRl
eCAzNWRmOGY1YTM1YjQxYzFlZGE4ZTEzYmExMGNhNDY5NWNiNWMwYTdiLi5jYzg2YjY5ZDMwNjk5
ZTQ1MzA2ZTU5NDViOTIyNzQzNjk2NzFiM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
V0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHVuaW9uUmVjdChjb25zdCBWZWN0b3I8RmxvYXRSZWN0
PiYpOwogRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIAogV0VCQ09SRV9FWFBPUlQg
RmxvYXRSZWN0IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChmbG9hdCBhc3Bl
Y3RSYXRpbywgY29uc3QgRmxvYXRSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgc21h
bGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdChmbG9hdCBhc3BlY3RSYXRpbywgY29u
c3QgRmxvYXRSZWN0Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCA3ZGUzMTI1
Mzc3MDM5ZDhiMTE0ZDcyZTU1NDgzNTc0ZGY4MTY3MTk1Li5jNjYzMDAyN2ViZDRjYjNiN2RkMzQ0
ZGI3OWZiZmUwMGIyYTY0YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtMzksOCArMzks
NiBAQCBjbGFzcyBJbnRSZWN0OwogCiBAY2xhc3MgV0tWaWV3OwogQGNsYXNzIFdlYkNvcmVGdWxs
U2NyZWVuUGxhY2Vob2xkZXJWaWV3OwotQGNsYXNzIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uOwot
QGNsYXNzIFdlYldpbmRvd0ZhZGVBbmltYXRpb247CiAKIHR5cGVkZWYgZW51bSBGdWxsU2NyZWVu
U3RhdGUgOiBOU0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwogCkBAIC00OCw5ICs0Niw3IEBAIHR5
cGVkZWYgZW51bSBGdWxsU2NyZWVuU3RhdGUgOiBOU0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwog
QHByaXZhdGUKICAgICBXS1ZpZXcgKl93ZWJWaWV3OyAvLyBDYW5ub3QgYmUgcmV0YWluZWQsIHNl
ZSA8cmRhcjovL3Byb2JsZW0vMTQ4ODQ2NjY+LgogICAgIFJldGFpblB0cjxXZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKLSAgICBSZXRhaW5QdHI8
V2ViV2luZG93U2NhbGVBbmltYXRpb24+IF9zY2FsZUFuaW1hdGlvbjsKLSAgICBSZXRhaW5QdHI8
V2ViV2luZG93RmFkZUFuaW1hdGlvbj4gX2ZhZGVBbmltYXRpb247Ci0gICAgUmV0YWluUHRyPE5T
V2luZG93PiBfYmFja2dyb3VuZFdpbmRvdzsKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBfY2xpcFZp
ZXc7CiAgICAgTlNSZWN0IF9pbml0aWFsRnJhbWU7CiAgICAgTlNSZWN0IF9maW5hbEZyYW1lOwog
ICAgIFJldGFpblB0cjxOU1RpbWVyPiBfd2F0Y2hkb2dUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbQppbmRleCBjNTQyZTliYTNhNTdjMGU5ZTBjMTVlOGQzODUyYWU0NjcyYzYxYTgzLi5hNjgy
ZDg4MmZlZjgwYTQ5N2FhNzRjNzg4OTU1Y2UxOTJlOWMwZDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCkBAIC0zOCwxOCArMzgsMTUgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5U2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6
ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYldpbmRvd0FuaW1hdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotc3RhdGljIFJldGFpblB0cjxOU1dpbmRvdz4gY3JlYXRlQmFja2dyb3Vu
ZEZ1bGxzY3JlZW5XaW5kb3coTlNSZWN0IGZyYW1lKTsKLQogc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBlbnVtIEZ1bGxTY3Jl
ZW5TdGF0ZSA6IE5TSW50ZWdlciB7CkBAIC05Niw2ICs5MywyMiBAQCBzdGF0aWMgdm9pZCBtYWtl
UmVzcG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRPZlZpZXcoTlNXaW5kb3cgKndpbmRv
dywgTlNSZQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2Vs
Zl07CiAgICAgW3dpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cgY29sbGVjdGlv
bkJlaGF2aW9yXSB8IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVlblByaW1hcnkp
XTsKKworICAgIE5TVmlldyogY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKKyAg
ICBjb250ZW50Vmlldy53YW50c0xheWVyID0gWUVTOworICAgIGNvbnRlbnRWaWV3LmxheWVyLmhp
ZGRlbiA9IFlFUzsKKyAgICBjb250ZW50Vmlldy5hdXRvcmVzaXplc1N1YnZpZXdzID0gWUVTOwor
CisgICAgX2NsaXBWaWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpj
b250ZW50Vmlldy5ib3VuZHNdKTsKKyAgICBbX2NsaXBWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsK
KyAgICBbX2NsaXBWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8
IE5TVmlld0hlaWdodFNpemFibGUpXTsKKyAgICBDQUxheWVyICptYXNrTGF5ZXIgPSBbQ0FMYXll
ciBsYXllcl07CisgICAgbWFza0xheWVyLmFuY2hvclBvaW50ID0gQ0dQb2ludFplcm87CisgICAg
bWFza0xheWVyLmZyYW1lID0gY29udGVudFZpZXcuYm91bmRzOworICAgIG1hc2tMYXllci5iYWNr
Z3JvdW5kQ29sb3IgPSBDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKTsKKyAg
ICBbX2NsaXBWaWV3IGxheWVyXS5tYXNrID0gbWFza0xheWVyOworICAgIFtjb250ZW50VmlldyBh
ZGRTdWJ2aWV3Ol9jbGlwVmlldy5nZXQoKV07CisKICAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsK
ICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgCkBAIC0xNzEsNyArMTg0LDYgQEAgc3RhdGlj
IHZvaWQgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZWaWV3KE5TV2lu
ZG93ICp3aW5kb3csIE5TUmUKICAgICBOU1dpbmRvdyogd2luZG93ID0gW3NlbGYgd2luZG93XTsK
ICAgICBOU1JlY3Qgc2NyZWVuRnJhbWUgPSBbW3dpbmRvdyBzY3JlZW5dIGZyYW1lXTsKICAgICBb
d2luZG93IHNldEZyYW1lOnNjcmVlbkZyYW1lIGRpc3BsYXk6WUVTXTsKLSAgICBbX2JhY2tncm91
bmRXaW5kb3cgc2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxheTpZRVNdOwogfQogCiAjcHJhZ21h
IG1hcmsgLQpAQCAtMjQ3LDcgKzI1OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgIAog
ICAgIC8vIFRoZW4gaW5zZXJ0IHRoZSBXZWJWaWV3IGludG8gdGhlIGZ1bGwgc2NyZWVuIHdpbmRv
dwogICAgIE5TVmlldyogY29udGVudFZpZXcgPSBbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld107
Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXcgcG9zaXRpb25lZDpOU1dpbmRv
d0JlbG93IHJlbGF0aXZlVG86bmlsXTsKKyAgICBbX2NsaXBWaWV3IGFkZFN1YnZpZXc6X3dlYlZp
ZXcgcG9zaXRpb25lZDpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86bmlsXTsKICAgICBbX3dlYlZp
ZXcgc2V0RnJhbWU6W2NvbnRlbnRWaWV3IGJvdW5kc11dOwogCiAgICAgbWFrZVJlc3BvbmRlckZp
cnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZWaWV3KHNlbGYud2luZG93LCB3ZWJXaW5kb3dGaXJz
dFJlc3BvbmRlciwgX3dlYlZpZXcpOwpAQCAtMjY3LDE1ICsyNzksNiBAQCBzdGF0aWMgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3Vy
Y2VJbWFnZSkKICAgICBfaW5pdGlhbEZyYW1lID0gaW5pdGlhbEZyYW1lOwogICAgIF9maW5hbEZy
YW1lID0gZmluYWxGcmFtZTsKIAotICAgIGlmICghX2JhY2tncm91bmRXaW5kb3cpCi0gICAgICAg
IF9iYWNrZ3JvdW5kV2luZG93ID0gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coTlNa
ZXJvUmVjdCk7Ci0KLSAgICAvLyBUaGUgLW9yZGVyQmFjazogY2FsbCBiZWxvdyBjYW4gY2F1c2Ug
dGhlIGZ1bGwgc2NyZWVuIHdpbmRvdydzIGNvbnRlbnRzIHRvIGRyYXcgb24gdG9wIG9mCi0gICAg
Ly8gYWxsIG90aGVyIHZpc2libGUgd2luZG93cyBvbiB0aGUgc2NyZWVuLCBkZXNwaXRlIE5TRGlz
YWJsZVNjcmVlblVwZGF0ZXMgaGF2aW5nIGJlZW4gc2V0LCBhbmQKLSAgICAvLyBkZXNwaXRlIGJl
aW5nIGV4cGxpY2l0bHkgb3JkZXJlZCBiZWhpbmQgYWxsIG90aGVyIHdpbmRvd3MuIFNldCB0aGUg
aW5pdGlhbCBzY2FsZWQgZnJhbWUgaGVyZQotICAgIC8vIGJlZm9yZSBvcmRlcmluZyB0aGUgd2lu
ZG93IG9uLXNjcmVlbiB0byBhdm9pZCB0aGlzIGZsYXNoLiA8cmRhcjovL3Byb2JsZW0vMTgzMjUw
NjM+Ci0gICAgV0tXaW5kb3dTZXRTY2FsZWRGcmFtZShzZWxmLndpbmRvdywgaW5pdGlhbEZyYW1l
LCBmaW5hbEZyYW1lKTsKLQogICAgIFtzZWxmLndpbmRvdyBvcmRlckJhY2s6IHNlbGZdOyAvLyBN
YWtlIHN1cmUgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBpcyBwYXJ0IG9mIHRoZSBjb3JyZWN0IFNw
YWNlLgogICAgIFtbc2VsZiB3aW5kb3ddIGVudGVyRnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CkBA
IC0yOTMsMjggKzI5NiwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUlt
YWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAgW3NlbGYg
X21hbmFnZXJdLT5kaWRFbnRlckZ1bGxTY3JlZW4oKTsKICAgICAgICAgW3NlbGYgX21hbmFnZXJd
LT5zZXRBbmltYXRpbmdGdWxsU2NyZWVuKGZhbHNlKTsKIAotICAgICAgICBOU1JlY3Qgd2luZG93
Qm91bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwotICAgICAgICB3aW5kb3dCb3VuZHMub3Jp
Z2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2lu
ZG93XSwgd2luZG93Qm91bmRzKTsKLQotICAgICAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1h
dGlvbl07Ci0gICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLSAgICAgICAg
X2ZhZGVBbmltYXRpb24gPSBudWxscHRyOwotICAgICAgICAKLSAgICAgICAgW19iYWNrZ3JvdW5k
V2luZG93IG9yZGVyT3V0OnNlbGZdOwotICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cgc2V0RnJh
bWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107Ci0KICAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xk
ZXIgc2V0RXhpdFdhcm5pbmdWaXNpYmxlOllFU107CiAgICAgICAgIFtfd2ViVmlld1BsYWNlaG9s
ZGVyIHNldFRhcmdldDpzZWxmXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUcmFuc2l0aW9u
IHRvIGZ1bGxzY3JlZW4gZmFpbGVkLiBDbGVhbiB1cC4KICAgICAgICAgX2Z1bGxTY3JlZW5TdGF0
ZSA9IE5vdEluRnVsbFNjcmVlbjsKIAotICAgICAgICBbX3NjYWxlQW5pbWF0aW9uIHN0b3BBbmlt
YXRpb25dOwotCi0gICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdyBvcmRlck91dDpzZWxmXTsKLSAg
ICAgICAgW19iYWNrZ3JvdW5kV2luZG93IHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNd
OwotCiAgICAgICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiAgICAgICAg
IFtfd2ViVmlldyBfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczpOT107CiAKQEAgLTM4Niwz
MCArMzczLDE2IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRo
Q29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogCiAgICAgLy8gU2NyZWVuIHVwZGF0
ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50LgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKKyAgICBbX3dl
YlZpZXcgX3NldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM6WUVTXTsKKyAgICBbW3NlbGYgd2lu
ZG93XSBvcmRlck91dDpzZWxmXTsKKyAgICBOU1ZpZXcqIGNvbnRlbnRWaWV3ID0gW1tzZWxmIHdp
bmRvd10gY29udGVudFZpZXddOworICAgIGNvbnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IFlFUzsK
ICAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIgd2luZG93XSBzZXRBdXRvZGlzcGxheTpOT107CiAK
ICAgICBOU1Jlc3BvbmRlciAqZmlyc3RSZXNwb25kZXIgPSBbW3NlbGYgd2luZG93XSBmaXJzdFJl
c3BvbmRlcl07CiAgICAgW3NlbGYgX3JlcGxhY2VWaWV3Ol93ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0
KCkgd2l0aDpfd2ViVmlld107CiAgICAgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNj
ZW5kYW50T2ZWaWV3KF93ZWJWaWV3LndpbmRvdywgZmlyc3RSZXNwb25kZXIsIF93ZWJWaWV3KTsK
IAotICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwotCi0gICAgTlNSZWN0IHdpbmRv
d0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICB3aW5kb3dCb3VuZHMub3JpZ2lu
ID0gTlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3
aW5kb3dCb3VuZHMpOwotICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlz
cGxheTpZRVNdOwotCi0gICAgW19zY2FsZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLSAgICBb
X3NjYWxlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIF9zY2FsZUFuaW1hdGlvbiA9IG51
bGxwdHI7Ci0KLSAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgW19mYWRl
QW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIF9mYWRlQW5pbWF0aW9uID0gbnVsbHB0cjsK
LQotICAgIFtfYmFja2dyb3VuZFdpbmRvdyBvcmRlck91dDpzZWxmXTsKLSAgICBbX2JhY2tncm91
bmRXaW5kb3cgc2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107Ci0KICAgICBbW193ZWJW
aWV3IHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAKICAgICAvLyBUaGVzZSBt
ZXNzYWdlcyBtdXN0IGJlIHNlbnQgYWZ0ZXIgdGhlIHN3YXAgb3IgZmxhc2hpbmcgd2lsbCBvY2N1
ciBkdXJpbmcgZm9yY2VSZXBhaW50OgpAQCAtNDM1LDYgKzQwOCw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJj
ZUltYWdlKQogICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBudWxscHRyOwogICAgIFtbX3dlYlZpZXcg
d2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtbX3dlYlZpZXcgd2luZG93XSBkaXNw
bGF5SWZOZWVkZWRdOworICAgIFtfd2ViVmlldyBfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRl
czpOT107CiAgICAgTlNFbmFibGVTY3JlZW5VcGRhdGVzKCk7CiB9CiAKQEAgLTQ1NiwxMSArNDMw
LDYgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWRE
YXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgaWYgKF9mdWxsU2NyZWVuU3RhdGUgPT0g
RXhpdGluZ0Z1bGxTY3JlZW4pCiAgICAgICAgIFtzZWxmIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5B
bmltYXRpb246WUVTXTsKIAotICAgIFtfc2NhbGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0g
ICAgW19zY2FsZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLSAgICBbX2ZhZGVBbmltYXRpb24g
c3RvcEFuaW1hdGlvbl07Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotCiAg
ICAgX3dlYlZpZXcgPSBuaWw7CiAKICAgICBbc3VwZXIgY2xvc2VdOwpAQCAtNDcxLDEyICs0NDAs
MTIgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWRE
YXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAKIC0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dz
VG9FbnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2luZG93XSwgX2JhY2tncm91bmRX
aW5kb3cuZ2V0KCksIG5pbF07CisgICAgcmV0dXJuIEBbc2VsZi53aW5kb3ddOwogfQogCiAtIChO
U0FycmF5ICopY3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93
ICopd2luZG93CiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYg
d2luZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07CisgICAgcmV0dXJuIEBbc2Vs
Zi53aW5kb3ddOwogfQogCiAtICh2b2lkKXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRD
dXN0b21BbmltYXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2
YWwpZHVyYXRpb24KQEAgLTUzNyw1MCArNTA2LDc3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQog
ICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNXaW5k
b3c+IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSkKK2VudW0g
QW5pbWF0aW9uRGlyZWN0aW9uIHsgQW5pbWF0ZUluLCBBbmltYXRlT3V0IH07CitzdGF0aWMgQ0FB
bmltYXRpb24gKnpvb21BbmltYXRpb24oY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsRnJhbWUsIGNv
bnN0IEZsb2F0UmVjdCYgZmluYWxGcmFtZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIEFuaW1h
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbTlNX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVy
bGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsK
LSAgICBbd2luZG93IHNldE9wYXF1ZTpZRVNdOwotICAgIFt3aW5kb3cgc2V0QmFja2dyb3VuZENv
bG9yOltOU0NvbG9yIGJsYWNrQ29sb3JdXTsKLSAgICBbd2luZG93IHNldFJlbGVhc2VkV2hlbkNs
b3NlZDpOT107Ci0gICAgcmV0dXJuIGFkb3B0TlMod2luZG93KTsKKyAgICBDQUJhc2ljQW5pbWF0
aW9uICpzY2FsZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQ
YXRoOkAidHJhbnNmb3JtIl07CisgICAgRmxvYXRSZWN0IHNjYWxlUmVjdCA9IHNtYWxsZXN0UmVj
dFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3QoZmluYWxGcmFtZS5zaXplKCkuYXNwZWN0UmF0aW8o
KSwgaW5pdGlhbEZyYW1lKTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSByZXNldE9yaWdpblRyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVRyYW5zbGF0aW9uKC1maW5hbEZyYW1lLngoKSwg
LWZpbmFsRnJhbWUueSgpKTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBzY2FsZVRyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHNjYWxlUmVjdC53aWR0aCgpIC8gZmluYWxGcmFt
ZS53aWR0aCgpLCBzY2FsZVJlY3QuaGVpZ2h0KCkgLyBmaW5hbEZyYW1lLmhlaWdodCgpKTsKKyAg
ICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2xhdGVUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9y
bU1ha2VUcmFuc2xhdGlvbihzY2FsZVJlY3QueCgpLCBzY2FsZVJlY3QueSgpKTsKKworICAgIENH
QWZmaW5lVHJhbnNmb3JtIGZpbmFsVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQo
Q0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQocmVzZXRPcmlnaW5UcmFuc2Zvcm0sIHNjYWxlVHJhbnNm
b3JtKSwgdHJhbnNsYXRlVHJhbnNmb3JtKTsKKyAgICBOU1ZhbHVlICpzY2FsZVZhbHVlID0gW05T
VmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNETWFrZUFmZmluZVRyYW5z
Zm9ybShmaW5hbFRyYW5zZm9ybSldOworICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0ZUluKQor
ICAgICAgICBzY2FsZUFuaW1hdGlvbi5mcm9tVmFsdWUgPSBzY2FsZVZhbHVlOworICAgIGVsc2UK
KyAgICAgICAgc2NhbGVBbmltYXRpb24udG9WYWx1ZSA9IHNjYWxlVmFsdWU7CisKKyAgICBzY2Fs
ZUFuaW1hdGlvbi5kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIHNjYWxlQW5pbWF0aW9uLnJlbW92
ZWRPbkNvbXBsZXRpb24gPSBOTzsKKyAgICBzY2FsZUFuaW1hdGlvbi5maWxsTW9kZSA9IGtDQUZp
bGxNb2RlQm90aDsKKyAgICBzY2FsZUFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbiA9IFtDQU1lZGlh
VGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uRWFz
ZUluRWFzZU91dF07CisgICAgcmV0dXJuIHNjYWxlQW5pbWF0aW9uOwogfQogCi1zdGF0aWMgTlNS
ZWN0IHdpbmRvd0ZyYW1lRnJvbUFwcGFyZW50RnJhbWVzKE5TUmVjdCBzY3JlZW5GcmFtZSwgTlNS
ZWN0IGluaXRpYWxGcmFtZSwgTlNSZWN0IGZpbmFsRnJhbWUpCitzdGF0aWMgQ0FBbmltYXRpb24g
Km1hc2tBbmltYXRpb24oY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEZsb2F0
UmVjdCYgZmluYWxGcmFtZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIEFuaW1hdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgTlNSZWN0IGluaXRpYWxXaW5kb3dGcmFtZTsKLSAgICBp
ZiAoIU5TV2lkdGgoaW5pdGlhbEZyYW1lKSB8fCAhTlNXaWR0aChmaW5hbEZyYW1lKSB8fCAhTlNI
ZWlnaHQoaW5pdGlhbEZyYW1lKSB8fCAhTlNIZWlnaHQoZmluYWxGcmFtZSkpCi0gICAgICAgIHJl
dHVybiBzY3JlZW5GcmFtZTsKKyAgICBDQUJhc2ljQW5pbWF0aW9uICpib3VuZHNBbmltYXRpb24g
PSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImJvdW5kcyJdOworICAg
IEZsb2F0UmVjdCBib3VuZHNSZWN0ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVS
ZWN0KGluaXRpYWxGcmFtZS5zaXplKCkuYXNwZWN0UmF0aW8oKSwgZmluYWxGcmFtZSk7CisgICAg
TlNWYWx1ZSAqYm91bmRzVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OkZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGJvdW5kc1JlY3Quc2l6ZSgpKV07CisgICAgaWYgKGRpcmVjdGlvbiA9PSBB
bmltYXRlSW4pCisgICAgICAgIGJvdW5kc0FuaW1hdGlvbi5mcm9tVmFsdWUgPSBib3VuZHNWYWx1
ZTsKKyAgICBlbHNlCisgICAgICAgIGJvdW5kc0FuaW1hdGlvbi50b1ZhbHVlID0gYm91bmRzVmFs
dWU7CiAKLSAgICBDR0Zsb2F0IHhTY2FsZSA9IE5TV2lkdGgoc2NyZWVuRnJhbWUpIC8gTlNXaWR0
aChmaW5hbEZyYW1lKTsKLSAgICBDR0Zsb2F0IHlTY2FsZSA9IE5TSGVpZ2h0KHNjcmVlbkZyYW1l
KSAvIE5TSGVpZ2h0KGZpbmFsRnJhbWUpOwotICAgIENHRmxvYXQgeFRyYW5zID0gTlNNaW5YKHNj
cmVlbkZyYW1lKSAtIE5TTWluWChmaW5hbEZyYW1lKTsKLSAgICBDR0Zsb2F0IHlUcmFucyA9IE5T
TWluWShzY3JlZW5GcmFtZSkgLSBOU01pblkoZmluYWxGcmFtZSk7Ci0gICAgaW5pdGlhbFdpbmRv
d0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgoaW5pdGlhbEZyYW1lKSAqIHhTY2FsZSwg
TlNIZWlnaHQoaW5pdGlhbEZyYW1lKSAqIHlTY2FsZSk7Ci0gICAgaW5pdGlhbFdpbmRvd0ZyYW1l
Lm9yaWdpbiA9IE5TTWFrZVBvaW50Ci0gICAgICAgICggTlNNaW5YKGluaXRpYWxGcmFtZSkgKyB4
VHJhbnMgLyAoTlNXaWR0aChmaW5hbEZyYW1lKSAvIE5TV2lkdGgoaW5pdGlhbEZyYW1lKSkKLSAg
ICAgICAgLCBOU01pblkoaW5pdGlhbEZyYW1lKSArIHlUcmFucyAvIChOU0hlaWdodChmaW5hbEZy
YW1lKSAvIE5TSGVpZ2h0KGluaXRpYWxGcmFtZSkpKTsKLSAgICByZXR1cm4gaW5pdGlhbFdpbmRv
d0ZyYW1lOworICAgIENBQmFzaWNBbmltYXRpb24gKnBvc2l0aW9uQW5pbWF0aW9uID0gW0NBQmFz
aWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJwb3NpdGlvbiJdOworICAgIE5TVmFs
dWUgKnBvc2l0aW9uVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDpib3VuZHNSZWN0Lmxv
Y2F0aW9uKCldOworICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0ZUluKQorICAgICAgICBwb3Np
dGlvbkFuaW1hdGlvbi5mcm9tVmFsdWUgPSBwb3NpdGlvblZhbHVlOworICAgIGVsc2UKKyAgICAg
ICAgcG9zaXRpb25BbmltYXRpb24udG9WYWx1ZSA9IHBvc2l0aW9uVmFsdWU7CisKKyAgICBDQUFu
aW1hdGlvbkdyb3VwICphbmltYXRpb24gPSBbQ0FBbmltYXRpb25Hcm91cCBhbmltYXRpb25dOwor
ICAgIGFuaW1hdGlvbi5hbmltYXRpb25zID0gQFtib3VuZHNBbmltYXRpb24sIHBvc2l0aW9uQW5p
bWF0aW9uXTsKKyAgICBhbmltYXRpb24uZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBhbmltYXRp
b24ucmVtb3ZlZE9uQ29tcGxldGlvbiA9IE5POworICAgIGFuaW1hdGlvbi5maWxsTW9kZSA9IGtD
QUZpbGxNb2RlQm90aDsKKyAgICBhbmltYXRpb24udGltaW5nRnVuY3Rpb24gPSBbQ0FNZWRpYVRp
bWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6a0NBTWVkaWFUaW1pbmdGdW5jdGlvbkVhc2VJ
bkVhc2VPdXRdOworICAgIHJldHVybiBhbmltYXRpb247Cit9CisKK3N0YXRpYyBDQUFuaW1hdGlv
biAqZmFkZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiwgQW5pbWF0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICBDQUJhc2ljQW5pbWF0aW9uICpmYWRlQW5pbWF0aW9uID0g
W0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJiYWNrZ3JvdW5kQ29sb3Ii
XTsKKyAgICBpZiAoZGlyZWN0aW9uID09IEFuaW1hdGVJbikKKyAgICAgICAgZmFkZUFuaW1hdGlv
bi50b1ZhbHVlID0gKGlkKUNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spOwor
ICAgIGVsc2UKKyAgICAgICAgZmFkZUFuaW1hdGlvbi5mcm9tVmFsdWUgPSAoaWQpQ0dDb2xvckdl
dENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjayk7CisgICAgZmFkZUFuaW1hdGlvbi5kdXJhdGlv
biA9IGR1cmF0aW9uOworICAgIGZhZGVBbmltYXRpb24ucmVtb3ZlZE9uQ29tcGxldGlvbiA9IE5P
OworICAgIGZhZGVBbmltYXRpb24uZmlsbE1vZGUgPSBrQ0FGaWxsTW9kZUJvdGg7CisgICAgZmFk
ZUFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbiA9IFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rp
b25XaXRoTmFtZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uRWFzZUluRWFzZU91dF07CisgICAgcmV0
dXJuIGZhZGVBbmltYXRpb247CiB9CiAKIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5p
bWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewotICAgIE5TUmVj
dCBzY3JlZW5GcmFtZSA9IFtbW3NlbGYgd2luZG93XSBzY3JlZW5dIGZyYW1lXTsKLSAgICBOU1Jl
Y3QgaW5pdGlhbFdpbmRvd0ZyYW1lID0gd2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFtZXMoc2Ny
ZWVuRnJhbWUsIF9pbml0aWFsRnJhbWUsIF9maW5hbEZyYW1lKTsKLSAgICAKLSAgICBfc2NhbGVB
bmltYXRpb24gPSBhZG9wdE5TKFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRX
aXRoSGludGVkRHVyYXRpb246ZHVyYXRpb24gd2luZG93OltzZWxmIHdpbmRvd10gaW5pdGFsRnJh
bWU6aW5pdGlhbFdpbmRvd0ZyYW1lIGZpbmFsRnJhbWU6c2NyZWVuRnJhbWVdKTsKLSAgICAKLSAg
ICBbX3NjYWxlQW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5v
bmJsb2NraW5nXTsKLSAgICBbX3NjYWxlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczowXTsK
LSAgICBbX3NjYWxlQW5pbWF0aW9uIHN0YXJ0QW5pbWF0aW9uXTsKLQotICAgIC8vIFdLV2luZG93
U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2Ny
ZWVuIGNvb3JkaW5hdGVzIGhlcmU6Ci0gICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFsRnJh
bWU7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgZmluYWxCb3VuZHMu
b3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5kcy5v
cmlnaW5dOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0Q2xp
cFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIFtbX2NsaXBWaWV3IGxheWVy
XSBhZGRBbmltYXRpb246em9vbUFuaW1hdGlvbihfaW5pdGlhbEZyYW1lLCBfZmluYWxGcmFtZSwg
ZHVyYXRpb24sIEFuaW1hdGVJbikgZm9yS2V5OkAiZnVsbHNjcmVlbiJdOworICAgIFtbX2NsaXBW
aWV3IGxheWVyXS5tYXNrIGFkZEFuaW1hdGlvbjptYXNrQW5pbWF0aW9uKF9pbml0aWFsRnJhbWUs
IF9maW5hbEZyYW1lLCBkdXJhdGlvbiwgQW5pbWF0ZUluKSBmb3JLZXk6QCJmdWxsc2NyZWVuIl07
CisKKyAgICBOU1ZpZXcqIGNvbnRlbnRWaWV3ID0gW1tzZWxmIHdpbmRvd10gY29udGVudFZpZXdd
OworICAgIGNvbnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IE5POworICAgIFtjb250ZW50Vmlldy5s
YXllciBhZGRBbmltYXRpb246ZmFkZUFuaW1hdGlvbihkdXJhdGlvbiwgQW5pbWF0ZUluKSBmb3JL
ZXk6QCJmdWxsc2NyZWVuIl07CiAKICAgICBOU1dpbmRvdyogd2luZG93ID0gW3NlbGYgd2luZG93
XTsKICAgICBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBiZWhhdmlvciA9IFt3aW5kb3cgY29s
bGVjdGlvbkJlaGF2aW9yXTsKQEAgLTU4OCwyOSArNTg0LDYgQEAgc3RhdGljIE5TUmVjdCB3aW5k
b3dGcmFtZUZyb21BcHBhcmVudEZyYW1lcyhOU1JlY3Qgc2NyZWVuRnJhbWUsIE5TUmVjdCBpbml0
aWFsRnIKICAgICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIFt3aW5k
b3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOmJlaGF2aW9yXTsKIAotCi0gICAgaWYgKCFfYmFja2dy
b3VuZFdpbmRvdykKLSAgICAgICAgX2JhY2tncm91bmRXaW5kb3cgPSBjcmVhdGVCYWNrZ3JvdW5k
RnVsbHNjcmVlbldpbmRvdyhzY3JlZW5GcmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBbX2JhY2tn
cm91bmRXaW5kb3cgc2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxheTpOT107Ci0KLSAgICBDR0Zs
b2F0IGN1cnJlbnRBbHBoYSA9IDA7Ci0gICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7Ci0gICAgICAg
IGN1cnJlbnRBbHBoYSA9IFtfZmFkZUFuaW1hdGlvbiBjdXJyZW50QWxwaGFdOwotICAgICAgICBb
X2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgICAgIFtfZmFkZUFuaW1hdGlvbiBz
ZXRXaW5kb3c6bmlsXTsKLSAgICB9Ci0KLSAgICBfZmFkZUFuaW1hdGlvbiA9IGFkb3B0TlMoW1tX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aER1cmF0aW9uOmR1cmF0aW9uIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2luZG93Ol9iYWNrZ3JvdW5kV2luZG93LmdldCgpIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlh
bEFscGhhOmN1cnJlbnRBbHBoYSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxBbHBoYToxXSk7Ci0gICAgW19mYWRl
QW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5n
XTsKLSAgICBbX2ZhZGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjBdOwotICAgIFtfZmFk
ZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Ci0KLSAgICBbX2JhY2tncm91bmRXaW5kb3cgb3Jk
ZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051
bWJlcl1dOwotCiAgICAgW193ZWJWaWV3IF9zZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOk5P
XTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtbc2VsZiB3
aW5kb3ddIGRpc3BsYXlJZk5lZWRlZF07CkBAIC02MjcsNDQgKzYwMCwxMiBAQCBzdGF0aWMgTlNS
ZWN0IHdpbmRvd0ZyYW1lRnJvbUFwcGFyZW50RnJhbWVzKE5TUmVjdCBzY3JlZW5GcmFtZSwgTlNS
ZWN0IGluaXRpYWxGcgogICAgICAgICBfZnVsbFNjcmVlblN0YXRlID0gRXhpdGluZ0Z1bGxTY3Jl
ZW47CiAgICAgfQogCi0gICAgTlNSZWN0IHNjcmVlbkZyYW1lID0gW1tbc2VsZiB3aW5kb3ddIHNj
cmVlbl0gZnJhbWVdOwotICAgIE5TUmVjdCBpbml0aWFsV2luZG93RnJhbWUgPSB3aW5kb3dGcmFt
ZUZyb21BcHBhcmVudEZyYW1lcyhzY3JlZW5GcmFtZSwgX2luaXRpYWxGcmFtZSwgX2ZpbmFsRnJh
bWUpOwotCi0gICAgTlNSZWN0IGN1cnJlbnRGcmFtZSA9IF9zY2FsZUFuaW1hdGlvbiA/IFtfc2Nh
bGVBbmltYXRpb24gY3VycmVudEZyYW1lXSA6IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICBf
c2NhbGVBbmltYXRpb24gPSBhZG9wdE5TKFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2Nd
IGluaXRXaXRoSGludGVkRHVyYXRpb246ZHVyYXRpb24gd2luZG93OltzZWxmIHdpbmRvd10gaW5p
dGFsRnJhbWU6Y3VycmVudEZyYW1lIGZpbmFsRnJhbWU6aW5pdGlhbFdpbmRvd0ZyYW1lXSk7Cisg
ICAgW1tfY2xpcFZpZXcgbGF5ZXJdIGFkZEFuaW1hdGlvbjp6b29tQW5pbWF0aW9uKF9pbml0aWFs
RnJhbWUsIF9maW5hbEZyYW1lLCBkdXJhdGlvbiwgQW5pbWF0ZU91dCkgZm9yS2V5OkAiZnVsbHNj
cmVlbiJdOworICAgIFtbX2NsaXBWaWV3IGxheWVyXS5tYXNrIGFkZEFuaW1hdGlvbjptYXNrQW5p
bWF0aW9uKF9pbml0aWFsRnJhbWUsIF9maW5hbEZyYW1lLCBkdXJhdGlvbiwgQW5pbWF0ZU91dCkg
Zm9yS2V5OkAiZnVsbHNjcmVlbiJdOwogCi0gICAgW19zY2FsZUFuaW1hdGlvbiBzZXRBbmltYXRp
b25CbG9ja2luZ01vZGU6TlNBbmltYXRpb25Ob25ibG9ja2luZ107Ci0gICAgW19zY2FsZUFuaW1h
dGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07Ci0gICAgW19zY2FsZUFuaW1hdGlvbiBzdGFydEFu
aW1hdGlvbl07Ci0KLSAgICBpZiAoIV9iYWNrZ3JvdW5kV2luZG93KQotICAgICAgICBfYmFja2dy
b3VuZFdpbmRvdyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KHNjcmVlbkZyYW1l
KTsKLSAgICBlbHNlCi0gICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdyBzZXRGcmFtZTpzY3JlZW5G
cmFtZSBkaXNwbGF5Ok5PXTsKLQotICAgIENHRmxvYXQgY3VycmVudEFscGhhID0gMTsKLSAgICBp
ZiAoX2ZhZGVBbmltYXRpb24pIHsKLSAgICAgICAgY3VycmVudEFscGhhID0gW19mYWRlQW5pbWF0
aW9uIGN1cnJlbnRBbHBoYV07Ci0gICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9u
XTsKLSAgICAgICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIH0KLSAgICBf
ZmFkZUFuaW1hdGlvbiA9IGFkb3B0TlMoW1tXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIGFsbG9jXSBp
bml0V2l0aER1cmF0aW9uOmR1cmF0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ol9iYWNrZ3JvdW5k
V2luZG93LmdldCgpIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEFscGhhOmN1cnJlbnRBbHBoYSAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmluYWxBbHBoYTowXSk7Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5n
TW9kZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5nXTsKLSAgICBbX2ZhZGVBbmltYXRpb24gc2V0Q3Vy
cmVudFByb2dyZXNzOjBdOwotICAgIFtfZmFkZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Ci0K
LSAgICBbX2JhY2tncm91bmRXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2
ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051bWJlcl1dOwotCi0gICAgLy8gV0tXaW5kb3dTZXRD
bGlwUmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4g
Y29vcmRpbmF0ZXMgaGVyZToKLSAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBmaW5hbEJvdW5kcy5vcmln
aW4gPSBbW3NlbGYgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdp
bl07Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVj
dChbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CisgICAgTlNWaWV3KiBjb250ZW50VmlldyA9
IFtbc2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3XTsKKyAgICBjb250ZW50Vmlldy5sYXllci5oaWRk
ZW4gPSBOTzsKKyAgICBbY29udGVudFZpZXcubGF5ZXIgYWRkQW5pbWF0aW9uOmZhZGVBbmltYXRp
b24oZHVyYXRpb24sIEFuaW1hdGVPdXQpIGZvcktleTpAImZ1bGxzY3JlZW4iXTsKIAogICAgIFtf
d2ViVmlldyBfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczpOT107CiAgICAgW1tzZWxmIHdp
bmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsK
</data>
<flag name="review"
          id="272525"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247908</attachid>
            <date>2015-03-04 16:15:31 -0800</date>
            <delta_ts>2015-03-19 17:21:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-142132-20150304161512.patch</filename>
            <type>text/plain</type>
            <size>25554</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmZjY2MmJhZjE1YzY0
ODE4YzNjMTk4OGJiYTgwNTI3ZWYxMzc2My4uNDVhNDNiMWY3M2ZmYzZlNGI5MjNmMDAyNmYyNGVl
ODMyZWU1ZDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW01hY10gRnVsbHNj
cmVlbiBhbmltYXRpb25zIHdpdGggbWlzbWF0Y2hlZCBhc3BlY3QgcmF0aW9zIGFyZSAic3F1aXNo
ZWQiLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSBu
ZXcgdXRpbGl0eSBtZXRob2QgdG8gY2FsY3VsYXRlIGEgcmVjdCB3aXRoIGEgc3BlY2lmaWMgYXNw
ZWN0IHJhdGlvIHdyYXBwaW5nIGEgc21hbGxlciBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbWFsbGVz
dFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HZW9tZXRyeVV0aWxpdGllcy5oOgorCiAyMDE1LTAyLTI3ICBIdW5zZW9wIEplb25nICA8
aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtHVEtdIEZpeCBidWlsZCBi
cmVhayBhZnRlciByMTgwNzkwLDE4MDc5OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ0YWM2YmFkYzdhNDNkNWI0
ZGJkNjBmZWUyYTE0NjA4ODFjMjIzMzEuLjdkOTRhODU1OTJlOGU3NTJjYzFjMzc3ODM4OTgxODU0
OTg2ZWU3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxNS0wMi0yOCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtNYWNdIEZ1bGxzY3Jl
ZW4gYW5pbWF0aW9ucyB3aXRoIG1pc21hdGNoZWQgYXNwZWN0IHJhdGlvcyBhcmUgInNxdWlzaGVk
Ii4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjEz
MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgVXNlIENBTGF5
ZXIgYW5pbWF0aW9ucyBmb3IgdGhlIHRyYW5zaXRpb24gaW50byBhbmQgb3V0IG9mIGZ1bGxzY3Jl
ZW4uCisKKyAgICAgICAgVGhlIGZ1bGxzY3JlZW4gdHJhbnNpdGlvbiBjb25zaXN0cyBvZiB0aHJl
ZSBzZXBhcmF0ZSBhbmltYXRpb25zOgorICAgICAgICAxLiBBbiBvcGFjaXR5IGFuaW1hdGlvbiBm
b3IgdGhlIGJsYWNrIGJhY2tkcm9wIGJlaGluZCB0aGUgZnVsbHNjcmVlbiBjb250ZW50CisgICAg
ICAgIDIuIEEgc2NhbGUvdHJhbnNsYXRpb24gYW5pbWF0aW9uIGZyb20gZnVsbHNjcmVlbiBlbGVt
ZW50J3MgaW5pdGlhbCBzY3JlZW4gdG8gaXRzIGZpbmFsIG9uZS4KKyAgICAgICAgMy4gQSBjbGlw
IGFuaW1hdGlvbiBmcm9tIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQncyBpbml0aWFsIGFzcGVjdCBy
YXRpbyB0byBpdHMgZmluYWwgb25lLgorCisgICAgICAgIFRoZSBvcGFjaXR5IGFuaW1hdGlvbiB3
aWxsIGFwcGx5IHRvIHRoZSBmdWxsc2NyZWVuIHdpbmRvdydzIGNvbnRlbnQgdmlldydzIGxheWVy
J3MKKyAgICAgICAgYmFja2dyb3VuZCBjb2xvci4gVG8gc2VwYXJhdGVseSBhbmltYXRlIHRoZSB0
cmFuc2Zvcm0gYW5kIG1hc2sgb2YgdGhlIHdlYiB2aWV3J3MgY29udGVudCwgYQorICAgICAgICBs
YXllci1iYWNrZWQgc3VidmlldyBpcyBhZGRlZCB0byB0aGUgY29udGVudCB2aWV3LCBhbmQgdGhl
IHNjYWxlL3RyYW5zbGF0aW9uICYgY2xpcAorICAgICAgICBhbmltYXRpb25zIGFyZSBhcHBsaWVk
IHRvIGl0cyB0cmFuc2Zvcm0gcHJvcGVydHkgYW5kIG1hc2sgbGF5ZXIgcmVzcGVjdGl2ZWx5Lgor
CisgICAgICAgIFV0aWxpdHkgbWV0aG9kcyB0byBjcmVhdGUgZWFjaCBhbmltYXRpb24gaGF2ZSBi
ZWVuIGFkZGVkLCBhbmQgZWFjaCBpbmNsdWRlcyBhIHBhcmFtZXRlciBmb3IKKyAgICAgICAgdGhl
IGRpcmVjdGlvbiBvZiB0aGUgYW5pbWF0aW9uLCBzbyB0aGF0IHRoZSBzYW1lIG1ldGhvZHMgY2Fu
IGJlIHVzZWQgZm9yIGVudGVyaW5nIGFuZAorICAgICAgICBleGl0aW5nIGZ1bGxzY3JlZW4gdHJh
bnNpdGlvbnMuCisKKyAgICAgICAgVGhlIHVzZXItdmlzaWJsZSBjaGFuZ2VzIHRvIHRoaXMgbmV3
IHRyYW5zaXRpb24gYXJlIHdoZW4gdGhlIGFzcGVjdCByYXRpb3Mgb2YgdGhlIGluaXRpYWwKKyAg
ICAgICAgYW5kIGZpbmFsIHNjcmVlbiBsb2NhdGlvbnMgYXJlIGRpZmZlcmVudDogcHJldmlvdXNs
eSB0aGUgdHJhbnNpdGlvbiB3b3VsZCB1c2UgYSBzY2FsZQorICAgICAgICB0cmFuc2Zvcm0gdG8g
InNxdWlzaCIgdGhlIGZ1bGxzY3JlZW4gY29udGVudCBpbnRvIHRoZSBpbml0aWFsIGFzcGVjdCBy
YXRpby4gVGhlIG5ldworICAgICAgICB0cmFuc2l0aW9uIGluc3RlYWQgImNsaXBzIiB0aGUgZnVs
bHNjcmVlbiBjb250ZW50IHRvIHRoZSBpbml0aWFsIGFzcGVjdCByYXRpby4gRm9yIGNvbW1vbgor
ICAgICAgICBvcGVyYXRpb25zIHN1Y2ggYSA8dmlkZW8+IGVsZW1lbnQgd2l0aCBhIGRpZmZlcmVu
dCBhc3BlY3QgcmF0aW8gdGhhbiB0aGUgc2NyZWVuLCB0aGlzIG1ha2VzCisgICAgICAgIHRoZSBi
bGFjayBsZXR0ZXJib3ggImdyb3ciIGR1cmluZyB0aGUgdHJhbnNpdGlvbiwgYW5kIG1ha2VzIHRo
ZSB0cmFuc2l0aW9uIG92ZXJhbGwgbXVjaAorICAgICAgICBzbW9vdGhlci4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3Ol0p
OiBDcmVhdGUgYW5kIGluaXRpYWx6ZSB0aGUgY2xpcHBpbmcgdmlldy4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFt
ZXRlcnM6XSk6IF9iYWNrZ3JvdW5kV2luZG93IHdhcyByZW1vdmVkLgorICAgICAgICAoLVtXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbjpdKTogQWRkIHRoZSB3ZWJW
aWV3IHRvIHRoZSBfY2xpcFZpZXcsIG5vdCB0aGUgY29udGVudFZpZXcuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FbnRlckZ1bGxTY3JlZW5XaXRoSW5pdGlh
bEZyYW1lOmZpbmFsRnJhbWU6XSk6IF9iYWNrZ3JvdW5kV2luZG93LAorICAgICAgICAgICAgICAg
IF9mYWRlQW5pbWF0aW9uLCBhbmQgX3NjYWxlQW5pbWF0aW9uIGFyZSBhbGwgcmVtb3ZlZC4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hlZEVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogRGl0dG8uICBIaWRl
IHRoZSBjb250ZW50VmlldydzCisgICAgICAgICAgICAgICAgbGF5ZXIuIFBhdXNlIHZpc2liaWxp
dHkgdXBkYXRlcy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjb21w
bGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50XSk6IFJlc3VtZSB2
aXNpYmlsaXR5IHVwZGF0ZXMuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgY2xvc2VdKTogX2ZhZGVBbmltYXRpb24gYW5kIF9zY2FsZUFuaW1hdGlvbiBhcmUgcmVtb3Zl
ZC4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0b21XaW5kb3dz
VG9FbnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6XSk6IFJldHVybiBvbmx5IHRoZSBmdWxsc2NyZWVu
CisgICAgICAgICAgICAgICAgd2luZG93LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOiBEaXR0
by4KKyAgICAgICAgKHpvb21BbmltYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKG1hc2tBbmltYXRp
b24pOiBBZGRlZC4KKyAgICAgICAgKGZhZGVBbmltYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRp
b25XaXRoRHVyYXRpb246XSk6IFVzZSB0aGUgdXRpbGl0eQorICAgICAgICAgICAgICAgIG1ldGhv
ZHMgYWJvdmUgdG8gc2V0IHVwIHRoZSBhbmltYXRpb24uCisgICAgICAgICgtW1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRp
b246XSk6IERpdHRvLgorICAgICAgICAoY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cp
OiBEZWxldGVkLgorICAgICAgICAod2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFtZXMpOiBEZWxl
dGVkLgorCiAyMDE1LTAyLTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXSzFdW1dLMl1bTWFjXSBGdWxsc2NyZWVuIGFuaW1hdGlvbiBpcyBpbmNvcnJlY3Qg
d2hlbiBwYWdlIGlzIHNjYWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcAppbmRleCBkMThhYzJiMmI5YjY0OTk0MTY3
NDYyNDhiZjE4ZmRhY2JiM2FjZWZlLi4xYmMyMzU4ZjQxMTQzNDg3NWQ3NWRmNTQzYWY1NDc3MTMw
ZDExNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9t
ZXRyeVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VvbWV0cnlVdGlsaXRpZXMuY3BwCkBAIC0xMTUsNCArMTE1LDE4IEBAIEZsb2F0UmVjdCBsYXJn
ZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QoZmxvYXQgYXNwZWN0UmF0aW8sIGNvbnN0
IEZsb2F0UmVjCiAgICAgcmV0dXJuIGRlc3RSZWN0OwogfQogCitGbG9hdFJlY3Qgc21hbGxlc3RS
ZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdChmbG9hdCBhc3BlY3RSYXRpbywgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0KQoreworICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IHNyY1JlY3Q7CisK
KyAgICBpZiAoYXNwZWN0UmF0aW8gPCBzcmNSZWN0LnNpemUoKS5hc3BlY3RSYXRpbygpKSB7Cisg
ICAgICAgIGZsb2F0IGR5ID0gZGVzdFJlY3Qud2lkdGgoKSAvIGFzcGVjdFJhdGlvIC0gZGVzdFJl
Y3QuaGVpZ2h0KCk7CisgICAgICAgIGRlc3RSZWN0LmluZmxhdGVZKGR5IC8gMik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZmxvYXQgZHggPSBkZXN0UmVjdC5oZWlnaHQoKSAqIGFzcGVjdFJhdGlv
IC0gZGVzdFJlY3Qud2lkdGgoKTsKKyAgICAgICAgZGVzdFJlY3QuaW5mbGF0ZVgoZHggLyAyKTsK
KyAgICB9CisgICAgcmV0dXJuIGRlc3RSZWN0OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaAppbmRleCAzNWRmOGY1
YTM1YjQxYzFlZGE4ZTEzYmExMGNhNDY5NWNiNWMwYTdiLi5jYzg2YjY5ZDMwNjk5ZTQ1MzA2ZTU5
NDViOTIyNzQzNjk2NzFiM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHVuaW9uUmVjdChjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYpOwogRmxv
YXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIAogV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0
IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChmbG9hdCBhc3BlY3RSYXRpbywg
Y29uc3QgRmxvYXRSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgc21hbGxlc3RSZWN0
V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdChmbG9hdCBhc3BlY3RSYXRpbywgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCA3ZGUzMTI1Mzc3MDM5ZDhi
MTE0ZDcyZTU1NDgzNTc0ZGY4MTY3MTk1Li5jNjYzMDAyN2ViZDRjYjNiN2RkMzQ0ZGI3OWZiZmUw
MGIyYTY0YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtMzksOCArMzksNiBAQCBjbGFz
cyBJbnRSZWN0OwogCiBAY2xhc3MgV0tWaWV3OwogQGNsYXNzIFdlYkNvcmVGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3OwotQGNsYXNzIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uOwotQGNsYXNzIFdl
YldpbmRvd0ZhZGVBbmltYXRpb247CiAKIHR5cGVkZWYgZW51bSBGdWxsU2NyZWVuU3RhdGUgOiBO
U0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwogCkBAIC00OCw5ICs0Niw3IEBAIHR5cGVkZWYgZW51
bSBGdWxsU2NyZWVuU3RhdGUgOiBOU0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwogQHByaXZhdGUK
ICAgICBXS1ZpZXcgKl93ZWJWaWV3OyAvLyBDYW5ub3QgYmUgcmV0YWluZWQsIHNlZSA8cmRhcjov
L3Byb2JsZW0vMTQ4ODQ2NjY+LgogICAgIFJldGFpblB0cjxXZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKLSAgICBSZXRhaW5QdHI8V2ViV2luZG93
U2NhbGVBbmltYXRpb24+IF9zY2FsZUFuaW1hdGlvbjsKLSAgICBSZXRhaW5QdHI8V2ViV2luZG93
RmFkZUFuaW1hdGlvbj4gX2ZhZGVBbmltYXRpb247Ci0gICAgUmV0YWluUHRyPE5TV2luZG93PiBf
YmFja2dyb3VuZFdpbmRvdzsKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBfY2xpcFZpZXc7CiAgICAg
TlNSZWN0IF9pbml0aWFsRnJhbWU7CiAgICAgTlNSZWN0IF9maW5hbEZyYW1lOwogICAgIFJldGFp
blB0cjxOU1RpbWVyPiBfd2F0Y2hkb2dUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRl
eCBjNTQyZTliYTNhNTdjMGU5ZTBjMTVlOGQzODUyYWU0NjcyYzYxYTgzLi4yMDk0ZjAwYjMyNDIw
NDNmNjVhY2IxMmVhY2M0NjZjMmQ3NDEwOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBA
IC0zOCwxOCArMzgsMTUgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EaXNwbGF5U2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dlYldpbmRvd0FuaW1hdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotc3RhdGljIFJldGFpblB0cjxOU1dpbmRvdz4gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3Jl
ZW5XaW5kb3coTlNSZWN0IGZyYW1lKTsKLQogc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERl
ZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBlbnVtIEZ1bGxTY3JlZW5TdGF0ZSA6
IE5TSW50ZWdlciB7CkBAIC05Niw2ICs5MywyMiBAQCBzdGF0aWMgdm9pZCBtYWtlUmVzcG9uZGVy
Rmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRPZlZpZXcoTlNXaW5kb3cgKndpbmRvdywgTlNSZQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAg
W3dpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cgY29sbGVjdGlvbkJlaGF2aW9y
XSB8IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVlblByaW1hcnkpXTsKKworICAg
IE5TVmlldyAqY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKKyAgICBjb250ZW50
Vmlldy53YW50c0xheWVyID0gWUVTOworICAgIGNvbnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IFlF
UzsKKyAgICBjb250ZW50Vmlldy5hdXRvcmVzaXplc1N1YnZpZXdzID0gWUVTOworCisgICAgX2Ns
aXBWaWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpjb250ZW50Vmll
dy5ib3VuZHNdKTsKKyAgICBbX2NsaXBWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKKyAgICBbX2Ns
aXBWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUpXTsKKyAgICBDQUxheWVyICptYXNrTGF5ZXIgPSBbQ0FMYXllciBsYXllcl07
CisgICAgbWFza0xheWVyLmFuY2hvclBvaW50ID0gQ0dQb2ludFplcm87CisgICAgbWFza0xheWVy
LmZyYW1lID0gY29udGVudFZpZXcuYm91bmRzOworICAgIG1hc2tMYXllci5iYWNrZ3JvdW5kQ29s
b3IgPSBDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKTsKKyAgICBbX2NsaXBW
aWV3IGxheWVyXS5tYXNrID0gbWFza0xheWVyOworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3
Ol9jbGlwVmlldy5nZXQoKV07CisKICAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsKICAgICBfd2Vi
VmlldyA9IHdlYlZpZXc7CiAgICAgCkBAIC0xNzEsNyArMTg0LDYgQEAgc3RhdGljIHZvaWQgbWFr
ZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZWaWV3KE5TV2luZG93ICp3aW5k
b3csIE5TUmUKICAgICBOU1dpbmRvdyogd2luZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBOU1Jl
Y3Qgc2NyZWVuRnJhbWUgPSBbW3dpbmRvdyBzY3JlZW5dIGZyYW1lXTsKICAgICBbd2luZG93IHNl
dEZyYW1lOnNjcmVlbkZyYW1lIGRpc3BsYXk6WUVTXTsKLSAgICBbX2JhY2tncm91bmRXaW5kb3cg
c2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxheTpZRVNdOwogfQogCiAjcHJhZ21hIG1hcmsgLQpA
QCAtMjQ3LDcgKzI1OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1h
Z2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgIAogICAgIC8vIFRo
ZW4gaW5zZXJ0IHRoZSBXZWJWaWV3IGludG8gdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdwogICAgIE5T
VmlldyogY29udGVudFZpZXcgPSBbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld107Ci0gICAgW2Nv
bnRlbnRWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXcgcG9zaXRpb25lZDpOU1dpbmRvd0JlbG93IHJl
bGF0aXZlVG86bmlsXTsKKyAgICBbX2NsaXBWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXcgcG9zaXRp
b25lZDpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86bmlsXTsKICAgICBbX3dlYlZpZXcgc2V0RnJh
bWU6W2NvbnRlbnRWaWV3IGJvdW5kc11dOwogCiAgICAgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9u
ZGVySWZEZXNjZW5kYW50T2ZWaWV3KHNlbGYud2luZG93LCB3ZWJXaW5kb3dGaXJzdFJlc3BvbmRl
ciwgX3dlYlZpZXcpOwpAQCAtMjY3LDE1ICsyNzksNiBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkK
ICAgICBfaW5pdGlhbEZyYW1lID0gaW5pdGlhbEZyYW1lOwogICAgIF9maW5hbEZyYW1lID0gZmlu
YWxGcmFtZTsKIAotICAgIGlmICghX2JhY2tncm91bmRXaW5kb3cpCi0gICAgICAgIF9iYWNrZ3Jv
dW5kV2luZG93ID0gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coTlNaZXJvUmVjdCk7
Ci0KLSAgICAvLyBUaGUgLW9yZGVyQmFjazogY2FsbCBiZWxvdyBjYW4gY2F1c2UgdGhlIGZ1bGwg
c2NyZWVuIHdpbmRvdydzIGNvbnRlbnRzIHRvIGRyYXcgb24gdG9wIG9mCi0gICAgLy8gYWxsIG90
aGVyIHZpc2libGUgd2luZG93cyBvbiB0aGUgc2NyZWVuLCBkZXNwaXRlIE5TRGlzYWJsZVNjcmVl
blVwZGF0ZXMgaGF2aW5nIGJlZW4gc2V0LCBhbmQKLSAgICAvLyBkZXNwaXRlIGJlaW5nIGV4cGxp
Y2l0bHkgb3JkZXJlZCBiZWhpbmQgYWxsIG90aGVyIHdpbmRvd3MuIFNldCB0aGUgaW5pdGlhbCBz
Y2FsZWQgZnJhbWUgaGVyZQotICAgIC8vIGJlZm9yZSBvcmRlcmluZyB0aGUgd2luZG93IG9uLXNj
cmVlbiB0byBhdm9pZCB0aGlzIGZsYXNoLiA8cmRhcjovL3Byb2JsZW0vMTgzMjUwNjM+Ci0gICAg
V0tXaW5kb3dTZXRTY2FsZWRGcmFtZShzZWxmLndpbmRvdywgaW5pdGlhbEZyYW1lLCBmaW5hbEZy
YW1lKTsKLQogICAgIFtzZWxmLndpbmRvdyBvcmRlckJhY2s6IHNlbGZdOyAvLyBNYWtlIHN1cmUg
dGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBpcyBwYXJ0IG9mIHRoZSBjb3JyZWN0IFNwYWNlLgogICAg
IFtbc2VsZiB3aW5kb3ddIGVudGVyRnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CkBAIC0yOTMsMjgg
KzI5NiwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENv
cGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAgW3NlbGYgX21hbmFnZXJd
LT5kaWRFbnRlckZ1bGxTY3JlZW4oKTsKICAgICAgICAgW3NlbGYgX21hbmFnZXJdLT5zZXRBbmlt
YXRpbmdGdWxsU2NyZWVuKGZhbHNlKTsKIAotICAgICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0g
W1tzZWxmIHdpbmRvd10gZnJhbWVdOwotICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNa
ZXJvUG9pbnQ7Ci0gICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2lu
ZG93Qm91bmRzKTsKLQotICAgICAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0g
ICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLSAgICAgICAgX2ZhZGVBbmlt
YXRpb24gPSBudWxscHRyOwotICAgICAgICAKLSAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93IG9y
ZGVyT3V0OnNlbGZdOwotICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cgc2V0RnJhbWU6TlNaZXJv
UmVjdCBkaXNwbGF5OllFU107Ci0KICAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIgc2V0RXhp
dFdhcm5pbmdWaXNpYmxlOllFU107CiAgICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyIHNldFRh
cmdldDpzZWxmXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUcmFuc2l0aW9uIHRvIGZ1bGxz
Y3JlZW4gZmFpbGVkLiBDbGVhbiB1cC4KICAgICAgICAgX2Z1bGxTY3JlZW5TdGF0ZSA9IE5vdElu
RnVsbFNjcmVlbjsKIAotICAgICAgICBbX3NjYWxlQW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwot
Ci0gICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdyBvcmRlck91dDpzZWxmXTsKLSAgICAgICAgW19i
YWNrZ3JvdW5kV2luZG93IHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOwotCiAgICAg
ICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiAgICAgICAgIFtfd2ViVmll
dyBfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczpOT107CiAKQEAgLTM4NiwzMCArMzczLDE2
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0
YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogCiAgICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUg
cmUtZW5hYmxlZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJS
ZXBhaW50LgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKKyAgICBbX3dlYlZpZXcgX3Nl
dFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM6WUVTXTsKKyAgICBbW3NlbGYgd2luZG93XSBvcmRl
ck91dDpzZWxmXTsKKyAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW1tzZWxmIHdpbmRvd10gY29u
dGVudFZpZXddOworICAgIGNvbnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IFlFUzsKICAgICBbW193
ZWJWaWV3UGxhY2Vob2xkZXIgd2luZG93XSBzZXRBdXRvZGlzcGxheTpOT107CiAKICAgICBOU1Jl
c3BvbmRlciAqZmlyc3RSZXNwb25kZXIgPSBbW3NlbGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl07
CiAgICAgW3NlbGYgX3JlcGxhY2VWaWV3Ol93ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2l0aDpf
d2ViVmlld107CiAgICAgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZW
aWV3KF93ZWJWaWV3LndpbmRvdywgZmlyc3RSZXNwb25kZXIsIF93ZWJWaWV3KTsKIAotICAgIFtb
c2VsZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwotCi0gICAgTlNSZWN0IHdpbmRvd0JvdW5kcyA9
IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNaZXJv
UG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3Vu
ZHMpOwotICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNd
OwotCi0gICAgW19zY2FsZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLSAgICBbX3NjYWxlQW5p
bWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIF9zY2FsZUFuaW1hdGlvbiA9IG51bGxwdHI7Ci0K
LSAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgW19mYWRlQW5pbWF0aW9u
IHNldFdpbmRvdzpuaWxdOwotICAgIF9mYWRlQW5pbWF0aW9uID0gbnVsbHB0cjsKLQotICAgIFtf
YmFja2dyb3VuZFdpbmRvdyBvcmRlck91dDpzZWxmXTsKLSAgICBbX2JhY2tncm91bmRXaW5kb3cg
c2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107Ci0KICAgICBbW193ZWJWaWV3IHdpbmRv
d10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAKICAgICAvLyBUaGVzZSBtZXNzYWdlcyBt
dXN0IGJlIHNlbnQgYWZ0ZXIgdGhlIHN3YXAgb3IgZmxhc2hpbmcgd2lsbCBvY2N1ciBkdXJpbmcg
Zm9yY2VSZXBhaW50OgpAQCAtNDM1LDYgKzQwOCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQog
ICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBudWxscHRyOwogICAgIFtbX3dlYlZpZXcgd2luZG93XSBz
ZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtbX3dlYlZpZXcgd2luZG93XSBkaXNwbGF5SWZOZWVk
ZWRdOworICAgIFtfd2ViVmlldyBfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczpOT107CiAg
ICAgTlNFbmFibGVTY3JlZW5VcGRhdGVzKCk7CiB9CiAKQEAgLTQ1NiwxMSArNDMwLDYgQEAgc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1h
Z2VSZWYgc291cmNlSW1hZ2UpCiAgICAgaWYgKF9mdWxsU2NyZWVuU3RhdGUgPT0gRXhpdGluZ0Z1
bGxTY3JlZW4pCiAgICAgICAgIFtzZWxmIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246
WUVTXTsKIAotICAgIFtfc2NhbGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgW19zY2Fs
ZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLSAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1h
dGlvbl07Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotCiAgICAgX3dlYlZp
ZXcgPSBuaWw7CiAKICAgICBbc3VwZXIgY2xvc2VdOwpAQCAtNDcxLDEyICs0NDAsMTIgQEAgc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1h
Z2VSZWYgc291cmNlSW1hZ2UpCiAKIC0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dzVG9FbnRlckZ1
bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2luZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0
KCksIG5pbF07CisgICAgcmV0dXJuIEBbc2VsZi53aW5kb3ddOwogfQogCiAtIChOU0FycmF5ICop
Y3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93
CiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2luZG93XSwg
X2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07CisgICAgcmV0dXJuIEBbc2VsZi53aW5kb3dd
OwogfQogCiAtICh2b2lkKXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21Bbmlt
YXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRp
b24KQEAgLTUzNyw1MCArNTA2LDc3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3Jl
YXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgIFtDQVRy
YW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNXaW5kb3c+IGNyZWF0
ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSkKK2VudW0gQW5pbWF0aW9u
RGlyZWN0aW9uIHsgQW5pbWF0ZUluLCBBbmltYXRlT3V0IH07CitzdGF0aWMgQ0FBbmltYXRpb24g
Knpvb21BbmltYXRpb24oY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEZsb2F0
UmVjdCYgZmluYWxGcmFtZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIEFuaW1hdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRv
d01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBbd2lu
ZG93IHNldE9wYXF1ZTpZRVNdOwotICAgIFt3aW5kb3cgc2V0QmFja2dyb3VuZENvbG9yOltOU0Nv
bG9yIGJsYWNrQ29sb3JdXTsKLSAgICBbd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107
Ci0gICAgcmV0dXJuIGFkb3B0TlMod2luZG93KTsKKyAgICBDQUJhc2ljQW5pbWF0aW9uICpzY2Fs
ZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAidHJh
bnNmb3JtIl07CisgICAgRmxvYXRSZWN0IHNjYWxlUmVjdCA9IHNtYWxsZXN0UmVjdFdpdGhBc3Bl
Y3RSYXRpb0Fyb3VuZFJlY3QoZmluYWxGcmFtZS5zaXplKCkuYXNwZWN0UmF0aW8oKSwgaW5pdGlh
bEZyYW1lKTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSByZXNldE9yaWdpblRyYW5zZm9ybSA9IENH
QWZmaW5lVHJhbnNmb3JtTWFrZVRyYW5zbGF0aW9uKC1maW5hbEZyYW1lLngoKSwgLWZpbmFsRnJh
bWUueSgpKTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBzY2FsZVRyYW5zZm9ybSA9IENHQWZmaW5l
VHJhbnNmb3JtTWFrZVNjYWxlKHNjYWxlUmVjdC53aWR0aCgpIC8gZmluYWxGcmFtZS53aWR0aCgp
LCBzY2FsZVJlY3QuaGVpZ2h0KCkgLyBmaW5hbEZyYW1lLmhlaWdodCgpKTsKKyAgICBDR0FmZmlu
ZVRyYW5zZm9ybSB0cmFuc2xhdGVUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VUcmFu
c2xhdGlvbihzY2FsZVJlY3QueCgpLCBzY2FsZVJlY3QueSgpKTsKKworICAgIENHQWZmaW5lVHJh
bnNmb3JtIGZpbmFsVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dBZmZpbmVU
cmFuc2Zvcm1Db25jYXQocmVzZXRPcmlnaW5UcmFuc2Zvcm0sIHNjYWxlVHJhbnNmb3JtKSwgdHJh
bnNsYXRlVHJhbnNmb3JtKTsKKyAgICBOU1ZhbHVlICpzY2FsZVZhbHVlID0gW05TVmFsdWUgdmFs
dWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNETWFrZUFmZmluZVRyYW5zZm9ybShmaW5h
bFRyYW5zZm9ybSldOworICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0ZUluKQorICAgICAgICBz
Y2FsZUFuaW1hdGlvbi5mcm9tVmFsdWUgPSBzY2FsZVZhbHVlOworICAgIGVsc2UKKyAgICAgICAg
c2NhbGVBbmltYXRpb24udG9WYWx1ZSA9IHNjYWxlVmFsdWU7CisKKyAgICBzY2FsZUFuaW1hdGlv
bi5kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIHNjYWxlQW5pbWF0aW9uLnJlbW92ZWRPbkNvbXBs
ZXRpb24gPSBOTzsKKyAgICBzY2FsZUFuaW1hdGlvbi5maWxsTW9kZSA9IGtDQUZpbGxNb2RlQm90
aDsKKyAgICBzY2FsZUFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbiA9IFtDQU1lZGlhVGltaW5nRnVu
Y3Rpb24gZnVuY3Rpb25XaXRoTmFtZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uRWFzZUluRWFzZU91
dF07CisgICAgcmV0dXJuIHNjYWxlQW5pbWF0aW9uOwogfQogCi1zdGF0aWMgTlNSZWN0IHdpbmRv
d0ZyYW1lRnJvbUFwcGFyZW50RnJhbWVzKE5TUmVjdCBzY3JlZW5GcmFtZSwgTlNSZWN0IGluaXRp
YWxGcmFtZSwgTlNSZWN0IGZpbmFsRnJhbWUpCitzdGF0aWMgQ0FBbmltYXRpb24gKm1hc2tBbmlt
YXRpb24oY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEZsb2F0UmVjdCYgZmlu
YWxGcmFtZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIEFuaW1hdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7Ci0gICAgTlNSZWN0IGluaXRpYWxXaW5kb3dGcmFtZTsKLSAgICBpZiAoIU5TV2lk
dGgoaW5pdGlhbEZyYW1lKSB8fCAhTlNXaWR0aChmaW5hbEZyYW1lKSB8fCAhTlNIZWlnaHQoaW5p
dGlhbEZyYW1lKSB8fCAhTlNIZWlnaHQoZmluYWxGcmFtZSkpCi0gICAgICAgIHJldHVybiBzY3Jl
ZW5GcmFtZTsKKyAgICBDQUJhc2ljQW5pbWF0aW9uICpib3VuZHNBbmltYXRpb24gPSBbQ0FCYXNp
Y0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImJvdW5kcyJdOworICAgIEZsb2F0UmVj
dCBib3VuZHNSZWN0ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGluaXRp
YWxGcmFtZS5zaXplKCkuYXNwZWN0UmF0aW8oKSwgZmluYWxGcmFtZSk7CisgICAgTlNWYWx1ZSAq
Ym91bmRzVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OkZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGJvdW5kc1JlY3Quc2l6ZSgpKV07CisgICAgaWYgKGRpcmVjdGlvbiA9PSBBbmltYXRlSW4p
CisgICAgICAgIGJvdW5kc0FuaW1hdGlvbi5mcm9tVmFsdWUgPSBib3VuZHNWYWx1ZTsKKyAgICBl
bHNlCisgICAgICAgIGJvdW5kc0FuaW1hdGlvbi50b1ZhbHVlID0gYm91bmRzVmFsdWU7CiAKLSAg
ICBDR0Zsb2F0IHhTY2FsZSA9IE5TV2lkdGgoc2NyZWVuRnJhbWUpIC8gTlNXaWR0aChmaW5hbEZy
YW1lKTsKLSAgICBDR0Zsb2F0IHlTY2FsZSA9IE5TSGVpZ2h0KHNjcmVlbkZyYW1lKSAvIE5TSGVp
Z2h0KGZpbmFsRnJhbWUpOwotICAgIENHRmxvYXQgeFRyYW5zID0gTlNNaW5YKHNjcmVlbkZyYW1l
KSAtIE5TTWluWChmaW5hbEZyYW1lKTsKLSAgICBDR0Zsb2F0IHlUcmFucyA9IE5TTWluWShzY3Jl
ZW5GcmFtZSkgLSBOU01pblkoZmluYWxGcmFtZSk7Ci0gICAgaW5pdGlhbFdpbmRvd0ZyYW1lLnNp
emUgPSBOU01ha2VTaXplKE5TV2lkdGgoaW5pdGlhbEZyYW1lKSAqIHhTY2FsZSwgTlNIZWlnaHQo
aW5pdGlhbEZyYW1lKSAqIHlTY2FsZSk7Ci0gICAgaW5pdGlhbFdpbmRvd0ZyYW1lLm9yaWdpbiA9
IE5TTWFrZVBvaW50Ci0gICAgICAgICggTlNNaW5YKGluaXRpYWxGcmFtZSkgKyB4VHJhbnMgLyAo
TlNXaWR0aChmaW5hbEZyYW1lKSAvIE5TV2lkdGgoaW5pdGlhbEZyYW1lKSkKLSAgICAgICAgLCBO
U01pblkoaW5pdGlhbEZyYW1lKSArIHlUcmFucyAvIChOU0hlaWdodChmaW5hbEZyYW1lKSAvIE5T
SGVpZ2h0KGluaXRpYWxGcmFtZSkpKTsKLSAgICByZXR1cm4gaW5pdGlhbFdpbmRvd0ZyYW1lOwor
ICAgIENBQmFzaWNBbmltYXRpb24gKnBvc2l0aW9uQW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRp
b24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJwb3NpdGlvbiJdOworICAgIE5TVmFsdWUgKnBvc2l0
aW9uVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDpib3VuZHNSZWN0LmxvY2F0aW9uKCld
OworICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0ZUluKQorICAgICAgICBwb3NpdGlvbkFuaW1h
dGlvbi5mcm9tVmFsdWUgPSBwb3NpdGlvblZhbHVlOworICAgIGVsc2UKKyAgICAgICAgcG9zaXRp
b25BbmltYXRpb24udG9WYWx1ZSA9IHBvc2l0aW9uVmFsdWU7CisKKyAgICBDQUFuaW1hdGlvbkdy
b3VwICphbmltYXRpb24gPSBbQ0FBbmltYXRpb25Hcm91cCBhbmltYXRpb25dOworICAgIGFuaW1h
dGlvbi5hbmltYXRpb25zID0gQFtib3VuZHNBbmltYXRpb24sIHBvc2l0aW9uQW5pbWF0aW9uXTsK
KyAgICBhbmltYXRpb24uZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBhbmltYXRpb24ucmVtb3Zl
ZE9uQ29tcGxldGlvbiA9IE5POworICAgIGFuaW1hdGlvbi5maWxsTW9kZSA9IGtDQUZpbGxNb2Rl
Qm90aDsKKyAgICBhbmltYXRpb24udGltaW5nRnVuY3Rpb24gPSBbQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uIGZ1bmN0aW9uV2l0aE5hbWU6a0NBTWVkaWFUaW1pbmdGdW5jdGlvbkVhc2VJbkVhc2VPdXRd
OworICAgIHJldHVybiBhbmltYXRpb247Cit9CisKK3N0YXRpYyBDQUFuaW1hdGlvbiAqZmFkZUFu
aW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiwgQW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICBDQUJhc2ljQW5pbWF0aW9uICpmYWRlQW5pbWF0aW9uID0gW0NBQmFzaWNB
bmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJiYWNrZ3JvdW5kQ29sb3IiXTsKKyAgICBp
ZiAoZGlyZWN0aW9uID09IEFuaW1hdGVJbikKKyAgICAgICAgZmFkZUFuaW1hdGlvbi50b1ZhbHVl
ID0gKGlkKUNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spOworICAgIGVsc2UK
KyAgICAgICAgZmFkZUFuaW1hdGlvbi5mcm9tVmFsdWUgPSAoaWQpQ0dDb2xvckdldENvbnN0YW50
Q29sb3Ioa0NHQ29sb3JCbGFjayk7CisgICAgZmFkZUFuaW1hdGlvbi5kdXJhdGlvbiA9IGR1cmF0
aW9uOworICAgIGZhZGVBbmltYXRpb24ucmVtb3ZlZE9uQ29tcGxldGlvbiA9IE5POworICAgIGZh
ZGVBbmltYXRpb24uZmlsbE1vZGUgPSBrQ0FGaWxsTW9kZUJvdGg7CisgICAgZmFkZUFuaW1hdGlv
bi50aW1pbmdGdW5jdGlvbiA9IFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFt
ZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uRWFzZUluRWFzZU91dF07CisgICAgcmV0dXJuIGZhZGVB
bmltYXRpb247CiB9CiAKIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0
aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewotICAgIE5TUmVjdCBzY3JlZW5G
cmFtZSA9IFtbW3NlbGYgd2luZG93XSBzY3JlZW5dIGZyYW1lXTsKLSAgICBOU1JlY3QgaW5pdGlh
bFdpbmRvd0ZyYW1lID0gd2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFtZXMoc2NyZWVuRnJhbWUs
IF9pbml0aWFsRnJhbWUsIF9maW5hbEZyYW1lKTsKLSAgICAKLSAgICBfc2NhbGVBbmltYXRpb24g
PSBhZG9wdE5TKFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRoSGludGVk
RHVyYXRpb246ZHVyYXRpb24gd2luZG93OltzZWxmIHdpbmRvd10gaW5pdGFsRnJhbWU6aW5pdGlh
bFdpbmRvd0ZyYW1lIGZpbmFsRnJhbWU6c2NyZWVuRnJhbWVdKTsKLSAgICAKLSAgICBbX3NjYWxl
QW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5n
XTsKLSAgICBbX3NjYWxlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczowXTsKLSAgICBbX3Nj
YWxlQW5pbWF0aW9uIHN0YXJ0QW5pbWF0aW9uXTsKLQotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJl
Y3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3Jk
aW5hdGVzIGhlcmU6Ci0gICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFsRnJhbWU7Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgZmluYWxCb3VuZHMub3JpZ2luID0g
W1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3Nl
bGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIFtbX2NsaXBWaWV3IGxheWVyXSBhZGRBbmlt
YXRpb246em9vbUFuaW1hdGlvbihfaW5pdGlhbEZyYW1lLCBfZmluYWxGcmFtZSwgZHVyYXRpb24s
IEFuaW1hdGVJbikgZm9yS2V5OkAiZnVsbHNjcmVlbiJdOworICAgIFtbX2NsaXBWaWV3IGxheWVy
XS5tYXNrIGFkZEFuaW1hdGlvbjptYXNrQW5pbWF0aW9uKF9pbml0aWFsRnJhbWUsIF9maW5hbEZy
YW1lLCBkdXJhdGlvbiwgQW5pbWF0ZUluKSBmb3JLZXk6QCJmdWxsc2NyZWVuIl07CisKKyAgICBO
U1ZpZXcqIGNvbnRlbnRWaWV3ID0gW1tzZWxmIHdpbmRvd10gY29udGVudFZpZXddOworICAgIGNv
bnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IE5POworICAgIFtjb250ZW50Vmlldy5sYXllciBhZGRB
bmltYXRpb246ZmFkZUFuaW1hdGlvbihkdXJhdGlvbiwgQW5pbWF0ZUluKSBmb3JLZXk6QCJmdWxs
c2NyZWVuIl07CiAKICAgICBOU1dpbmRvdyogd2luZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBO
U1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBiZWhhdmlvciA9IFt3aW5kb3cgY29sbGVjdGlvbkJl
aGF2aW9yXTsKQEAgLTU4OCwyOSArNTg0LDYgQEAgc3RhdGljIE5TUmVjdCB3aW5kb3dGcmFtZUZy
b21BcHBhcmVudEZyYW1lcyhOU1JlY3Qgc2NyZWVuRnJhbWUsIE5TUmVjdCBpbml0aWFsRnIKICAg
ICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIFt3aW5kb3cgc2V0Q29s
bGVjdGlvbkJlaGF2aW9yOmJlaGF2aW9yXTsKIAotCi0gICAgaWYgKCFfYmFja2dyb3VuZFdpbmRv
dykKLSAgICAgICAgX2JhY2tncm91bmRXaW5kb3cgPSBjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVl
bldpbmRvdyhzY3JlZW5GcmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBbX2JhY2tncm91bmRXaW5k
b3cgc2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxheTpOT107Ci0KLSAgICBDR0Zsb2F0IGN1cnJl
bnRBbHBoYSA9IDA7Ci0gICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7Ci0gICAgICAgIGN1cnJlbnRB
bHBoYSA9IFtfZmFkZUFuaW1hdGlvbiBjdXJyZW50QWxwaGFdOwotICAgICAgICBbX2ZhZGVBbmlt
YXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzZXRXaW5kb3c6
bmlsXTsKLSAgICB9Ci0KLSAgICBfZmFkZUFuaW1hdGlvbiA9IGFkb3B0TlMoW1tXZWJXaW5kb3dG
YWRlQW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aER1cmF0aW9uOmR1cmF0aW9uIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2luZG93Ol9iYWNrZ3JvdW5kV2luZG93LmdldCgpIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEFscGhhOmN1
cnJlbnRBbHBoYSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmluYWxBbHBoYToxXSk7Ci0gICAgW19mYWRlQW5pbWF0aW9u
IHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5nXTsKLSAgICBb
X2ZhZGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjBdOwotICAgIFtfZmFkZUFuaW1hdGlv
biBzdGFydEFuaW1hdGlvbl07Ci0KLSAgICBbX2JhY2tncm91bmRXaW5kb3cgb3JkZXJXaW5kb3c6
TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051bWJlcl1dOwot
CiAgICAgW193ZWJWaWV3IF9zZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOk5PXTsKICAgICBb
W3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtbc2VsZiB3aW5kb3ddIGRp
c3BsYXlJZk5lZWRlZF07CkBAIC02MjcsNDQgKzYwMCwxMiBAQCBzdGF0aWMgTlNSZWN0IHdpbmRv
d0ZyYW1lRnJvbUFwcGFyZW50RnJhbWVzKE5TUmVjdCBzY3JlZW5GcmFtZSwgTlNSZWN0IGluaXRp
YWxGcgogICAgICAgICBfZnVsbFNjcmVlblN0YXRlID0gRXhpdGluZ0Z1bGxTY3JlZW47CiAgICAg
fQogCi0gICAgTlNSZWN0IHNjcmVlbkZyYW1lID0gW1tbc2VsZiB3aW5kb3ddIHNjcmVlbl0gZnJh
bWVdOwotICAgIE5TUmVjdCBpbml0aWFsV2luZG93RnJhbWUgPSB3aW5kb3dGcmFtZUZyb21BcHBh
cmVudEZyYW1lcyhzY3JlZW5GcmFtZSwgX2luaXRpYWxGcmFtZSwgX2ZpbmFsRnJhbWUpOwotCi0g
ICAgTlNSZWN0IGN1cnJlbnRGcmFtZSA9IF9zY2FsZUFuaW1hdGlvbiA/IFtfc2NhbGVBbmltYXRp
b24gY3VycmVudEZyYW1lXSA6IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICBfc2NhbGVBbmlt
YXRpb24gPSBhZG9wdE5TKFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRo
SGludGVkRHVyYXRpb246ZHVyYXRpb24gd2luZG93OltzZWxmIHdpbmRvd10gaW5pdGFsRnJhbWU6
Y3VycmVudEZyYW1lIGZpbmFsRnJhbWU6aW5pdGlhbFdpbmRvd0ZyYW1lXSk7CisgICAgW1tfY2xp
cFZpZXcgbGF5ZXJdIGFkZEFuaW1hdGlvbjp6b29tQW5pbWF0aW9uKF9pbml0aWFsRnJhbWUsIF9m
aW5hbEZyYW1lLCBkdXJhdGlvbiwgQW5pbWF0ZU91dCkgZm9yS2V5OkAiZnVsbHNjcmVlbiJdOwor
ICAgIFtbX2NsaXBWaWV3IGxheWVyXS5tYXNrIGFkZEFuaW1hdGlvbjptYXNrQW5pbWF0aW9uKF9p
bml0aWFsRnJhbWUsIF9maW5hbEZyYW1lLCBkdXJhdGlvbiwgQW5pbWF0ZU91dCkgZm9yS2V5OkAi
ZnVsbHNjcmVlbiJdOwogCi0gICAgW19zY2FsZUFuaW1hdGlvbiBzZXRBbmltYXRpb25CbG9ja2lu
Z01vZGU6TlNBbmltYXRpb25Ob25ibG9ja2luZ107Ci0gICAgW19zY2FsZUFuaW1hdGlvbiBzZXRD
dXJyZW50UHJvZ3Jlc3M6MF07Ci0gICAgW19zY2FsZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07
Ci0KLSAgICBpZiAoIV9iYWNrZ3JvdW5kV2luZG93KQotICAgICAgICBfYmFja2dyb3VuZFdpbmRv
dyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KHNjcmVlbkZyYW1lKTsKLSAgICBl
bHNlCi0gICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdyBzZXRGcmFtZTpzY3JlZW5GcmFtZSBkaXNw
bGF5Ok5PXTsKLQotICAgIENHRmxvYXQgY3VycmVudEFscGhhID0gMTsKLSAgICBpZiAoX2ZhZGVB
bmltYXRpb24pIHsKLSAgICAgICAgY3VycmVudEFscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJl
bnRBbHBoYV07Ci0gICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLSAgICAg
ICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIH0KLSAgICBfZmFkZUFuaW1h
dGlvbiA9IGFkb3B0TlMoW1tXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aER1
cmF0aW9uOmR1cmF0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ol9iYWNrZ3JvdW5kV2luZG93Lmdl
dCgpIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5pdGlhbEFscGhhOmN1cnJlbnRBbHBoYSAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxBbHBo
YTowXSk7Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0Fu
aW1hdGlvbk5vbmJsb2NraW5nXTsKLSAgICBbX2ZhZGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dy
ZXNzOjBdOwotICAgIFtfZmFkZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Ci0KLSAgICBbX2Jh
Y2tncm91bmRXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2Vs
ZiB3aW5kb3ddIHdpbmRvd051bWJlcl1dOwotCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlwUmVjdCB0
YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0
ZXMgaGVyZToKLSAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3Nl
bGYgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3
aW5kb3ddLCBmaW5hbEJvdW5kcyk7CisgICAgTlNWaWV3KiBjb250ZW50VmlldyA9IFtbc2VsZiB3
aW5kb3ddIGNvbnRlbnRWaWV3XTsKKyAgICBjb250ZW50Vmlldy5sYXllci5oaWRkZW4gPSBOTzsK
KyAgICBbY29udGVudFZpZXcubGF5ZXIgYWRkQW5pbWF0aW9uOmZhZGVBbmltYXRpb24oZHVyYXRp
b24sIEFuaW1hdGVPdXQpIGZvcktleTpAImZ1bGxzY3JlZW4iXTsKIAogICAgIFtfd2ViVmlldyBf
c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczpOT107CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0
QXV0b2Rpc3BsYXk6WUVTXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>