From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA40EC433EF for ; Thu, 17 Mar 2022 18:11:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232713AbiCQSMc (ORCPT ); Thu, 17 Mar 2022 14:12:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234468AbiCQSMc (ORCPT ); Thu, 17 Mar 2022 14:12:32 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F460217C70; Thu, 17 Mar 2022 11:11:13 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 1C262B81F38; Thu, 17 Mar 2022 18:11:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82AA2C340E9; Thu, 17 Mar 2022 18:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1647540670; bh=XdgzuXN9aeiZfb9/RrTbmUugTKoTTSFNgHTlI0iJos8=; h=From:To:Cc:Subject:Date:From; b=vLjaZJaxmo531Mi1n7H19XJu/GxO5162QeJ+FG/vMCecmulIudwOj8+3iCDM7DoMN q0tbyyarTHDi2WBOlOc17afP30b27KMTQMECxxaWv0pOkVzqDCSf3KgxcIi9z3eaJH KnI8iZBnnG/sR7sHpdY0c9aj+rlaqCjb+aYg3ZSBKkQF6VtKwX9prE6UaRuYBtIZ4I 5C47ZsXGaeJ0WLvBFCkwIlS0K9OJWKnhNUHmVNdnwKIXksy0ltCXIwXr6vRPMPFlMe SzEGR8a6tnPSeH9iMqNOKZOvYMmr/nia1eGYzFZLOf0Aytdk3DArm8eaE4mphDaXfX qV3YLz3aYwiMw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Miguel Ojeda , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v5 00/20] Rust support Date: Thu, 17 Mar 2022 19:09:48 +0100 Message-Id: <20220317181032.15436-1-ojeda@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org Rust support This is the patch series (v5) to add support for Rust as a second language to the Linux kernel. If you are interested in following this effort, please join us in the mailing list at: rust-for-linux@vger.kernel.org and take a look at the project itself at: https://github.com/Rust-for-Linux As usual, special thanks go to ISRG (Internet Security Research Group) and Google for their financial support on this endeavor. Cheers, Miguel -- # Rust support This cover letter explains the major changes and updates done since the previous ones. For those, please see: RFC: https://lore.kernel.org/lkml/20210414184604.23473-1-ojeda@kernel.org/ v1: https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/ v2: https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/ v3: https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/ v4: https://lore.kernel.org/lkml/20220212130410.6901-1-ojeda@kernel.org/ ## Infrastructure updates There have been several improvements to the overall Rust support: - The toolchain and `alloc` have been upgraded to Rust 1.59.0. This version stabilized `feature(global_asm)` as well as the `-Csymbol-mangling-version=v0` flag. - Added support for host programs written in Rust. This should only be used in scenarios where Rust is required to be available. - Target specification files are now generated on the fly based on the kernel configuration, via a Rust script, instead of having a few predefined files. The content of the generated file has been simplified and, for x86, all the options that can be specified through the command-line have been moved to the architecture `Makefile`. The goal is to reduce the content of the file as much as possible for all architectures, and eventually, stop needing such a file. - Added `HAVE_RUST` kernel option. This symbol should be selected by an architecture if it supports Rust. - Added documentation on `RUSTFLAGS*` and `KBUILD_RUST*` variables. - Simplified tags and cross-references in the documentation. - Other cleanups, fixes and improvements on the build system. ## Abstractions and driver updates Some of the improvements to the abstractions and example drivers are: - Added abstraction for the Hardware Random Number Generator. - `%pA` rework in `vsprintf` following the review. - The `sync` sample now shows how to use static mutexes and conditional variables. - Error codes can now be used without prefixing them with `Error::`, which makes using them closer to C. For instance: fn f(...) -> Result { if ... { return Err(EINVAL); } ... Ok(()) } - Added `CString` type for owned C strings. - `miscdev` registration now holds an owned C string, which enables scenarios when the device name is constructed at runtime. - Added `Bool` trait meant to be used in type states to allow boolean constraints in implementation blocks. - Added `LockInfo` trait that lock "type states" must implement. This allows the definition of additional writable type states. - Simplification of the spin lock implementation by splitting acquisition types. Type states are used to implement two versions of the `Lock` trait: one which never modifies the interrupt state and one that disables them (if they are enabled, then re-enables on unlock). - `Result::unwrap` can now be used in examples that are compiled, linked and run. - Merged `Formatter` and `Buffer` types. - Added `IoMem::offset_ok` for runtime sizes. - Other cleanups, fixes and improvements. ## Patch series status The Rust support is still to be considered experimental. However, support is good enough that kernel developers can start working on the Rust abstractions for subsystems and write drivers and other modules. The current series has just arrived in `linux-next`, as usual. Similarly, the preview docs for this series can be seen at: https://rust-for-linux.github.io/docs/kernel/ As usual, please see the following link for the live list of unstable Rust features we are using: https://github.com/Rust-for-Linux/linux/issues/2 Note that this time the series depends on a patch queued in powerpc-next: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?h=next&id=d4be60fe66b7380530868ceebe549f8eebccacc5 ## Acknowledgements The signatures in the main commits correspond to the people that wrote code that has ended up in them at the present time. For details on contributions to code and discussions, please see our repository: https://github.com/Rust-for-Linux/linux However, we would like to give credit to everyone that has contributed in one way or another to the Rust for Linux project. Since the previous cover letter: - Akira Yokosawa for a detailed review of the documentation and suggesting several improvements. - Petr Mladek and Rasmus Villemoes for their printing/formatting review and suggestions. - Russell King for his review of the Kconfig changes. - Andy Shevchenko, Sergey Senozhatsky, John Paul Adrian Glaubitz and David Laight for their reviews and feedback on the previous round. - bjorn3 for reviewing many PRs. - As usual, bjorn3 and Gary Guo for all the input on Rust compiler details and suggestions. - Philip Li, Yujie Liu et al. for continuing their work on adding Rust support to the Intel 0DAY/LKP kernel test robot. Also, thanks to Nathan Chancellor and Nick Desaulniers for their input. - Wei Liu for taking the time to answer questions from newcomers in Zulip. - Antoni Boucher (and his supporters) et al. for their ongoing work on `rustc_codegen_gcc`. - Philip Herrons (and his supporters Open Source Security and Embecosm) et al. for their ongoing work on GCC Rust. - Mats Larsen, Marc Poulhiès et al. for their ongoing work on improving Rust support in Compiler Explorer. - Many folks that have reported issues, tested the project, helped spread the word, joined discussions and contributed in other ways! Please see also the acknowledgements on the previous cover letters. Boqun Feng (1): kallsyms: use the correct buffer size for symbols Gary Guo (2): rust: add `build_error` crate vsprintf: add new `%pA` format specifier Miguel Ojeda (13): kallsyms: support "big" kernel symbols kallsyms: increase maximum kernel symbol length to 512 rust: add C helpers rust: add `compiler_builtins` crate rust: add `alloc` crate rust: add `macros` crate rust: export generated symbols scripts: add `generate_rust_analyzer.py` scripts: decode_stacktrace: demangle Rust symbols docs: add Rust documentation Kbuild: add Rust support samples: add Rust examples MAINTAINERS: Rust Wedson Almeida Filho (4): rust: add `kernel` crate's `sync` module rust: add `kernel` crate [RFC] drivers: gpio: PrimeCell PL061 in Rust [RFC] drivers: android: Binder IPC in Rust .gitignore | 5 + .rustfmt.toml | 12 + Documentation/doc-guide/kernel-doc.rst | 3 + Documentation/index.rst | 1 + Documentation/kbuild/kbuild.rst | 17 + Documentation/kbuild/makefiles.rst | 50 +- Documentation/process/changes.rst | 41 + Documentation/rust/arch-support.rst | 34 + Documentation/rust/coding-guidelines.rst | 214 ++ Documentation/rust/general-information.rst | 77 + Documentation/rust/index.rst | 20 + Documentation/rust/logo.svg | 357 ++ Documentation/rust/quick-start.rst | 230 ++ MAINTAINERS | 15 + Makefile | 173 +- arch/Kconfig | 6 + arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 5 + arch/x86/Kconfig | 1 + arch/x86/Makefile | 14 + drivers/android/Kconfig | 6 + drivers/android/Makefile | 2 + drivers/android/allocation.rs | 266 ++ drivers/android/context.rs | 80 + drivers/android/defs.rs | 99 + drivers/android/node.rs | 476 +++ drivers/android/process.rs | 960 +++++ drivers/android/range_alloc.rs | 189 + drivers/android/rust_binder.rs | 111 + drivers/android/thread.rs | 870 +++++ drivers/android/transaction.rs | 326 ++ drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio_pl061_rust.rs | 370 ++ include/linux/kallsyms.h | 2 +- include/linux/spinlock.h | 17 +- include/uapi/linux/android/binder.h | 28 +- init/Kconfig | 44 +- kernel/kallsyms.c | 26 +- kernel/livepatch/core.c | 4 +- lib/Kconfig.debug | 143 + lib/vsprintf.c | 13 + rust/.gitignore | 8 + rust/Makefile | 376 ++ rust/alloc/README.md | 32 + rust/alloc/alloc.rs | 440 +++ rust/alloc/borrow.rs | 498 +++ rust/alloc/boxed.rs | 2008 +++++++++++ rust/alloc/collections/mod.rs | 156 + rust/alloc/fmt.rs | 601 ++++ rust/alloc/lib.rs | 231 ++ rust/alloc/macros.rs | 126 + rust/alloc/raw_vec.rs | 561 +++ rust/alloc/slice.rs | 1279 +++++++ rust/alloc/str.rs | 632 ++++ rust/alloc/string.rs | 2862 +++++++++++++++ rust/alloc/vec/drain.rs | 186 + rust/alloc/vec/drain_filter.rs | 145 + rust/alloc/vec/into_iter.rs | 356 ++ rust/alloc/vec/is_zero.rs | 106 + rust/alloc/vec/mod.rs | 3353 ++++++++++++++++++ rust/alloc/vec/partial_eq.rs | 49 + rust/alloc/vec/set_len_on_drop.rs | 30 + rust/alloc/vec/spec_extend.rs | 174 + rust/bindgen_parameters | 13 + rust/build_error.rs | 29 + rust/compiler_builtins.rs | 57 + rust/exports.c | 20 + rust/helpers.c | 531 +++ rust/kernel/allocator.rs | 65 + rust/kernel/amba.rs | 259 ++ rust/kernel/bindings.rs | 47 + rust/kernel/bindings_helper.h | 37 + rust/kernel/build_assert.rs | 80 + rust/kernel/c_types.rs | 119 + rust/kernel/chrdev.rs | 207 ++ rust/kernel/clk.rs | 75 + rust/kernel/cred.rs | 73 + rust/kernel/device.rs | 554 +++ rust/kernel/driver.rs | 440 +++ rust/kernel/error.rs | 560 +++ rust/kernel/file.rs | 873 +++++ rust/kernel/gpio.rs | 478 +++ rust/kernel/hwrng.rs | 242 ++ rust/kernel/io_buffer.rs | 153 + rust/kernel/io_mem.rs | 237 ++ rust/kernel/iov_iter.rs | 81 + rust/kernel/irq.rs | 409 +++ rust/kernel/lib.rs | 260 ++ rust/kernel/linked_list.rs | 247 ++ rust/kernel/miscdev.rs | 291 ++ rust/kernel/mm.rs | 149 + rust/kernel/module_param.rs | 498 +++ rust/kernel/of.rs | 63 + rust/kernel/pages.rs | 144 + rust/kernel/platform.rs | 224 ++ rust/kernel/power.rs | 118 + rust/kernel/prelude.rs | 36 + rust/kernel/print.rs | 414 +++ rust/kernel/random.rs | 50 + rust/kernel/raw_list.rs | 361 ++ rust/kernel/rbtree.rs | 562 +++ rust/kernel/revocable.rs | 163 + rust/kernel/security.rs | 36 + rust/kernel/static_assert.rs | 39 + rust/kernel/std_vendor.rs | 150 + rust/kernel/str.rs | 592 ++++ rust/kernel/sync/arc.rs | 500 +++ rust/kernel/sync/condvar.rs | 138 + rust/kernel/sync/guard.rs | 166 + rust/kernel/sync/locked_by.rs | 112 + rust/kernel/sync/mod.rs | 157 + rust/kernel/sync/mutex.rs | 114 + rust/kernel/sync/revocable_mutex.rs | 184 + rust/kernel/sync/rwsem.rs | 149 + rust/kernel/sync/seqlock.rs | 202 ++ rust/kernel/sync/spinlock.rs | 192 + rust/kernel/sysctl.rs | 199 ++ rust/kernel/task.rs | 182 + rust/kernel/types.rs | 569 +++ rust/kernel/user_ptr.rs | 175 + rust/macros/helpers.rs | 79 + rust/macros/lib.rs | 94 + rust/macros/module.rs | 631 ++++ samples/Kconfig | 2 + samples/Makefile | 1 + samples/rust/Kconfig | 130 + samples/rust/Makefile | 15 + samples/rust/hostprogs/.gitignore | 3 + samples/rust/hostprogs/Makefile | 5 + samples/rust/hostprogs/a.rs | 7 + samples/rust/hostprogs/b.rs | 5 + samples/rust/hostprogs/single.rs | 12 + samples/rust/rust_chrdev.rs | 50 + samples/rust/rust_minimal.rs | 35 + samples/rust/rust_miscdev.rs | 143 + samples/rust/rust_module_parameters.rs | 69 + samples/rust/rust_platform.rs | 22 + samples/rust/rust_print.rs | 54 + samples/rust/rust_random.rs | 60 + samples/rust/rust_semaphore.rs | 171 + samples/rust/rust_semaphore_c.c | 212 ++ samples/rust/rust_stack_probing.rs | 36 + samples/rust/rust_sync.rs | 93 + scripts/.gitignore | 1 + scripts/Kconfig.include | 6 +- scripts/Makefile | 3 + scripts/Makefile.build | 60 + scripts/Makefile.debug | 10 + scripts/Makefile.host | 34 +- scripts/Makefile.lib | 12 + scripts/Makefile.modfinal | 8 +- scripts/cc-version.sh | 12 +- scripts/decode_stacktrace.sh | 14 + scripts/generate_rust_analyzer.py | 133 + scripts/generate_rust_target.rs | 227 ++ scripts/is_rust_module.sh | 13 + scripts/kallsyms.c | 40 +- scripts/kconfig/confdata.c | 75 + scripts/min-tool-version.sh | 6 + scripts/rust-is-available-bindgen-libclang.h | 2 + scripts/rust-is-available.sh | 158 + tools/include/linux/kallsyms.h | 2 +- tools/lib/perf/include/perf/event.h | 2 +- tools/lib/symbol/kallsyms.h | 2 +- 168 files changed, 35290 insertions(+), 63 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 Documentation/rust/arch-support.rst create mode 100644 Documentation/rust/coding-guidelines.rst create mode 100644 Documentation/rust/general-information.rst create mode 100644 Documentation/rust/index.rst create mode 100644 Documentation/rust/logo.svg create mode 100644 Documentation/rust/quick-start.rst create mode 100644 drivers/android/allocation.rs create mode 100644 drivers/android/context.rs create mode 100644 drivers/android/defs.rs create mode 100644 drivers/android/node.rs create mode 100644 drivers/android/process.rs create mode 100644 drivers/android/range_alloc.rs create mode 100644 drivers/android/rust_binder.rs create mode 100644 drivers/android/thread.rs create mode 100644 drivers/android/transaction.rs create mode 100644 drivers/gpio/gpio_pl061_rust.rs create mode 100644 rust/.gitignore create mode 100644 rust/Makefile create mode 100644 rust/alloc/README.md create mode 100644 rust/alloc/alloc.rs create mode 100644 rust/alloc/borrow.rs create mode 100644 rust/alloc/boxed.rs create mode 100644 rust/alloc/collections/mod.rs create mode 100644 rust/alloc/fmt.rs create mode 100644 rust/alloc/lib.rs create mode 100644 rust/alloc/macros.rs create mode 100644 rust/alloc/raw_vec.rs create mode 100644 rust/alloc/slice.rs create mode 100644 rust/alloc/str.rs create mode 100644 rust/alloc/string.rs create mode 100644 rust/alloc/vec/drain.rs create mode 100644 rust/alloc/vec/drain_filter.rs create mode 100644 rust/alloc/vec/into_iter.rs create mode 100644 rust/alloc/vec/is_zero.rs create mode 100644 rust/alloc/vec/mod.rs create mode 100644 rust/alloc/vec/partial_eq.rs create mode 100644 rust/alloc/vec/set_len_on_drop.rs create mode 100644 rust/alloc/vec/spec_extend.rs create mode 100644 rust/bindgen_parameters create mode 100644 rust/build_error.rs create mode 100644 rust/compiler_builtins.rs create mode 100644 rust/exports.c create mode 100644 rust/helpers.c create mode 100644 rust/kernel/allocator.rs create mode 100644 rust/kernel/amba.rs create mode 100644 rust/kernel/bindings.rs create mode 100644 rust/kernel/bindings_helper.h create mode 100644 rust/kernel/build_assert.rs create mode 100644 rust/kernel/c_types.rs create mode 100644 rust/kernel/chrdev.rs create mode 100644 rust/kernel/clk.rs create mode 100644 rust/kernel/cred.rs create mode 100644 rust/kernel/device.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/error.rs create mode 100644 rust/kernel/file.rs create mode 100644 rust/kernel/gpio.rs create mode 100644 rust/kernel/hwrng.rs create mode 100644 rust/kernel/io_buffer.rs create mode 100644 rust/kernel/io_mem.rs create mode 100644 rust/kernel/iov_iter.rs create mode 100644 rust/kernel/irq.rs create mode 100644 rust/kernel/lib.rs create mode 100644 rust/kernel/linked_list.rs create mode 100644 rust/kernel/miscdev.rs create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/module_param.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pages.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/power.rs create mode 100644 rust/kernel/prelude.rs create mode 100644 rust/kernel/print.rs create mode 100644 rust/kernel/random.rs create mode 100644 rust/kernel/raw_list.rs create mode 100644 rust/kernel/rbtree.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/security.rs create mode 100644 rust/kernel/static_assert.rs create mode 100644 rust/kernel/std_vendor.rs create mode 100644 rust/kernel/str.rs create mode 100644 rust/kernel/sync/arc.rs create mode 100644 rust/kernel/sync/condvar.rs create mode 100644 rust/kernel/sync/guard.rs create mode 100644 rust/kernel/sync/locked_by.rs create mode 100644 rust/kernel/sync/mod.rs create mode 100644 rust/kernel/sync/mutex.rs create mode 100644 rust/kernel/sync/revocable_mutex.rs create mode 100644 rust/kernel/sync/rwsem.rs create mode 100644 rust/kernel/sync/seqlock.rs create mode 100644 rust/kernel/sync/spinlock.rs create mode 100644 rust/kernel/sysctl.rs create mode 100644 rust/kernel/task.rs create mode 100644 rust/kernel/types.rs create mode 100644 rust/kernel/user_ptr.rs create mode 100644 rust/macros/helpers.rs create mode 100644 rust/macros/lib.rs create mode 100644 rust/macros/module.rs create mode 100644 samples/rust/Kconfig create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/hostprogs/.gitignore create mode 100644 samples/rust/hostprogs/Makefile create mode 100644 samples/rust/hostprogs/a.rs create mode 100644 samples/rust/hostprogs/b.rs create mode 100644 samples/rust/hostprogs/single.rs create mode 100644 samples/rust/rust_chrdev.rs create mode 100644 samples/rust/rust_minimal.rs create mode 100644 samples/rust/rust_miscdev.rs create mode 100644 samples/rust/rust_module_parameters.rs create mode 100644 samples/rust/rust_platform.rs create mode 100644 samples/rust/rust_print.rs create mode 100644 samples/rust/rust_random.rs create mode 100644 samples/rust/rust_semaphore.rs create mode 100644 samples/rust/rust_semaphore_c.c create mode 100644 samples/rust/rust_stack_probing.rs create mode 100644 samples/rust/rust_sync.rs create mode 100755 scripts/generate_rust_analyzer.py create mode 100644 scripts/generate_rust_target.rs create mode 100755 scripts/is_rust_module.sh create mode 100644 scripts/rust-is-available-bindgen-libclang.h create mode 100755 scripts/rust-is-available.sh base-commit: 09688c0166e76ce2fb85e86b9d99be8b0084cdf9 -- 2.35.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C1A68C433F5 for ; Thu, 17 Mar 2022 18:11:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=fVEA0OU8tmBDKWOmxws2wPvq29v5VFU76O89xcGPOxs=; b=JPRtR+Sm1vdGQ6 yFGVnTbIUSixwJKYQ0qvG9KenhdMI7Wqd4YqqXLi6s0gC5C2A5gS8eMOQrrh3xzBPhgRNptRIeZgb lGKzn3nAd04fXZsEgpMkJP2dYGs3SMQUFiVzOck52LTdza2Fn1tyF4UR2oRLSOhwhlO4U3Ji9wdCN us8kcLajGqswm1ebMIXEgdD6eWoF60G7UjQD/0z2yq7pMLLLNy6JNa0sN/6ldlsa0yUJGJR0fiIiC OiwOdunkw72iBPcPB/df8jxu95gTrHnWUOB4AdB0KhQFAaYHcPVA8o2Ank3mIQycE4QWzk2D6XlfC det39nmoeXTpMZ11BOVA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nUuas-00Gyc9-SQ; Thu, 17 Mar 2022 18:11:26 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nUuae-00GyXm-Ec; Thu, 17 Mar 2022 18:11:15 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 73AEC6163F; Thu, 17 Mar 2022 18:11:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82AA2C340E9; Thu, 17 Mar 2022 18:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1647540670; bh=XdgzuXN9aeiZfb9/RrTbmUugTKoTTSFNgHTlI0iJos8=; h=From:To:Cc:Subject:Date:From; b=vLjaZJaxmo531Mi1n7H19XJu/GxO5162QeJ+FG/vMCecmulIudwOj8+3iCDM7DoMN q0tbyyarTHDi2WBOlOc17afP30b27KMTQMECxxaWv0pOkVzqDCSf3KgxcIi9z3eaJH KnI8iZBnnG/sR7sHpdY0c9aj+rlaqCjb+aYg3ZSBKkQF6VtKwX9prE6UaRuYBtIZ4I 5C47ZsXGaeJ0WLvBFCkwIlS0K9OJWKnhNUHmVNdnwKIXksy0ltCXIwXr6vRPMPFlMe SzEGR8a6tnPSeH9iMqNOKZOvYMmr/nia1eGYzFZLOf0Aytdk3DArm8eaE4mphDaXfX qV3YLz3aYwiMw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Miguel Ojeda , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v5 00/20] Rust support Date: Thu, 17 Mar 2022 19:09:48 +0100 Message-Id: <20220317181032.15436-1-ojeda@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220317_111112_637652_5884CC78 X-CRM114-Status: GOOD ( 31.41 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org UnVzdCBzdXBwb3J0CgpUaGlzIGlzIHRoZSBwYXRjaCBzZXJpZXMgKHY1KSB0byBhZGQgc3VwcG9y dCBmb3IgUnVzdCBhcyBhIHNlY29uZApsYW5ndWFnZSB0byB0aGUgTGludXgga2VybmVsLgoKSWYg eW91IGFyZSBpbnRlcmVzdGVkIGluIGZvbGxvd2luZyB0aGlzIGVmZm9ydCwgcGxlYXNlIGpvaW4g dXMgaW4KdGhlIG1haWxpbmcgbGlzdCBhdDoKCiAgICBydXN0LWZvci1saW51eEB2Z2VyLmtlcm5l bC5vcmcKCmFuZCB0YWtlIGEgbG9vayBhdCB0aGUgcHJvamVjdCBpdHNlbGYgYXQ6CgogICAgaHR0 cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4CgpBcyB1c3VhbCwgc3BlY2lhbCB0aGFua3Mg Z28gdG8gSVNSRyAoSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gKR3JvdXApIGFuZCBHb29nbGUg Zm9yIHRoZWlyIGZpbmFuY2lhbCBzdXBwb3J0IG9uIHRoaXMgZW5kZWF2b3IuCgpDaGVlcnMsCk1p Z3VlbAoKLS0KCiMgUnVzdCBzdXBwb3J0CgpUaGlzIGNvdmVyIGxldHRlciBleHBsYWlucyB0aGUg bWFqb3IgY2hhbmdlcyBhbmQgdXBkYXRlcyBkb25lIHNpbmNlCnRoZSBwcmV2aW91cyBvbmVzLiBG b3IgdGhvc2UsIHBsZWFzZSBzZWU6CgogICAgUkZDOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjEwNDE0MTg0NjA0LjIzNDczLTEtb2plZGFAa2VybmVsLm9yZy8KICAgIHYxOiAgaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMDcwNDIwMjc1Ni4yOTEwNy0xLW9qZWRhQGtl cm5lbC5vcmcvCiAgICB2MjogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTEyMDYx NDAzMTMuNTY1My0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2MzogIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvMjAyMjAxMTcwNTMzNDkuNjgwNC0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2 NDogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMjAyMTIxMzA0MTAuNjkwMS0xLW9q ZWRhQGtlcm5lbC5vcmcvCgoKIyMgSW5mcmFzdHJ1Y3R1cmUgdXBkYXRlcwoKVGhlcmUgaGF2ZSBi ZWVuIHNldmVyYWwgaW1wcm92ZW1lbnRzIHRvIHRoZSBvdmVyYWxsIFJ1c3Qgc3VwcG9ydDoKCiAg LSBUaGUgdG9vbGNoYWluIGFuZCBgYWxsb2NgIGhhdmUgYmVlbiB1cGdyYWRlZCB0byBSdXN0IDEu NTkuMC4KICAgIFRoaXMgdmVyc2lvbiBzdGFiaWxpemVkIGBmZWF0dXJlKGdsb2JhbF9hc20pYCBh cyB3ZWxsIGFzCiAgICB0aGUgYC1Dc3ltYm9sLW1hbmdsaW5nLXZlcnNpb249djBgIGZsYWcuCgog IC0gQWRkZWQgc3VwcG9ydCBmb3IgaG9zdCBwcm9ncmFtcyB3cml0dGVuIGluIFJ1c3QuIFRoaXMg c2hvdWxkCiAgICBvbmx5IGJlIHVzZWQgaW4gc2NlbmFyaW9zIHdoZXJlIFJ1c3QgaXMgcmVxdWly ZWQgdG8gYmUgYXZhaWxhYmxlLgoKICAtIFRhcmdldCBzcGVjaWZpY2F0aW9uIGZpbGVzIGFyZSBu b3cgZ2VuZXJhdGVkIG9uIHRoZSBmbHkgYmFzZWQKICAgIG9uIHRoZSBrZXJuZWwgY29uZmlndXJh dGlvbiwgdmlhIGEgUnVzdCBzY3JpcHQsIGluc3RlYWQgb2YKICAgIGhhdmluZyBhIGZldyBwcmVk ZWZpbmVkIGZpbGVzLgoKICAgIFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgZmlsZSBoYXMg YmVlbiBzaW1wbGlmaWVkIGFuZCwKICAgIGZvciB4ODYsIGFsbCB0aGUgb3B0aW9ucyB0aGF0IGNh biBiZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUKICAgIGNvbW1hbmQtbGluZSBoYXZlIGJlZW4gbW92 ZWQgdG8gdGhlIGFyY2hpdGVjdHVyZSBgTWFrZWZpbGVgLgoKICAgIFRoZSBnb2FsIGlzIHRvIHJl ZHVjZSB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBhcyBtdWNoIGFzIHBvc3NpYmxlCiAgICBmb3Ig YWxsIGFyY2hpdGVjdHVyZXMsIGFuZCBldmVudHVhbGx5LCBzdG9wIG5lZWRpbmcgc3VjaCBhIGZp bGUuCgogIC0gQWRkZWQgYEhBVkVfUlVTVGAga2VybmVsIG9wdGlvbi4gVGhpcyBzeW1ib2wgc2hv dWxkIGJlIHNlbGVjdGVkCiAgICBieSBhbiBhcmNoaXRlY3R1cmUgaWYgaXQgc3VwcG9ydHMgUnVz dC4KCiAgLSBBZGRlZCBkb2N1bWVudGF0aW9uIG9uIGBSVVNURkxBR1MqYCBhbmQgYEtCVUlMRF9S VVNUKmAgdmFyaWFibGVzLgoKICAtIFNpbXBsaWZpZWQgdGFncyBhbmQgY3Jvc3MtcmVmZXJlbmNl cyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KCiAgLSBPdGhlciBjbGVhbnVwcywgZml4ZXMgYW5kIGlt cHJvdmVtZW50cyBvbiB0aGUgYnVpbGQgc3lzdGVtLgoKCiMjIEFic3RyYWN0aW9ucyBhbmQgZHJp dmVyIHVwZGF0ZXMKClNvbWUgb2YgdGhlIGltcHJvdmVtZW50cyB0byB0aGUgYWJzdHJhY3Rpb25z IGFuZCBleGFtcGxlIGRyaXZlcnMgYXJlOgoKICAtIEFkZGVkIGFic3RyYWN0aW9uIGZvciB0aGUg SGFyZHdhcmUgUmFuZG9tIE51bWJlciBHZW5lcmF0b3IuCgogIC0gYCVwQWAgcmV3b3JrIGluIGB2 c3ByaW50ZmAgZm9sbG93aW5nIHRoZSByZXZpZXcuCgogIC0gVGhlIGBzeW5jYCBzYW1wbGUgbm93 IHNob3dzIGhvdyB0byB1c2Ugc3RhdGljIG11dGV4ZXMgYW5kCiAgICBjb25kaXRpb25hbCB2YXJp YWJsZXMuCgogIC0gRXJyb3IgY29kZXMgY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgcHJlZml4aW5n IHRoZW0gd2l0aAogICAgYEVycm9yOjpgLCB3aGljaCBtYWtlcyB1c2luZyB0aGVtIGNsb3NlciB0 byBDLiBGb3IgaW5zdGFuY2U6CgogICAgICAgIGZuIGYoLi4uKSAtPiBSZXN1bHQgewogICAgICAg ICAgICBpZiAuLi4gewogICAgICAgICAgICAgICAgcmV0dXJuIEVycihFSU5WQUwpOwogICAgICAg ICAgICB9CiAgICAgICAgICAgIC4uLgogICAgICAgICAgICBPaygoKSkKICAgICAgICB9CgogIC0g QWRkZWQgYENTdHJpbmdgIHR5cGUgZm9yIG93bmVkIEMgc3RyaW5ncy4KCiAgLSBgbWlzY2RldmAg cmVnaXN0cmF0aW9uIG5vdyBob2xkcyBhbiBvd25lZCBDIHN0cmluZywgd2hpY2ggZW5hYmxlcwog ICAgc2NlbmFyaW9zIHdoZW4gdGhlIGRldmljZSBuYW1lIGlzIGNvbnN0cnVjdGVkIGF0IHJ1bnRp bWUuCgogIC0gQWRkZWQgYEJvb2xgIHRyYWl0IG1lYW50IHRvIGJlIHVzZWQgaW4gdHlwZSBzdGF0 ZXMgdG8gYWxsb3cKICAgIGJvb2xlYW4gY29uc3RyYWludHMgaW4gaW1wbGVtZW50YXRpb24gYmxv Y2tzLgoKICAtIEFkZGVkIGBMb2NrSW5mb2AgdHJhaXQgdGhhdCBsb2NrICJ0eXBlIHN0YXRlcyIg bXVzdCBpbXBsZW1lbnQuCiAgICBUaGlzIGFsbG93cyB0aGUgZGVmaW5pdGlvbiBvZiBhZGRpdGlv bmFsIHdyaXRhYmxlIHR5cGUgc3RhdGVzLgoKICAtIFNpbXBsaWZpY2F0aW9uIG9mIHRoZSBzcGlu IGxvY2sgaW1wbGVtZW50YXRpb24gYnkgc3BsaXR0aW5nCiAgICBhY3F1aXNpdGlvbiB0eXBlcy4g VHlwZSBzdGF0ZXMgYXJlIHVzZWQgdG8gaW1wbGVtZW50IHR3byB2ZXJzaW9ucwogICAgb2YgdGhl IGBMb2NrYCB0cmFpdDogb25lIHdoaWNoIG5ldmVyIG1vZGlmaWVzIHRoZSBpbnRlcnJ1cHQgc3Rh dGUKICAgIGFuZCBvbmUgdGhhdCBkaXNhYmxlcyB0aGVtIChpZiB0aGV5IGFyZSBlbmFibGVkLCB0 aGVuIHJlLWVuYWJsZXMKICAgIG9uIHVubG9jaykuCgogIC0gYFJlc3VsdDo6dW53cmFwYCBjYW4g bm93IGJlIHVzZWQgaW4gZXhhbXBsZXMgdGhhdCBhcmUgY29tcGlsZWQsCiAgICBsaW5rZWQgYW5k IHJ1bi4KCiAgLSBNZXJnZWQgYEZvcm1hdHRlcmAgYW5kIGBCdWZmZXJgIHR5cGVzLgoKICAtIEFk ZGVkIGBJb01lbTo6b2Zmc2V0X29rYCBmb3IgcnVudGltZSBzaXplcy4KCiAgLSBPdGhlciBjbGVh bnVwcywgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgojIyBQYXRjaCBzZXJpZXMgc3RhdHVzCgpU aGUgUnVzdCBzdXBwb3J0IGlzIHN0aWxsIHRvIGJlIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLiBI b3dldmVyLApzdXBwb3J0IGlzIGdvb2QgZW5vdWdoIHRoYXQga2VybmVsIGRldmVsb3BlcnMgY2Fu IHN0YXJ0IHdvcmtpbmcgb24gdGhlClJ1c3QgYWJzdHJhY3Rpb25zIGZvciBzdWJzeXN0ZW1zIGFu ZCB3cml0ZSBkcml2ZXJzIGFuZCBvdGhlciBtb2R1bGVzLgoKVGhlIGN1cnJlbnQgc2VyaWVzIGhh cyBqdXN0IGFycml2ZWQgaW4gYGxpbnV4LW5leHRgLCBhcyB1c3VhbC4KU2ltaWxhcmx5LCB0aGUg cHJldmlldyBkb2NzIGZvciB0aGlzIHNlcmllcyBjYW4gYmUgc2VlbiBhdDoKCiAgICBodHRwczov L3J1c3QtZm9yLWxpbnV4LmdpdGh1Yi5pby9kb2NzL2tlcm5lbC8KCkFzIHVzdWFsLCBwbGVhc2Ug c2VlIHRoZSBmb2xsb3dpbmcgbGluayBmb3IgdGhlCmxpdmUgbGlzdCBvZiB1bnN0YWJsZSBSdXN0 IGZlYXR1cmVzIHdlIGFyZSB1c2luZzoKCiAgICBodHRwczovL2dpdGh1Yi5jb20vUnVzdC1mb3It TGludXgvbGludXgvaXNzdWVzLzIKCk5vdGUgdGhhdCB0aGlzIHRpbWUgdGhlIHNlcmllcyBkZXBl bmRzIG9uIGEgcGF0Y2ggcXVldWVkIGluCnBvd2VycGMtbmV4dDoKCiAgICBodHRwczovL2dpdC5r ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wb3dlcnBjL2xpbnV4LmdpdC9jb21t aXQvP2g9bmV4dCZpZD1kNGJlNjBmZTY2YjczODA1MzA4NjhjZWViZTU0OWY4ZWViY2NhY2M1CgoK IyMgQWNrbm93bGVkZ2VtZW50cwoKVGhlIHNpZ25hdHVyZXMgaW4gdGhlIG1haW4gY29tbWl0cyBj b3JyZXNwb25kIHRvIHRoZSBwZW9wbGUgdGhhdAp3cm90ZSBjb2RlIHRoYXQgaGFzIGVuZGVkIHVw IGluIHRoZW0gYXQgdGhlIHByZXNlbnQgdGltZS4gRm9yIGRldGFpbHMKb24gY29udHJpYnV0aW9u cyB0byBjb2RlIGFuZCBkaXNjdXNzaW9ucywgcGxlYXNlIHNlZSBvdXIgcmVwb3NpdG9yeToKCiAg ICBodHRwczovL2dpdGh1Yi5jb20vUnVzdC1mb3ItTGludXgvbGludXgKCkhvd2V2ZXIsIHdlIHdv dWxkIGxpa2UgdG8gZ2l2ZSBjcmVkaXQgdG8gZXZlcnlvbmUgdGhhdCBoYXMgY29udHJpYnV0ZWQK aW4gb25lIHdheSBvciBhbm90aGVyIHRvIHRoZSBSdXN0IGZvciBMaW51eCBwcm9qZWN0LiBTaW5j ZSB0aGUKcHJldmlvdXMgY292ZXIgbGV0dGVyOgoKICAtIEFraXJhIFlva29zYXdhIGZvciBhIGRl dGFpbGVkIHJldmlldyBvZiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQKICAgIHN1Z2dlc3Rpbmcgc2V2 ZXJhbCBpbXByb3ZlbWVudHMuCgogIC0gUGV0ciBNbGFkZWsgYW5kIFJhc211cyBWaWxsZW1vZXMg Zm9yIHRoZWlyIHByaW50aW5nL2Zvcm1hdHRpbmcKICAgIHJldmlldyBhbmQgc3VnZ2VzdGlvbnMu CgogIC0gUnVzc2VsbCBLaW5nIGZvciBoaXMgcmV2aWV3IG9mIHRoZSBLY29uZmlnIGNoYW5nZXMu CgogIC0gQW5keSBTaGV2Y2hlbmtvLCBTZXJnZXkgU2Vub3poYXRza3ksIEpvaG4gUGF1bCBBZHJp YW4gR2xhdWJpdHoKICAgIGFuZCBEYXZpZCBMYWlnaHQgZm9yIHRoZWlyIHJldmlld3MgYW5kIGZl ZWRiYWNrIG9uIHRoZSBwcmV2aW91cwogICAgcm91bmQuCgogIC0gYmpvcm4zIGZvciByZXZpZXdp bmcgbWFueSBQUnMuCgogIC0gQXMgdXN1YWwsIGJqb3JuMyBhbmQgR2FyeSBHdW8gZm9yIGFsbCB0 aGUgaW5wdXQgb24gUnVzdCBjb21waWxlcgogICAgZGV0YWlscyBhbmQgc3VnZ2VzdGlvbnMuCgog IC0gUGhpbGlwIExpLCBZdWppZSBMaXUgZXQgYWwuIGZvciBjb250aW51aW5nIHRoZWlyIHdvcmsg b24gYWRkaW5nCiAgICBSdXN0IHN1cHBvcnQgdG8gdGhlIEludGVsIDBEQVkvTEtQIGtlcm5lbCB0 ZXN0IHJvYm90LiBBbHNvLAogICAgdGhhbmtzIHRvIE5hdGhhbiBDaGFuY2VsbG9yIGFuZCBOaWNr IERlc2F1bG5pZXJzIGZvciB0aGVpciBpbnB1dC4KCiAgLSBXZWkgTGl1IGZvciB0YWtpbmcgdGhl IHRpbWUgdG8gYW5zd2VyIHF1ZXN0aW9ucyBmcm9tIG5ld2NvbWVycwogICAgaW4gWnVsaXAuCgog IC0gQW50b25pIEJvdWNoZXIgKGFuZCBoaXMgc3VwcG9ydGVycykgZXQgYWwuIGZvciB0aGVpciBv bmdvaW5nCiAgICB3b3JrIG9uIGBydXN0Y19jb2RlZ2VuX2djY2AuCgogIC0gUGhpbGlwIEhlcnJv bnMgKGFuZCBoaXMgc3VwcG9ydGVycyBPcGVuIFNvdXJjZSBTZWN1cml0eSBhbmQKICAgIEVtYmVj b3NtKSBldCBhbC4gZm9yIHRoZWlyIG9uZ29pbmcgd29yayBvbiBHQ0MgUnVzdC4KCiAgLSBNYXRz IExhcnNlbiwgTWFyYyBQb3VsaGnDqHMgZXQgYWwuIGZvciB0aGVpciBvbmdvaW5nIHdvcmsgb24K ICAgIGltcHJvdmluZyBSdXN0IHN1cHBvcnQgaW4gQ29tcGlsZXIgRXhwbG9yZXIuCgogIC0gTWFu eSBmb2xrcyB0aGF0IGhhdmUgcmVwb3J0ZWQgaXNzdWVzLCB0ZXN0ZWQgdGhlIHByb2plY3QsCiAg ICBoZWxwZWQgc3ByZWFkIHRoZSB3b3JkLCBqb2luZWQgZGlzY3Vzc2lvbnMgYW5kIGNvbnRyaWJ1 dGVkIGluCiAgICBvdGhlciB3YXlzIQoKUGxlYXNlIHNlZSBhbHNvIHRoZSBhY2tub3dsZWRnZW1l bnRzIG9uIHRoZSBwcmV2aW91cyBjb3ZlciBsZXR0ZXJzLgoKQm9xdW4gRmVuZyAoMSk6CiAga2Fs bHN5bXM6IHVzZSB0aGUgY29ycmVjdCBidWZmZXIgc2l6ZSBmb3Igc3ltYm9scwoKR2FyeSBHdW8g KDIpOgogIHJ1c3Q6IGFkZCBgYnVpbGRfZXJyb3JgIGNyYXRlCiAgdnNwcmludGY6IGFkZCBuZXcg YCVwQWAgZm9ybWF0IHNwZWNpZmllcgoKTWlndWVsIE9qZWRhICgxMyk6CiAga2FsbHN5bXM6IHN1 cHBvcnQgImJpZyIga2VybmVsIHN5bWJvbHMKICBrYWxsc3ltczogaW5jcmVhc2UgbWF4aW11bSBr ZXJuZWwgc3ltYm9sIGxlbmd0aCB0byA1MTIKICBydXN0OiBhZGQgQyBoZWxwZXJzCiAgcnVzdDog YWRkIGBjb21waWxlcl9idWlsdGluc2AgY3JhdGUKICBydXN0OiBhZGQgYGFsbG9jYCBjcmF0ZQog IHJ1c3Q6IGFkZCBgbWFjcm9zYCBjcmF0ZQogIHJ1c3Q6IGV4cG9ydCBnZW5lcmF0ZWQgc3ltYm9s cwogIHNjcmlwdHM6IGFkZCBgZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weWAKICBzY3JpcHRzOiBk ZWNvZGVfc3RhY2t0cmFjZTogZGVtYW5nbGUgUnVzdCBzeW1ib2xzCiAgZG9jczogYWRkIFJ1c3Qg ZG9jdW1lbnRhdGlvbgogIEtidWlsZDogYWRkIFJ1c3Qgc3VwcG9ydAogIHNhbXBsZXM6IGFkZCBS dXN0IGV4YW1wbGVzCiAgTUFJTlRBSU5FUlM6IFJ1c3QKCldlZHNvbiBBbG1laWRhIEZpbGhvICg0 KToKICBydXN0OiBhZGQgYGtlcm5lbGAgY3JhdGUncyBgc3luY2AgbW9kdWxlCiAgcnVzdDogYWRk IGBrZXJuZWxgIGNyYXRlCiAgW1JGQ10gZHJpdmVyczogZ3BpbzogUHJpbWVDZWxsIFBMMDYxIGlu IFJ1c3QKICBbUkZDXSBkcml2ZXJzOiBhbmRyb2lkOiBCaW5kZXIgSVBDIGluIFJ1c3QKCiAuZ2l0 aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogLnJ1c3Rm bXQudG9tbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIERvY3VtZW50 YXRpb24vZG9jLWd1aWRlL2tlcm5lbC1kb2MucnN0ICAgICAgIHwgICAgMyArCiBEb2N1bWVudGF0 aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogRG9jdW1lbnRhdGlv bi9rYnVpbGQva2J1aWxkLnJzdCAgICAgICAgICAgICAgfCAgIDE3ICsKIERvY3VtZW50YXRpb24v a2J1aWxkL21ha2VmaWxlcy5yc3QgICAgICAgICAgIHwgICA1MCArLQogRG9jdW1lbnRhdGlvbi9w cm9jZXNzL2NoYW5nZXMucnN0ICAgICAgICAgICAgfCAgIDQxICsKIERvY3VtZW50YXRpb24vcnVz dC9hcmNoLXN1cHBvcnQucnN0ICAgICAgICAgIHwgICAzNCArCiBEb2N1bWVudGF0aW9uL3J1c3Qv Y29kaW5nLWd1aWRlbGluZXMucnN0ICAgICB8ICAyMTQgKysKIERvY3VtZW50YXRpb24vcnVzdC9n ZW5lcmFsLWluZm9ybWF0aW9uLnJzdCAgIHwgICA3NyArCiBEb2N1bWVudGF0aW9uL3J1c3QvaW5k ZXgucnN0ICAgICAgICAgICAgICAgICB8ICAgMjAgKwogRG9jdW1lbnRhdGlvbi9ydXN0L2xvZ28u c3ZnICAgICAgICAgICAgICAgICAgfCAgMzU3ICsrCiBEb2N1bWVudGF0aW9uL3J1c3QvcXVpY2st c3RhcnQucnN0ICAgICAgICAgICB8ICAyMzAgKysKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxNSArCiBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNzMgKy0KIGFyY2gvS2NvbmZpZyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNiArCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogYXJjaC9hcm02NC9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIGFyY2gvcG93ZXJwYy9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMSArCiBhcmNoL3Jpc2N2L0tjb25maWcgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogYXJjaC9yaXNjdi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBhcmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTQgKwogZHJpdmVycy9hbmRyb2lkL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAg fCAgICA2ICsKIGRyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwg ICAgMiArCiBkcml2ZXJzL2FuZHJvaWQvYWxsb2NhdGlvbi5ycyAgICAgICAgICAgICAgICB8ICAy NjYgKysKIGRyaXZlcnMvYW5kcm9pZC9jb250ZXh0LnJzICAgICAgICAgICAgICAgICAgIHwgICA4 MCArCiBkcml2ZXJzL2FuZHJvaWQvZGVmcy5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAgOTkg KwogZHJpdmVycy9hbmRyb2lkL25vZGUucnMgICAgICAgICAgICAgICAgICAgICAgfCAgNDc2ICsr KwogZHJpdmVycy9hbmRyb2lkL3Byb2Nlc3MucnMgICAgICAgICAgICAgICAgICAgfCAgOTYwICsr KysrCiBkcml2ZXJzL2FuZHJvaWQvcmFuZ2VfYWxsb2MucnMgICAgICAgICAgICAgICB8ICAxODkg KwogZHJpdmVycy9hbmRyb2lkL3J1c3RfYmluZGVyLnJzICAgICAgICAgICAgICAgfCAgMTExICsK IGRyaXZlcnMvYW5kcm9pZC90aHJlYWQucnMgICAgICAgICAgICAgICAgICAgIHwgIDg3MCArKysr KwogZHJpdmVycy9hbmRyb2lkL3RyYW5zYWN0aW9uLnJzICAgICAgICAgICAgICAgfCAgMzI2ICsr CiBkcml2ZXJzL2dwaW8vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKwog ZHJpdmVycy9ncGlvL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGRy aXZlcnMvZ3Bpby9ncGlvX3BsMDYxX3J1c3QucnMgICAgICAgICAgICAgIHwgIDM3MCArKwogaW5j bHVkZS9saW51eC9rYWxsc3ltcy5oICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBpbmNs dWRlL2xpbnV4L3NwaW5sb2NrLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KIGluY2x1 ZGUvdWFwaS9saW51eC9hbmRyb2lkL2JpbmRlci5oICAgICAgICAgIHwgICAyOCArLQogaW5pdC9L Y29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICstCiBrZXJuZWwv a2FsbHN5bXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKy0KIGtlcm5lbC9s aXZlcGF0Y2gvY29yZS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogbGliL0tjb25m aWcuZGVidWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQzICsKIGxpYi92c3ByaW50 Zi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBydXN0Ly5naXRpZ25v cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKwogcnVzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzc2ICsrCiBydXN0L2FsbG9jL1JFQURN RS5tZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKwogcnVzdC9hbGxvYy9hbGxvYy5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQwICsrKwogcnVzdC9hbGxvYy9ib3Jyb3cu cnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDk4ICsrKwogcnVzdC9hbGxvYy9ib3hlZC5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDA4ICsrKysrKysrKysrCiBydXN0L2FsbG9j L2NvbGxlY3Rpb25zL21vZC5ycyAgICAgICAgICAgICAgICB8ICAxNTYgKwogcnVzdC9hbGxvYy9m bXQucnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAxICsrKysKIHJ1c3QvYWxsb2Mv bGliLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzMSArKwogcnVzdC9hbGxvYy9t YWNyb3MucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTI2ICsKIHJ1c3QvYWxsb2MvcmF3 X3ZlYy5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU2MSArKysKIHJ1c3QvYWxsb2Mvc2xp Y2UucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3OSArKysrKysrCiBydXN0L2FsbG9j L3N0ci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MzIgKysrKwogcnVzdC9hbGxv Yy9zdHJpbmcucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODYyICsrKysrKysrKysrKysr KwogcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMgICAgICAgICAgICAgICAgICAgICAgfCAgMTg2ICsK IHJ1c3QvYWxsb2MvdmVjL2RyYWluX2ZpbHRlci5ycyAgICAgICAgICAgICAgIHwgIDE0NSArCiBy dXN0L2FsbG9jL3ZlYy9pbnRvX2l0ZXIucnMgICAgICAgICAgICAgICAgICB8ICAzNTYgKysKIHJ1 c3QvYWxsb2MvdmVjL2lzX3plcm8ucnMgICAgICAgICAgICAgICAgICAgIHwgIDEwNiArCiBydXN0 L2FsbG9jL3ZlYy9tb2QucnMgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNTMgKysrKysrKysr KysrKysrKysrCiBydXN0L2FsbG9jL3ZlYy9wYXJ0aWFsX2VxLnJzICAgICAgICAgICAgICAgICB8 ICAgNDkgKwogcnVzdC9hbGxvYy92ZWMvc2V0X2xlbl9vbl9kcm9wLnJzICAgICAgICAgICAgfCAg IDMwICsKIHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzICAgICAgICAgICAgICAgIHwgIDE3 NCArCiBydXN0L2JpbmRnZW5fcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMg KwogcnVzdC9idWlsZF9lcnJvci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsK IHJ1c3QvY29tcGlsZXJfYnVpbHRpbnMucnMgICAgICAgICAgICAgICAgICAgIHwgICA1NyArCiBy dXN0L2V4cG9ydHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKwogcnVz dC9oZWxwZXJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTMxICsrKwogcnVz dC9rZXJuZWwvYWxsb2NhdG9yLnJzICAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICsKIHJ1c3Qv a2VybmVsL2FtYmEucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1OSArKwogcnVzdC9r ZXJuZWwvYmluZGluZ3MucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsKIHJ1c3Qva2Vy bmVsL2JpbmRpbmdzX2hlbHBlci5oICAgICAgICAgICAgICAgIHwgICAzNyArCiBydXN0L2tlcm5l bC9idWlsZF9hc3NlcnQucnMgICAgICAgICAgICAgICAgICB8ICAgODAgKwogcnVzdC9rZXJuZWwv Y190eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE5ICsKIHJ1c3Qva2VybmVsL2No cmRldi5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwNyArKwogcnVzdC9rZXJuZWwvY2xr LnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1ICsKIHJ1c3Qva2VybmVsL2NyZWQu cnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MyArCiBydXN0L2tlcm5lbC9kZXZpY2Uu cnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NTQgKysrCiBydXN0L2tlcm5lbC9kcml2ZXIu cnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NDAgKysrCiBydXN0L2tlcm5lbC9lcnJvci5y cyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NjAgKysrCiBydXN0L2tlcm5lbC9maWxlLnJz ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4NzMgKysrKysKIHJ1c3Qva2VybmVsL2dwaW8u cnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3OCArKysKIHJ1c3Qva2VybmVsL2h3cm5n LnJzICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0MiArKwogcnVzdC9rZXJuZWwvaW9fYnVm ZmVyLnJzICAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsKIHJ1c3Qva2VybmVsL2lvX21lbS5y cyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzNyArKwogcnVzdC9rZXJuZWwvaW92X2l0ZXIu cnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDgxICsKIHJ1c3Qva2VybmVsL2lycS5ycyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQwOSArKysKIHJ1c3Qva2VybmVsL2xpYi5ycyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDI2MCArKwogcnVzdC9rZXJuZWwvbGlua2VkX2xpc3Qu cnMgICAgICAgICAgICAgICAgICAgfCAgMjQ3ICsrCiBydXN0L2tlcm5lbC9taXNjZGV2LnJzICAg ICAgICAgICAgICAgICAgICAgICB8ICAyOTEgKysKIHJ1c3Qva2VybmVsL21tLnJzICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDE0OSArCiBydXN0L2tlcm5lbC9tb2R1bGVfcGFyYW0ucnMg ICAgICAgICAgICAgICAgICB8ICA0OTggKysrCiBydXN0L2tlcm5lbC9vZi5ycyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNjMgKwogcnVzdC9rZXJuZWwvcGFnZXMucnMgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTQ0ICsKIHJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzICAgICAgICAg ICAgICAgICAgICAgIHwgIDIyNCArKwogcnVzdC9rZXJuZWwvcG93ZXIucnMgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTE4ICsKIHJ1c3Qva2VybmVsL3ByZWx1ZGUucnMgICAgICAgICAgICAg ICAgICAgICAgIHwgICAzNiArCiBydXN0L2tlcm5lbC9wcmludC5ycyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0MTQgKysrCiBydXN0L2tlcm5lbC9yYW5kb20ucnMgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNTAgKwogcnVzdC9rZXJuZWwvcmF3X2xpc3QucnMgICAgICAgICAgICAgICAg ICAgICAgfCAgMzYxICsrCiBydXN0L2tlcm5lbC9yYnRyZWUucnMgICAgICAgICAgICAgICAgICAg ICAgICB8ICA1NjIgKysrCiBydXN0L2tlcm5lbC9yZXZvY2FibGUucnMgICAgICAgICAgICAgICAg ICAgICB8ICAxNjMgKwogcnVzdC9rZXJuZWwvc2VjdXJpdHkucnMgICAgICAgICAgICAgICAgICAg ICAgfCAgIDM2ICsKIHJ1c3Qva2VybmVsL3N0YXRpY19hc3NlcnQucnMgICAgICAgICAgICAgICAg IHwgICAzOSArCiBydXN0L2tlcm5lbC9zdGRfdmVuZG9yLnJzICAgICAgICAgICAgICAgICAgICB8 ICAxNTAgKwogcnVzdC9rZXJuZWwvc3RyLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NTkyICsrKysKIHJ1c3Qva2VybmVsL3N5bmMvYXJjLnJzICAgICAgICAgICAgICAgICAgICAgIHwg IDUwMCArKysKIHJ1c3Qva2VybmVsL3N5bmMvY29uZHZhci5ycyAgICAgICAgICAgICAgICAgIHwg IDEzOCArCiBydXN0L2tlcm5lbC9zeW5jL2d1YXJkLnJzICAgICAgICAgICAgICAgICAgICB8ICAx NjYgKwogcnVzdC9rZXJuZWwvc3luYy9sb2NrZWRfYnkucnMgICAgICAgICAgICAgICAgfCAgMTEy ICsKIHJ1c3Qva2VybmVsL3N5bmMvbW9kLnJzICAgICAgICAgICAgICAgICAgICAgIHwgIDE1NyAr CiBydXN0L2tlcm5lbC9zeW5jL211dGV4LnJzICAgICAgICAgICAgICAgICAgICB8ICAxMTQgKwog cnVzdC9rZXJuZWwvc3luYy9yZXZvY2FibGVfbXV0ZXgucnMgICAgICAgICAgfCAgMTg0ICsKIHJ1 c3Qva2VybmVsL3N5bmMvcndzZW0ucnMgICAgICAgICAgICAgICAgICAgIHwgIDE0OSArCiBydXN0 L2tlcm5lbC9zeW5jL3NlcWxvY2sucnMgICAgICAgICAgICAgICAgICB8ICAyMDIgKysKIHJ1c3Qv a2VybmVsL3N5bmMvc3BpbmxvY2sucnMgICAgICAgICAgICAgICAgIHwgIDE5MiArCiBydXN0L2tl cm5lbC9zeXNjdGwucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOTkgKysKIHJ1c3Qva2Vy bmVsL3Rhc2sucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4MiArCiBydXN0L2tlcm5l bC90eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NjkgKysrCiBydXN0L2tlcm5l bC91c2VyX3B0ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNzUgKwogcnVzdC9tYWNyb3Mv aGVscGVycy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3QvbWFjcm9zL2xp Yi5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5NCArCiBydXN0L21hY3Jvcy9tb2R1 bGUucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MzEgKysrKwogc2FtcGxlcy9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNhbXBsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzYW1wbGVzL3J1c3QvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzAgKwogc2FtcGxlcy9ydXN0L01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3Mv LmdpdGlnbm9yZSAgICAgICAgICAgIHwgICAgMyArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01h a2VmaWxlICAgICAgICAgICAgICB8ICAgIDUgKwogc2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJz ICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3MvYi5ycyAg ICAgICAgICAgICAgICAgIHwgICAgNSArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL3NpbmdsZS5y cyAgICAgICAgICAgICB8ICAgMTIgKwogc2FtcGxlcy9ydXN0L3J1c3RfY2hyZGV2LnJzICAgICAg ICAgICAgICAgICAgfCAgIDUwICsKIHNhbXBsZXMvcnVzdC9ydXN0X21pbmltYWwucnMgICAgICAg ICAgICAgICAgIHwgICAzNSArCiBzYW1wbGVzL3J1c3QvcnVzdF9taXNjZGV2LnJzICAgICAgICAg ICAgICAgICB8ICAxNDMgKwogc2FtcGxlcy9ydXN0L3J1c3RfbW9kdWxlX3BhcmFtZXRlcnMucnMg ICAgICAgfCAgIDY5ICsKIHNhbXBsZXMvcnVzdC9ydXN0X3BsYXRmb3JtLnJzICAgICAgICAgICAg ICAgIHwgICAyMiArCiBzYW1wbGVzL3J1c3QvcnVzdF9wcmludC5ycyAgICAgICAgICAgICAgICAg ICB8ICAgNTQgKwogc2FtcGxlcy9ydXN0L3J1c3RfcmFuZG9tLnJzICAgICAgICAgICAgICAgICAg fCAgIDYwICsKIHNhbXBsZXMvcnVzdC9ydXN0X3NlbWFwaG9yZS5ycyAgICAgICAgICAgICAgIHwg IDE3MSArCiBzYW1wbGVzL3J1c3QvcnVzdF9zZW1hcGhvcmVfYy5jICAgICAgICAgICAgICB8ICAy MTIgKysKIHNhbXBsZXMvcnVzdC9ydXN0X3N0YWNrX3Byb2JpbmcucnMgICAgICAgICAgIHwgICAz NiArCiBzYW1wbGVzL3J1c3QvcnVzdF9zeW5jLnJzICAgICAgICAgICAgICAgICAgICB8ICAgOTMg Kwogc2NyaXB0cy8uZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK IHNjcmlwdHMvS2NvbmZpZy5pbmNsdWRlICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQog c2NyaXB0cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNj cmlwdHMvTWFrZWZpbGUuYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgICA2MCArCiBzY3Jp cHRzL01ha2VmaWxlLmRlYnVnICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKwogc2NyaXB0 cy9NYWtlZmlsZS5ob3N0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM0ICstCiBzY3JpcHRz L01ha2VmaWxlLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKwogc2NyaXB0cy9N YWtlZmlsZS5tb2RmaW5hbCAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBzY3JpcHRzL2Nj LXZlcnNpb24uc2ggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIHNjcmlwdHMvZGVj b2RlX3N0YWNrdHJhY2Uuc2ggICAgICAgICAgICAgICAgIHwgICAxNCArCiBzY3JpcHRzL2dlbmVy YXRlX3J1c3RfYW5hbHl6ZXIucHkgICAgICAgICAgICB8ICAxMzMgKwogc2NyaXB0cy9nZW5lcmF0 ZV9ydXN0X3RhcmdldC5ycyAgICAgICAgICAgICAgfCAgMjI3ICsrCiBzY3JpcHRzL2lzX3J1c3Rf bW9kdWxlLnNoICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKwogc2NyaXB0cy9rYWxsc3ltcy5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICstCiBzY3JpcHRzL2tjb25maWcvY29u ZmRhdGEuYyAgICAgICAgICAgICAgICAgICB8ICAgNzUgKwogc2NyaXB0cy9taW4tdG9vbC12ZXJz aW9uLnNoICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIHNjcmlwdHMvcnVzdC1pcy1hdmFpbGFi bGUtYmluZGdlbi1saWJjbGFuZy5oIHwgICAgMiArCiBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxl LnNoICAgICAgICAgICAgICAgICB8ICAxNTggKwogdG9vbHMvaW5jbHVkZS9saW51eC9rYWxsc3lt cy5oICAgICAgICAgICAgICAgfCAgICAyICstCiB0b29scy9saWIvcGVyZi9pbmNsdWRlL3BlcmYv ZXZlbnQuaCAgICAgICAgICB8ICAgIDIgKy0KIHRvb2xzL2xpYi9zeW1ib2wva2FsbHN5bXMuaCAg ICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTY4IGZpbGVzIGNoYW5nZWQsIDM1MjkwIGluc2Vy dGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5ydXN0Zm10LnRv bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvYXJjaC1zdXBwb3J0LnJz dAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9jb2RpbmctZ3VpZGVsaW5l cy5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZv cm1hdGlvbi5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvaW5kZXgu cnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0L2xvZ28uc3ZnCiBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0L3F1aWNrLXN0YXJ0LnJzdAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9hbGxvY2F0aW9uLnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9hbmRyb2lkL2NvbnRleHQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2FuZHJvaWQvZGVmcy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9u b2RlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lkL3Byb2Nlc3MucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcmFuZ2VfYWxsb2MucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcnVzdF9iaW5kZXIucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2FuZHJvaWQvdGhyZWFkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9hbmRyb2lkL3RyYW5zYWN0aW9uLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncGlv L2dwaW9fcGwwNjFfcnVzdC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvLmdpdGlnbm9yZQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2FsbG9jL1JFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYWxsb2MucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL2JvcnJvdy5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2MvYm94ZWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL2Nv bGxlY3Rpb25zL21vZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvZm10LnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9saWIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2FsbG9jL21hY3Jvcy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvcmF3X3Zl Yy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mvc2xpY2UucnMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydXN0L2FsbG9jL3N0ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mv c3RyaW5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9kcmFpbl9maWx0ZXIucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9pbnRvX2l0ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2FsbG9jL3ZlYy9pc196ZXJvLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxv Yy92ZWMvbW9kLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvcGFydGlhbF9l cS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvdmVjL3NldF9sZW5fb25fZHJvcC5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9iaW5kZ2VuX3BhcmFtZXRlcnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2J1aWxkX2Vycm9yLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9jb21waWxlcl9i dWlsdGlucy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvZXhwb3J0cy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9oZWxwZXJzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9h bGxvY2F0b3IucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9hbWJhLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvYmluZGluZ3MucnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2tlcm5lbC9iaW5kaW5nc19oZWxwZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv a2VybmVsL2J1aWxkX2Fzc2VydC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2Nf dHlwZXMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jaHJkZXYucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jbGsucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2tlcm5lbC9jcmVkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZGV2aWNlLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZHJpdmVyLnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgcnVzdC9rZXJuZWwvZXJyb3IucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9maWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZ3Bpby5ycwogY3JlYXRl IG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2h3cm5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9rZXJuZWwvaW9fYnVmZmVyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvaW9f bWVtLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvaW92X2l0ZXIucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9pcnEucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2tlcm5lbC9saWIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9saW5rZWRfbGlz dC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL21pc2NkZXYucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9tbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL21vZHVsZV9wYXJhbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL29mLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcGFnZXMucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL3Bvd2VyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcHJlbHVkZS5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3ByaW50LnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9rZXJuZWwvcmFuZG9tLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv cmF3X2xpc3QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9yYnRyZWUucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9yZXZvY2FibGUucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBydXN0L2tlcm5lbC9zZWN1cml0eS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL3N0YXRpY19hc3NlcnQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zdGRf dmVuZG9yLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3RyLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9hcmMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2tlcm5lbC9zeW5jL2NvbmR2YXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9zeW5jL2d1YXJkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9sb2Nr ZWRfYnkucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5jL21vZC5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvbXV0ZXgucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBydXN0L2tlcm5lbC9zeW5jL3Jldm9jYWJsZV9tdXRleC5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3Qva2VybmVsL3N5bmMvcndzZW0ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tl cm5lbC9zeW5jL3NlcWxvY2sucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5j L3NwaW5sb2NrLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3lzY3RsLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvdGFzay5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3Qva2VybmVsL3R5cGVzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvdXNl cl9wdHIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L21hY3Jvcy9oZWxwZXJzLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9tYWNyb3MvbGliLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9tYWNyb3MvbW9kdWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L0tjb25m aWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQg c2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9y dXN0L2hvc3Rwcm9ncy9iLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L2hvc3Rw cm9ncy9zaW5nbGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9jaHJk ZXYucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9taW5pbWFsLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbWlzY2Rldi5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X21vZHVsZV9wYXJhbWV0ZXJzLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfcGxhdGZvcm0ucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9wcmludC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBs ZXMvcnVzdC9ydXN0X3JhbmRvbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9y dXN0X3NlbWFwaG9yZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3Nl bWFwaG9yZV9jLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9zdGFja19w cm9iaW5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rfc3luYy5ycwog Y3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF90YXJnZXQucnMKIGNyZWF0ZSBt b2RlIDEwMDc1NSBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c2NyaXB0cy9ydXN0LWlzLWF2YWlsYWJsZS1iaW5kZ2VuLWxpYmNsYW5nLmgKIGNyZWF0ZSBtb2Rl IDEwMDc1NSBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoCgoKYmFzZS1jb21taXQ6IDA5Njg4 YzAxNjZlNzZjZTJmYjg1ZTg2YjlkOTliZThiMDA4NGNkZjkKLS0gCjIuMzUuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxp bmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 639FBC433F5 for ; Thu, 17 Mar 2022 18:11:54 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KKFbD6dYKz30RG for ; Fri, 18 Mar 2022 05:11:52 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=vLjaZJax; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=2604:1380:4641:c500::1; helo=dfw.source.kernel.org; envelope-from=ojeda@kernel.org; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=vLjaZJax; dkim-atps=neutral Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KKFZT51mDz2xKR for ; Fri, 18 Mar 2022 05:11:13 +1100 (AEDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 73AEC6163F; Thu, 17 Mar 2022 18:11:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82AA2C340E9; Thu, 17 Mar 2022 18:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1647540670; bh=XdgzuXN9aeiZfb9/RrTbmUugTKoTTSFNgHTlI0iJos8=; h=From:To:Cc:Subject:Date:From; b=vLjaZJaxmo531Mi1n7H19XJu/GxO5162QeJ+FG/vMCecmulIudwOj8+3iCDM7DoMN q0tbyyarTHDi2WBOlOc17afP30b27KMTQMECxxaWv0pOkVzqDCSf3KgxcIi9z3eaJH KnI8iZBnnG/sR7sHpdY0c9aj+rlaqCjb+aYg3ZSBKkQF6VtKwX9prE6UaRuYBtIZ4I 5C47ZsXGaeJ0WLvBFCkwIlS0K9OJWKnhNUHmVNdnwKIXksy0ltCXIwXr6vRPMPFlMe SzEGR8a6tnPSeH9iMqNOKZOvYMmr/nia1eGYzFZLOf0Aytdk3DArm8eaE4mphDaXfX qV3YLz3aYwiMw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Subject: [PATCH v5 00/20] Rust support Date: Thu, 17 Mar 2022 19:09:48 +0100 Message-Id: <20220317181032.15436-1-ojeda@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: rust-for-linux@vger.kernel.org, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-gpio@vger.kernel.org, Miguel Ojeda , live-patching@vger.kernel.org, linux-riscv@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Rust support This is the patch series (v5) to add support for Rust as a second language to the Linux kernel. If you are interested in following this effort, please join us in the mailing list at: rust-for-linux@vger.kernel.org and take a look at the project itself at: https://github.com/Rust-for-Linux As usual, special thanks go to ISRG (Internet Security Research Group) and Google for their financial support on this endeavor. Cheers, Miguel -- # Rust support This cover letter explains the major changes and updates done since the previous ones. For those, please see: RFC: https://lore.kernel.org/lkml/20210414184604.23473-1-ojeda@kernel.org/ v1: https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/ v2: https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/ v3: https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/ v4: https://lore.kernel.org/lkml/20220212130410.6901-1-ojeda@kernel.org/ ## Infrastructure updates There have been several improvements to the overall Rust support: - The toolchain and `alloc` have been upgraded to Rust 1.59.0. This version stabilized `feature(global_asm)` as well as the `-Csymbol-mangling-version=v0` flag. - Added support for host programs written in Rust. This should only be used in scenarios where Rust is required to be available. - Target specification files are now generated on the fly based on the kernel configuration, via a Rust script, instead of having a few predefined files. The content of the generated file has been simplified and, for x86, all the options that can be specified through the command-line have been moved to the architecture `Makefile`. The goal is to reduce the content of the file as much as possible for all architectures, and eventually, stop needing such a file. - Added `HAVE_RUST` kernel option. This symbol should be selected by an architecture if it supports Rust. - Added documentation on `RUSTFLAGS*` and `KBUILD_RUST*` variables. - Simplified tags and cross-references in the documentation. - Other cleanups, fixes and improvements on the build system. ## Abstractions and driver updates Some of the improvements to the abstractions and example drivers are: - Added abstraction for the Hardware Random Number Generator. - `%pA` rework in `vsprintf` following the review. - The `sync` sample now shows how to use static mutexes and conditional variables. - Error codes can now be used without prefixing them with `Error::`, which makes using them closer to C. For instance: fn f(...) -> Result { if ... { return Err(EINVAL); } ... Ok(()) } - Added `CString` type for owned C strings. - `miscdev` registration now holds an owned C string, which enables scenarios when the device name is constructed at runtime. - Added `Bool` trait meant to be used in type states to allow boolean constraints in implementation blocks. - Added `LockInfo` trait that lock "type states" must implement. This allows the definition of additional writable type states. - Simplification of the spin lock implementation by splitting acquisition types. Type states are used to implement two versions of the `Lock` trait: one which never modifies the interrupt state and one that disables them (if they are enabled, then re-enables on unlock). - `Result::unwrap` can now be used in examples that are compiled, linked and run. - Merged `Formatter` and `Buffer` types. - Added `IoMem::offset_ok` for runtime sizes. - Other cleanups, fixes and improvements. ## Patch series status The Rust support is still to be considered experimental. However, support is good enough that kernel developers can start working on the Rust abstractions for subsystems and write drivers and other modules. The current series has just arrived in `linux-next`, as usual. Similarly, the preview docs for this series can be seen at: https://rust-for-linux.github.io/docs/kernel/ As usual, please see the following link for the live list of unstable Rust features we are using: https://github.com/Rust-for-Linux/linux/issues/2 Note that this time the series depends on a patch queued in powerpc-next: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?h=next&id=d4be60fe66b7380530868ceebe549f8eebccacc5 ## Acknowledgements The signatures in the main commits correspond to the people that wrote code that has ended up in them at the present time. For details on contributions to code and discussions, please see our repository: https://github.com/Rust-for-Linux/linux However, we would like to give credit to everyone that has contributed in one way or another to the Rust for Linux project. Since the previous cover letter: - Akira Yokosawa for a detailed review of the documentation and suggesting several improvements. - Petr Mladek and Rasmus Villemoes for their printing/formatting review and suggestions. - Russell King for his review of the Kconfig changes. - Andy Shevchenko, Sergey Senozhatsky, John Paul Adrian Glaubitz and David Laight for their reviews and feedback on the previous round. - bjorn3 for reviewing many PRs. - As usual, bjorn3 and Gary Guo for all the input on Rust compiler details and suggestions. - Philip Li, Yujie Liu et al. for continuing their work on adding Rust support to the Intel 0DAY/LKP kernel test robot. Also, thanks to Nathan Chancellor and Nick Desaulniers for their input. - Wei Liu for taking the time to answer questions from newcomers in Zulip. - Antoni Boucher (and his supporters) et al. for their ongoing work on `rustc_codegen_gcc`. - Philip Herrons (and his supporters Open Source Security and Embecosm) et al. for their ongoing work on GCC Rust. - Mats Larsen, Marc Poulhiès et al. for their ongoing work on improving Rust support in Compiler Explorer. - Many folks that have reported issues, tested the project, helped spread the word, joined discussions and contributed in other ways! Please see also the acknowledgements on the previous cover letters. Boqun Feng (1): kallsyms: use the correct buffer size for symbols Gary Guo (2): rust: add `build_error` crate vsprintf: add new `%pA` format specifier Miguel Ojeda (13): kallsyms: support "big" kernel symbols kallsyms: increase maximum kernel symbol length to 512 rust: add C helpers rust: add `compiler_builtins` crate rust: add `alloc` crate rust: add `macros` crate rust: export generated symbols scripts: add `generate_rust_analyzer.py` scripts: decode_stacktrace: demangle Rust symbols docs: add Rust documentation Kbuild: add Rust support samples: add Rust examples MAINTAINERS: Rust Wedson Almeida Filho (4): rust: add `kernel` crate's `sync` module rust: add `kernel` crate [RFC] drivers: gpio: PrimeCell PL061 in Rust [RFC] drivers: android: Binder IPC in Rust .gitignore | 5 + .rustfmt.toml | 12 + Documentation/doc-guide/kernel-doc.rst | 3 + Documentation/index.rst | 1 + Documentation/kbuild/kbuild.rst | 17 + Documentation/kbuild/makefiles.rst | 50 +- Documentation/process/changes.rst | 41 + Documentation/rust/arch-support.rst | 34 + Documentation/rust/coding-guidelines.rst | 214 ++ Documentation/rust/general-information.rst | 77 + Documentation/rust/index.rst | 20 + Documentation/rust/logo.svg | 357 ++ Documentation/rust/quick-start.rst | 230 ++ MAINTAINERS | 15 + Makefile | 173 +- arch/Kconfig | 6 + arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 5 + arch/x86/Kconfig | 1 + arch/x86/Makefile | 14 + drivers/android/Kconfig | 6 + drivers/android/Makefile | 2 + drivers/android/allocation.rs | 266 ++ drivers/android/context.rs | 80 + drivers/android/defs.rs | 99 + drivers/android/node.rs | 476 +++ drivers/android/process.rs | 960 +++++ drivers/android/range_alloc.rs | 189 + drivers/android/rust_binder.rs | 111 + drivers/android/thread.rs | 870 +++++ drivers/android/transaction.rs | 326 ++ drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio_pl061_rust.rs | 370 ++ include/linux/kallsyms.h | 2 +- include/linux/spinlock.h | 17 +- include/uapi/linux/android/binder.h | 28 +- init/Kconfig | 44 +- kernel/kallsyms.c | 26 +- kernel/livepatch/core.c | 4 +- lib/Kconfig.debug | 143 + lib/vsprintf.c | 13 + rust/.gitignore | 8 + rust/Makefile | 376 ++ rust/alloc/README.md | 32 + rust/alloc/alloc.rs | 440 +++ rust/alloc/borrow.rs | 498 +++ rust/alloc/boxed.rs | 2008 +++++++++++ rust/alloc/collections/mod.rs | 156 + rust/alloc/fmt.rs | 601 ++++ rust/alloc/lib.rs | 231 ++ rust/alloc/macros.rs | 126 + rust/alloc/raw_vec.rs | 561 +++ rust/alloc/slice.rs | 1279 +++++++ rust/alloc/str.rs | 632 ++++ rust/alloc/string.rs | 2862 +++++++++++++++ rust/alloc/vec/drain.rs | 186 + rust/alloc/vec/drain_filter.rs | 145 + rust/alloc/vec/into_iter.rs | 356 ++ rust/alloc/vec/is_zero.rs | 106 + rust/alloc/vec/mod.rs | 3353 ++++++++++++++++++ rust/alloc/vec/partial_eq.rs | 49 + rust/alloc/vec/set_len_on_drop.rs | 30 + rust/alloc/vec/spec_extend.rs | 174 + rust/bindgen_parameters | 13 + rust/build_error.rs | 29 + rust/compiler_builtins.rs | 57 + rust/exports.c | 20 + rust/helpers.c | 531 +++ rust/kernel/allocator.rs | 65 + rust/kernel/amba.rs | 259 ++ rust/kernel/bindings.rs | 47 + rust/kernel/bindings_helper.h | 37 + rust/kernel/build_assert.rs | 80 + rust/kernel/c_types.rs | 119 + rust/kernel/chrdev.rs | 207 ++ rust/kernel/clk.rs | 75 + rust/kernel/cred.rs | 73 + rust/kernel/device.rs | 554 +++ rust/kernel/driver.rs | 440 +++ rust/kernel/error.rs | 560 +++ rust/kernel/file.rs | 873 +++++ rust/kernel/gpio.rs | 478 +++ rust/kernel/hwrng.rs | 242 ++ rust/kernel/io_buffer.rs | 153 + rust/kernel/io_mem.rs | 237 ++ rust/kernel/iov_iter.rs | 81 + rust/kernel/irq.rs | 409 +++ rust/kernel/lib.rs | 260 ++ rust/kernel/linked_list.rs | 247 ++ rust/kernel/miscdev.rs | 291 ++ rust/kernel/mm.rs | 149 + rust/kernel/module_param.rs | 498 +++ rust/kernel/of.rs | 63 + rust/kernel/pages.rs | 144 + rust/kernel/platform.rs | 224 ++ rust/kernel/power.rs | 118 + rust/kernel/prelude.rs | 36 + rust/kernel/print.rs | 414 +++ rust/kernel/random.rs | 50 + rust/kernel/raw_list.rs | 361 ++ rust/kernel/rbtree.rs | 562 +++ rust/kernel/revocable.rs | 163 + rust/kernel/security.rs | 36 + rust/kernel/static_assert.rs | 39 + rust/kernel/std_vendor.rs | 150 + rust/kernel/str.rs | 592 ++++ rust/kernel/sync/arc.rs | 500 +++ rust/kernel/sync/condvar.rs | 138 + rust/kernel/sync/guard.rs | 166 + rust/kernel/sync/locked_by.rs | 112 + rust/kernel/sync/mod.rs | 157 + rust/kernel/sync/mutex.rs | 114 + rust/kernel/sync/revocable_mutex.rs | 184 + rust/kernel/sync/rwsem.rs | 149 + rust/kernel/sync/seqlock.rs | 202 ++ rust/kernel/sync/spinlock.rs | 192 + rust/kernel/sysctl.rs | 199 ++ rust/kernel/task.rs | 182 + rust/kernel/types.rs | 569 +++ rust/kernel/user_ptr.rs | 175 + rust/macros/helpers.rs | 79 + rust/macros/lib.rs | 94 + rust/macros/module.rs | 631 ++++ samples/Kconfig | 2 + samples/Makefile | 1 + samples/rust/Kconfig | 130 + samples/rust/Makefile | 15 + samples/rust/hostprogs/.gitignore | 3 + samples/rust/hostprogs/Makefile | 5 + samples/rust/hostprogs/a.rs | 7 + samples/rust/hostprogs/b.rs | 5 + samples/rust/hostprogs/single.rs | 12 + samples/rust/rust_chrdev.rs | 50 + samples/rust/rust_minimal.rs | 35 + samples/rust/rust_miscdev.rs | 143 + samples/rust/rust_module_parameters.rs | 69 + samples/rust/rust_platform.rs | 22 + samples/rust/rust_print.rs | 54 + samples/rust/rust_random.rs | 60 + samples/rust/rust_semaphore.rs | 171 + samples/rust/rust_semaphore_c.c | 212 ++ samples/rust/rust_stack_probing.rs | 36 + samples/rust/rust_sync.rs | 93 + scripts/.gitignore | 1 + scripts/Kconfig.include | 6 +- scripts/Makefile | 3 + scripts/Makefile.build | 60 + scripts/Makefile.debug | 10 + scripts/Makefile.host | 34 +- scripts/Makefile.lib | 12 + scripts/Makefile.modfinal | 8 +- scripts/cc-version.sh | 12 +- scripts/decode_stacktrace.sh | 14 + scripts/generate_rust_analyzer.py | 133 + scripts/generate_rust_target.rs | 227 ++ scripts/is_rust_module.sh | 13 + scripts/kallsyms.c | 40 +- scripts/kconfig/confdata.c | 75 + scripts/min-tool-version.sh | 6 + scripts/rust-is-available-bindgen-libclang.h | 2 + scripts/rust-is-available.sh | 158 + tools/include/linux/kallsyms.h | 2 +- tools/lib/perf/include/perf/event.h | 2 +- tools/lib/symbol/kallsyms.h | 2 +- 168 files changed, 35290 insertions(+), 63 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 Documentation/rust/arch-support.rst create mode 100644 Documentation/rust/coding-guidelines.rst create mode 100644 Documentation/rust/general-information.rst create mode 100644 Documentation/rust/index.rst create mode 100644 Documentation/rust/logo.svg create mode 100644 Documentation/rust/quick-start.rst create mode 100644 drivers/android/allocation.rs create mode 100644 drivers/android/context.rs create mode 100644 drivers/android/defs.rs create mode 100644 drivers/android/node.rs create mode 100644 drivers/android/process.rs create mode 100644 drivers/android/range_alloc.rs create mode 100644 drivers/android/rust_binder.rs create mode 100644 drivers/android/thread.rs create mode 100644 drivers/android/transaction.rs create mode 100644 drivers/gpio/gpio_pl061_rust.rs create mode 100644 rust/.gitignore create mode 100644 rust/Makefile create mode 100644 rust/alloc/README.md create mode 100644 rust/alloc/alloc.rs create mode 100644 rust/alloc/borrow.rs create mode 100644 rust/alloc/boxed.rs create mode 100644 rust/alloc/collections/mod.rs create mode 100644 rust/alloc/fmt.rs create mode 100644 rust/alloc/lib.rs create mode 100644 rust/alloc/macros.rs create mode 100644 rust/alloc/raw_vec.rs create mode 100644 rust/alloc/slice.rs create mode 100644 rust/alloc/str.rs create mode 100644 rust/alloc/string.rs create mode 100644 rust/alloc/vec/drain.rs create mode 100644 rust/alloc/vec/drain_filter.rs create mode 100644 rust/alloc/vec/into_iter.rs create mode 100644 rust/alloc/vec/is_zero.rs create mode 100644 rust/alloc/vec/mod.rs create mode 100644 rust/alloc/vec/partial_eq.rs create mode 100644 rust/alloc/vec/set_len_on_drop.rs create mode 100644 rust/alloc/vec/spec_extend.rs create mode 100644 rust/bindgen_parameters create mode 100644 rust/build_error.rs create mode 100644 rust/compiler_builtins.rs create mode 100644 rust/exports.c create mode 100644 rust/helpers.c create mode 100644 rust/kernel/allocator.rs create mode 100644 rust/kernel/amba.rs create mode 100644 rust/kernel/bindings.rs create mode 100644 rust/kernel/bindings_helper.h create mode 100644 rust/kernel/build_assert.rs create mode 100644 rust/kernel/c_types.rs create mode 100644 rust/kernel/chrdev.rs create mode 100644 rust/kernel/clk.rs create mode 100644 rust/kernel/cred.rs create mode 100644 rust/kernel/device.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/error.rs create mode 100644 rust/kernel/file.rs create mode 100644 rust/kernel/gpio.rs create mode 100644 rust/kernel/hwrng.rs create mode 100644 rust/kernel/io_buffer.rs create mode 100644 rust/kernel/io_mem.rs create mode 100644 rust/kernel/iov_iter.rs create mode 100644 rust/kernel/irq.rs create mode 100644 rust/kernel/lib.rs create mode 100644 rust/kernel/linked_list.rs create mode 100644 rust/kernel/miscdev.rs create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/module_param.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pages.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/power.rs create mode 100644 rust/kernel/prelude.rs create mode 100644 rust/kernel/print.rs create mode 100644 rust/kernel/random.rs create mode 100644 rust/kernel/raw_list.rs create mode 100644 rust/kernel/rbtree.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/security.rs create mode 100644 rust/kernel/static_assert.rs create mode 100644 rust/kernel/std_vendor.rs create mode 100644 rust/kernel/str.rs create mode 100644 rust/kernel/sync/arc.rs create mode 100644 rust/kernel/sync/condvar.rs create mode 100644 rust/kernel/sync/guard.rs create mode 100644 rust/kernel/sync/locked_by.rs create mode 100644 rust/kernel/sync/mod.rs create mode 100644 rust/kernel/sync/mutex.rs create mode 100644 rust/kernel/sync/revocable_mutex.rs create mode 100644 rust/kernel/sync/rwsem.rs create mode 100644 rust/kernel/sync/seqlock.rs create mode 100644 rust/kernel/sync/spinlock.rs create mode 100644 rust/kernel/sysctl.rs create mode 100644 rust/kernel/task.rs create mode 100644 rust/kernel/types.rs create mode 100644 rust/kernel/user_ptr.rs create mode 100644 rust/macros/helpers.rs create mode 100644 rust/macros/lib.rs create mode 100644 rust/macros/module.rs create mode 100644 samples/rust/Kconfig create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/hostprogs/.gitignore create mode 100644 samples/rust/hostprogs/Makefile create mode 100644 samples/rust/hostprogs/a.rs create mode 100644 samples/rust/hostprogs/b.rs create mode 100644 samples/rust/hostprogs/single.rs create mode 100644 samples/rust/rust_chrdev.rs create mode 100644 samples/rust/rust_minimal.rs create mode 100644 samples/rust/rust_miscdev.rs create mode 100644 samples/rust/rust_module_parameters.rs create mode 100644 samples/rust/rust_platform.rs create mode 100644 samples/rust/rust_print.rs create mode 100644 samples/rust/rust_random.rs create mode 100644 samples/rust/rust_semaphore.rs create mode 100644 samples/rust/rust_semaphore_c.c create mode 100644 samples/rust/rust_stack_probing.rs create mode 100644 samples/rust/rust_sync.rs create mode 100755 scripts/generate_rust_analyzer.py create mode 100644 scripts/generate_rust_target.rs create mode 100755 scripts/is_rust_module.sh create mode 100644 scripts/rust-is-available-bindgen-libclang.h create mode 100755 scripts/rust-is-available.sh base-commit: 09688c0166e76ce2fb85e86b9d99be8b0084cdf9 -- 2.35.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 058D3C433FE for ; Thu, 17 Mar 2022 18:12:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=RF7evp10tyM5SVPyjggnH87eGdI9LY+tnohLVUN8jrs=; b=UPtViaPI1DaMcX if/lCRTMrM08wGdDHt07kYVXxOWM9IprM69V81bePnpbqItV6M8ESbKNNJnhAX0fRpcEMLeZ9Shh3 iByesTXolD+AZVtFyDzKWMrOv/39mP+FTLmJxnVwrGoWqUJUYyPZGYleFrv5DkKe91fZ1txHKLymp vbUePlb6r4mbDeo1DmpVweWTVpxm0CeECApbXtKbLlqeEAksA89HJlKQrHocxeKg6CSacUkjhDPmt jHdYLRhkzp4MhUUEMi6zdVKXsZ1kmk3IpB6a3pJ3eRQUtakvdskrdagM26Dts0MV1DLYK7FZgUmW+ GUythma7EPzOuDLqA1Aw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nUuaj-00GyYo-PH; Thu, 17 Mar 2022 18:11:17 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nUuae-00GyXm-Ec; Thu, 17 Mar 2022 18:11:15 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 73AEC6163F; Thu, 17 Mar 2022 18:11:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82AA2C340E9; Thu, 17 Mar 2022 18:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1647540670; bh=XdgzuXN9aeiZfb9/RrTbmUugTKoTTSFNgHTlI0iJos8=; h=From:To:Cc:Subject:Date:From; b=vLjaZJaxmo531Mi1n7H19XJu/GxO5162QeJ+FG/vMCecmulIudwOj8+3iCDM7DoMN q0tbyyarTHDi2WBOlOc17afP30b27KMTQMECxxaWv0pOkVzqDCSf3KgxcIi9z3eaJH KnI8iZBnnG/sR7sHpdY0c9aj+rlaqCjb+aYg3ZSBKkQF6VtKwX9prE6UaRuYBtIZ4I 5C47ZsXGaeJ0WLvBFCkwIlS0K9OJWKnhNUHmVNdnwKIXksy0ltCXIwXr6vRPMPFlMe SzEGR8a6tnPSeH9iMqNOKZOvYMmr/nia1eGYzFZLOf0Aytdk3DArm8eaE4mphDaXfX qV3YLz3aYwiMw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Miguel Ojeda , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v5 00/20] Rust support Date: Thu, 17 Mar 2022 19:09:48 +0100 Message-Id: <20220317181032.15436-1-ojeda@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220317_111112_637652_5884CC78 X-CRM114-Status: GOOD ( 31.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org UnVzdCBzdXBwb3J0CgpUaGlzIGlzIHRoZSBwYXRjaCBzZXJpZXMgKHY1KSB0byBhZGQgc3VwcG9y dCBmb3IgUnVzdCBhcyBhIHNlY29uZApsYW5ndWFnZSB0byB0aGUgTGludXgga2VybmVsLgoKSWYg eW91IGFyZSBpbnRlcmVzdGVkIGluIGZvbGxvd2luZyB0aGlzIGVmZm9ydCwgcGxlYXNlIGpvaW4g dXMgaW4KdGhlIG1haWxpbmcgbGlzdCBhdDoKCiAgICBydXN0LWZvci1saW51eEB2Z2VyLmtlcm5l bC5vcmcKCmFuZCB0YWtlIGEgbG9vayBhdCB0aGUgcHJvamVjdCBpdHNlbGYgYXQ6CgogICAgaHR0 cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4CgpBcyB1c3VhbCwgc3BlY2lhbCB0aGFua3Mg Z28gdG8gSVNSRyAoSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gKR3JvdXApIGFuZCBHb29nbGUg Zm9yIHRoZWlyIGZpbmFuY2lhbCBzdXBwb3J0IG9uIHRoaXMgZW5kZWF2b3IuCgpDaGVlcnMsCk1p Z3VlbAoKLS0KCiMgUnVzdCBzdXBwb3J0CgpUaGlzIGNvdmVyIGxldHRlciBleHBsYWlucyB0aGUg bWFqb3IgY2hhbmdlcyBhbmQgdXBkYXRlcyBkb25lIHNpbmNlCnRoZSBwcmV2aW91cyBvbmVzLiBG b3IgdGhvc2UsIHBsZWFzZSBzZWU6CgogICAgUkZDOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjEwNDE0MTg0NjA0LjIzNDczLTEtb2plZGFAa2VybmVsLm9yZy8KICAgIHYxOiAgaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMDcwNDIwMjc1Ni4yOTEwNy0xLW9qZWRhQGtl cm5lbC5vcmcvCiAgICB2MjogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTEyMDYx NDAzMTMuNTY1My0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2MzogIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvMjAyMjAxMTcwNTMzNDkuNjgwNC0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2 NDogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMjAyMTIxMzA0MTAuNjkwMS0xLW9q ZWRhQGtlcm5lbC5vcmcvCgoKIyMgSW5mcmFzdHJ1Y3R1cmUgdXBkYXRlcwoKVGhlcmUgaGF2ZSBi ZWVuIHNldmVyYWwgaW1wcm92ZW1lbnRzIHRvIHRoZSBvdmVyYWxsIFJ1c3Qgc3VwcG9ydDoKCiAg LSBUaGUgdG9vbGNoYWluIGFuZCBgYWxsb2NgIGhhdmUgYmVlbiB1cGdyYWRlZCB0byBSdXN0IDEu NTkuMC4KICAgIFRoaXMgdmVyc2lvbiBzdGFiaWxpemVkIGBmZWF0dXJlKGdsb2JhbF9hc20pYCBh cyB3ZWxsIGFzCiAgICB0aGUgYC1Dc3ltYm9sLW1hbmdsaW5nLXZlcnNpb249djBgIGZsYWcuCgog IC0gQWRkZWQgc3VwcG9ydCBmb3IgaG9zdCBwcm9ncmFtcyB3cml0dGVuIGluIFJ1c3QuIFRoaXMg c2hvdWxkCiAgICBvbmx5IGJlIHVzZWQgaW4gc2NlbmFyaW9zIHdoZXJlIFJ1c3QgaXMgcmVxdWly ZWQgdG8gYmUgYXZhaWxhYmxlLgoKICAtIFRhcmdldCBzcGVjaWZpY2F0aW9uIGZpbGVzIGFyZSBu b3cgZ2VuZXJhdGVkIG9uIHRoZSBmbHkgYmFzZWQKICAgIG9uIHRoZSBrZXJuZWwgY29uZmlndXJh dGlvbiwgdmlhIGEgUnVzdCBzY3JpcHQsIGluc3RlYWQgb2YKICAgIGhhdmluZyBhIGZldyBwcmVk ZWZpbmVkIGZpbGVzLgoKICAgIFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgZmlsZSBoYXMg YmVlbiBzaW1wbGlmaWVkIGFuZCwKICAgIGZvciB4ODYsIGFsbCB0aGUgb3B0aW9ucyB0aGF0IGNh biBiZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUKICAgIGNvbW1hbmQtbGluZSBoYXZlIGJlZW4gbW92 ZWQgdG8gdGhlIGFyY2hpdGVjdHVyZSBgTWFrZWZpbGVgLgoKICAgIFRoZSBnb2FsIGlzIHRvIHJl ZHVjZSB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBhcyBtdWNoIGFzIHBvc3NpYmxlCiAgICBmb3Ig YWxsIGFyY2hpdGVjdHVyZXMsIGFuZCBldmVudHVhbGx5LCBzdG9wIG5lZWRpbmcgc3VjaCBhIGZp bGUuCgogIC0gQWRkZWQgYEhBVkVfUlVTVGAga2VybmVsIG9wdGlvbi4gVGhpcyBzeW1ib2wgc2hv dWxkIGJlIHNlbGVjdGVkCiAgICBieSBhbiBhcmNoaXRlY3R1cmUgaWYgaXQgc3VwcG9ydHMgUnVz dC4KCiAgLSBBZGRlZCBkb2N1bWVudGF0aW9uIG9uIGBSVVNURkxBR1MqYCBhbmQgYEtCVUlMRF9S VVNUKmAgdmFyaWFibGVzLgoKICAtIFNpbXBsaWZpZWQgdGFncyBhbmQgY3Jvc3MtcmVmZXJlbmNl cyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KCiAgLSBPdGhlciBjbGVhbnVwcywgZml4ZXMgYW5kIGlt cHJvdmVtZW50cyBvbiB0aGUgYnVpbGQgc3lzdGVtLgoKCiMjIEFic3RyYWN0aW9ucyBhbmQgZHJp dmVyIHVwZGF0ZXMKClNvbWUgb2YgdGhlIGltcHJvdmVtZW50cyB0byB0aGUgYWJzdHJhY3Rpb25z IGFuZCBleGFtcGxlIGRyaXZlcnMgYXJlOgoKICAtIEFkZGVkIGFic3RyYWN0aW9uIGZvciB0aGUg SGFyZHdhcmUgUmFuZG9tIE51bWJlciBHZW5lcmF0b3IuCgogIC0gYCVwQWAgcmV3b3JrIGluIGB2 c3ByaW50ZmAgZm9sbG93aW5nIHRoZSByZXZpZXcuCgogIC0gVGhlIGBzeW5jYCBzYW1wbGUgbm93 IHNob3dzIGhvdyB0byB1c2Ugc3RhdGljIG11dGV4ZXMgYW5kCiAgICBjb25kaXRpb25hbCB2YXJp YWJsZXMuCgogIC0gRXJyb3IgY29kZXMgY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgcHJlZml4aW5n IHRoZW0gd2l0aAogICAgYEVycm9yOjpgLCB3aGljaCBtYWtlcyB1c2luZyB0aGVtIGNsb3NlciB0 byBDLiBGb3IgaW5zdGFuY2U6CgogICAgICAgIGZuIGYoLi4uKSAtPiBSZXN1bHQgewogICAgICAg ICAgICBpZiAuLi4gewogICAgICAgICAgICAgICAgcmV0dXJuIEVycihFSU5WQUwpOwogICAgICAg ICAgICB9CiAgICAgICAgICAgIC4uLgogICAgICAgICAgICBPaygoKSkKICAgICAgICB9CgogIC0g QWRkZWQgYENTdHJpbmdgIHR5cGUgZm9yIG93bmVkIEMgc3RyaW5ncy4KCiAgLSBgbWlzY2RldmAg cmVnaXN0cmF0aW9uIG5vdyBob2xkcyBhbiBvd25lZCBDIHN0cmluZywgd2hpY2ggZW5hYmxlcwog ICAgc2NlbmFyaW9zIHdoZW4gdGhlIGRldmljZSBuYW1lIGlzIGNvbnN0cnVjdGVkIGF0IHJ1bnRp bWUuCgogIC0gQWRkZWQgYEJvb2xgIHRyYWl0IG1lYW50IHRvIGJlIHVzZWQgaW4gdHlwZSBzdGF0 ZXMgdG8gYWxsb3cKICAgIGJvb2xlYW4gY29uc3RyYWludHMgaW4gaW1wbGVtZW50YXRpb24gYmxv Y2tzLgoKICAtIEFkZGVkIGBMb2NrSW5mb2AgdHJhaXQgdGhhdCBsb2NrICJ0eXBlIHN0YXRlcyIg bXVzdCBpbXBsZW1lbnQuCiAgICBUaGlzIGFsbG93cyB0aGUgZGVmaW5pdGlvbiBvZiBhZGRpdGlv bmFsIHdyaXRhYmxlIHR5cGUgc3RhdGVzLgoKICAtIFNpbXBsaWZpY2F0aW9uIG9mIHRoZSBzcGlu IGxvY2sgaW1wbGVtZW50YXRpb24gYnkgc3BsaXR0aW5nCiAgICBhY3F1aXNpdGlvbiB0eXBlcy4g VHlwZSBzdGF0ZXMgYXJlIHVzZWQgdG8gaW1wbGVtZW50IHR3byB2ZXJzaW9ucwogICAgb2YgdGhl IGBMb2NrYCB0cmFpdDogb25lIHdoaWNoIG5ldmVyIG1vZGlmaWVzIHRoZSBpbnRlcnJ1cHQgc3Rh dGUKICAgIGFuZCBvbmUgdGhhdCBkaXNhYmxlcyB0aGVtIChpZiB0aGV5IGFyZSBlbmFibGVkLCB0 aGVuIHJlLWVuYWJsZXMKICAgIG9uIHVubG9jaykuCgogIC0gYFJlc3VsdDo6dW53cmFwYCBjYW4g bm93IGJlIHVzZWQgaW4gZXhhbXBsZXMgdGhhdCBhcmUgY29tcGlsZWQsCiAgICBsaW5rZWQgYW5k IHJ1bi4KCiAgLSBNZXJnZWQgYEZvcm1hdHRlcmAgYW5kIGBCdWZmZXJgIHR5cGVzLgoKICAtIEFk ZGVkIGBJb01lbTo6b2Zmc2V0X29rYCBmb3IgcnVudGltZSBzaXplcy4KCiAgLSBPdGhlciBjbGVh bnVwcywgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgojIyBQYXRjaCBzZXJpZXMgc3RhdHVzCgpU aGUgUnVzdCBzdXBwb3J0IGlzIHN0aWxsIHRvIGJlIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLiBI b3dldmVyLApzdXBwb3J0IGlzIGdvb2QgZW5vdWdoIHRoYXQga2VybmVsIGRldmVsb3BlcnMgY2Fu IHN0YXJ0IHdvcmtpbmcgb24gdGhlClJ1c3QgYWJzdHJhY3Rpb25zIGZvciBzdWJzeXN0ZW1zIGFu ZCB3cml0ZSBkcml2ZXJzIGFuZCBvdGhlciBtb2R1bGVzLgoKVGhlIGN1cnJlbnQgc2VyaWVzIGhh cyBqdXN0IGFycml2ZWQgaW4gYGxpbnV4LW5leHRgLCBhcyB1c3VhbC4KU2ltaWxhcmx5LCB0aGUg cHJldmlldyBkb2NzIGZvciB0aGlzIHNlcmllcyBjYW4gYmUgc2VlbiBhdDoKCiAgICBodHRwczov L3J1c3QtZm9yLWxpbnV4LmdpdGh1Yi5pby9kb2NzL2tlcm5lbC8KCkFzIHVzdWFsLCBwbGVhc2Ug c2VlIHRoZSBmb2xsb3dpbmcgbGluayBmb3IgdGhlCmxpdmUgbGlzdCBvZiB1bnN0YWJsZSBSdXN0 IGZlYXR1cmVzIHdlIGFyZSB1c2luZzoKCiAgICBodHRwczovL2dpdGh1Yi5jb20vUnVzdC1mb3It TGludXgvbGludXgvaXNzdWVzLzIKCk5vdGUgdGhhdCB0aGlzIHRpbWUgdGhlIHNlcmllcyBkZXBl bmRzIG9uIGEgcGF0Y2ggcXVldWVkIGluCnBvd2VycGMtbmV4dDoKCiAgICBodHRwczovL2dpdC5r ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wb3dlcnBjL2xpbnV4LmdpdC9jb21t aXQvP2g9bmV4dCZpZD1kNGJlNjBmZTY2YjczODA1MzA4NjhjZWViZTU0OWY4ZWViY2NhY2M1CgoK IyMgQWNrbm93bGVkZ2VtZW50cwoKVGhlIHNpZ25hdHVyZXMgaW4gdGhlIG1haW4gY29tbWl0cyBj b3JyZXNwb25kIHRvIHRoZSBwZW9wbGUgdGhhdAp3cm90ZSBjb2RlIHRoYXQgaGFzIGVuZGVkIHVw IGluIHRoZW0gYXQgdGhlIHByZXNlbnQgdGltZS4gRm9yIGRldGFpbHMKb24gY29udHJpYnV0aW9u cyB0byBjb2RlIGFuZCBkaXNjdXNzaW9ucywgcGxlYXNlIHNlZSBvdXIgcmVwb3NpdG9yeToKCiAg ICBodHRwczovL2dpdGh1Yi5jb20vUnVzdC1mb3ItTGludXgvbGludXgKCkhvd2V2ZXIsIHdlIHdv dWxkIGxpa2UgdG8gZ2l2ZSBjcmVkaXQgdG8gZXZlcnlvbmUgdGhhdCBoYXMgY29udHJpYnV0ZWQK aW4gb25lIHdheSBvciBhbm90aGVyIHRvIHRoZSBSdXN0IGZvciBMaW51eCBwcm9qZWN0LiBTaW5j ZSB0aGUKcHJldmlvdXMgY292ZXIgbGV0dGVyOgoKICAtIEFraXJhIFlva29zYXdhIGZvciBhIGRl dGFpbGVkIHJldmlldyBvZiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQKICAgIHN1Z2dlc3Rpbmcgc2V2 ZXJhbCBpbXByb3ZlbWVudHMuCgogIC0gUGV0ciBNbGFkZWsgYW5kIFJhc211cyBWaWxsZW1vZXMg Zm9yIHRoZWlyIHByaW50aW5nL2Zvcm1hdHRpbmcKICAgIHJldmlldyBhbmQgc3VnZ2VzdGlvbnMu CgogIC0gUnVzc2VsbCBLaW5nIGZvciBoaXMgcmV2aWV3IG9mIHRoZSBLY29uZmlnIGNoYW5nZXMu CgogIC0gQW5keSBTaGV2Y2hlbmtvLCBTZXJnZXkgU2Vub3poYXRza3ksIEpvaG4gUGF1bCBBZHJp YW4gR2xhdWJpdHoKICAgIGFuZCBEYXZpZCBMYWlnaHQgZm9yIHRoZWlyIHJldmlld3MgYW5kIGZl ZWRiYWNrIG9uIHRoZSBwcmV2aW91cwogICAgcm91bmQuCgogIC0gYmpvcm4zIGZvciByZXZpZXdp bmcgbWFueSBQUnMuCgogIC0gQXMgdXN1YWwsIGJqb3JuMyBhbmQgR2FyeSBHdW8gZm9yIGFsbCB0 aGUgaW5wdXQgb24gUnVzdCBjb21waWxlcgogICAgZGV0YWlscyBhbmQgc3VnZ2VzdGlvbnMuCgog IC0gUGhpbGlwIExpLCBZdWppZSBMaXUgZXQgYWwuIGZvciBjb250aW51aW5nIHRoZWlyIHdvcmsg b24gYWRkaW5nCiAgICBSdXN0IHN1cHBvcnQgdG8gdGhlIEludGVsIDBEQVkvTEtQIGtlcm5lbCB0 ZXN0IHJvYm90LiBBbHNvLAogICAgdGhhbmtzIHRvIE5hdGhhbiBDaGFuY2VsbG9yIGFuZCBOaWNr IERlc2F1bG5pZXJzIGZvciB0aGVpciBpbnB1dC4KCiAgLSBXZWkgTGl1IGZvciB0YWtpbmcgdGhl IHRpbWUgdG8gYW5zd2VyIHF1ZXN0aW9ucyBmcm9tIG5ld2NvbWVycwogICAgaW4gWnVsaXAuCgog IC0gQW50b25pIEJvdWNoZXIgKGFuZCBoaXMgc3VwcG9ydGVycykgZXQgYWwuIGZvciB0aGVpciBv bmdvaW5nCiAgICB3b3JrIG9uIGBydXN0Y19jb2RlZ2VuX2djY2AuCgogIC0gUGhpbGlwIEhlcnJv bnMgKGFuZCBoaXMgc3VwcG9ydGVycyBPcGVuIFNvdXJjZSBTZWN1cml0eSBhbmQKICAgIEVtYmVj b3NtKSBldCBhbC4gZm9yIHRoZWlyIG9uZ29pbmcgd29yayBvbiBHQ0MgUnVzdC4KCiAgLSBNYXRz IExhcnNlbiwgTWFyYyBQb3VsaGnDqHMgZXQgYWwuIGZvciB0aGVpciBvbmdvaW5nIHdvcmsgb24K ICAgIGltcHJvdmluZyBSdXN0IHN1cHBvcnQgaW4gQ29tcGlsZXIgRXhwbG9yZXIuCgogIC0gTWFu eSBmb2xrcyB0aGF0IGhhdmUgcmVwb3J0ZWQgaXNzdWVzLCB0ZXN0ZWQgdGhlIHByb2plY3QsCiAg ICBoZWxwZWQgc3ByZWFkIHRoZSB3b3JkLCBqb2luZWQgZGlzY3Vzc2lvbnMgYW5kIGNvbnRyaWJ1 dGVkIGluCiAgICBvdGhlciB3YXlzIQoKUGxlYXNlIHNlZSBhbHNvIHRoZSBhY2tub3dsZWRnZW1l bnRzIG9uIHRoZSBwcmV2aW91cyBjb3ZlciBsZXR0ZXJzLgoKQm9xdW4gRmVuZyAoMSk6CiAga2Fs bHN5bXM6IHVzZSB0aGUgY29ycmVjdCBidWZmZXIgc2l6ZSBmb3Igc3ltYm9scwoKR2FyeSBHdW8g KDIpOgogIHJ1c3Q6IGFkZCBgYnVpbGRfZXJyb3JgIGNyYXRlCiAgdnNwcmludGY6IGFkZCBuZXcg YCVwQWAgZm9ybWF0IHNwZWNpZmllcgoKTWlndWVsIE9qZWRhICgxMyk6CiAga2FsbHN5bXM6IHN1 cHBvcnQgImJpZyIga2VybmVsIHN5bWJvbHMKICBrYWxsc3ltczogaW5jcmVhc2UgbWF4aW11bSBr ZXJuZWwgc3ltYm9sIGxlbmd0aCB0byA1MTIKICBydXN0OiBhZGQgQyBoZWxwZXJzCiAgcnVzdDog YWRkIGBjb21waWxlcl9idWlsdGluc2AgY3JhdGUKICBydXN0OiBhZGQgYGFsbG9jYCBjcmF0ZQog IHJ1c3Q6IGFkZCBgbWFjcm9zYCBjcmF0ZQogIHJ1c3Q6IGV4cG9ydCBnZW5lcmF0ZWQgc3ltYm9s cwogIHNjcmlwdHM6IGFkZCBgZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weWAKICBzY3JpcHRzOiBk ZWNvZGVfc3RhY2t0cmFjZTogZGVtYW5nbGUgUnVzdCBzeW1ib2xzCiAgZG9jczogYWRkIFJ1c3Qg ZG9jdW1lbnRhdGlvbgogIEtidWlsZDogYWRkIFJ1c3Qgc3VwcG9ydAogIHNhbXBsZXM6IGFkZCBS dXN0IGV4YW1wbGVzCiAgTUFJTlRBSU5FUlM6IFJ1c3QKCldlZHNvbiBBbG1laWRhIEZpbGhvICg0 KToKICBydXN0OiBhZGQgYGtlcm5lbGAgY3JhdGUncyBgc3luY2AgbW9kdWxlCiAgcnVzdDogYWRk IGBrZXJuZWxgIGNyYXRlCiAgW1JGQ10gZHJpdmVyczogZ3BpbzogUHJpbWVDZWxsIFBMMDYxIGlu IFJ1c3QKICBbUkZDXSBkcml2ZXJzOiBhbmRyb2lkOiBCaW5kZXIgSVBDIGluIFJ1c3QKCiAuZ2l0 aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogLnJ1c3Rm bXQudG9tbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIERvY3VtZW50 YXRpb24vZG9jLWd1aWRlL2tlcm5lbC1kb2MucnN0ICAgICAgIHwgICAgMyArCiBEb2N1bWVudGF0 aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogRG9jdW1lbnRhdGlv bi9rYnVpbGQva2J1aWxkLnJzdCAgICAgICAgICAgICAgfCAgIDE3ICsKIERvY3VtZW50YXRpb24v a2J1aWxkL21ha2VmaWxlcy5yc3QgICAgICAgICAgIHwgICA1MCArLQogRG9jdW1lbnRhdGlvbi9w cm9jZXNzL2NoYW5nZXMucnN0ICAgICAgICAgICAgfCAgIDQxICsKIERvY3VtZW50YXRpb24vcnVz dC9hcmNoLXN1cHBvcnQucnN0ICAgICAgICAgIHwgICAzNCArCiBEb2N1bWVudGF0aW9uL3J1c3Qv Y29kaW5nLWd1aWRlbGluZXMucnN0ICAgICB8ICAyMTQgKysKIERvY3VtZW50YXRpb24vcnVzdC9n ZW5lcmFsLWluZm9ybWF0aW9uLnJzdCAgIHwgICA3NyArCiBEb2N1bWVudGF0aW9uL3J1c3QvaW5k ZXgucnN0ICAgICAgICAgICAgICAgICB8ICAgMjAgKwogRG9jdW1lbnRhdGlvbi9ydXN0L2xvZ28u c3ZnICAgICAgICAgICAgICAgICAgfCAgMzU3ICsrCiBEb2N1bWVudGF0aW9uL3J1c3QvcXVpY2st c3RhcnQucnN0ICAgICAgICAgICB8ICAyMzAgKysKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxNSArCiBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNzMgKy0KIGFyY2gvS2NvbmZpZyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNiArCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogYXJjaC9hcm02NC9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIGFyY2gvcG93ZXJwYy9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMSArCiBhcmNoL3Jpc2N2L0tjb25maWcgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogYXJjaC9yaXNjdi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBhcmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTQgKwogZHJpdmVycy9hbmRyb2lkL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAg fCAgICA2ICsKIGRyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwg ICAgMiArCiBkcml2ZXJzL2FuZHJvaWQvYWxsb2NhdGlvbi5ycyAgICAgICAgICAgICAgICB8ICAy NjYgKysKIGRyaXZlcnMvYW5kcm9pZC9jb250ZXh0LnJzICAgICAgICAgICAgICAgICAgIHwgICA4 MCArCiBkcml2ZXJzL2FuZHJvaWQvZGVmcy5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAgOTkg KwogZHJpdmVycy9hbmRyb2lkL25vZGUucnMgICAgICAgICAgICAgICAgICAgICAgfCAgNDc2ICsr KwogZHJpdmVycy9hbmRyb2lkL3Byb2Nlc3MucnMgICAgICAgICAgICAgICAgICAgfCAgOTYwICsr KysrCiBkcml2ZXJzL2FuZHJvaWQvcmFuZ2VfYWxsb2MucnMgICAgICAgICAgICAgICB8ICAxODkg KwogZHJpdmVycy9hbmRyb2lkL3J1c3RfYmluZGVyLnJzICAgICAgICAgICAgICAgfCAgMTExICsK IGRyaXZlcnMvYW5kcm9pZC90aHJlYWQucnMgICAgICAgICAgICAgICAgICAgIHwgIDg3MCArKysr KwogZHJpdmVycy9hbmRyb2lkL3RyYW5zYWN0aW9uLnJzICAgICAgICAgICAgICAgfCAgMzI2ICsr CiBkcml2ZXJzL2dwaW8vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKwog ZHJpdmVycy9ncGlvL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGRy aXZlcnMvZ3Bpby9ncGlvX3BsMDYxX3J1c3QucnMgICAgICAgICAgICAgIHwgIDM3MCArKwogaW5j bHVkZS9saW51eC9rYWxsc3ltcy5oICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBpbmNs dWRlL2xpbnV4L3NwaW5sb2NrLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KIGluY2x1 ZGUvdWFwaS9saW51eC9hbmRyb2lkL2JpbmRlci5oICAgICAgICAgIHwgICAyOCArLQogaW5pdC9L Y29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICstCiBrZXJuZWwv a2FsbHN5bXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKy0KIGtlcm5lbC9s aXZlcGF0Y2gvY29yZS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogbGliL0tjb25m aWcuZGVidWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQzICsKIGxpYi92c3ByaW50 Zi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBydXN0Ly5naXRpZ25v cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKwogcnVzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzc2ICsrCiBydXN0L2FsbG9jL1JFQURN RS5tZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKwogcnVzdC9hbGxvYy9hbGxvYy5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQwICsrKwogcnVzdC9hbGxvYy9ib3Jyb3cu cnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDk4ICsrKwogcnVzdC9hbGxvYy9ib3hlZC5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDA4ICsrKysrKysrKysrCiBydXN0L2FsbG9j L2NvbGxlY3Rpb25zL21vZC5ycyAgICAgICAgICAgICAgICB8ICAxNTYgKwogcnVzdC9hbGxvYy9m bXQucnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAxICsrKysKIHJ1c3QvYWxsb2Mv bGliLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzMSArKwogcnVzdC9hbGxvYy9t YWNyb3MucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTI2ICsKIHJ1c3QvYWxsb2MvcmF3 X3ZlYy5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU2MSArKysKIHJ1c3QvYWxsb2Mvc2xp Y2UucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3OSArKysrKysrCiBydXN0L2FsbG9j L3N0ci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MzIgKysrKwogcnVzdC9hbGxv Yy9zdHJpbmcucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODYyICsrKysrKysrKysrKysr KwogcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMgICAgICAgICAgICAgICAgICAgICAgfCAgMTg2ICsK IHJ1c3QvYWxsb2MvdmVjL2RyYWluX2ZpbHRlci5ycyAgICAgICAgICAgICAgIHwgIDE0NSArCiBy dXN0L2FsbG9jL3ZlYy9pbnRvX2l0ZXIucnMgICAgICAgICAgICAgICAgICB8ICAzNTYgKysKIHJ1 c3QvYWxsb2MvdmVjL2lzX3plcm8ucnMgICAgICAgICAgICAgICAgICAgIHwgIDEwNiArCiBydXN0 L2FsbG9jL3ZlYy9tb2QucnMgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNTMgKysrKysrKysr KysrKysrKysrCiBydXN0L2FsbG9jL3ZlYy9wYXJ0aWFsX2VxLnJzICAgICAgICAgICAgICAgICB8 ICAgNDkgKwogcnVzdC9hbGxvYy92ZWMvc2V0X2xlbl9vbl9kcm9wLnJzICAgICAgICAgICAgfCAg IDMwICsKIHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzICAgICAgICAgICAgICAgIHwgIDE3 NCArCiBydXN0L2JpbmRnZW5fcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMg KwogcnVzdC9idWlsZF9lcnJvci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsK IHJ1c3QvY29tcGlsZXJfYnVpbHRpbnMucnMgICAgICAgICAgICAgICAgICAgIHwgICA1NyArCiBy dXN0L2V4cG9ydHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKwogcnVz dC9oZWxwZXJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTMxICsrKwogcnVz dC9rZXJuZWwvYWxsb2NhdG9yLnJzICAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICsKIHJ1c3Qv a2VybmVsL2FtYmEucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1OSArKwogcnVzdC9r ZXJuZWwvYmluZGluZ3MucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsKIHJ1c3Qva2Vy bmVsL2JpbmRpbmdzX2hlbHBlci5oICAgICAgICAgICAgICAgIHwgICAzNyArCiBydXN0L2tlcm5l bC9idWlsZF9hc3NlcnQucnMgICAgICAgICAgICAgICAgICB8ICAgODAgKwogcnVzdC9rZXJuZWwv Y190eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE5ICsKIHJ1c3Qva2VybmVsL2No cmRldi5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwNyArKwogcnVzdC9rZXJuZWwvY2xr LnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1ICsKIHJ1c3Qva2VybmVsL2NyZWQu cnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MyArCiBydXN0L2tlcm5lbC9kZXZpY2Uu cnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NTQgKysrCiBydXN0L2tlcm5lbC9kcml2ZXIu cnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NDAgKysrCiBydXN0L2tlcm5lbC9lcnJvci5y cyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NjAgKysrCiBydXN0L2tlcm5lbC9maWxlLnJz ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4NzMgKysrKysKIHJ1c3Qva2VybmVsL2dwaW8u cnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3OCArKysKIHJ1c3Qva2VybmVsL2h3cm5n LnJzICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0MiArKwogcnVzdC9rZXJuZWwvaW9fYnVm ZmVyLnJzICAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsKIHJ1c3Qva2VybmVsL2lvX21lbS5y cyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzNyArKwogcnVzdC9rZXJuZWwvaW92X2l0ZXIu cnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDgxICsKIHJ1c3Qva2VybmVsL2lycS5ycyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQwOSArKysKIHJ1c3Qva2VybmVsL2xpYi5ycyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDI2MCArKwogcnVzdC9rZXJuZWwvbGlua2VkX2xpc3Qu cnMgICAgICAgICAgICAgICAgICAgfCAgMjQ3ICsrCiBydXN0L2tlcm5lbC9taXNjZGV2LnJzICAg ICAgICAgICAgICAgICAgICAgICB8ICAyOTEgKysKIHJ1c3Qva2VybmVsL21tLnJzICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDE0OSArCiBydXN0L2tlcm5lbC9tb2R1bGVfcGFyYW0ucnMg ICAgICAgICAgICAgICAgICB8ICA0OTggKysrCiBydXN0L2tlcm5lbC9vZi5ycyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNjMgKwogcnVzdC9rZXJuZWwvcGFnZXMucnMgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTQ0ICsKIHJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzICAgICAgICAg ICAgICAgICAgICAgIHwgIDIyNCArKwogcnVzdC9rZXJuZWwvcG93ZXIucnMgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTE4ICsKIHJ1c3Qva2VybmVsL3ByZWx1ZGUucnMgICAgICAgICAgICAg ICAgICAgICAgIHwgICAzNiArCiBydXN0L2tlcm5lbC9wcmludC5ycyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0MTQgKysrCiBydXN0L2tlcm5lbC9yYW5kb20ucnMgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNTAgKwogcnVzdC9rZXJuZWwvcmF3X2xpc3QucnMgICAgICAgICAgICAgICAg ICAgICAgfCAgMzYxICsrCiBydXN0L2tlcm5lbC9yYnRyZWUucnMgICAgICAgICAgICAgICAgICAg ICAgICB8ICA1NjIgKysrCiBydXN0L2tlcm5lbC9yZXZvY2FibGUucnMgICAgICAgICAgICAgICAg ICAgICB8ICAxNjMgKwogcnVzdC9rZXJuZWwvc2VjdXJpdHkucnMgICAgICAgICAgICAgICAgICAg ICAgfCAgIDM2ICsKIHJ1c3Qva2VybmVsL3N0YXRpY19hc3NlcnQucnMgICAgICAgICAgICAgICAg IHwgICAzOSArCiBydXN0L2tlcm5lbC9zdGRfdmVuZG9yLnJzICAgICAgICAgICAgICAgICAgICB8 ICAxNTAgKwogcnVzdC9rZXJuZWwvc3RyLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NTkyICsrKysKIHJ1c3Qva2VybmVsL3N5bmMvYXJjLnJzICAgICAgICAgICAgICAgICAgICAgIHwg IDUwMCArKysKIHJ1c3Qva2VybmVsL3N5bmMvY29uZHZhci5ycyAgICAgICAgICAgICAgICAgIHwg IDEzOCArCiBydXN0L2tlcm5lbC9zeW5jL2d1YXJkLnJzICAgICAgICAgICAgICAgICAgICB8ICAx NjYgKwogcnVzdC9rZXJuZWwvc3luYy9sb2NrZWRfYnkucnMgICAgICAgICAgICAgICAgfCAgMTEy ICsKIHJ1c3Qva2VybmVsL3N5bmMvbW9kLnJzICAgICAgICAgICAgICAgICAgICAgIHwgIDE1NyAr CiBydXN0L2tlcm5lbC9zeW5jL211dGV4LnJzICAgICAgICAgICAgICAgICAgICB8ICAxMTQgKwog cnVzdC9rZXJuZWwvc3luYy9yZXZvY2FibGVfbXV0ZXgucnMgICAgICAgICAgfCAgMTg0ICsKIHJ1 c3Qva2VybmVsL3N5bmMvcndzZW0ucnMgICAgICAgICAgICAgICAgICAgIHwgIDE0OSArCiBydXN0 L2tlcm5lbC9zeW5jL3NlcWxvY2sucnMgICAgICAgICAgICAgICAgICB8ICAyMDIgKysKIHJ1c3Qv a2VybmVsL3N5bmMvc3BpbmxvY2sucnMgICAgICAgICAgICAgICAgIHwgIDE5MiArCiBydXN0L2tl cm5lbC9zeXNjdGwucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOTkgKysKIHJ1c3Qva2Vy bmVsL3Rhc2sucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4MiArCiBydXN0L2tlcm5l bC90eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NjkgKysrCiBydXN0L2tlcm5l bC91c2VyX3B0ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNzUgKwogcnVzdC9tYWNyb3Mv aGVscGVycy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3QvbWFjcm9zL2xp Yi5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5NCArCiBydXN0L21hY3Jvcy9tb2R1 bGUucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MzEgKysrKwogc2FtcGxlcy9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNhbXBsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzYW1wbGVzL3J1c3QvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzAgKwogc2FtcGxlcy9ydXN0L01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3Mv LmdpdGlnbm9yZSAgICAgICAgICAgIHwgICAgMyArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01h a2VmaWxlICAgICAgICAgICAgICB8ICAgIDUgKwogc2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJz ICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3MvYi5ycyAg ICAgICAgICAgICAgICAgIHwgICAgNSArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL3NpbmdsZS5y cyAgICAgICAgICAgICB8ICAgMTIgKwogc2FtcGxlcy9ydXN0L3J1c3RfY2hyZGV2LnJzICAgICAg ICAgICAgICAgICAgfCAgIDUwICsKIHNhbXBsZXMvcnVzdC9ydXN0X21pbmltYWwucnMgICAgICAg ICAgICAgICAgIHwgICAzNSArCiBzYW1wbGVzL3J1c3QvcnVzdF9taXNjZGV2LnJzICAgICAgICAg ICAgICAgICB8ICAxNDMgKwogc2FtcGxlcy9ydXN0L3J1c3RfbW9kdWxlX3BhcmFtZXRlcnMucnMg ICAgICAgfCAgIDY5ICsKIHNhbXBsZXMvcnVzdC9ydXN0X3BsYXRmb3JtLnJzICAgICAgICAgICAg ICAgIHwgICAyMiArCiBzYW1wbGVzL3J1c3QvcnVzdF9wcmludC5ycyAgICAgICAgICAgICAgICAg ICB8ICAgNTQgKwogc2FtcGxlcy9ydXN0L3J1c3RfcmFuZG9tLnJzICAgICAgICAgICAgICAgICAg fCAgIDYwICsKIHNhbXBsZXMvcnVzdC9ydXN0X3NlbWFwaG9yZS5ycyAgICAgICAgICAgICAgIHwg IDE3MSArCiBzYW1wbGVzL3J1c3QvcnVzdF9zZW1hcGhvcmVfYy5jICAgICAgICAgICAgICB8ICAy MTIgKysKIHNhbXBsZXMvcnVzdC9ydXN0X3N0YWNrX3Byb2JpbmcucnMgICAgICAgICAgIHwgICAz NiArCiBzYW1wbGVzL3J1c3QvcnVzdF9zeW5jLnJzICAgICAgICAgICAgICAgICAgICB8ICAgOTMg Kwogc2NyaXB0cy8uZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK IHNjcmlwdHMvS2NvbmZpZy5pbmNsdWRlICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQog c2NyaXB0cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNj cmlwdHMvTWFrZWZpbGUuYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgICA2MCArCiBzY3Jp cHRzL01ha2VmaWxlLmRlYnVnICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKwogc2NyaXB0 cy9NYWtlZmlsZS5ob3N0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM0ICstCiBzY3JpcHRz L01ha2VmaWxlLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKwogc2NyaXB0cy9N YWtlZmlsZS5tb2RmaW5hbCAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBzY3JpcHRzL2Nj LXZlcnNpb24uc2ggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIHNjcmlwdHMvZGVj b2RlX3N0YWNrdHJhY2Uuc2ggICAgICAgICAgICAgICAgIHwgICAxNCArCiBzY3JpcHRzL2dlbmVy YXRlX3J1c3RfYW5hbHl6ZXIucHkgICAgICAgICAgICB8ICAxMzMgKwogc2NyaXB0cy9nZW5lcmF0 ZV9ydXN0X3RhcmdldC5ycyAgICAgICAgICAgICAgfCAgMjI3ICsrCiBzY3JpcHRzL2lzX3J1c3Rf bW9kdWxlLnNoICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKwogc2NyaXB0cy9rYWxsc3ltcy5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICstCiBzY3JpcHRzL2tjb25maWcvY29u ZmRhdGEuYyAgICAgICAgICAgICAgICAgICB8ICAgNzUgKwogc2NyaXB0cy9taW4tdG9vbC12ZXJz aW9uLnNoICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIHNjcmlwdHMvcnVzdC1pcy1hdmFpbGFi bGUtYmluZGdlbi1saWJjbGFuZy5oIHwgICAgMiArCiBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxl LnNoICAgICAgICAgICAgICAgICB8ICAxNTggKwogdG9vbHMvaW5jbHVkZS9saW51eC9rYWxsc3lt cy5oICAgICAgICAgICAgICAgfCAgICAyICstCiB0b29scy9saWIvcGVyZi9pbmNsdWRlL3BlcmYv ZXZlbnQuaCAgICAgICAgICB8ICAgIDIgKy0KIHRvb2xzL2xpYi9zeW1ib2wva2FsbHN5bXMuaCAg ICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTY4IGZpbGVzIGNoYW5nZWQsIDM1MjkwIGluc2Vy dGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5ydXN0Zm10LnRv bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvYXJjaC1zdXBwb3J0LnJz dAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9jb2RpbmctZ3VpZGVsaW5l cy5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZv cm1hdGlvbi5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvaW5kZXgu cnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0L2xvZ28uc3ZnCiBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0L3F1aWNrLXN0YXJ0LnJzdAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9hbGxvY2F0aW9uLnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9hbmRyb2lkL2NvbnRleHQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2FuZHJvaWQvZGVmcy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9u b2RlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lkL3Byb2Nlc3MucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcmFuZ2VfYWxsb2MucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcnVzdF9iaW5kZXIucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2FuZHJvaWQvdGhyZWFkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9hbmRyb2lkL3RyYW5zYWN0aW9uLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncGlv L2dwaW9fcGwwNjFfcnVzdC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvLmdpdGlnbm9yZQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2FsbG9jL1JFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYWxsb2MucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL2JvcnJvdy5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2MvYm94ZWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL2Nv bGxlY3Rpb25zL21vZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvZm10LnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9saWIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2FsbG9jL21hY3Jvcy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvcmF3X3Zl Yy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mvc2xpY2UucnMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydXN0L2FsbG9jL3N0ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mv c3RyaW5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9kcmFpbl9maWx0ZXIucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9pbnRvX2l0ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2FsbG9jL3ZlYy9pc196ZXJvLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxv Yy92ZWMvbW9kLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvcGFydGlhbF9l cS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvdmVjL3NldF9sZW5fb25fZHJvcC5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9iaW5kZ2VuX3BhcmFtZXRlcnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2J1aWxkX2Vycm9yLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9jb21waWxlcl9i dWlsdGlucy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvZXhwb3J0cy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9oZWxwZXJzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9h bGxvY2F0b3IucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9hbWJhLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvYmluZGluZ3MucnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2tlcm5lbC9iaW5kaW5nc19oZWxwZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv a2VybmVsL2J1aWxkX2Fzc2VydC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2Nf dHlwZXMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jaHJkZXYucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jbGsucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2tlcm5lbC9jcmVkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZGV2aWNlLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZHJpdmVyLnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgcnVzdC9rZXJuZWwvZXJyb3IucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9maWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZ3Bpby5ycwogY3JlYXRl IG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2h3cm5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9rZXJuZWwvaW9fYnVmZmVyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvaW9f bWVtLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvaW92X2l0ZXIucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9pcnEucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2tlcm5lbC9saWIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9saW5rZWRfbGlz dC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL21pc2NkZXYucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9tbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL21vZHVsZV9wYXJhbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL29mLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcGFnZXMucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL3Bvd2VyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcHJlbHVkZS5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3ByaW50LnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9rZXJuZWwvcmFuZG9tLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv cmF3X2xpc3QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9yYnRyZWUucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9yZXZvY2FibGUucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBydXN0L2tlcm5lbC9zZWN1cml0eS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL3N0YXRpY19hc3NlcnQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zdGRf dmVuZG9yLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3RyLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9hcmMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2tlcm5lbC9zeW5jL2NvbmR2YXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9zeW5jL2d1YXJkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9sb2Nr ZWRfYnkucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5jL21vZC5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvbXV0ZXgucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBydXN0L2tlcm5lbC9zeW5jL3Jldm9jYWJsZV9tdXRleC5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3Qva2VybmVsL3N5bmMvcndzZW0ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tl cm5lbC9zeW5jL3NlcWxvY2sucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5j L3NwaW5sb2NrLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3lzY3RsLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvdGFzay5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3Qva2VybmVsL3R5cGVzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvdXNl cl9wdHIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L21hY3Jvcy9oZWxwZXJzLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9tYWNyb3MvbGliLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9tYWNyb3MvbW9kdWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L0tjb25m aWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQg c2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9y dXN0L2hvc3Rwcm9ncy9iLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L2hvc3Rw cm9ncy9zaW5nbGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9jaHJk ZXYucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9taW5pbWFsLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbWlzY2Rldi5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X21vZHVsZV9wYXJhbWV0ZXJzLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfcGxhdGZvcm0ucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9wcmludC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBs ZXMvcnVzdC9ydXN0X3JhbmRvbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9y dXN0X3NlbWFwaG9yZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3Nl bWFwaG9yZV9jLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9zdGFja19w cm9iaW5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rfc3luYy5ycwog Y3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF90YXJnZXQucnMKIGNyZWF0ZSBt b2RlIDEwMDc1NSBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c2NyaXB0cy9ydXN0LWlzLWF2YWlsYWJsZS1iaW5kZ2VuLWxpYmNsYW5nLmgKIGNyZWF0ZSBtb2Rl IDEwMDc1NSBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoCgoKYmFzZS1jb21taXQ6IDA5Njg4 YzAxNjZlNzZjZTJmYjg1ZTg2YjlkOTliZThiMDA4NGNkZjkKLS0gCjIuMzUuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK