From owner-freebsd-doc@FreeBSD.ORG Sun Nov 1 08:31:14 2009 Return-Path: Delivered-To: freebsd-doc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 52A20106568B for ; Sun, 1 Nov 2009 08:31:14 +0000 (UTC) (envelope-from ryanjudaswolf@gmail.com) Received: from mail-px0-f190.google.com (mail-px0-f190.google.com [209.85.216.190]) by mx1.freebsd.org (Postfix) with ESMTP id 26C808FC12 for ; Sun, 1 Nov 2009 08:31:14 +0000 (UTC) Received: by pxi28 with SMTP id 28so2632697pxi.7 for ; Sun, 01 Nov 2009 01:31:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=qFU5Iue6vpORrIhjda0RZTIV2Qq5KiQGd3sfn9Zk3DM=; b=FgE9H/I+zSlfdamIcacrl1v5t89iJs97AHt7MsayrO7FUqUIH4ScM7rDeKBaDmXS0Z jhMK5c/bnc9QpuaYzJgTzIDWndgQEhYRNhP/LhLRYkG0Ab9uQKKTsJTKWWExVOrohvDB 5Tx16+V0EVYB+YHcjK8nPMBlbsD5ID403iORE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=BQIVS9z2YaxYkfohkpoGneOiA5HSe9ffYINv78RDsoxB7acFp9ImLAIzhN5OMLh0hm ox1zDN6aay9j2o7wUDSXpY/o8tVXiu0vnP9RjhaXRrI3q49Yfn2BMb5DJNZqSGLI+YQe XsOLUrNYMZxacwDRiv30SVW4FWVKrOQZbJw1U= MIME-Version: 1.0 Received: by 10.143.128.1 with SMTP id f1mr320969wfn.309.1257062764827; Sun, 01 Nov 2009 01:06:04 -0700 (PDT) Date: Sun, 1 Nov 2009 01:06:04 -0700 Message-ID: From: Ryan Wolf To: freebsd-doc@FreeBSD.org, ubuntu-doc@lists.ubuntu.com, jbmw@earthlink.net Content-Type: multipart/mixed; boundary=000e0cd72c268ed45404774abb5e X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Dual Booting Ubuntu Linux & FreeBSD using the new Grub2 X-BeenThere: freebsd-doc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Documentation project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Nov 2009 08:31:14 -0000 --000e0cd72c268ed45404774abb5e Content-Type: text/plain; charset=ISO-8859-1 To the Ubuntu & FreeBSD Documentation Folks: I spent all day trying to figure this out all because there isn't proper documentation in books or on the internet on it, and no one's documentation is up to date yet. After I figured it out, thought I would put together a document so that others won't have to strain as hard as I did just installing two operating systems that don't talk to each other to well. I hope Ubuntu decides to have more support for access to BSD partitions, as it doesn't seem to support it too well at the moment. Enjoy the document guys. It's my first time writing one, so I hope it helps. ~ Ryan --000e0cd72c268ed45404774abb5e Content-Type: text/plain; charset=US-ASCII; name="Linux_FreeBSD_Grub_Installation.txt" Content-Disposition: attachment; filename="Linux_FreeBSD_Grub_Installation.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1hinuph0 MzFPQ1QwOQoKKiAqICoKClR1dG9yaWFsIG9uIGR1YWwgYm9vdGluZyBVYnVudHUgOS4xMCBhbmQg RnJlZUJTRCA3LjItUkVMRUFTRQpDcmVhdGVkIGJ5IFJ5YW4gSnVkYXMgV29sZgpyeWFuanVkYXN3 b2xmQGdtYWlsLmNvbQoKKiAqICoKCkNvbnRlbnRzOgoKMS4gUHJvcGVyIEluc3RhbGxhdGlvbiBv ZiB0aGUgdHdvIG9wZXJhdGluZyBzeXN0ZW1zCjIuIERpc2NvdmVyaW5nIHRoZSBQaHlzaWNhbCAm IExvZ2ljYWwgRHJpdmVzIGluIFVidW50dQozLiBJbnN0YWxsaW5nIHRoZSBHcnViMiBCb290bG9h ZGVyCjQuIENvbmZpZ3VyYXRpb24gb2YgR3J1YjI7IEZpbGVzIGFuZCBGb2xkZXJzCgk0LjEgZ3J1 Yi5jZmcgKC9ib290L2dydWIvZ3J1Yi5jZmcpCgk0LjIgZ3J1YiAoL2V0Yy9kZWZhdWx0L2dydWIp Cgk0LjMgL2V0Yy9ncnViLmQvIChmb2xkZXIpCjUuIEFkZGluZyBFbnRyaWVzIHRvIEdydWIgMgoK KiAqICoKCjEuIFByb3BlciBJbnN0YWxsYXRpb24gb2YgdGhlIHR3byBvcGVyYXRpbmcgc3lzdGVt czoKCllvdSBjYW4gaW5zdGFsbCB0aGUgb3BlcmF0aW5nIHN5c3RlbXMgaW4gYW55IG9yZGVyLCB3 aGljaCBpcyBuaWNlIHRvIGtub3cgZm9yIHRoZSB1bmluaXRpYXRlZC4gSnVzdCBtYWtlIHN1cmUg dGhhdCwgd2hlbiBpbnN0YWxsaW5nIEZyZWVCU0QsIHRvIG5vdCBpbnN0YWxsIGFueSBib290bG9h ZGVyIGFuZCBsZWF2ZSBpdCB1bnRvdWNoZWQuIElmIHlvdSBtYWtlIHRoaXMgbWlzdGFrZSwgeW91 IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgRnJlZUJTRCBhdCBhbm90aGVyIHRpbWUuIEluIHRoaXMg Y2FzZSwgcnVuIHRoZSBsaXZlIENEIHZlcnNpb24gb2YgVWJ1bnR1LCBhbmQgY29udGludWUgd2l0 aCB0aGUgcHJvY2VzcyBiZWxvdy4KCiogKiAqCgoyLiBEaXNjb3ZlcmluZyB0aGUgUGh5c2ljYWwg JiBMb2dpY2FsIERyaXZlcyBpbiBVYnVudHUKCkEgc3lzdGVtIHR5cGljYWxseSBib290cyBmcm9t IHRoZSBoYXJkIGRpc2sgYXQgL2Rldi9oZGEsIC9kZXYvc2RhLCAvZGV2L2hkYiwgb3IgL2Rldi9z ZGIuIEJyaW5nIHVwIGEgdGVybWluYWwgc2Vzc2lvbi4gVGhlIGZvbGxvd2luZyBjb21tYW5kIFtw YXJ0ZWRdIGRpc3BsYXlzIGEgbGlzdCBvZiB0aGUgcGFydGl0aW9ucyB0aGF0IGluY2x1ZGVzIG9u ZSB3aXRoIGEgYm9vdCBmbGFnOgoKCSQgc3VkbyBwYXJ0ZWQgL2Rldi9oZGEgcHJpbnQKCUVycm9y OiBFcnJvciBvcGVuaW5nIC9kZXYvaGRhOiBObyBtZWRpdW0gZm91bmQKCVJldHJ5L2NhbmNlbD8g YwoKCXdvbGZAVHN1aGlyby1MYXB0b3A6LyQgc3VkbyBwYXJ0ZWQgL2Rldi9zZGEgcHJpbnQKCVtz dWRvXSBwYXNzd29yZCBmb3Igd29sZjogCglNb2RlbDogQVRBIEhpdGFjaGkgSFRTNTQyNTggKHNj c2kpCglEaXNrIC9kZXYvc2RhOiA4MC4wR0IKCVNlY3RvciBzaXplIChsb2dpY2FsL3BoeXNpY2Fs KTogNTEyQi81MTJCCglQYXJ0aXRpb24gVGFibGU6IG1zZG9zCgoJTnVtYmVyICBTdGFydCAgIEVu ZCAgICAgU2l6ZSAgICBUeXBlICAgICAgRmlsZSBzeXN0ZW0gICAgIEZsYWdzCgkgMSAgICAgIDMy LjNrQiAgNjAuMEdCICA2MC4wR0IgIHByaW1hcnkgICBleHQ0CiAJIDIgICAgICA2MC4wR0IgIDYx LjVHQiAgMTQ5N01CICBleHRlbmRlZAoJIDUgICAgICA2MC4wR0IgIDYxLjVHQiAgMTQ5N01CICBs b2dpY2FsICAgbGludXgtc3dhcCh2MSkKCSAzICAgICAgNjEuNUdCICA4MC4wR0IgIDE4LjVHQiAg cHJpbWFyeSAgICAgICAgICAgICAgICAgICBib290CgoJd29sZkBUc3VoaXJvLUxhcHRvcDovJCAK CkluIHRoaXMgY2FzZSwgVWJ1bnR1IGlzIGluc3RhbGxlZCBvbiAvZGV2L3NkYTEsIHdoZXJlIC9z ZGEgaXMgdGhlIGRyaXZlLCBhbmQgMSBpcyB0aGUgcHJpbWFyeSBwYXJ0aXRpb24gdGhhdCBpcyBp cyBpbnN0YWxsZWQgb24uIEZyZWVCU0QgaXMgaW5zdGFsbGVkIG9uIAovZGV2L3NkYTMuCgoqICog KgoKMy4gSW5zdGFsbGluZyB0aGUgR3J1YjIgQm9vdGxvYWRlcgoKVGhlIGZvbGxvd2luZyBpcyB0 byBpbnN0YWxsL3JlaW5zdGFsbCB0aGUgTWFzdGVyIEJvb3QgUmVjb3JkLiBZb3UgY2FuIHRha2Ug dGhpcyBhcHByb2FjaCBpZiB5b3UgaW5zdGFsbGVkIFVidW50dSBmaXJzdCwgdGhlbiBGcmVlQlNE IHNlY29uZCBvbiBhIHNlcGFyYXRlIHBhcnRpdGlvbiBvbiB0aGUgc2FtZSBoYXJkZGlzay4gCgoJ MS4gQm9vdCB0aGUgc3lzdGVtIHVzaW5nIGFuIFVidW50dSBMaXZlIChpbnN0YWxsYXRpb24pIENE L0RWRAoJMi4gT3BlbiBhIHRlcm1pbmFsIGVtdWxhdG9yIHdpbmRvdyAoTWVudWJhcjogQXBwbGlj YXRpb25zLT4KCSAgIEFjY2Vzc29yaWVzLT5UZXJtaW5hbCkuCgkzLiBHaXZlIHRoZSBmb2xsb3dp bmcgY29tbWFuZHMsIHN1YnN0aXR1dGluZyB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlCgkgICB0aGF0 IGhvbGRzIHRoZSByb290IHBhcnRpdGlvbiB0aGF0IHlvdSBmb3VuZCBmcm9tIHRoZSBbcGFydGVk XQoJICAgY29tbWFuZCAoZS5nLiwgL2Rldi9zZGExKSBmb3IgdGhlIGV4YW1wbGUgYmVsb3cgJy9k ZXYveHh4LycuIAoJICAgU3Vic3RpdHV0ZSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBkcml2ZSB0 aGF0IHlvdSB3YW50IHRvIGluc3RhbGwKCSAgIHRoZSBNQlIgb24gKGUuZy4sIC9kZXYvc2RhKSBm b3IgJy9kZXYveXl5Jy4gCgk0LiBJZiB5b3VyIGxpbnV4IHByaW1hcnkgZHJpdmUgaXMgbm90IGN1 cnJlbnRseSBtb3VudGVkLCB5b3Ugd2lsbCBoYXZlCgkgICB0byBtb3VudCBpdCB3aXRoLiBEbyBu b3QgZm9yZ2V0IHRvIHVubW91bnQgL21udCB3aGVuIGRvbmUuCgkJCgkJYS4gSWYgdGhlIHN5c3Rl bSBkb2VzIG5vdCBoYXZlIGEgc2VwYXJhdGUgJ2Jvb3QnIHBhcnRpdGlvbiwgdXNlCgkJICAgdGhl c2UgY29tbWFuZHM6CgoJCSQgc3VkbyBtb3VudCAvZGV2L3h4eCAvbW50CgkJJCBzdWRvIGdydWIt aW5zdGFsbCAtLXJvb3QtZGlyZWN0b3J5PS9tbnQgL2Rldi95eXkKCQlJbnN0YWxsYXRpb24gZmlu aXNoZWQuIE5vIGVycm9yIHJlcG9ydGVkLgoJCVRoaXMgaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBk ZXZpY2UgbWFwIC9tbnQvYm9vdC9ncnViL2RldmljZS5tYXAuCgkJQ2hlY2sgaWYgdGhpcyBpcyBj b3JyZWN0IG9yIG5vdC4gSWYgYW55IG9mIHRoZSBsaW5lcyBpcyBpbmNvcnJlY3QsCgkJZml4IGl0 IGFuIHJlLXJ1biB0aGUgc2NyaXB0ICdncnViLWluc3RhbGwnLgoJCSQgY2F0IC9ib290L2dydWIv ZGV2aWNlLm1hcAoJCShoZDApICAvZGV2L3NkYQoKCVRoaXMgbGFzdCBsaW5lIGlzIGltcG9ydGFu dCB0byByZW1lbWJlci4gWW91IHdpbGwgYmUgdXNpbmcgaXQgd2hlbiB5b3UgZ28gdG8gY29uZmln dXJlIHlvdXIgc3lzdGVtIGZvciB1c2Ugd2l0aCBGcmVlQlNELiBDb3B5IGl0IGRvd24gYXQgdGhp cyB0aW1lLiBSZW1lbWJlcmluZyB0byB1bm1vdW50IHlvdXIgcGh5c2ljYWwgZHJpdmUuCgoJCSQg c3VkbyB1bW91bnQgL21udAoKCQliLiBJZiB0aGUgc3lzdGVtICpkb2VzKiBoYXZlIGEgc2VwYXJh dGUgYm9vdCBwYXJ0aXRpb24sIHVzZSB0aGVzZSBjb21tYW5kcywgc3Vic3RpdHV0aW5nIHRoZSBu YW1lIG9mIHRoZSBkZXZpY2UgZHJpdmVyIHRoYXQgaG9sZHMgdGhlIGJvb3QgcGFydGl0aW9uIChl LmcuLCAvZGV2L3NkYTEpIGZvciAvZGV2L3p6ejoKCgkJJCBzdWRvIG1vdW50IC9kZXYveHh4IC9t bnQKCQkkIHN1ZG8gbW91bnQgL2Rldi96enogL21udC9ib290CgkJJCBzdWRvIGdydWItaW5zdGFs bCAtLXJvb3QtZGlyZWN0b3J5PS9tbnQgL2Rldi95eXkKCQlJbnN0YWxsYXRpb24gZmluaXNoZWQu IE5vIGVycm9yIHJlcG9ydGVkLgoJCVRoaXMgaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZXZpY2Ug bWFwIC9tbnQvYm9vdC9ncnViL2RldmljZS5tYXAuCgkJQ2hlY2sgaWYgdGhpcyBpcyBjb3JyZWN0 IG9yIG5vdC4gSWYgYW55IG9mIHRoZSBsaW5lcyBpcyBpbmNvcnJlY3QsCgkJZml4IGl0IGFuZCBy ZS1ydW4gdGhlIHNjcmlwdCAnZ3J1Yi1pbnN0YWxsJy4KCQkkIGNhdCAvYm9vdC9ncnViL2Rldmlj ZS5tYXAKCQkoaGQwKSAgIC9kZXYvc2RhCgkJJHN1ZG8gdW1vdW50IC9tbnQKCQoJNS4gUmVib290 IHRoZSBzeXN0ZW0uIFJlbW92ZSB0aGUgQ0QvRFZEIHdoZW4gdGhlIHN5c3RlbSBhc2tzIHlvdSB0 by4KCgk2LiBDb250aW51ZSB0byByZWJvb3QgdGhlIHN5c3RlbSBvZiB0aGUgaGFyZCBkcml2ZSB5 b3Ugc3BlY2lmaWVkIGluIHRoZSBwbGFjZSBvZiAvZGV2L3h4eC4KCklmIHlvdSBldmVyIGhhdmUg cHJvYmxlbXMgYWdhaW4sIGl0IGlzIGVhc3kgZW5vdWdoIHRvIHJ1bjoKCgkkIHN1ZG8gZ3J1Yi1p bnN0YWxsIC9kZXYvc2RhCgpUaGVuIG1ha2Ugc3VyZSBpdCBpcyBpbnN0YWxsZWQgcHJvcGVybHk6 CgoJJCBjYXQgL2Jvb3QvZ3J1Yi9kZXZpY2UubWFwCgkoaGQwKSAgIC9kZXYvc2RhCgkKKiAqICoJ Cgo0LiBDb25maWd1cmF0aW9uIG9mIEdydWIyOyBGaWxlcyBhbmQgRm9sZGVyczoJCQoKVGhlcmUg YXJlIHR3byBsb2NhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGtub3duIGFib3V0IGZvciB0aGUgbmV3 IEdydWIyIGJvb3Rsb2FkZXIsIHdoaWNoIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBvcmlnaW5h bCBHcnViIDAuOTcgYm9vdGxvYWRlcgoKL2Jvb3QvZ3J1Yi8JLSBNYWluIGRpcmVjdG9yeSBob2xk aW5nIHRoZSBHcnViMiBwcm9ncmFtCi9ldGMvZ3J1Yi5kLyAgICAtIENvbmZpZ3VyYXRpb24gZGly ZWN0b3J5IGZvciBib290bG9hZGVyCgpXaGlsZSB0aGUgbWFpbiBncnViIGJvb3Rsb2FkZXIgZmls ZSBjb250aW51ZXMgdG8gcmVzaWRlIGluIHRoZSAvYm9vdC9ncnViIGZvbGRlciwgaXQgaXMgbm8g bG9uZ2VyIEdydWIncyBmYW1pbGlhciBtZW51LmxzdC4gVGhlIG1haW4gR3J1YiAyIGluc3RydWN0 aW9uIGZpbGUgaXMgbm93IGdydWIuY2ZnLiBUaGlzIGZpbGUgaXMgcHJvZHVjZWQgYnkgdmFyaW91 cyBzY3JpcHRzIHJ1biB3aGVuIGVpdGhlciB0aGUgInVwZGF0ZS1ncnViIiBvciAidXBkYXRlLWdy dWIyIiBjb21tYW5kIGlzIGV4ZWN1dGVkLiBUaGUgZmlsZXMgcHJpbWFyaWx5IHJlc3BvbnNpYmxl IGZvciB0aGUgY29udGVudCBvZiBncnViLmNmZyBhcmUgL2V0Yy9kZWZhdWx0L2dydWIgYW5kIGlu ZGl2aWR1YWwgc2NyaXB0IGZpbGVzIGxvY2F0ZWQgaW4gL2V0Yy9ncnViLmQvCgpUaGUgcHJvZ3Jh bSBuYW1lICJ1cGRhdGUtZ3J1YjIiIGlzIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg b2xkZXIgdmVyc2lvbnMgb2YgdGhlIGdydWIyIHBhY2thZ2luZywgYnV0IGZyb20gbm93IG9uIHRo aXMgZG9jdW1lbnQgd2lsbCBvbmx5IHVzZSB0aGUgbmFtZSAidXBkYXRlLWdydWIiLgoKTWFueSBv ZiB0aGUgZmlsZXMgaW4gL2Jvb3QvZ3J1YiB3aWxsIG5vdCBiZSBmYW1pbGlhciB0byB1c2VycyBv ZiBHcnViIExlZ2FjeS4gRXNwZWNpYWxseSBub3RpY2VhYmxlIGFyZSB0aGUgbXVsdGl0dWRlIG9m ICoubW9kIGZpbGVzIGluIHRoZSAvYm9vdC9ncnViIGZvbGRlci4gR3J1YiAyIGlzIG1vZHVsYXIg YW5kIHRoZSAqLm1vZCBmaWxlcyBhcmUgbG9hZGVkIGFzIG5lY2Vzc2FyeSBieSBncnViLiBEZXNw aXRlIHRoZSBhZGRpdGlvbiBvZiB0aGVzZSBmaWxlcywgdGhlIHRvdGFsIHNpemUgb2YgdGhlIC9i b290L2dydWIgY29udGVudHMgaXMgZmFpcmx5IGNsb3NlIHRvIHRoYXQgb2YgR3J1YiBMZWdhY3kg YW5kIHNob3VsZCBub3QgcmVxdWlyZSBhIGxhcmdlciAvYm9vdCBwYXJ0aXRpb24uIAoKKiAqICoK CjQuMSBncnViLmNmZyAoL2Jvb3QvZ3J1Yi9ncnViLmNmZykKCkRPIE5PVCBFRElUIFRISVMgRklM RSBUaGlzIGlzIHRoZSBtYWluIEdydWIgMiBmaWxlLiBJdCAicmVwbGFjZXMiIEdydWIgTGVnYWN5 J3MgL2Jvb3QvZ3J1Yi9tZW51LmxzdC4gVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHcnViIG1lbnUg aW5zdHJ1Y3Rpb25zLiBVbmxpa2UgR3J1YiBMZWdhY3kncyBtZW51LmxzdCBmaWxlLCBncnViLmNm ZyBpcyBOT1QgTUVBTlQgVE8gQkUgRURJVEVEISEhCgogICAgKiBncnViLmNmZyBpcyBhdXRvbWF0 aWNhbGx5IGdlbmVyYXRlZCBvciB1cGRhdGVkIHdoZW5ldmVyICJ1cGRhdGUtZ3J1YiIgaXMgZXhl Y3V0ZWQuIFRoZSBjb21tYW5kIG11c3QgYmUgcnVuIGFzIHJvb3QuCgogICAgKiBUaGUgc2NyaXB0 cyB1c2VkIHRvIGdlbmVyYXRlIGdydWIuY2ZnIGluY2x1ZGUgdGhlIGZpbGVzIGNvbnRhaW5lZCBp biAvZXRjL2dydWIuZCBhbmQgaW5mb3JtYXRpb24gZ2F0aGVyZWQgZnJvbSAvZXRjL2RlZmF1bHQv Z3J1YgoKICAgICogVGhlIGZpbGUgaXMgZGl2aWRlZCBpbnRvIHNlY3Rpb25zLiBFYWNoIHNlY3Rp b24gb2YgdGhlIGZpbGUgaXMgY2xlYXJseSBkZWxpbmVhdGVkIGFuZCBpcyByZWNvZ25pemFibGUg YnkgdGhlIHNlY3Rpb24gaGVhZGVyICMjIyBCRUdJTi4gVGhlIGluZm9ybWF0aW9uIG9uIHRoaXMg bGluZSByZWZlcmVuY2VzIHRoZSBmaWxlIGluIHRoZSAvZXRjL2dydWIuZCBmb2xkZXIgd2hpY2gg aXMgdXNlZCB0byBpbmNvcnBvcmF0ZSB0aGUgaW5mb3JtYXRpb24gaW50byBncnViLmNmZwoKICAg ICogQnkgZGVmYXVsdCwgYW5kIHdoZW5ldmVyIHRoZSAidXBkYXRlLWdydWIiIGNvbW1hbmQgaXMg ZXhlY3V0ZWQsIHRoaXMgZmlsZSBpcyBtYWRlIHJlYWQtb25seS4gVGhpcyBpcyBpbiBrZWVwaW5n IHdpdGggdGhlIGludGVudCB0aGF0IHRoZSBmaWxlIHNob3VsZCBub3QgYmUgZWRpdGVkIG1hbnVh bGx5LiBJZiB5b3UgbXVzdCBlZGl0IHRoaXMgZmlsZSwgaW5zdHJ1Y3Rpb25zIGFyZSBwcm92aWRl ZCBsYXRlciBvbiB0aGlzIHBhZ2UuCgogICAgKiBTYW1wbGUgZ3J1Yi5jZmcgaW5jbHVkaW5nIHR3 byBVYnVudHUga2VybmVscywgbWVtdGVzdDg2KywgV2luZG93cyBhbmQgYSBjdXN0b20gZW50cnkg KDQxX3NyY2QpIGltcG9ydGVkIGZyb20gYW4gL2V0Yy9ncnViLmQvIHNjcmlwdDogCgogICAgICAj CiAgICAgICMgRE8gTk9UIEVESVQgVEhJUyBGSUxFCiAgICAgICMKICAgICAgIyBJdCBpcyBhdXRv bWF0aWNhbGx5IGdlbmVyYXRlZCBieSAvdXNyL3NiaW4vdXBkYXRlLWdydWIgdXNpbmcgdGVtcGxh dGVzCiAgICAgICMgZnJvbSAvZXRjL2dydWIuZCBhbmQgc2V0dGluZ3MgZnJvbSAvZXRjL2RlZmF1 bHQvZ3J1YgogICAgICAjCgogICAgICAjIyMgQkVHSU4gL2V0Yy9ncnViLmQvMDBfaGVhZGVyICMj IwogICAgICBzZXQgZGVmYXVsdD0wCiAgICAgIHNldCB0aW1lb3V0PTUKICAgICAgc2V0IHJvb3Q9 KGhkMCw1KQogICAgICBzZWFyY2ggLS1mcy11dWlkIC0tc2V0IGIwMmUxOTM0LTEyZGQtNDE4YQog ICAgICBpZiBmb250IC91c3Ivc2hhcmUvZ3J1Yi9hc2NpaS5wZmYgOyB0aGVuCiAgICAgICAgc2V0 IGdmeG1vZGU9NjQweDQ4MAogICAgICAgIGluc21vZCBnZnh0ZXJtCiAgICAgICAgaW5zbW9kIHZi ZQogICAgICAgIHRlcm1pbmFsIGdmeHRlcm0KICAgICAgZmkKICAgICAgIyMjIEVORCAvZXRjL2dy dWIuZC8wMF9oZWFkZXIgIyMjCgogICAgICAjIyMgQkVHSU4gL2V0Yy9ncnViLmQvMDVfZGViaWFu X3RoZW1lICMjIwogICAgICBzZXQgbWVudV9jb2xvcl9ub3JtYWw9Y3lhbi9ibHVlCiAgICAgIHNl dCBtZW51X2NvbG9yX2hpZ2hsaWdodD13aGl0ZS9ibHVlCiAgICAgICMjIyBFTkQgL2V0Yy9ncnVi LmQvMDVfZGViaWFuX3RoZW1lICMjIwoKICAgICAgIyMjIEJFR0lOIC9ldGMvZ3J1Yi5kLzEwX2h1 cmQgIyMjCiAgICAgICMjIyBFTkQgL2V0Yy9ncnViLmQvMTBfaHVyZCAjIyMKCiAgICAgICMjIyBC RUdJTiAvZXRjL2dydWIuZC8xMF9saW51eCAjIyMKICAgICAgc2V0IHJvb3Q9KGhkMCw1KQogICAg ICBzZWFyY2ggLS1mcy11dWlkIC0tc2V0IGIwMmUxOTM0LTEyZGQtNDE4YS1iZTNhLTlmZjdkM2U3 ZTdlYQogICAgICBtZW51ZW50cnkgIlVidW50dSwgbGludXggMi42LjI4LTEzLWdlbmVyaWMiIHsK ICAgICAgICAgICAgICBsaW51eCAgIC9ib290L3ZtbGludXotMi42LjI4LTEzLWdlbmVyaWMgcm9v dD1VVUlEPWIwMmUxOTM0LTEyZGQtNDE4YSBybyAgcXVpZXQgc3BsYXNoIAkJCXZnYTgwMAogICAg ICAgICAgICAgIGluaXRyZCAgL2Jvb3QvaW5pdHJkLmltZy0yLjYuMjgtMTMtZ2VuZXJpYwogICAg ICB9CiAgICAgIG1lbnVlbnRyeSAiVWJ1bnR1LCBsaW51eCAyLjYuMjgtMTMtZ2VuZXJpYyAoc2lu Z2xlLXVzZXIgbW9kZSkiIHsKICAgICAgICAgICAgICBsaW51eCAgIC9ib290L3ZtbGludXotMi42 LjI4LTEzLWdlbmVyaWMgcm9vdD1VVUlEPWIwMmUxOTM0LTEyZGQtNDE4YSBybyBzaW5nbGUgCiAg ICAgICAgICAgICAgaW5pdHJkICAvYm9vdC9pbml0cmQuaW1nLTIuNi4yOC0xMy1nZW5lcmljCiAg ICAgIH0KICAgICAgbWVudWVudHJ5ICJVYnVudHUsIGxpbnV4IDIuNi4yOC0xMS1nZW5lcmljIiB7 CiAgICAgICAgICAgICAgbGludXggICAvYm9vdC92bWxpbnV6LTIuNi4yOC0xMS1nZW5lcmljIHJv b3Q9VVVJRD1iMDJlMTkzNC0xMmRkLTQxOGEgcm8gIHF1aWV0IHNwbGFzaCAJCQl2Z2E4MDAKICAg ICAgICAgICAgICBpbml0cmQgIC9ib290L2luaXRyZC5pbWctMi42LjI4LTExLWdlbmVyaWMKICAg ICAgfQogICAgICBtZW51ZW50cnkgIlVidW50dSwgbGludXggMi42LjI4LTExLWdlbmVyaWMgKHNp bmdsZS11c2VyIG1vZGUpIiB7CiAgICAgICAgICAgICAgbGludXggICAvYm9vdC92bWxpbnV6LTIu Ni4yOC0xMS1nZW5lcmljIHJvb3Q9VVVJRD1iMDJlMTkzNC0xMmRkLTQxOGEgcm8gc2luZ2xlIAog ICAgICAgICAgICAgIGluaXRyZCAgL2Jvb3QvaW5pdHJkLmltZy0yLjYuMjgtMTEtZ2VuZXJpYwog ICAgICB9CiAgICAgICMjIyBFTkQgL2V0Yy9ncnViLmQvMTBfbGludXggIyMjCgogICAgICAjIyMg QkVHSU4gL2V0Yy9ncnViLmQvMjBfbWVtdGVzdDg2KyAjIyMKICAgICAgbWVudWVudHJ5ICJNZW1v cnkgdGVzdCAobWVtdGVzdDg2KykiIHsKICAgICAgICAgICAgICBsaW51eCAgIC9ib290L21lbXRl c3Q4NisuYmluCiAgICAgIH0KICAgICAgbWVudWVudHJ5ICJNZW1vcnkgdGVzdCAobWVtdGVzdDg2 Kywgc2VyaWFsIGNvbnNvbGUgMTE1MjAwKSIgewogICAgICAgICAgICAgIGxpbnV4ICAgL2Jvb3Qv bWVtdGVzdDg2Ky5iaW4gY29uc29sZT10dHlTMCwxMTUyMDBuOAogICAgICB9CiAgICAgICMjIyBF TkQgL2V0Yy9ncnViLmQvMjBfbWVtdGVzdDg2KyAjIyMKCiAgICAgICMjIyBCRUdJTiAvZXRjL2dy dWIuZC8zMF9vcy1wcm9iZXIgIyMjCiAgICAgIG1lbnVlbnRyeSAiTWljcm9zb2Z0IFdpbmRvd3Mg WFAgSG9tZSBFZGl0aW9uIChvbiAvZGV2L3NkYTEpIiB7CiAgICAgICAgICAgICAgc2V0IHJvb3Q9 KGhkMCwxKQogICAgICAgICAgICAgIGNoYWlubG9hZGVyICsxCiAgICAgIH0KICAgICAgIyMjIEVO RCAvZXRjL2dydWIuZC8zMF9vcy1wcm9iZXIgIyMjCgogICAgICAjIyMgQkVHSU4gL2V0Yy9ncnVi LmQvNDBfY3VzdG9tICMjIwogICAgICAjIFRoaXMgZmlsZSBpcyBhbiBleGFtcGxlIG9uIGhvdyB0 byBhZGQgY3VzdG9tIGVudHJpZXMKCiAgICAgICMjIyBFTkQgL2V0Yy9ncnViLmQvNDBfY3VzdG9t ICMjIwoKICAgICAgIyMjIEJFR0lOIC9ldGMvZ3J1Yi5kLzQxX3NyY2QgIyMjCiAgICAgIG1lbnVl bnRyeSAiU3lzdGVtUmVzY3VlIENEIG9uIGhhcmQgZHJpdmUiIHsKICAgICAgICAgICAgICBzZXQg cm9vdD0oaGQwLDEwKQogICAgICAgICAgICAgIGxpbnV4ICAgL3N5c3JjZC9yZXNjdWVjZCBzdWJk aXI9c3lzcmNkIHNldGttYXA9dXMKICAgICAgICAgICAgICBpbml0cmQgIC9zeXNyY2QvaW5pdHJh bS5pZ3oKICAgICAgfSAKICAgICAgIyMjIEVORCAvZXRjL2dydWIuZC80MV9zcmNkICMjIwoKKiAq ICoKCjQuMiBncnViICgvZXRjL2RlZmF1bHQvZ3J1YikKClRoaXMgZmlsZSBjb250YWlucyBpbmZv cm1hdGlvbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSB1cHBlciBzZWN0aW9uIG9mIC9ib290L2dy dWIvbWVudS5sc3QuIEl0IGNvbnRhaW5zIHNldHRpbmdzIHByaW1hcmlseSBhZmZlY3RpbmcgR3J1 YidzIG1lbnUgZGlzcGxheS4gVGhpcyBmaWxlIGNhbiBiZSBlZGl0ZWQgYnkgcm9vdCB0byBtYWtl IGNoYW5nZXMgdG8gdGhlc2Ugc2V0dGluZ3M7IHRoZXkgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIGdy dWIuY2ZnIHdoZW4gInVwZGF0ZS1ncnViIiBpcyBleGVjdXRlZC4KCiAgICAKCiAgICAgICMgSWYg eW91IGNoYW5nZSB0aGlzIGZpbGUsIHJ1biAndXBkYXRlLWdydWInIGFmdGVyd2FyZHMgdG8gdXBk YXRlCiAgICAgICMgL2Jvb3QvZ3J1Yi9ncnViLmNmZy4KCiAgICAgIEdSVUJfREVGQVVMVD0wCiAg ICAgIEdSVUJfSElEREVOX1RJTUVPVVQ9MAogICAgICBHUlVCX0hJRERFTl9USU1FT1VUX1FVSUVU PXRydWUKICAgICAgR1JVQl9USU1FT1VUPTEwCiAgICAgIEdSVUJfRElTVFJJQlVUT1I9YGxzYl9y ZWxlYXNlIC1pIC1zIDI+IC9kZXYvbnVsbCB8fCBlY2hvIERlYmlhbmAKICAgICAgR1JVQl9DTURM SU5FX0xJTlVYX0RFRkFVTFQ9InF1aWV0IHNwbGFzaCIKICAgICAgR1JVQl9DTURMSU5FX0xJTlVY PSIiCgogICAgICAjIFVuY29tbWVudCB0byBkaXNhYmxlIGdyYXBoaWNhbCB0ZXJtaW5hbCAoZ3J1 Yi1wYyBvbmx5KQogICAgICAjR1JVQl9URVJNSU5BTD1jb25zb2xlCgogICAgICAjIFRoZSByZXNv bHV0aW9uIHVzZWQgb24gZ3JhcGhpY2FsIHRlcm1pbmFsCiAgICAgICMgbm90ZSB0aGF0IHlvdSBj YW4gdXNlIG9ubHkgbW9kZXMgd2hpY2ggeW91ciBncmFwaGljIGNhcmQgc3VwcG9ydHMgdmlhIFZC RQogICAgICAjIHlvdSBjYW4gc2VlIHRoZW0gaW4gcmVhbCBHUlVCIHdpdGggdGhlIGNvbW1hbmQg YHZiZWluZm8nCiAgICAgICNHUlVCX0dGWE1PREU9NjQweDQ4MAoKICAgICAgIyBVbmNvbW1lbnQg aWYgeW91IGRvbid0IHdhbnQgR1JVQiB0byBwYXNzICJyb290PVVVSUQ9eHh4IiBwYXJhbWV0ZXIg dG8gTGludXgKICAgICAgI0dSVUJfRElTQUJMRV9MSU5VWF9VVUlEPXRydWUKCiAgICAgICMgVW5j b21tZW50IHRvIGRpc2FibGUgZ2VuZXJhdGlvbiBvZiByZWNvdmVyeSBtb2RlIG1lbnUgZW50cnlz CiAgICAgICNHUlVCX0RJU0FCTEVfTElOVVhfUkVDT1ZFUlk9InRydWUiCgoKCiAgICAgIFRoaXMg ZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3JtZXJseSBjb250YWluZWQgaW4gdGhlIHVwcGVy IHNlY3Rpb24gb2YgR3J1YiBMZWdhY3kncyAnJ21lbnUubHN0JycgYW5kIGl0ZW1zIGNvbnRhaW5l ZCBvbiB0aGUgZW5kIG9mIHRoZSBrZXJuZWwgbGluZS4gVGhlIGl0ZW1zIGluIHRoaXMgZmlsZSBj YW4gYmUgZWRpdGVkIGJ5IGEgdXNlciB3aXRoIGFkbWluaXN0cmF0b3IgKHJvb3QpIHByaXZpbGVn ZXMuIEdydWIgZGV2ZWxvcGVycyBoYXZlIGhhdmUgcGxhY2VkIGV4cGxhbmF0b3J5IGNvbW1lbnRz IHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYuCgogICAgKiBHUlVCX0RFRkFVTFQ9MAoKICAgICAgICAg IG8gU2V0cyB0aGUgZGVmYXVsdCBhbmQgcHJlLXNlbGVjdGVkIG1lbnUgZW50cnkuIEVudHJpZXMg bWF5IGJlIG51bWVyaWMgb3Igc2F2ZWQKCiAgICAgICAgICBvICAgIEdSVUJfREVGQVVMVD0wCiAg ICAgICAgICAgICAgICArIFNldHMgdGhlIGRlZmF1bHQgbWVudSBlbnRyeSBieSBtZW51IHBvc2l0 aW9uLiBBcyB3aXRoIEdydWIgTGVnYWN5LCB0aGUgZmlyc3QgIm1lbnVlbnRyeSIgaW4gZ3J1Yi5j ZmcgaXMgMCwgdGhlIHNlY29uZCBpcyAxLCBldGMuIAoKICAgICAgICAgIG8gICAgR1JVQl9ERUZB VUxUPXNhdmVkCiAgICAgICAgICAgICAgICArIFNldHMgdGhlIGRlZmF1bHQgbWVudSBlbnRyeSB3 aXRoIHdoYXRldmVyIHdhcyBzZWxlY3RlZCBvbiB0aGUgbGFzdCBib290LiBJZiB0aGUgbWVudSBp cyBkaXNwbGF5ZWQgZHVyaW5nIGJvb3QsIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIG9wdGlvbiB3 aWxsIGJlIGhpZ2hsaWdodGVkLiBJZiBubyBhY3Rpb24gaXMgdGFrZW4sIHRoaXMgaXMgc2VsZWN0 aW9uIHdoaWNoIHdpbGwgYmUgYm9vdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHRpbWVvdXQsIG9yIGlm IHRoZSAJbWVudSBpcyBoaWRkZW4uIAoKICAgICogR1JVQl9USU1FT1VUPTUKCiAgICAgICAgICBv IE5vIGNoYW5nZSBmcm9tIEdydWIgTGVnYWN5LiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25k cyBiZWZvcmUgdGhlIGRlZmF1bHQgZW50cnkgaXMgYXV0b21hdGljYWxseSBib290ZWQuIFRvIGhh dmUgeW91ciBjaG9pY2UsIHlvdSBwcm9iYWJseSB3YW50IHRvIGNoYW5nZSB0aGlzIHRvIGEgZ3Jl YXRlciB2YWx1ZS4gU2V0dGluZyBhIHZhbHVlIG9mIC0xIHdpbGwgZGlzcGxheSB0aGUgbWVudSB1 bnRpbCB0aGUgdXNlciBtYWtlcyBhIHNlbGVjdGlvbiAobm8gdGltZW91dCkuIAoKICAgICogR1JV Ql9ISURERU5fVElNRU9VVD0wCiAgICAgICAgICBvIFRoZSBtZW51IHdpbGwgYmUgaGlkZGVuIHVu bGVzcyBhICMgc3ltYm9sIGlzIHByZXNlbnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGxpbmUu ICggIyBHUlVCX0hJRERFTl9USU1FT1VUPTAgKS4gWW91IG5lZWQgdG8gbW9kaWZ5IHRoaXMgaW4g b3JkZXIgdG8gc2VlIHRoZSBib290bG9hZGVyIHdoZW4geW91IHR1cm4gb24geW91ciBzeXN0ZW0u IFRoYXQgc2FpZCwgcHV0IHRoZSAjIGluIGZyb250IG9mIGl0LgoKICAgICAgICAgIG8gVGhlIGRl ZmF1bHQgc2V0dGluZyBpbml0aWFsbHkgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2Ygb3RoZXIg b3BlcmF0aW5nIHN5c3RlbXMuCiAgICAgICAgICAgICAgICArIEFub3RoZXIgT1MgRGV0ZWN0ZWQ6 IFRoZSBtZW51IHdpbGwgYmUgZGlzcGxheWVkLiAoIFRoZSBsaW5lIHdpbGwgYmVnaW4gd2l0aCBh ICMgc3ltYm9sLiApCiAgICAgICAgICAgICAgICArIE5vIG90aGVyIE9TIERldGVjdGVkOiBUaGUg bWVudSB3aWxsIGJlIGhpZGRlbi4gCgogICAgICAgICAgbyBGb3IgaW50ZWdlcnMgZ3JlYXRlciB0 aGFuIDAsIHRoZSBzeXN0ZW0gd2lsbCBwYXVzZSwgYnV0IG5vdCBkaXNwbGF5IHRoZSBtZW51LCBm b3IgdGhlIGVudGVyZWQgbnVtYmVyIG9mIHNlY29uZHMuCiAgICAgICAgICBvIDAgVGhlIG1lbnUg d2lsbCBub3QgYmUgZGlzcGxheWVkLiBUaGVyZSB3aWxsIGJlIG5vIGRlbGF5LgogICAgICAgICAg ICAgICAgKyBXaGVuIHRoaXMgZW50cnkgaXMgc2V0IHRvIDA6CgogICAgICAgICAgICAgICAgICAg ICAgIyBUaGUgdXNlciBtYXkgZm9yY2UgZGlzcGxheWluZyB0aGUgbWVudSBhcyB0aGUgY29tcHV0 ZXIgYm9vdHMgYnkgaG9sZGluZyBkb3duIHRoZSBTSElGVCBrZXkuCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqIER1cmluZyBib290LCB0aGUgc3lzdGVtIHdpbGwgY2hlY2sgdGhlIFNISUZU IGtleSBzdGF0dXMuIElmIGl0IGNhbm5vdCBkZXRlcm1pbmUgdGhlIGtleSBzdGF0dXMsIGEgc2hv cnQgZGVsYXkgd2lsbCBlbmFibGUgdGhlIHVzZXIgdG8gZGlzcGxheSB0aGUgbWVudSBieSBwcmVz c2luZyB0aGUgRVNDIGtleS4gCgogICAgICAgICAgICAgICAgICAgICAgIyBJZiBlbmFibGVkLCB0 aGUgc3BsYXNoIHNjcmVlbiBkZXNpZ25hdGVkIGluIDA1X2RlYmlhbl90aGVtZSB3aWxsIGJlIGRp c3BsYXllZCBldmVuIGlmIHRoZSBoaWRkZW4gbWVudSBmZWF0dXJlIGlzIAkJCQlzZWxlY3RlZC4g CgogICAgKiBHUlVCX0hJRERFTl9NRU5VX1FVSUVUPXRydWUKICAgICAgICAgIG8gdHJ1ZSAtIE5v IGNvdW50ZG93biBpcyBkaXNwbGF5ZWQuIFRoZSBzY3JlZW4gd2lsbCBiZSBibGFuay4KICAgICAg ICAgIG8gZmFsc2UgLSBBIGNvdW50ZXIgd2lsbCBkaXNwbGF5IG9uIGEgYmxhbmsgc2NyZWVuIGZv ciB0aGUgZHVyYXRpb24gb2YgdGhlIEdSVUJfSElEREVOX1RJTUVPVVQgdmFsdWUuIAoKICAgICog R1JVQl9ESVNUUklCVVRPUj1sc2JfcmVsZWFzZSAtaSAtcyAyPiAvZGV2L251bGwgfHwgZWNobyBE ZWJpYW4KICAgICAgICAgIG8gRGV0ZXJtaW5lcyB0aGUgZGVzY3JpcHRpdmUgbmFtZSBpbiB0aGUg bWVudSBlbnRyeS4gKFVidW50dSwgWHVidW50dSwgRGViaWFuLCBldGMuKSAKCiAgICAqIEdSVUJf Q01ETElORV9MSU5VWAogICAgICAgICAgbyBJZiBpdCBleGlzdHMsIHRoaXMgbGluZSBpbXBvcnRz IGFueSBlbnRyaWVzIHRvIHRoZSBlbmQgb2YgdGhlIGxpbnV4IGNvbW1hbmQgbGluZSAoR3J1YiBM ZWdhY3kncyAia2VybmVsIiBsaW5lKSBmb3IgYm90aCBub3JtYWwgYW5kIHJlY292ZXJ5IG1vZGVz LiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlICJhbHRvcHRpb25zIiBsaW5lIGluIG1lbnUubHN0IAoK ICAgICogR1JVQl9DTURMSU5FX0xJTlVYX0RFRkFVTFQ9InF1aWV0IHNwbGFzaCIKICAgICAgICAg IG8gVGhpcyBsaW5lIGltcG9ydHMgYW55IGVudHJpZXMgdG8gdGhlIGVuZCBvZiB0aGUgJ2xpbnV4 JyBsaW5lIChHcnViIExlZ2FjeSdzICJrZXJuZWwiIGxpbmUpLiBUaGUgZW50cmllcyBhcmUgYXBw ZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbm9ybWFsIG1vZGUgb25seS4gVGhpcyBpcyBzaW1pbGFy IHRvIHRoZSAiZGVmb3B0aW9ucyIgbGluZSBpbiBtZW51LmxzdC4gIElmIHlvdSB3YW50IGEgYmxh Y2sgc2NyZWVuIHdpdGggc2Nyb2xsaW5nIGJvb3QgbWVzc2FnZXMsIHJlbW92ZSAicXVpZXQgc3Bs YXNoIi4gSWYgeW91IHdhbnQgYSBncnViIHNwbGFzaCBzY3JlZW4gd2l0aCBsaW1pdGVkIG1lc3Nh Z2VzIHVuZGVybmVhdGggdGhlIFVidW50dSBsb2dvLCB1c2Ugb25seSAic3BsYXNoIi4gCgkgIAkg IDwgVGhpcyBbb25seSAic3BsYXNoIl0gd2lsbCBub3Qgd29yayBpbiBLYXJtaWMgZHVyaW5nIGJv b3QgYXMgdGhlIHhzcGxhc2ggZG9lcyBub3QgZGlzcGxheSB0aGUgbWVzc2FnZXMgLCBidXQgdGhl IG1lc3NhZ2VzIGF0IHNodXRkb3duIHdpbGwgYmUgZGlzcGxheWVkLiAKCiAgICAqICNHUlVCX1RF Uk1JTkFMPWNvbnNvbGUKICAgICAgICAgIG8gVW5jb21tZW50IHRvIGRpc2FibGUgZ3JhcGhpY2Fs IHRlcm1pbmFsIChncnViLXBjIG9ubHkpLiAKCiAgICAqICNHUlVCX0RJU0FCTEVfTElOVVhfVVVJ RD10cnVlCiAgICAgICAgICBvIFVuY29tbWVudCB0aGlzIGxpbmUgaWYgeW91IGRvbid0IHdhbnQg R1JVQiB0byBwYXNzICJyb290PVVVSUQ9eHh4IiBwYXJhbWV0ZXIgdG8gTGludXguIAoKICAgICog R1JVQl9ESVNBQkxFX0xJTlVYX1JFQ09WRVJZPXRydWUKICAgICAgICAgIG8gQWRkIG9yIHVuY29t bWVudCB0aGlzIGxpbmUgdG8gcHJldmVudCAiUmVjb3ZlcnkiIG1vZGUga2VybmVsIG9wdGlvbnMg ZnJvbSBhcHBlYXJpbmcgaW4gdGhlIG1lbnUuIAoKICAgICogR1JVQl9ESVNBQkxFX09TX1BST0JF Uj10cnVlCiAgICAgICAgICBvIEVuYWJsZXMvZGlzYWJsZXMgdGhlIG9zLXByb2JlciBjaGVjayBv ZiBvdGhlciBwYXJ0aXRpb25zIGZvciBvcGVyYXRpbmcgc3lzdGVtcywgaW5jbHVkaW5nIFdpbmRv d3MsIExpbnV4LCBPU1ggYW5kIEh1cmQuIAoKVGhpcyBpcyBhbiBleGFtcGxlIG9mIHdoYXQgeW91 ciBmaWxlIHNob3VsZCBsb29rIGxpa2UgYWZ0ZXIgbW9kaWZpZWQ6CgoJIyBJZiB5b3UgY2hhbmdl IHRoaXMgZmlsZSwgcnVuICd1cGRhdGUtZ3J1YicgYWZ0ZXJ3YXJkcyB0byB1cGRhdGUKCSMgL2Jv b3QvZ3J1Yi9ncnViLmNmZy4KCglHUlVCX0RFRkFVTFQ9MAoJI0dSVUJfSElEREVOX1RJTUVPVVQ9 MTAKCUdSVUJfSElEREVOX1RJTUVPVVRfUVVJRVQ9ZmFsc2UKCUdSVUJfVElNRU9VVD0iMTAiCglH UlVCX0RJU1RSSUJVVE9SPWBsc2JfcmVsZWFzZSAtaSAtcyAyPiAvZGV2L251bGwgfHwgZWNobyBE ZWJpYW5gCglHUlVCX0NNRExJTkVfTElOVVhfREVGQVVMVD0ic3BsYXNoIgoJR1JVQl9DTURMSU5F X0xJTlVYPSIiCgoJIyBVbmNvbW1lbnQgdG8gZGlzYWJsZSBncmFwaGljYWwgdGVybWluYWwgKGdy dWItcGMgb25seSkKCSNHUlVCX1RFUk1JTkFMPWNvbnNvbGUKCgkjIFRoZSByZXNvbHV0aW9uIHVz ZWQgb24gZ3JhcGhpY2FsIHRlcm1pbmFsCgkjIG5vdGUgdGhhdCB5b3UgY2FuIHVzZSBvbmx5IG1v ZGVzIHdoaWNoIHlvdXIgZ3JhcGhpYyBjYXJkIHN1cHBvcnRzIHZpYSBWQkUKCSMgeW91IGNhbiBz ZWUgdGhlbSBpbiByZWFsIEdSVUIgd2l0aCB0aGUgY29tbWFuZCBgdmJlaW5mbycKCUdSVUJfR0ZY TU9ERT0xMjgweDgwMAoKCSMgVW5jb21tZW50IGlmIHlvdSBkb24ndCB3YW50IEdSVUIgdG8gcGFz cyAicm9vdD1VVUlEPXh4eCIgcGFyYW1ldGVyIHRvIExpbnV4CgkjR1JVQl9ESVNBQkxFX0xJTlVY X1VVSUQ9dHJ1ZQoKCSMgVW5jb21tZW50IHRvIGRpc2FibGUgZ2VuZXJhdGlvbiBvZiByZWNvdmVy eSBtb2RlIG1lbnUgZW50cnlzCgkjR1JVQl9ESVNBQkxFX0xJTlVYX1JFQ09WRVJZPSJ0cnVlIgoK UExFQVNFIE5PVEU6IElmIHlvdSB3YW50IHRvIGNoYW5nZSB0aGUgcmVzb2x1dGlvbiBvZiB5b3Vy IG1lbnUsIG1ha2Ugc3VyZSB0aGF0IHlvdSBrbm93IHRoZSBwcm9wZXIgcmVzb2x1dGlvbnMgdGhh dCB5b3VyIGNvbXB1dGVyIGNhbiBydW4gYXQgYmVmb3JlIG1vZGlmeWluZy4gSWYgeW91IGFyZSB1 bnN1cmUsIGV2ZW4gaW4gdGhlIHNsaWdodGVzdCwgbGVhdmUgdGhlIGRlZmF1bHRzIGF0IDY0MHg0 ODAKCiogKiAqCgo0LjMgL2V0Yy9ncnViLmQvIChmb2xkZXIpCgpUaGUgZmlsZXMgaW4gdGhpcyBm b2xkZXIgYXJlIHJlYWQgZHVyaW5nIGV4ZWN1dGlvbiBvZiAnInVwZGF0ZS1ncnViIidjb21tYW5k LiBUaGUgc2NyaXB0cyBpbiB0aGVzZSBmaWxlcyBleHBvcnQgdGhlIGluZm9ybWF0aW9uIHRoZXkg Z2F0aGVyIGludG8gL2Jvb3QvZ3J1Yi9ncnViLmNmZy4gVGhlIGZpbGVzIGFyZSBydW4gaW4gc2Vx dWVudGlhbCBvcmRlciAtIGZpbGVzIHdpdGggbmFtZXMgc3RhcnRpbmcgd2l0aCBhIG51bWVyYWwg YXJlIHJ1biBmaXJzdCwgZm9sbG93ZWQgYnkgZmlsZXMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBh IGxldHRlci4gVGhlIG9yZGVyIHRoZSBmaWxlIGlzIHJ1biBkZXRlcm1pbmVzIHRoZSBsb2NhdGlv biBvZiBpdGVtcyBpbiB0aGUgZ3J1YiBtZW51LgoKQ3VzdG9tIGVudHJpZXMgY2FuIGJlIGFkZGVk IHRvIHRoZSA0MF9jdXN0b20gZmlsZSBvciBwbGFjZWQgaW4gYSBuZXcgZmlsZS4KCkFueSBmaWxl IGNyZWF0ZWQgbXVzdCBiZSBleGVjdXRhYmxlIGluIG9yZGVyIHRvIGJlIGluY2x1ZGVkIGluIHRo ZSBncnViLmNmZyBmaWxlIGR1cmluZyB0aGUgInVwZGF0ZS1ncnViIiBjb21tYW5kLiBUaGlzIGNh biBiZSBhY2NvbXBsaXNoZWQgZnJvbSB0aGUgdGVybWluYWwgd2l0aCAic3VkbyBjaG1vZCB1K3gg L2V0Yy9ncnViLmQvZmlsZW5hbWUiLiBUaGUgZm9sbG93aW5nIGlzIGEgdmVyeSBicmllZiBsb29r IGF0IHdoYXQgdGhlIGZpbGVzIGFjY29tcGxpc2guCgogICAgKiAwMF9oZWFkZXIKICAgICAgICAg IG8gTG9hZHMgc2V0dGluZ3MgZnJvbSAvZXRjL2RlZmF1bHQvZ3J1YiwgaW5jbHVkaW5nIHZpc3Vh bCBwcmVzZW50YXRpb25zLCAJCSAgICB0aW1lb3V0LCBhbmQgdGVybWluYWwgb3B0aW9ucy4gCiAg ICAqIDA1X2RlYmlhbl90aGVtZQogICAgICAgICAgbyBTZXRzIGJhY2tncm91bmQsIHRleHQgY29s b3JzLCBhbmQgdGhlbWVzLiAKICAgICogMTBfaHVyZAogICAgICAgICAgbyBMb2NhdGVzIGh1cmQg a2VybmVscy4gCiAgICAqIDEwX2xpbnV4CiAgICAgICAgICBvIExvY2F0ZXMga2VybmVscyBiYXNl ZCBvbiB0aGUgZGlzdHJpYnV0b3IgZGV0ZXJtaW5lZCBieSB0aGUgImxzYl9yZWxlYXNlIAkJICAg IC1pIC1zIiByZXN1bHRzICgiVWJ1bnR1IikuIAogICAgKiAyMF9tZW10ZXN0ODYrCiAgICAgICAg ICBvIElmIHRoZSBmaWxlIC9ib290L21lbXRlc3Q4NisuYmluIGV4aXN0cywgaXQgaXMgaW5jbHVk ZWQgYXMgYSBtZW51IGl0ZW0uIAogICAgKiAzMF9vcy1wcm9iZXIKICAgICAgICAgIG8gU2VhcmNo ZXMgZm9yIG90aGVyIE9TJ3MgYW5kIGluY2x1ZGVzIHRoZW0gaW4gdGhlIG1lbnUuIAogICAgKiA0 MF9jdXN0b20KICAgICAgICAgIG8gQSB0ZW1wbGF0ZSBmb3IgYWRkaW5nIGN1c3RvbSBtZW51IGVu dHJpZXMgd2hpY2ggd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGdydWIuY2ZnIHVwb24gZXhlY3V0aW9u IG9mIHRoZSAidXBkYXRlLWdydWIiIGNvbW1hbmQuIFRoaXMgYW5kIGFueSBvdGhlciBjdXN0b20g ZmlsZXMgbXVzdCBiZSBtYWRlIGV4ZWN1dGFibGUgdG8gYWxsb3cgaW1wb3J0YXRpb24gaW50byBn cnViLmNmZy4gVGhlc2UgZmlsZXMgYXJlIHBsYWNlZCBpbiB0aGUgR3J1YiBtZW51IGluIHRoZSBu dW1lcmljYWwgb3JkZXIgb2YgdGhlIGZpbGUgbmFtZS4gCgoqICogKgoKNS4gQWRkaW5nIEVudHJp ZXMgdG8gR3J1YiAyCgpncnViLmNmZyBpcyB1cGRhdGVkIHdoZW4gdXBkYXRlLWdydWIgaXMgcnVu LiBDaGFuZ2VzIHRvIGdydWIuY2ZnIHNob3VsZCBiZSBtYWRlIHRvIHRoZSBhcHByb3ByaWF0ZSBz Y3JpcHQgZmlsZXMgYW5kIG5vdCB0byB0aGUgZ3J1Yi5jZmcgZmlsZSBpdHNlbGYuCgpOT1RFOiBU aGUgZmlyc3QgY29tbWVudCBpbiBncnViLmNmZyBpcyAiRE8gTk9UIEVESVQgVEhJUyBGSUxFIi4g VGhlIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBpcyByZXR1cm5lZCB0byB0aGlzIHN0YXR1cyBhbnl0 aW1lIHVwZGF0ZS1ncnViIGlzIHJ1bi4gCgpUaGUgZmlsZSB0aGF0IHlvdSBuZWVkIHRvIG1vZGlm eSBpcyBpbiB0aGUgL2V0Yy9ncnViLmQgZm9sZGVyLiBJbiB5b3VyIGZhdm9yaXRlIGVkaXRvciwg ZWRpdCA0MF9jdXN0b20gYW5kIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpbnRv IGl0OgoKCSMhL2Jpbi9zaAoJZXhlYyB0YWlsIC1uICszICQwCgkjIFRoaXMgZmlsZSBwcm92aWRl cyBhbiBlYXN5IHdheSB0byBhZGQgY3VzdG9tIG1lbnUgZW50cmllcy4gIFNpbXBseSB0eXBlIHRo ZQoJIyBtZW51IGVudHJpZXMgeW91IHdhbnQgdG8gYWRkIGFmdGVyIHRoaXMgY29tbWVudC4gIEJl IGNhcmVmdWwgbm90IHRvIGNoYW5nZQoJIyB0aGUgJ2V4ZWMgdGFpbCcgbGluZSBhYm92ZS4KCW1l bnVlbnRyeSAiRnJlZUJTRCA3LjItUkVMRUFTRSBpMzg2IiB7CiAgICAgIAkgIHNldCByb290PSho ZDAsMykKICAgICAgCSAgY2hhaW5sb2FkZXIgKzEKCX0KCk1ha2Ugc3VyZSB0byBsZWF2ZSBubyBz cGFjZXMgaW4gdGhlIGRvY3VtZW50LCBhbmQgY29weWluZyB0aGUgaW5mb3JtYXRpb24gdGhlcmVh ZnRlciAnbWVudWVudHJ5JyB2ZXJiYXRpbSB0byB0aGUgZG9jdW1lbnQuIE1ha2Ugc3VyZSB0aGF0 IHlvdXIgaW5zdGFsbGF0aW9uIG9mIEZyZWVCU0QgaXMgaW5zdGFsbGVkIG9udG8gb250byB0aGUg cHJvcGVyIGRyaXZlIChpZiB0aGF0IGlzIGhkMCwgbWFrZSBpdCBzbyksIGFuZCB0aGF0IHRoZSBj b3JyZWN0IHBhcnRpdGlvbiBpcyBkZXNpZ25hdGVkIChmb3VuZCBmcm9tIHRoZSBbcGFydGVyXSBj b21tYW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBkb2N1bWVudCkuCgpPbmNlIHRoaXMgaXMg ZG9uZSwgdXBncmFkZSBHcnViMjoKCgl3b2xmQFRzdWhpcm8tTGFwdG9wOi8kIHN1ZG8gdXBkYXRl LWdydWIKCUdlbmVyYXRpbmcgZ3J1Yi5jZmcgLi4uCglGb3VuZCBsaW51eCBpbWFnZTogL2Jvb3Qv dm1saW51ei0yLjYuMzEtMTQtZ2VuZXJpYwoJRm91bmQgaW5pdHJkIGltYWdlOiAvYm9vdC9pbml0 cmQuaW1nLTIuNi4zMS0xNC1nZW5lcmljCglGb3VuZCBtZW10ZXN0ODYrIGltYWdlOiAvYm9vdC9t ZW10ZXN0ODYrLmJpbgoJZG9uZQoJd29sZkBUc3VoaXJvLUxhcHRvcDovJCAKCllvdXIgbmV3IGFt ZW5kbWVudCBtYXkgb3IgbWF5IG5vdCBiZSByZWNvZ25pemVkLiBTbyBmYXIsIHRoZSBvcy1wcm9i ZSB0aGF0IGlzIHdpdGggR3J1YjIgZG9lcyBub3QgcmVjb2duaXplIEZyZWVCU0QgcGFydGl0aW9u cy4gSWYgeW91IHdhbnQgdG8gY29uZmlybSB0aGF0IGl0IGlzIG5vdyBpbiB5b3VyIGdydWIuY2Zn IGZpbGUsIGp1c3QgW2NhdF0gaXQgdG8gbWFrZSBzdXJlLCBsb29raW5nIGZvciB0aGUgJzQwX2N1 c3RvbScgYXQgdGhlIGJvdHRvbSBmb3IgaXQuIFdoZW4geW91IHJlYm9vdCwgeW91IHNob3VsZCBz ZWUgdGhlIG9wdGlvbiBmb3IgRnJlZUJTRCBhcyB5b3UgdHlwZWQgaXQuIAoKKiAqICoKCkVuam95 IHlvdXIgbmV3IGR1YWxib290IHN5c3RlbSEgSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVl bCBmcmVlIHRvIGVtYWlsIG1lIGF0IHJ5YW5qdWRhc3dvbGZAZ21haWwuY29tCgpCaWJsaW9ncmFw aHk6CkEgUHJhY3RpY2FsIEd1aWRlIHRvIFVidW50dSBMaW51eCwgTWFyayBHLiBTb2JlbGwgcC40 MzAsIDU3NApodHRwczovL3dpa2kudWJ1bnR1LmNvbS9HcnViMiNVc2VyLWRlZmluZWQlMjBFbnRy aWVzIAoKKiAqICoKCgoK --000e0cd72c268ed45404774abb5e--