From 4cbaaed21e970913ae753338858cd59f76062e34 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 18 Aug 2023 15:56:14 +0000 Subject: [PATCH] Add changes for 9f8111d22aafbe7a62a815d18ab9aa8ab03386b8 --- Contribution/AMQPprimer.html | 38 +- Contribution/BasicIdea.html | 6 +- Contribution/Design.html | 54 +- Contribution/Development.html | 108 +-- Contribution/Documentation.html | 30 +- Contribution/Evolution.html | 6 +- Contribution/Philosophy/AboutTime.html | 8 +- Contribution/Philosophy/AboutTime.ipynb | 16 +- Contribution/Philosophy/Amdahl_Applied.html | 26 +- .../Philosophy/CAP_Theorem_Applied.html | 44 +- Contribution/Philosophy/PDS_Algorithm.html | 18 +- Contribution/Philosophy/README.html | 4 +- .../Sarracenia_Algoritmic_Designs.html | 26 +- Contribution/Philosophy/SundewDesign.html | 26 +- Contribution/Philosophy/index.html | 6 +- Contribution/deltas.html | 18 +- Contribution/index.html | 6 +- Contribution/man_page_template.html | 20 +- Contribution/mqtt_issues.html | 12 +- Contribution/on_part_assembly.html | 12 +- Contribution/v03.html | 56 +- Explanation/CommandLineGuide.html | 160 ++-- Explanation/Concepts.html | 24 +- Explanation/DeploymentConsiderations.html | 34 +- Explanation/DetectFileReady.html | 14 +- Explanation/DuplicateSuppression.html | 24 +- Explanation/FileCompletion.html | 10 +- Explanation/Glossary.html | 36 +- Explanation/History/Evolution.html | 16 +- .../History/HPC_Mirroring_Use_Case.html | 34 +- Explanation/History/deployment_2018.html | 24 +- Explanation/History/index.html | 6 +- Explanation/History/mesh_gts.html | 38 +- Explanation/History/messages_v01.html | 10 +- Explanation/History/messages_v02.html | 6 +- Explanation/History/messages_v03.html | 8 +- Explanation/History/sr3_Announcement.html | 6 +- .../History/talks/SarraIntro/README.html | 4 +- Explanation/Overview.html | 16 +- Explanation/SarraPluginDev.html | 84 +- .../Sundew_Migration/filter_conversion.html | 16 +- Explanation/Sundew_Migration/index.html | 6 +- .../sundew_pull_migration.html | 24 +- .../sundew_sender_migration.html | 12 +- Explanation/index.html | 6 +- Explanation/sftps.html | 22 +- How2Guides/Admin.html | 72 +- How2Guides/Admin_Rabbit_Addendum.html | 30 +- .../Email_Ingesting_With_Sarracenia.html | 18 +- How2Guides/FlowCallbacks.html | 30 +- How2Guides/Hydro_Examples.html | 20 +- How2Guides/UPGRADING.html | 32 +- How2Guides/docker.html | 10 +- How2Guides/index.html | 6 +- How2Guides/source.html | 30 +- How2Guides/subscriber.html | 58 +- How2Guides/v2ToSr3.html | 54 +- Reference/code.html | 730 +++++++-------- Reference/flowcb.html | 838 +++++++++--------- Reference/index.html | 188 ++-- Reference/sr3.1.html | 30 +- Reference/sr3_cpump.1.html | 20 +- Reference/sr3_credentials.7.html | 16 +- Reference/sr3_options.7.html | 236 ++--- Reference/sr3_post.1.html | 64 +- Reference/sr_post.7.html | 58 +- Tutorials/1_CLI_introduction.html | 12 +- Tutorials/2_CLI_with_flowcb_demo.html | 28 +- Tutorials/3_api_flow_demo.html | 20 +- Tutorials/4_api_moth_sub_demo.html | 20 +- Tutorials/5_api_moth_post_demo.html | 6 +- Tutorials/Install.html | 32 +- Tutorials/Setup_a_local_subscriber.html | 6 +- Tutorials/Setup_a_remote_subscriber.html | 12 +- Tutorials/Windows.html | 18 +- Tutorials/index.html | 6 +- _Footer.html | 4 +- _Sidebar.html | 12 +- _modules/index.html | 4 +- _modules/sarracenia.html | 86 +- _modules/sarracenia/config.html | 163 +++- _modules/sarracenia/credentials.html | 73 +- _modules/sarracenia/diskqueue.html | 71 +- _modules/sarracenia/filemetadata.html | 36 +- _modules/sarracenia/flow.html | 96 +- _modules/sarracenia/flow/poll.html | 19 +- _modules/sarracenia/flow/post.html | 16 +- _modules/sarracenia/flow/report.html | 16 +- _modules/sarracenia/flow/sarra.html | 21 +- _modules/sarracenia/flow/sender.html | 21 +- _modules/sarracenia/flow/shovel.html | 16 +- _modules/sarracenia/flow/subscribe.html | 21 +- _modules/sarracenia/flow/watch.html | 16 +- _modules/sarracenia/flow/winnow.html | 16 +- _modules/sarracenia/flowcb.html | 26 +- _modules/sarracenia/flowcb/accept/delete.html | 9 +- .../flowcb/accept/downloadbaseurl.html | 9 +- .../sarracenia/flowcb/accept/hourtree.html | 9 +- .../sarracenia/flowcb/accept/httptohttps.html | 9 +- .../sarracenia/flowcb/accept/longflow.html | 9 +- .../flowcb/accept/posthourtree.html | 9 +- .../flowcb/accept/postoverride.html | 14 +- .../sarracenia/flowcb/accept/printlag.html | 9 +- .../sarracenia/flowcb/accept/rename4jicc.html | 9 +- .../sarracenia/flowcb/accept/renamedmf.html | 9 +- .../flowcb/accept/renamewhatfn.html | 9 +- _modules/sarracenia/flowcb/accept/save.html | 14 +- _modules/sarracenia/flowcb/accept/speedo.html | 14 +- .../flowcb/accept/sundewpxroute.html | 14 +- .../sarracenia/flowcb/accept/testretry.html | 14 +- .../sarracenia/flowcb/accept/toclusters.html | 14 +- _modules/sarracenia/flowcb/accept/tohttp.html | 14 +- .../sarracenia/flowcb/accept/tolocal.html | 14 +- .../sarracenia/flowcb/accept/tolocalfile.html | 9 +- .../flowcb/accept/wmotypesuffix.html | 9 +- _modules/sarracenia/flowcb/clamav.html | 14 +- _modules/sarracenia/flowcb/destfn/sample.html | 9 +- .../flowcb/filter/deleteflowfiles.html | 9 +- _modules/sarracenia/flowcb/filter/fdelay.html | 14 +- .../sarracenia/flowcb/filter/pclean_f90.html | 9 +- .../sarracenia/flowcb/filter/pclean_f92.html | 9 +- .../sarracenia/flowcb/filter/wmo2msc.html | 24 +- _modules/sarracenia/flowcb/gather/file.html | 58 +- .../sarracenia/flowcb/gather/message.html | 19 +- .../flowcb/housekeeping/resources.html | 19 +- _modules/sarracenia/flowcb/log.html | 14 +- _modules/sarracenia/flowcb/mdelaylatest.html | 14 +- _modules/sarracenia/flowcb/nodupe.html | 9 +- _modules/sarracenia/flowcb/nodupe/data.html | 9 +- _modules/sarracenia/flowcb/nodupe/name.html | 9 +- _modules/sarracenia/flowcb/pclean.html | 26 +- _modules/sarracenia/flowcb/poll.html | 29 +- _modules/sarracenia/flowcb/poll/airnow.html | 9 +- _modules/sarracenia/flowcb/poll/mail.html | 14 +- .../sarracenia/flowcb/poll/nasa_mls_nrt.html | 16 +- .../flowcb/poll/noaa_hydrometric.html | 14 +- _modules/sarracenia/flowcb/poll/usgs.html | 14 +- _modules/sarracenia/flowcb/post/message.html | 14 +- _modules/sarracenia/flowcb/retry.html | 34 +- _modules/sarracenia/flowcb/sample.html | 14 +- _modules/sarracenia/flowcb/scheduled.html | 19 +- _modules/sarracenia/flowcb/send/email.html | 14 +- .../sarracenia/flowcb/shiftdir2baseurl.html | 14 +- _modules/sarracenia/flowcb/v2wrapper.html | 31 +- _modules/sarracenia/flowcb/work/age.html | 9 +- _modules/sarracenia/flowcb/work/rxpipe.html | 14 +- _modules/sarracenia/identity.html | 14 +- _modules/sarracenia/identity/arbitrary.html | 14 +- _modules/sarracenia/identity/md5.html | 14 +- _modules/sarracenia/identity/random.html | 9 +- _modules/sarracenia/identity/sha512.html | 9 +- _modules/sarracenia/instance.html | 33 +- _modules/sarracenia/moth.html | 46 +- _modules/sarracenia/moth/amq1.html | 16 +- _modules/sarracenia/moth/amqp.html | 39 +- _modules/sarracenia/moth/pika.html | 16 +- _modules/sarracenia/rabbitmq_admin.html | 49 +- _modules/sarracenia/transfer.html | 29 +- _modules/sarracenia/transfer/file.html | 19 +- _modules/sarracenia/transfer/ftp.html | 14 +- _modules/sarracenia/transfer/https.html | 14 +- _modules/sarracenia/transfer/sftp.html | 14 +- _static/basic.css | 4 + _static/documentation_options.js | 3 +- _static/searchtools.js | 26 +- _static/sphinx_highlight.js | 16 +- api-documentation.html | 14 +- fr/CommentFaire/Addenda_Admin_Rabbit.html | 30 +- fr/CommentFaire/Admin.html | 72 +- fr/CommentFaire/Docker.html | 10 +- fr/CommentFaire/Exemples_Hydro.html | 20 +- fr/CommentFaire/FlowCallbacks.html | 24 +- .../Ingestion_de_email_avec_Sarracenia.html | 18 +- fr/CommentFaire/MiseANiveau.html | 26 +- fr/CommentFaire/index.html | 6 +- fr/CommentFaire/source.html | 30 +- fr/CommentFaire/subscriber.html | 58 +- fr/CommentFaire/v2ASr3.html | 54 +- fr/Contribution/AMQPprimer.html | 38 +- fr/Contribution/Design.html | 54 +- fr/Contribution/Documentation.html | 30 +- "fr/Contribution/D\303\251veloppement.html" | 110 +-- "fr/Contribution/Id\303\251eDeBase.html" | 6 +- fr/Contribution/assemblage_on_part.html | 12 +- fr/Contribution/deltas.html | 18 +- fr/Contribution/index.html | 6 +- .../mod\303\250le_de_page_man.html" | 20 +- "fr/Contribution/probl\303\250mes_mqtt.html" | 12 +- fr/Contribution/v03.html | 56 +- "fr/Contribution/\303\211volution.html" | 6 +- "fr/Explication/Aper\303\247u.html" | 16 +- fr/Explication/AssurerLaLivraison.html | 10 +- fr/Explication/Concepts.html | 24 +- fr/Explication/ConsiderationsDeployments.html | 34 +- fr/Explication/Glossaire.html | 36 +- fr/Explication/GuideLigneDeCommande.html | 160 ++-- fr/Explication/Histoire/Annoncements_v03.html | 6 +- fr/Explication/Histoire/Evolution.html | 16 +- .../HPC_mirroring_cas_dutilisation.html | 34 +- fr/Explication/Histoire/deploiement_2018.html | 24 +- fr/Explication/Histoire/index.html | 6 +- fr/Explication/Histoire/mesh_gts.html | 38 +- fr/Explication/Histoire/messages_v01.html | 10 +- fr/Explication/Histoire/messages_v02.html | 6 +- fr/Explication/Histoire/messages_v03.html | 8 +- fr/Explication/SarraPluginDev.html | 74 +- .../StrategieDetectionFichiers.html | 14 +- fr/Explication/SupprimerLesDoublons.html | 26 +- fr/Explication/index.html | 6 +- fr/Explication/sftps.html | 22 +- fr/Reference/glossary.html | 6 +- fr/Reference/index.html | 6 +- fr/Reference/sr3.1.html | 30 +- fr/Reference/sr3_cpump.1.html | 20 +- fr/Reference/sr3_credentials.7.html | 16 +- fr/Reference/sr3_options.7.html | 236 ++--- fr/Reference/sr3_post.1.html | 64 +- fr/Reference/sr_post.7.html | 58 +- fr/Tutoriel/1_CLI_introduction.html | 12 +- fr/Tutoriel/2_CLI_with_flowcb_demo.html | 26 +- fr/Tutoriel/3_api_flow_demo.html | 20 +- fr/Tutoriel/4_api_moth_sub_demo.html | 20 +- fr/Tutoriel/5_api_moth_post_demo.html | 6 +- fr/Tutoriel/Installer.html | 32 +- ...Mettre_en_place_un_subscriber_distant.html | 12 +- .../Mettre_en_place_un_subscriber_local.html | 6 +- fr/Tutoriel/Windows.html | 18 +- fr/Tutoriel/index.html | 6 +- fr/index.html | 6 +- genindex.html | 4 +- index.html | 8 +- objects.inv | Bin 56094 -> 56292 bytes py-modindex.html | 4 +- search.html | 4 +- searchindex.js | 2 +- 235 files changed, 4275 insertions(+), 3402 deletions(-) diff --git a/Contribution/AMQPprimer.html b/Contribution/AMQPprimer.html index 06a07a509..34f07a8eb 100644 --- a/Contribution/AMQPprimer.html +++ b/Contribution/AMQPprimer.html @@ -8,9 +8,9 @@ - + - + @@ -135,7 +135,7 @@ }
-

AMQP - Primer for Sarracenia

+

AMQP - Primer for Sarracenia

This is a short but rather dense briefing to explain the motivation for the use of AMQP by the MetPX-Sarracenia data pump. Sarracenia is essentially an AMQP application, @@ -178,14 +178,14 @@

AMQP - Primer for Sar
-

AMQP Feature Selection

+

AMQP Feature Selection

AMQP is a universal message passing protocol with many different options to support many different messaging patterns. MetPX-sarracenia specifies and uses a small subset of AMQP patterns. An important element of Sarracenia development was to select from the many possibilities a small subset of methods are general and easily understood, in order to maximize potential for interoperability.

-

Analogy FTP

+

Analogy FTP

Specifying the use of a protocol alone may be insufficient to provide enough information for data exchange and interoperability. For example when exchanging data via FTP, a number of choices need to be made above and beyond the protocol.

@@ -203,7 +203,7 @@

Analogy FTP

-

AMQP: not 1.0, but 0.8 or 0.9

+

AMQP: not 1.0, but 0.8 or 0.9

AMQP 1.0 standardizes the on-the-wire protocol, but removed all broker standardization. As the use of brokers is key to Sarracenia´s use of, was a fundamental element of earlier standards, and as the 1.0 standard is relatively controversial, this protocol assumes a pre 1.0 standard broker, @@ -211,7 +211,7 @@

AMQP: not 1.0, but 0. but 0.9 and post 0.9 brokers could inter-operate well.

-

Named Exchanges and Queues

+

Named Exchanges and Queues

In AMQP prior to 1.0, many different actors can define communication parameters, such as exchanges to publish to, queues where notification messages accumulate, and bindings between the two. Applications and users declare and user their exchanges, queues, and bindings. All of this was dropped @@ -234,7 +234,7 @@

Named Exchanges and Q

-

Topic-based Exchanges

+

Topic-based Exchanges

Topic-based exchanges are used exclusively. AMQP supports many other types of exchanges, but sr_post have the topic sent in order to support server side filtering by using topic based filtering. At AMQP 1.0, topic-based exchanges (indeed all exchanges, are no @@ -250,7 +250,7 @@

Topic-based Exchanges At the time of writing: v02.post is the topic prefix for current notification messages.

-

Little Data

+

Little Data

The AMQP messages contain notification messages, no actual file data. AMQP is optimized for and assumes small messages. Keeping the messages small allows for maximum message throughtput and permits clients to use priority mechanisms based on transfer of data, rather than the notification messages. @@ -284,7 +284,7 @@

Little Data

-

Other Parameters

+

Other Parameters

AMQP has many other settings, and reliability for a particular use case is assured by making the right choices.

-

Mapping AMQP Concepts to Sarracenia

+

Mapping AMQP Concepts to Sarracenia

../_images/AMQP4Sarra.svg

An AMQP Server is called a Broker. Broker is sometimes used to refer to the software, other times server running the broker software (same confusion as web server.) In the above diagram, AMQP vocabulary is in Orange, and Sarracenia terms are in blue.

@@ -358,7 +358,7 @@

Mapping AMQP Concept

-

Sarracenia is an MQP Application

+

Sarracenia is an MQP Application

in Version 2, MetPX-Sarracenia is only a light wrapper/coating around AMQP. in Version 3, this was reworked and an MQTT driver was added to make it less AMQP specific.

@@ -402,7 +402,7 @@

Sarracenia is an MQP

-

Review

+

Review

If you understood the rest of the document, this should make sense to you:

An AMQP broker is a server process that houses exchanges and queues used to route notification messages with very low latency. A publisher sends notification messages to an exchange, while a consumer reads @@ -412,9 +412,9 @@

Review -

Appendix A: Background

+

Appendix A: Background

-

Why Use AMQP?

+

Why Use AMQP?

  • open standard, multiple free implementations.

  • low latency message passing.

  • @@ -425,7 +425,7 @@

    Why Use AMQP?

-

Where does AMQP Come From?

+

Where does AMQP Come From?

  • Open International standard from financial world.

  • Many proprietary similar systems exist, AMQP built to get away from lock-in. Standard is built with long experience of vendor messaging systems, and so quite mature.

  • @@ -435,17 +435,17 @@

    Where does AMQP Come

-

Intel/Cray HPC Stack

+

Intel/Cray HPC Stack

Intel/Cray HPC stack

../_images/IntelHPCStack.png
-

OpenStack

+

OpenStack

AMQP is the messaging technology chosen by the OpenStack cloud.

../_images/OpenStackArch.png
-

How to Adopt AMQP

+

How to Adopt AMQP

Adopting AMQP is more like adopting XML than it is like adopting FTP. FTP interoperability is easy as choices are limited. With XML, however you get more palette than painting. Many different dialects, schema methods, etc… XML will be valid and parse, but without diff --git a/Contribution/BasicIdea.html b/Contribution/BasicIdea.html index 481ee5531..e10bd447d 100644 --- a/Contribution/BasicIdea.html +++ b/Contribution/BasicIdea.html @@ -8,9 +8,9 @@ - + - + @@ -114,7 +114,7 @@

Status: Approved-Draft1-20150608

-

Basic Idea

+

Basic Idea

MetPX-Sarracenia is a data duplication or distribution engine that leverages existing standard technologies (sftp and web servers and AMQP brokers) to achieve real-time message delivery and end to end transparency in file transfers. Whereas in Sundew, each diff --git a/Contribution/Design.html b/Contribution/Design.html index 581c69c45..23286b390 100644 --- a/Contribution/Design.html +++ b/Contribution/Design.html @@ -8,9 +8,9 @@ - + - + @@ -146,7 +146,7 @@

Status: Draft

-

1 Strawman Design

+

1 Strawman Design

This document reflects the current design resulting from discussions and thinking at a more detailed level that the outline document. See Outline for an overview of the design requirements. See use-cases for @@ -195,7 +195,7 @@

-

1.1 Assumptions/Constraints

+

1.1 Assumptions/Constraints

  • Are there cluster file systems available everywhere? No.

  • @@ -230,7 +230,7 @@

-

1.2 Number of Switches

+

1.2 Number of Switches

The application is supposed to support any number of topologies, that is any number of pumps S=0,1,2,3 may exist between origin and final delivery, and do the right thing.

Why isn´t everything point to point, or when do you insert a pumps?

@@ -260,7 +260,7 @@

-

1.3 AMQP Feature Selection

+

1.3 AMQP Feature Selection

AMQP is a universal message passing protocol with many different options to support many different messaging patterns. MetPX-sarracenia specifies and uses a small subset of AMQP patterns. Indeed an important element of sarracenia development was to select from the @@ -326,7 +326,7 @@

-

1.4 Application

+

1.4 Application

Description of application logic relevant to discussion. There is a ´control plane´ where notification messages about new data available are made, and log messages reporting status of transfers of the same data are routed among control plane users and pumps. A pump is an AMQP broker, and users authenticate to the broker. Data @@ -383,7 +383,7 @@

-

1.5 Routing

+

1.5 Routing

There are two distinct flows to route: notification messages, and logs. The following header in messages relate to routing, which are set in all messages.

@@ -402,7 +402,7 @@

-

1.5.1 Routing Posts

+

1.5.1 Routing Posts

Post routing is the routing of the notification messages announced by data sources. The data corresponding to the source follows the same sequence of pumps as the notification messages themselves. When a notification message is processed on a pump, it is downloaded, and then the @@ -437,7 +437,7 @@

-

1.5.2 Routing Logs

+

1.5.2 Routing Logs

Log messages are defined in the sr_log(7) man page. They are emitted by consumers at the end, as well as feeders as the messages traverse pumps. log messages are posted to the xl_<user> exchange, and after log validation queued for the xlog exchange.

@@ -456,9 +456,9 @@

-

1.6 Security Model

+

1.6 Security Model

-

1.6.1 Users, Queues & Exchanges

+

1.6.1 Users, Queues & Exchanges

Each user Alice, on a broker to which she has access:
  • has an exchange xs_Alice, where she writes her notification messages, and reads her logs from.

  • @@ -481,7 +481,7 @@

    -

    1.6.2 Pre-Validation

    +

    1.6.2 Pre-Validation

    Pre-Validation refers to security and correctness checks performed on the information provided by the notification message before the data itself is downloaded. Some tools may refer to this as message validation

    @@ -529,7 +529,7 @@

    -

    1.6.3 Post-Validation

    +

    1.6.3 Post-Validation

    When a file is downloaded, before re-announcing it for later hops it goes through some analysis. The tools may call this file validation:

    @@ -544,7 +544,7 @@

    -

    1.6.4 Log Validation

    +

    1.6.4 Log Validation

    When a client like sarra or subscribe completes an operation, it creates a log message corresponding to the result of the operation. (This is much lower granularity than a local log files.) It is important for one client not to be able to impersonate another @@ -575,7 +575,7 @@

    -

    1.6.5 Private vs. Public Data Transfer

    +

    1.6.5 Private vs. Public Data Transfer

    Transfers in the past have been public, just a matter of sharing public information. A crucial requirement of the package is to support private data copies, where the ends of the transfer are not sharing with arbitrary others.

    @@ -611,7 +611,7 @@

    -

    1.6.6 HTTPS Private Access

    +

    1.6.6 HTTPS Private Access

    Note

    FIXME: Not designed yet. @@ -625,7 +625,7 @@

    -

    1.7 Topologies

    +

    1.7 Topologies

    Questions… There are many choices for cluster layout. One can do simple H/A on a pair of nodes, simple active/passive? One can go to scalable designs on an array of nodes, which requires a load balancer ahead of the processing nodes. The disks of a cluster can be shared or individual to @@ -665,7 +665,7 @@

    -

    1.7.1 Standalone

    +

    1.7.1 Standalone

    In a standalone configuration, there is only one node in the configuration. I runs all components and shares none with any other nodes. That means the Broker and data services such as sftp and apache are on the one node.

    @@ -673,7 +673,7 @@

    -

    1.7.2 DDSR: Switching/Routing Configuration

    +

    1.7.2 DDSR: Switching/Routing Configuration

    This is a more scalable configuration involving several data mover nodes, and potentially several brokers. These clusters are not destinations of data transfers, but intermediaries. Data flows through them, but querying them is more complicated because no one node has all data available. The downstream clients @@ -687,7 +687,7 @@

    -

    1.7.3 Independent DDSR

    +

    1.7.3 Independent DDSR

    In Independent DDSR, there is a load balancer which distributes each incoming connection to an individual broker running on a single node.

    ddsr - broker

    @@ -707,7 +707,7 @@

    -

    1.7.4 Shared Broker DDSR

    +

    1.7.4 Shared Broker DDSR

    While the data nodes disk space remain independent, the brokers are clustered together to form a single logical entity.

    on all nodes, the mover processes use common exchanges and queues.

    @@ -731,7 +731,7 @@

    -

    1.7.5 DD: Data Dissemination Configuration (AKA: Data Mart)

    +

    1.7.5 DD: Data Dissemination Configuration (AKA: Data Mart)

    The sr deployment configuration is more of an end-point configuration. Each node is expected to have a complete copy of all the data downloaded by all the nodes. Giving a unified view makes it much more compatible with a variety of access methods, such as a file browser (over http, @@ -753,7 +753,7 @@

    -

    1.7.6 Independent DD

    +

    1.7.6 Independent DD

    • The load balancer hands the incoming requests to multiple Standalone configurations.

    • @@ -778,7 +778,7 @@

      -

      1.7.7 Shared-Broker DD

      +

      1.7.7 Shared-Broker DD

      • a single clustered broker is shared by all nodes.

      • @@ -804,7 +804,7 @@

        -

        1.7.8 Shared-Data DD

        +

        1.7.8 Shared-Data DD

        • The load balancer hands the incoming request to multiple nodes.

        • @@ -818,7 +818,7 @@

          -

          1.7.9 SEP: Shared End-Point Configuration

          +

          1.7.9 SEP: Shared End-Point Configuration

          The SEP configuration, all of the mover nodes are directly accessible to users. The broker does not provide data service, just a pure message broker. Can be called data-less pump, or a bunny.

          diff --git a/Contribution/Development.html b/Contribution/Development.html index 126e75c5c..e7bfccf5b 100644 --- a/Contribution/Development.html +++ b/Contribution/Development.html @@ -8,9 +8,9 @@ - + - + @@ -173,17 +173,17 @@ }
          -

          MetPX-Sarracenia Developer’s Guide

          +

          MetPX-Sarracenia Developer’s Guide

          version:

          UNKNOWN

          date:
          -

          Aug 16, 2023

          +

          Aug 18, 2023

          -

          Tools you Need

          +

          Tools you Need

          To hack on the Sarracenia source, you need:

          • A linux development environment, either a workstation, or a VM of some kind. @@ -213,25 +213,25 @@

            Tools you Need -

            Documentation

            +

            Documentation

            Documentation Standards exist in /docs/Contribution/Documentation.rst process for locally building the docs are there, as well as live web-site maintenance methods.

            -

            Where to Put Options

            +

            Where to Put Options

            Options are documented in sr3_options(7) dictionary style in alphabetic order. Should it be worthwhile, examples of use could be added to other guides.

          -

          Development

          +

          Development

          In general, the development workflow is to get a laptop or a VM where one can run the flow_tests (available from http://github.com/MetPX/sr_insects ) The first step in configuring a development environment is ensuring that the sr_insects flow tests work, as they function as a gate for commits to important branches.

          Development is most commonly done on Ubuntu >=18.04 platform.

          -

          v2 Workflow

          +

          v2 Workflow

          Finished development work for version 2 is committed to on the v2_dev branch, which is used to produce daily snapshots. One should not normally commit changes to the v2_dev branch, but rather merge them from a working branch.

          @@ -256,7 +256,7 @@

          v2 Workflow -

          v3 Workflow

          +

          v3 Workflow

          The upcoming version of Sarracenia is developed in the v03_wip (work in progress) branch. As the major refactor is substantially complete, the remaining work is now entirely constructive and all development is co-ordinated through issues exactly as v2 is. Issues unique to v3, be @@ -277,14 +277,14 @@

          v3 Workflow -

          sr_insects

          +

          sr_insects

          The sr_insects repository has it’s own issues DB, and work on sr_insects is encouraged. Both v2 and v3 are supported on the main branch of sr_insects. That branch should be used to support all development in both versions….

          -

          Local Installation

          +

          Local Installation

          There are many different ways to install python packages on a computer. Different developers will prefer different methods, and all the methods need to be tested prior to each release. Sarracenia can work with either mqtt or amqp (most mature and stable) message passing libraries. @@ -301,7 +301,7 @@

          Local Installation -

          Prepare a Vanilla VM

          +

          Prepare a Vanilla VM

          This section describes creating a test environment for use in a virtual machine. One way to build a virtual machine is to use multipass (https://multipass.run) Assuming it is installed, one can create a vm with:

          @@ -411,7 +411,7 @@

          Prepare a Vanilla VMThen one can run flow_tests from this shell normally.

          -

          Python Wheel

          +

          Python Wheel

          If you have not used add_sr3.sh (which builds a debian package), then one can use this procedure for local installation on a computer with a python wheel for testing and development:

          python3 setup.py bdist_wheel
          @@ -428,7 +428,7 @@ 

          Python Wheel -

          Local Pip install

          +

          Local Pip install

          For local installation on a computer, using a pip For testing and development:

          pip3 install -e .
          @@ -440,7 +440,7 @@ 

          Local Pip install -

          Debian/Ubuntu

          +

          Debian/Ubuntu

          For local installation on a computer, using a debian package. This process builds a local .deb in the parent directory using standard debian mechanisms. - Check the build-depends line in debian/control for dependencies that might be needed to build from source. @@ -455,7 +455,7 @@

          Debian/Ubuntu -

          Committing Code

          +

          Committing Code

          What should be done prior to committing to the main branch? Checklist:

            @@ -471,7 +471,7 @@

            Committing Code -

            sr_insects Tests Description

            +

            sr_insects Tests Description

            Before committing code to the main branch, as a Quality Assurance measure, one should run all available self-tests. It is assumed that the specific changes in the code have already been unit tested. Please add self-tests as appropriate to this process to reflect the new ones. @@ -508,27 +508,27 @@

            sr_insects Tests Description -

            Unit

            +

            Unit

            The unit test in sr_insects is the shortest one taking a minute or so, and not requiring much configuration at all. They are sanity tests of code behaviour. Generally takes a minute or two on a laptop.

          -

          Static Flow

          +

          Static Flow

          The static_flow tests are a bit more complicated, testing more components, using single threaded components in a linear way (all data moves uniformly forward.) It should be more straight-forward to identify issues as there is no deletion and so it lends itself well to repeating subset tests to identify individual issues. It takes about two minutes on a laptop.

          -

          Flakey Broker

          +

          Flakey Broker

          The flakey_broker tests are the same as the static_flow, but slowed down so that they last a few minutes, and the broker is shutdown and restarted while the posting is happenning. Note that post_log prints before a notification message is posted (because post_log is an on_post plugin, and that action, allows one to modify the notification message, so it needs to be before the post actually happens.)

          -

          Dynamic Flow

          +

          Dynamic Flow

          The dynamic_flow test add advanced features: multi-instances, the winnow component, retry logic testing, and includes file removals as well. Most of the documentation here refers to runnig the dynamic_flow test, as it is the most complicated one, and the ancestor of the others. The unit @@ -700,7 +700,7 @@

          Dynamic Flow

          -

          Running Flow Tests

          +

          Running Flow Tests

          This section documents these steps in much more detail. Before one can run the sr_insects tests, some pre-requisites must be taken care of. Note that there is Github Actions integration for at least the main branch @@ -716,7 +716,7 @@

          Running Flow Tests -

          Install Servers on Workstation

          +

          Install Servers on Workstation

          To prepare a computer to run the flow test, one must install some server software and configurations. This same work is done by travis/flow_autoconfig.sh which is run in Prepare a Vanilla VM but if you need to configure it @@ -786,7 +786,7 @@

          Install Servers on Workstation -

          Setup Flow Test Environment

          +

          Setup Flow Test Environment

          Once the server environment is established, the flow tests use sftp transfers to localhost.

          It is also required that passwordless ssh access is configured on the test host for the system user that will run the flow test. This can be done by creating @@ -901,7 +901,7 @@

          Setup Flow Test Environment -

          Run A Flow Test

          +

          Run A Flow Test

          The flow_check.sh script reads the log files of all the components started, and compares the number of notification messages, looking for a correspondence within +- 10% It takes a few minutes for the configuration to run before there is enough data to do the proper measurements:

          @@ -970,7 +970,7 @@

          Run A Flow Test -

          Flow Cleanup

          +

          Flow Cleanup

          When done testing, run the ./flow_cleanup.sh script, which will kill the running servers and daemons, and delete all configuration files installed for the flow test, all queues, exchanges, and logs. This also needs to be done @@ -1086,7 +1086,7 @@

          Flow Cleanup -

          Dynamic Flow Test Length

          +

          Dynamic Flow Test Length

          While most tests have a fixed duration, the dynamic flow test queries a remote server and can run for any length desired. The dynamic flow_test length defaults to 1000 files being flowed through the test cases. When in rapid development, @@ -1179,10 +1179,10 @@

          Dynamic Flow Test Length -

          High volume sample

          +

          High volume sample

          Trying the flow test with higher volume of notification messages (ie. 100 000) is one step closer to the goal of having a flow test running continously. This is motivated by our testing purposes.

          -

          Limitation

          +

          Limitation

          Ubuntu have a limitation that tops inotify watches and that we encountered in #204 . We can overcome this by setting the related sysctl variable. First, check what is the limit of your system:

          $ sysctl fs.inotify.max_user_watches
           fs.inotify.max_user_watches = 8196
          @@ -1199,7 +1199,7 @@ 

          Limitationsysctl -p and the system should now support high volume of inotify events.

          -

          Flow Test Stuck

          +

          Flow Test Stuck

          Sometimes flow tests (especially for large numbers) get stuck because of problems with the data stream (where multiple files get the same name) and so earlier versions remove later versions and then retries will always fail. Eventually, we will succeed in cleaning up the dd.weather.gc.ca stream, but for now sometimes a flow_check gets stuck ‘Retrying.’ The test has run all the notification messages required, and is at a phase of emptying out retries, but just keeps retrying forever with a variable number of items that never drops to zero.

          To recover from this state without discarding the results of a long test, do:

          ^C to interrupt the flow_check.sh 100000
          @@ -1288,7 +1288,7 @@ 

          Flow Test Stuck -

          Flow tests with MQTT

          +

          Flow tests with MQTT

          Flow tests can be run where certain components use the MQTT protocol, instead of AMQP.

          FIXME: steps missing, more clarity required.

            @@ -1301,7 +1301,7 @@

            Flow tests with MQTT

          -

          Commits to the Main Branch

          +

          Commits to the Main Branch

          Aside from typos, language fixups in the documentation, and incrementing the version, developers are not expected to commit to main. All work happens on development branches, and all testing is expected to pass before @@ -1329,7 +1329,7 @@

          Commits to the Main Branch -

          Main Branches

          +

          Main Branches

          There is a long running discussion about Which Version is stable The current set up is that there are four main branches:

            @@ -1346,7 +1346,7 @@

            Main Branches -

            Repositories

            +

            Repositories

            For Ubuntu operating systems, the launchpad.net site is the best way to provide packages that are fully integrated ( built against current patch levels of all dependencies (software components that Sarracenia relies on to provide full functionality.)) Ideally, when running a server, a one should use one of the repositories, @@ -1365,7 +1365,7 @@

            RepositoriesWhich Version is stable

          -

          Building a Release

          +

          Building a Release

          MetPX-Sarracenia is distributed in a few different ways, and each has it’s own build process. Packaged releases are always preferable to one off builds, because they are reproducible.

          When development requires testing across a wide range of servers, it is preferred to make @@ -1382,7 +1382,7 @@

          Building a Release -

          Versioning Scheme

          +

          Versioning Scheme

          Each release will be versioned as <protocol version>.<YY>.<MM> <segment>

          Where:

          -

          Set the Version

          +

          Set the Version

          This is done to start development on a version.

          • git checkout v03_wip

          • @@ -1465,7 +1465,7 @@

            Set the Version -

            Releasing

            +

            Releasing

            When development for a version is complete. The following should occur:

            A tag should be created to identify the end of the cycle:

            git checkout v03_wip
            @@ -1487,7 +1487,7 @@ 

            Releasing -

            PyPi

            +

            PyPi

            Pypi Credentials go in ~/.pypirc. Sample Content:

            [pypi]
             username: SupercomputingGCCA
            @@ -1520,9 +1520,9 @@ 

            PyPi

          -

          Launchpad

          +

          Launchpad

          -

          Automated Build

          +

          Automated Build

          • Ensure the code mirror is updated by checking the Import details by checking this page for sarracenia

          • if the code is out of date, do Import Now , and wait a few minutes while it is updated.

          • @@ -1535,7 +1535,7 @@

            Automated Build -

            Building a Windows Installer

            +

            Building a Windows Installer

            One can also build a Windows installer with that script. It needs to be run from a Linux OS (preferably Ubuntu 18) in the root directory of Sarracenia’s git. @@ -1560,7 +1560,7 @@

            Building a Windows Installer -

            Daily Builds

            +

            Daily Builds

            Daily builds are configured using this recipe for python and this recipe for C and @@ -1568,7 +1568,7 @@

            Daily Builds -

            Manual Process

            +

            Manual Process

            The process for manually publishing packages to Launchpad ( https://launchpad.net/~ssc-hpc-chp-spc ) involves a more complex set of steps, and so the convenient script publish-to-launchpad.sh will be the easiest way to do that. Currently the only supported releases are trusty and xenial. @@ -1599,14 +1599,14 @@

            Manual Process -

            Backporting a Dependency

            +

            Backporting a Dependency

            Example:

            backportpackage -k<key id> -s bionic -d xenial -u ppa:ssc-hpc-chp-spc/ubuntu/metpx-daily librabbitmq
             
          -

          Building an RPM

          +

          Building an RPM

          This process is currently a bit clumsy, but it can provide usable RPM packages. Example of creating a multipass image for fedora to build with:

          fractal% multipass launch -m 8g --name fed34 https://mirror.csclub.uwaterloo.ca/fedora/linux/releases/34/Cloud/x86_64/images/Fedora-Cloud-Base-34-1.2.x86_64.raw.xz
          @@ -1684,7 +1684,7 @@ 

          Building an RPM -

          github

          +

          github

          Click on Releases, Edit the release:

          • should we have release names?

          • @@ -1697,9 +1697,9 @@

            github

          -

          Development Environment

          +

          Development Environment

          -

          Local Python

          +

          Local Python

          Working with a non-packaged version:

          notes:

          pip install -e .
          @@ -1707,16 +1707,16 @@ 

          Local Python -

          Windows

          +

          Windows

          Install winpython from github.io version 3.5 or higher. Then use pip to install from PyPI.

          -

          Conventions

          +

          Conventions

          Below are some coding practices that are meant to guide developers when contributing to sarracenia. They are not hard and fast rules, just guidance.

          -

          When to Report

          +

          When to Report

          sr_report(7) notification messages should be emitted to indicate final disposition of the data itself, not any notifications or report messages (don’t report report messages, it becomes an infinite loop!) For debugging and other information, the local log file is used. For example, sr_shovel does @@ -1724,7 +1724,7 @@

          When to Report -

          Adding a New Dependency

          +

          Adding a New Dependency

          Dependency Management is a complicated topic, because python has many different installation methods into disparate environments, and Sarracenia is multi-platform. Standard python practice for dependencies is to make them required by listing them in requirements.txt or setup.py, and require all users to install them. In most python applications, if a dependency is missing, it just crashes with a import failure message diff --git a/Contribution/Documentation.html b/Contribution/Documentation.html index 3805d023f..d6f1002ef 100644 --- a/Contribution/Documentation.html +++ b/Contribution/Documentation.html @@ -8,9 +8,9 @@ - + - + @@ -131,9 +131,9 @@ }

          -

          Documentation Standards

          +

          Documentation Standards

          -

          Folder Structure

          +

          Folder Structure

          Before starting work with documentation read the entire divo documentation article (and the links on the left hand sidebar). It’ll take no longer than 30 minutes and you’ll gain a complete understanding of the expected structure, style and content of the documentation here.

          @@ -145,7 +145,7 @@

          Folder Structure -

          Processing

          +

          Processing

          The entire documentation is under the docs/source tree. It is processed using sphinx, invoked using the Makefile in docs/. One can install sphinx locally, and run make to build locally and debug. The result is produced in docs/build/html:

          @@ -171,7 +171,7 @@

          Processing -

          Tutorials

          +

          Tutorials

          • Learning-oriented, specifically learning how rather than learning that.

          • Allow the user to learn by doing to get them started, be sure your tutorial works and users can see results immediately.

          • @@ -181,7 +181,7 @@

            Tutorials -

            How2Guides

            +

            How2Guides

            • Problem and goal oriented: “I want to… How do I…” Differing from tutorials in that tutorials are for complete beginners, how to guides assume some knowledge and understanding with a basic setup and tools.

            • Provide a series of steps focused on the results of some particular problem.

            • @@ -191,14 +191,14 @@

              How2Guides -

              Explanation

              +

              Explanation

              • Understanding-oriented: can be equally considered discussions. Much more relaxed version of documentation where concepts are explored from a higher level or different perspectives.

              • Provide context, discuss alternatives and opinions while providing technical reference (for other sections).

          -

          Reference

          +

          Reference

          • Dictionary style.

          • Information oriented: code-determined descriptions of functionality.

          • @@ -206,7 +206,7 @@

            Reference -

            Contribution

            +

            Contribution

            • Information critical to the enhancement and progression of the Sarracenia project, ie: for those that are looking to develop Sarracenia.

            • Style guide(s)

            • @@ -215,7 +215,7 @@

              Contribution -

              Process

              +

              Process

              The development process is to write up what one intends to do or have done into a reStructuredText file in /docs/Explanation/Design/. Ideally, the discussion of information there acts @@ -230,7 +230,7 @@

              Process -

              Style Guide

              +

              Style Guide

              Command line execution shall be written in the style of:

              An initial comment describing the following steps or processes::
               
              @@ -260,7 +260,7 @@ 

              Style Guide -

              Code Style

              +

              Code Style

              We generally follow PEP 8 standards for code formatting, and use YAPF to automatically re-format code. One exception to PEP 8 is that we use a 119 character line length.

              For docstrings in code, we are following the Google Style Guide. These docstrings will be parsed into formatted documentation by Sphinx.

              Detailed examples can be found in the Napoleon Sphinx plugin’s docs and the Google Python Style Guide.

              @@ -311,14 +311,14 @@

              Code Style -

              Why rST?

              +

              Why rST?

              reStructuredText was chosen primarily as it supports the auto-creation of a table of contents with the ‘.. contents::’ directive. Like many other markup languages, it also supports inline styling, tables, headings and literal blocks.

              In Jupyter Notebooks, unfortunately, only Markdown is supported, elsewhere RST is great.

          -

          Localization

          +

          Localization

          This project is intended to be translated in French and English at a minimum as it’s used across the Government of Canada which has these two official languages.

          The French documentation has the same file structure and names as the English, but diff --git a/Contribution/Evolution.html b/Contribution/Evolution.html index 7d1f5501b..c441078a3 100644 --- a/Contribution/Evolution.html +++ b/Contribution/Evolution.html @@ -8,9 +8,9 @@ - + - + @@ -113,7 +113,7 @@ }

          -

          Design Changes since Original (2015)

          +

          Design Changes since Original (2015)

          as of 2022/03, the design has not changed much, but sr3’s implementation is totally different from v2. Design changes:

            diff --git a/Contribution/Philosophy/AboutTime.html b/Contribution/Philosophy/AboutTime.html index b47bdd840..a5fa5e06d 100644 --- a/Contribution/Philosophy/AboutTime.html +++ b/Contribution/Philosophy/AboutTime.html @@ -8,9 +8,9 @@ - + - + @@ -344,7 +344,7 @@ }
            -

            It´s About Time

            +

            It´s About Time

            Say you are a weather forecaster, charged with producing a prediction of the weather, perhaps for the public, or perhaps for a vertical domain, such as aviation, or transport. In normal situations, the forecaster will be asked to produce a forecast at a specific time of day, to help her clients plan their business.

            How does a forecaster build a forecast?

            Assuming the forecaster is in the americas, one could use a browser:

            @@ -395,7 +395,7 @@

            It´s About Time -

            Let the Computer Do It

            +

            Let the Computer Do It

            Instead of a human browsing dozens of web sites and mapping stuff into a spreadsheet manually, and then hitting calculate, and then mapping back the spreadsheet back to something his clients will understand, the forecaster hits a button, and has the computer does all the tedious work. So when the forecaster pushes the button, the computer:

            • scans the entire world for a number of hours of satellite, RADAR, and point observations from weather stations, airports, ships, and planes. looking for information for the last hour or two to get a good trend.

            • diff --git a/Contribution/Philosophy/AboutTime.ipynb b/Contribution/Philosophy/AboutTime.ipynb index 463f401e7..1dded16c1 100644 --- a/Contribution/Philosophy/AboutTime.ipynb +++ b/Contribution/Philosophy/AboutTime.ipynb @@ -41,10 +41,10 @@ "id": "703ed5c2", "metadata": { "execution": { - "iopub.execute_input": "2023-08-16T04:13:24.341076Z", - "iopub.status.busy": "2023-08-16T04:13:24.340572Z", - "iopub.status.idle": "2023-08-16T04:13:24.343412Z", - "shell.execute_reply": "2023-08-16T04:13:24.343762Z" + "iopub.execute_input": "2023-08-18T15:55:25.433203Z", + "iopub.status.busy": "2023-08-18T15:55:25.432438Z", + "iopub.status.idle": "2023-08-18T15:55:25.437368Z", + "shell.execute_reply": "2023-08-18T15:55:25.436848Z" } }, "outputs": [], @@ -67,10 +67,10 @@ "id": "5c1a4040", "metadata": { "execution": { - "iopub.execute_input": "2023-08-16T04:13:24.346939Z", - "iopub.status.busy": "2023-08-16T04:13:24.346517Z", - "iopub.status.idle": "2023-08-16T04:13:24.348117Z", - "shell.execute_reply": "2023-08-16T04:13:24.348515Z" + "iopub.execute_input": "2023-08-18T15:55:25.442852Z", + "iopub.status.busy": "2023-08-18T15:55:25.441561Z", + "iopub.status.idle": "2023-08-18T15:55:25.443773Z", + "shell.execute_reply": "2023-08-18T15:55:25.444240Z" } }, "outputs": [], diff --git a/Contribution/Philosophy/Amdahl_Applied.html b/Contribution/Philosophy/Amdahl_Applied.html index 745e88263..81478fd6c 100644 --- a/Contribution/Philosophy/Amdahl_Applied.html +++ b/Contribution/Philosophy/Amdahl_Applied.html @@ -8,9 +8,9 @@ - + - + @@ -379,7 +379,7 @@ }
              -

              Amdahl’s Law Applied

              +

              Amdahl’s Law Applied

              -

              Speedup

              +

              Speedup

              If you have a single processor to run code, then assuming perfect parallism (the so-called “embarrasingly parallel” case) then your code will run twice as fast on two processors, four times as fast on four, etc… This is the ideal case. Much real-life code has “dependencies” that limit speedup.

              Speedup of a task, when adding processors is limited by how much of the code can run in parallel. If you had an infinite number of processors to apply to a problem, then performance is limited by the p the parallelizability of your code.

              The graph below plots the speedup available against the degree to which the code is parallelizable (from 5% to 95% in steps of 5%.) For example, if the algorithm is only 50% parallelizable, then throwing an infinite number of processors at the problem will give you a 25% speedup ( 1.25 on the plot.) so it isn’t worthwhile.

              @@ -436,7 +436,7 @@

              Speedup -

              What is Amdahl’s Law?

              +

              What is Amdahl’s Law?

              • Speedup a program can achieve is limited by the level of parallelization of its design.

              • If code is 95% parallelized, then 5%, or 1 part in 20, is serial… that means, no matter how many processors are put on the job, eventually you are limited by the part that isn’t parallel. It’s asymptotic speedup (that it will never reach, is 20x.)

              • @@ -478,7 +478,7 @@

                What is Amdahl’s Law?

              -

              Large Numbers of Processors Need High Parallelism

              +

              Large Numbers of Processors Need High Parallelism

              In the previous picture, we could see that:

              • we could never get more than a 20 fold speedup if 5% of the code is serial.

              • @@ -515,7 +515,7 @@

                Large Numbers of Processors Need High Parallelism

              -

              Serial Example

              +

              Serial Example

              Below is a simple example of a python snippet that we want to accelerate. It does a math function and calculates “tot” over a range of numbers.

              [7]:
              @@ -725,7 +725,7 @@ 

              Serial Example -

              NEWS FLASH: Serial 9x Faster than Parallel!

              +

              NEWS FLASH: Serial 9x Faster than Parallel!

              • Sometimes the thing you are trying to do is inherently serial.

              • Do something else instead.

              • @@ -735,7 +735,7 @@

                NEWS FLASH: Serial 9x Faster than Parallel! -

                Summary

                +

                Summary

                • Application design limits speedup.

                • Perfectly Parallel is the gold standard.

                • @@ -749,7 +749,7 @@

                  Summary -

                  Relevance?

                  +

                  Relevance?

                  Note that on our main cluster (ddsr.cmc) the configuration is 128 processors:

                  • 16 processors / node

                  • @@ -761,7 +761,7 @@

                    Relevance? -

                    So Sarracenia is Not a Parallel App!

                    +

                    So Sarracenia is Not a Parallel App!

                    It is just an ordinary python script that launches processes. It’s not a real parallel app.

                    • it is not based on threads !

                    • @@ -770,11 +770,11 @@

                      So Sarracenia is Not a Parallel App! -

                      Yes, Exactly.

                      +

                      Yes, Exactly.

              -

              THANKS!

              +

              THANKS!

              light reading:

              • https://en.wikipedia.org/wiki/Amdahl%27s_law

              • diff --git a/Contribution/Philosophy/CAP_Theorem_Applied.html b/Contribution/Philosophy/CAP_Theorem_Applied.html index d9549c1d7..71219ea1d 100644 --- a/Contribution/Philosophy/CAP_Theorem_Applied.html +++ b/Contribution/Philosophy/CAP_Theorem_Applied.html @@ -8,9 +8,9 @@ - + - + @@ -381,12 +381,12 @@ }
                -

                CAP Theorem Applied

                +

                CAP Theorem Applied

                • Peter Silva, 2023

                -

                CAP Theorem

                +

                CAP Theorem

                • Originally proposed by Eric A. Brewer in 2000.

                • Proved in 2002 by Gilbert & Lynch.

                • @@ -394,21 +394,21 @@

                  CAP Theorem -

                  Definitions

                  +

                  Definitions

                  • Consistency - any read operation that begins after a write operation completes must return that value, or the result of a later write operation

                  • Availability - every request received by a non-failing node in the system must result in a response

                  • Partition (Tolerance) - the network will be allowed to lose arbitrarily many messages sent from one node to another

                  -

                  Cap Theorem

                  +

                  Cap Theorem

                  • An ideal distributed system will feature all Consistency, Availability, and Partition Tolerance.

                  • In reality, the best one can do is 2 out of three.

                  -

                  Proof

                  +

                  Proof

                -

                Storage/State

                +

                Storage/State

                • What is a File System? – an ordered list of writes (with a path)

                • What is a SQL Database? – an ordered list of writes (with indices)

                • @@ -538,7 +538,7 @@

                  Storage/State -

                  Choosing CA:

                  +

                  Choosing CA:

                  • At best, you need a quorum system.

                  • quorum means obtaining a consensus among the existing nodes about the current state.

                  • @@ -548,7 +548,7 @@

                    Choosing CA: -

                    Quorum and Voting:

                    +

                    Quorum and Voting:

                    • Multiple Algorithms:

                        @@ -576,7 +576,7 @@

                        Quorum and Voting: -

                        Choosing AP:

                        +

                        Choosing AP:

                        • incoming requests are routed to the nodes that remain up. They provide the data they have.

                        • you don’t need a master. nodes receive updates, and tell the others,

                        • @@ -585,7 +585,7 @@

                          Choosing AP: -

                          Voting Failure Modes

                          +

                          Voting Failure Modes

                          @@ -610,7 +610,7 @@

                          Voting Failure Modes(LR… partitioned into left and right clusters.)

                          -

                          Choosing CP:

                          +

                          Choosing CP:

                          • as long as the backups can reach the primary, all can answer read requests.

                          • when a write is received, the backup passes it to the primary.

                          • @@ -618,14 +618,14 @@

                            Choosing CP: -

                            Bringing Amdahl & CAP Together

                            +

                            Bringing Amdahl & CAP Together

                            • Amdahl’s Law is about dealing with large numbers of processors sharing resources.

                            • CAP is about tradeoffs inherent using different methods of sharing resources.

                          -

                          Almost-Coherent File System or DB Performance

                          +

                          Almost-Coherent File System or DB Performance

                          • A bandaid on Traditional single node

                          • a synchronized file system is going to have ordered operations, it is going to be a 1:1 connection with shared state.

                          • @@ -637,7 +637,7 @@

                            Almost-Coherent File System or DB Performance -

                            Universal Write Scaling

                            +

                            Universal Write Scaling

                            • obtain delegation for a subdomain, write locally.

                                @@ -651,7 +651,7 @@

                                Universal Write Scaling

                          -

                          Non-Shared Approaches.

                          +

                          Non-Shared Approaches.

                          • the only thing that does scale.

                          • transfer files or objects, rather than synchronizing file systems. maximally distributed synchronization.

                            @@ -671,11 +671,11 @@

                            Non-Shared Approaches.

                          -

                          Examples of Non-Shared Approaches

                          +

                          Examples of Non-Shared Approaches

                          -

                          Object Stores

                          +

                          Object Stores

                          • An object is a self-contained item that can be distributed.

                          • Every object is equivalent to a db or a file system.

                          • @@ -689,7 +689,7 @@

                            Object Stores -

                            Cloud Solves This!

                            +

                            Cloud Solves This!

                            • cloud vendors talk about “availability zones” there is no HA or synch across availabilty zones, they talk about times like 15 minutes, to do periodic synching. Object syncing takes time (and money.)

                            • 2006, HP DC Consolidation project established 200 miles as the longest distance between Data Centres. So that would give them 500 IOPS or so on a synchronous store.

                            • @@ -706,7 +706,7 @@

                              Cloud Solves This! -

                              Sarracenia: File Systems Flying in Formation

                              +

                              Sarracenia: File Systems Flying in Formation

                              • Another distributed approach

                              • transfers files between file systems without synchronizing.

                              • @@ -721,7 +721,7 @@

                                Sarracenia: File Systems Flying in Formation -

                                Thanks!

                                +

                                Thanks!

                                Sources:

                                • https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/ (An Illustrated Proof of the CAP Theorem, referring to Gilbert & Lynch’s paper which is a dead link. )

                                • diff --git a/Contribution/Philosophy/PDS_Algorithm.html b/Contribution/Philosophy/PDS_Algorithm.html index 7bf32527c..559c46254 100644 --- a/Contribution/Philosophy/PDS_Algorithm.html +++ b/Contribution/Philosophy/PDS_Algorithm.html @@ -8,9 +8,9 @@ - + - + @@ -344,7 +344,7 @@ }
                                  -

                                  PDS Algorithmic Design

                                  +

                                  PDS Algorithmic Design

                                  The PDS (Product Distribution System) is an obsolete data transfer engine gradually being replaced, but still deployed in a few Storm Prediction Centres (offices of Environment and Climate Change Canada.) other systems place files in input directories, and PDS has an array of configurations identifying which other destinations files need to be sent to.

                                  It is a sort of inspiration for Sundew. The lack of source code meant that it’s functionality was deduced and reverse engineered to to produce later products. It is a design of it’s time, the 1980’s for use on large UNIX servers.

                                    @@ -433,11 +433,11 @@

                                    PDS Algorithmic Design
                                    -

                                    Receiver

                                    +

                                    Receiver

                                    Scans an input directory, uses IPC to tell the dispatcher about it. Log activities.

                                    -

                                    Dispatcher

                                    +

                                    Dispatcher

                                    Processes the files arriving as notified by the dispatcher using IPC.

                                    For each file:

                                      @@ -447,11 +447,11 @@

                                      Dispatcher -

                                      Sender

                                      +

                                      Sender

                                      Scan the sending directory, send files, remove them. Log activities.

                                    -

                                    Design Decisions/Assumptions

                                    +

                                    Design Decisions/Assumptions

                                    • Developers were asked to provide a single log for the entire system.

                                    • on the order of 10 receivers.

                                    • @@ -461,7 +461,7 @@

                                      Design Decisions/Assumptions -

                                      Routing 1 Product

                                      +

                                      Routing 1 Product

                                      • PDS dispatcher routing for all receivers at once.)

                                      • represents a scale out vs. previous deployments.

                                      • @@ -503,7 +503,7 @@

                                        Routing 1 Product -

                                        Observations:

                                        +

                                        Observations:

                                        • modern systems have many more cores (16 is common on single servers… ) but also clustering is common. Clustering is scaling with multiple servers, rather than more powerful individual servers.

                                        • In order to ensure log entries were not corrupted by different processes writing to the log at once, a locking mechanism was used to mediate access.

                                        • diff --git a/Contribution/Philosophy/README.html b/Contribution/Philosophy/README.html index 624b9db63..8df70ebf0 100644 --- a/Contribution/Philosophy/README.html +++ b/Contribution/Philosophy/README.html @@ -8,9 +8,9 @@ - + - + diff --git a/Contribution/Philosophy/Sarracenia_Algoritmic_Designs.html b/Contribution/Philosophy/Sarracenia_Algoritmic_Designs.html index 0ff06dd32..96deffb2c 100644 --- a/Contribution/Philosophy/Sarracenia_Algoritmic_Designs.html +++ b/Contribution/Philosophy/Sarracenia_Algoritmic_Designs.html @@ -8,9 +8,9 @@ - + - + @@ -344,7 +344,7 @@ }
                                          -

                                          Sarracenia Algorithmic Design

                                          +

                                          Sarracenia Algorithmic Design

                                          What were the issues with Sundew that led to Sarracenia?

                                          • Problems/Weaknesses of Sundew

                                          • @@ -356,7 +356,7 @@

                                            Sarracenia Algorithmic Design -

                                            Problems/Weaknesses of Sundew:

                                            +

                                            Problems/Weaknesses of Sundew:

                                            • push only, required someone else to send to us for us to receive. Senders always must configure who they are sending to.

                                            • limited parallelism: each receiver or sender is a single process, only a single sender for a single destination.

                                            • @@ -365,7 +365,7 @@

                                              Problems/Weaknesses of Sundew: -

                                              Use Folders/Directories

                                              +

                                              Use Folders/Directories

                                              • Sundew used only the name of the file to make routing decisions.

                                              • Sarracenia uses the entire path.

                                                @@ -379,7 +379,7 @@

                                                Use Folders/Directories

                                          -

                                          Add RabbitMQ

                                          +

                                          Add RabbitMQ

                                          Introduced rabbitmq/amqp broker. After years of study of performance (it was used as a pure dissemination tool, outside of Sundew for six years prior to start of work on Sarracenia, which made a message broker central to data routine.) We needed to ensured that, as a componentm it would scale reasonably well for our loads.

                                          Using RabbitMQ, we introduced topic/based routing, as an analog to dictionary routing, but much more applicable to non-message traffic (aka files.) should improve routing decisions for files, while not hurting routing for messages too much. Product mix is much more file oriented than message oriented in recent times.

                          Number of Masters

                          @@ -659,7 +659,7 @@

                          The Algorithmic Cost to Route 1 File -

                          Overall Server Algorithmic Ceiling

                          +

                          Overall Server Algorithmic Ceiling

                          Assume a 1 GIPS machine within infinite cpus, and take IP cost per route, so the number of products that can be routed by a server is going to be inverely related to cost to route each one: route/second = 1000 MIPS / cost to route from previous cell. The other contributor is the number of processes doing the routing.

                          Application

                          @@ -694,7 +694,7 @@

                          Overall Server Algorithmic Ceiling -

                          Duplicate Suppression

                          +

                          Duplicate Suppression

                          • All message passing networks implement “Duplicate Suppression”

                          • typical:

                            @@ -837,7 +837,7 @@

                            Duplicate Suppression
                            -

                            Global Duplication Suppression

                            +

                            Global Duplication Suppression

                            • create a service for all the processes participating in a flow to contact.

                            • ask the service if a partipant has already seen a message with this checksum.

                            • @@ -846,7 +846,7 @@

                              Global Duplication Suppression -

                              Distributed Duplicate Suppression

                              +

                              Distributed Duplicate Suppression

                              • hash the checksum to get a modulo N

                              • publish the message to an array of destinations modulo the checksum

                              • @@ -953,7 +953,7 @@

                                Distributed Duplicate Suppression -

                                Observations

                                +

                                Observations

                                • If you are going to use a global cache, it better be really good.

                                    diff --git a/Contribution/Philosophy/SundewDesign.html b/Contribution/Philosophy/SundewDesign.html index 2ea49828b..4472802aa 100644 --- a/Contribution/Philosophy/SundewDesign.html +++ b/Contribution/Philosophy/SundewDesign.html @@ -8,9 +8,9 @@ - + - + @@ -344,7 +344,7 @@ }
                                    -

                                    Sundew Algorithmic Design

                                    +

                                    Sundew Algorithmic Design

                                    Sundew was built because PDS was too slow for message routing, which typically had:

                                    -

                                    Eliminate Log Locking

                                    +

                                    Eliminate Log Locking

                                    Contention for writing the combined log of all processes is performance limiting, and wastes a great deal of cpu on locks to serialize access. if each process writes its own log, there is no contention for the log file. Dropping the constraint of a single log file unlocks a great deal of performance potential.

                                    From an architectural perspective, this is just a pure win, there was a hard limit on absolute performance, and it is completely eliminated.

                                    -

                                    Dictionary Pre-Routing

                                    +

                                    Dictionary Pre-Routing

                                    Even if we parallelize routing, the algorithm itself is quite intensive. for 10 destinations, with 10 regular expressions each, that means 100 regular expressions to evaluate (slightly less, because of shortcuts from exclusion masks (rejects) but the order of magnitude is about right.)

                                    Added the use of a python dictionary listing product keys, and a set of destinations associated with each key. So there are now two steps to routing, the first narrows down the number of destinations to a subset… say 2/10 of destinations, and then the regular expressions are only applied on that subset.

                                    The cost to route a single product through the application (take it from seeing it in a reception directory to queuing it up for sending.) can be modelled as follows: It is the regular expression comparisong that dominate the routing time, so just calculate how many regular expressions are needed, on average, to complete routing of a product.

                                    @@ -388,7 +388,7 @@

                                    Dictionary Pre-RoutingNOTE: this algorithm only benefits “message” type routing with the dictionary. for file type routing, used in PDS traditionally, we fall back on pure regexes.

                                    -

                                    Write it in Python

                                    +

                                    Write it in Python

                                    Sundew was built in Python. Industry lore is that Python is much slower than C, the measurable amounts vary, but as a rule of thumb, one can attribute approximately an order of magnitude there as well. It was judged safe to use Python in this case because the application is entirely i/o bound, and thus the speed of C was not material to the problem at hand. When using python, code is much simpler to write, and much shorter. the PDS application was approximately 150,000 lines of C clode. The Python application is 25,0000 lines.

                                    Sundew also replaced another message router, called “Tandem Apps”, which was 450,000 lines of code in proprietary language. replacing 600,000 lines of code is a major project, writing 25,000 lines is a biggish script. So a 96% reduction in the source code size. This choice:

                                    @@ -398,7 +398,7 @@

                                    Write it in Python -

                                    Eliminate Dispatcher

                                    +

                                    Eliminate Dispatcher

                                    • replace single task routing for all receivers

                                    • every receiver queues products for senders.

                                    • @@ -406,14 +406,14 @@

                                      Eliminate Dispatcher -

                                      Dictionary Pre-Routing

                                      +

                                      Dictionary Pre-Routing

                                      • map bulletin names to a key, list the keys in a table (aka python dictionary) that lists senders.

                                      • selects a subset of senders to which their regex’s are applied.

                                    -

                                    Sundew Routing cost:

                                    +

                                    Sundew Routing cost:

                                    • Rp = 900 = log(d) * s * (re/2)

                                    • r = 10, each receiver only routing for a single receiver.

                                    • @@ -474,7 +474,7 @@

                                      Sundew Routing cost:

                                    -

                                    Write it in Python

                                    +

                                    Write it in Python

                                    • made the project feasible (10x smaller)

                                    • made the algorithm simpler to understand an implement.

                                    • @@ -564,7 +564,7 @@

                                      Write it in Python -

                                      What difference did it make?

                                      +

                                      What difference did it make?

                                      On a given linux server used to run both applications for benchmarking purposes:

                                      • The original (PDS) C-code was performing 10-20 product routings per second,

                                      • @@ -575,7 +575,7 @@

                                        What difference did it make? -

                                        Bonus

                                        +

                                        Bonus

                                        The original PDS application was surrounded by scripts and code to do many kinds of name processing, and with the original built in C, this was done with shell scripts. As a happy side-effect of implementing in Python, it became feasible to implement a plugin architecture to customize processing in a much more efficient way.

                                        Instead of forking of processes, as required by additional functionality in PDS, we could define routines that would be called from the python code. These routines could be written in Python, and thus save enormous amounts of overhead from the fork/reap pattern.

                                        While plugin architectures can be implemented in C, they are much more daunting, and having operations people writing C is a high bar to customize processing.

                                        diff --git a/Contribution/Philosophy/index.html b/Contribution/Philosophy/index.html index 7996d6e4b..53fd61ee3 100644 --- a/Contribution/Philosophy/index.html +++ b/Contribution/Philosophy/index.html @@ -8,9 +8,9 @@ - + - + @@ -119,7 +119,7 @@ }
                                        -

                                        Sarracenia Design Philosophy

                                        +

                                        Sarracenia Design Philosophy

                                        Contents:

                                          diff --git a/Contribution/deltas.html b/Contribution/deltas.html index d0c69f53a..1f6d7edc4 100644 --- a/Contribution/deltas.html +++ b/Contribution/deltas.html @@ -8,9 +8,9 @@ - + - + @@ -122,7 +122,7 @@

                                          Status: Pre-Draft

                                          -

                                          Discussion of File Modification Propagation

                                          +

                                          Discussion of File Modification Propagation

                                          This was early thinking about how to deal with file updates. The early versions of the protocol only concerned itself with entire files. when the file sets are large enough, partial updates become very desirable. @@ -143,7 +143,7 @@

                                          Discussion of File Modification Propagation -

                                          What If Each Notification is for a Block, not a File ?

                                          +

                                          What If Each Notification is for a Block, not a File ?

                                          gedanken experiment… per block messages, rather than entire files ? what if the messages we send are all per block?

                                          Why is this really cool?

                                          @@ -192,7 +192,7 @@

                                          What If Each Notification is for a Block, not a File ?

                                          -

                                          .sr§ suffix

                                          +

                                          .sr§ suffix

                                          but that means they advertise the parts… hmm… the names now mean something, We use the Section Character instead of part. to avoid that, pick a name that is more unusual that .part something like .sr§partnum (using utf-8 interesting @@ -211,7 +211,7 @@

                                          .sr§ suffix -

                                          How to Select Chunksize

                                          +

                                          How to Select Chunksize

                                          • source choice?

                                          • @@ -243,7 +243,7 @@

                                            How to Select Chunksize

                                          -

                                          if we do blockwise cksums, path from v00

                                          +

                                          if we do blockwise cksums, path from v00

                                          compatibility… upgrading… v00.notify alerts boil down to:

                                          v01.post could be:

                                          @@ -271,7 +271,7 @@

                                          if we do blockwise cksums, path from v00 -

                                          Digression about ZSync

                                          +

                                          Digression about ZSync

                                          zsync is available in repositories and zsync(1) is the existing download client. zsyncmake(1) builds the signatures, with a programmable block size.

                                          It looks ike zsync is usable as is?

                                          @@ -304,7 +304,7 @@

                                          Digression about ZSync

                                          -

                                          Server/Protocol Considerations

                                          +

                                          Server/Protocol Considerations

                                          HTTP:

                                          – uses byte range feature of HTTP. – FIXME: find samples from other email.

                                          diff --git a/Contribution/index.html b/Contribution/index.html index 3a40bb62e..700562bed 100644 --- a/Contribution/index.html +++ b/Contribution/index.html @@ -8,9 +8,9 @@ - + - + @@ -112,7 +112,7 @@ }
                                          -

                                          Contributing

                                          +

                                          Contributing

                                          Contents:

                                            diff --git a/Contribution/man_page_template.html b/Contribution/man_page_template.html index eb181f043..ac1b90554 100644 --- a/Contribution/man_page_template.html +++ b/Contribution/man_page_template.html @@ -8,9 +8,9 @@ - + - + @@ -123,15 +123,15 @@ }
                                            -

                                            SR3_TITLE

                                            +

                                            SR3_TITLE

                                            -

                                            sr_title

                                            +

                                            sr_title

                                            Manual section:

                                            1

                                            Date:
                                            -

                                            Aug 16, 2023

                                            +

                                            Aug 18, 2023

                                            Version:

                                            UNKNOWN

                                            @@ -141,12 +141,12 @@

                                            sr_title -

                                            SYNOPSIS

                                            +

                                            SYNOPSIS

                                            sr_title foreground|start|stop|restart|reload|status configfile sr_title cleanup|declare|setup configfile

                                            -

                                            DESCRIPTION

                                            +

                                            DESCRIPTION

                                            sr_title Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea @@ -184,7 +184,7 @@

                                            DESCRIPTION -

                                            CONFIGURATION

                                            +

                                            CONFIGURATION

                                            Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim @@ -199,7 +199,7 @@

                                            CONFIGURATION -

                                            ENVIRONMENT VARIABLES

                                            +

                                            ENVIRONMENT VARIABLES

                                            If the SR_CONFIG_EXAMPLES variable is set, then the add directive can be used to copy examples into the user’s directory for use and/or customization.

                                            An entry in the ~/.config/sarra/default.conf (created via sr_subscribe edit default.conf ) @@ -211,7 +211,7 @@

                                            ENVIRONMENT VARIABLES

                                            -

                                            SEE ALSO

                                            +

                                            SEE ALSO

                                            sr3_report(7) - the format of report messages.

                                            sr3_report(1) - process report messages.

                                            sr3_post(1) - post notification messages of specific files.

                                            diff --git a/Contribution/mqtt_issues.html b/Contribution/mqtt_issues.html index d4439a203..7a8592604 100644 --- a/Contribution/mqtt_issues.html +++ b/Contribution/mqtt_issues.html @@ -8,9 +8,9 @@ - + - + @@ -118,9 +118,9 @@ }
                                            -

                                            MQTT Implementation Notes

                                            +

                                            MQTT Implementation Notes

                                            -

                                            v3 vs. v5

                                            +

                                            v3 vs. v5

                                            • version 3 has resends sent on a timed basis, every few seconds (perhaps as much as 20 seconds.) If you ever have a backlog, these retransmits will be a storm of ever increasing traffic.

                                            • @@ -129,14 +129,14 @@

                                              v3 vs. v5 -

                                              Shared Subscriptions

                                              +

                                              Shared Subscriptions

                                              • once you join a group, you are there until the session is dead, even if you disconnect, it will pile 1/n messages in your queue.

                                            -

                                            Back Pressure

                                            +

                                            Back Pressure

                                            1. paho client is async,

                                            2. best practice is to have very light-weight on_message handlers.

                                            3. diff --git a/Contribution/on_part_assembly.html b/Contribution/on_part_assembly.html index 3055708cf..08ee896ef 100644 --- a/Contribution/on_part_assembly.html +++ b/Contribution/on_part_assembly.html @@ -8,9 +8,9 @@ - + - + @@ -118,9 +118,9 @@ }
                                              -

                                              File Re-assembling

                                              +

                                              File Re-assembling

                                              -

                                              Components

                                              +

                                              Components

                                              sr_watch: You can use sr_watch to watch a directory for incoming partition files (.Part) from sr_subscribe or sr_sender, both have the ability to send a file in partitions. In the config file for sr_watch the important parameters to include are:

                                                @@ -134,7 +134,7 @@

                                                Components -

                                                Algorithm

                                                +

                                                Algorithm

                                                After being triggered by a downloaded part file:

                                                  @@ -172,7 +172,7 @@

                                                  Algorithm -

                                                  Testing

                                                  +

                                                  Testing

                                                  Create an sr_watch config file according to the template above Start the process by typing the following command: `sr_watch foreground path/to/config_file.cfg`

                                                  Then create a subcriber config file and include `inplace off` so the file will be downloaded in parts diff --git a/Contribution/v03.html b/Contribution/v03.html index eda33b179..b13de1197 100644 --- a/Contribution/v03.html +++ b/Contribution/v03.html @@ -8,9 +8,9 @@ - + - + @@ -150,9 +150,9 @@ }

                                                  -

                                                  Version 3 Refactor

                                                  +

                                                  Version 3 Refactor

                                                  -

                                                  Summary

                                                  +

                                                  Summary

                                                  This document is aimed at developers who need to work with both v2 code and the refactor that was originally called v3, but eventually was called sr3. For developers familiar with v2, the document can serve as a bit of a map @@ -175,7 +175,7 @@

                                                  Summary -

                                                  goals of opportunity

                                                  +

                                                  goals of opportunity

                                                  • add stuff to make it work as an API?

                                                  • @@ -190,7 +190,7 @@

                                                    goals of opportunity

                                                  -

                                                  State of the Code

                                                  +

                                                  State of the Code

                                                  As of 2021/08/24, the sr3 code passes all the same flow tests that v2 does on one laptop (except dynamic in sr3 #407). It runs those same tests using the same configurations, so compatibiliy goal is achieved. Sr3 accept mqtt broker urls, and an issue is created #389 for amqp v1. @@ -305,7 +305,7 @@

                                                  State of the Code -

                                                  V02 Plugin Pain Points

                                                  +

                                                  V02 Plugin Pain Points

                                                  Writing plugins should be a straight-forward activity for people with a rudimentary knowledge of Python, and some understanding of the task at hand. In version 2, writing plugins is a lot harder than it should be.

                                                  @@ -332,7 +332,7 @@

                                                  V02 Plugin Pain Points

                                                  making changes to notification messages is a bit complicated, because they evolved over different message formats.

                                                -

                                                Changes Done to Address Pain Points

                                                +

                                                Changes Done to Address Pain Points

                                                • use importlib from python, much more standard way to register plugins. now syntax errors will be picked up just like any other python module being imported, @@ -371,7 +371,7 @@

                                                  Changes Done to Address Pain Points -

                                                  Ship of Theseus

                                                  +

                                                  Ship of Theseus

                                                  It might be that the re-factoring inherent in v03 results in a Ship of Theseus, where it works the same way as v02, but all the parts are different… obviously a concern/risk… @@ -480,7 +480,7 @@

                                                  Ship of Theseus -

                                                  Mappings

                                                  +

                                                  Mappings

                                                  v2->sr3 instance variables:

                                                  self.user_cache_dir --> self.o.cfg_run_dir
                                                   
                                                  @@ -491,7 +491,7 @@

                                                  Mappings -

                                                  Dictionaries or Members for Properties?

                                                  +

                                                  Dictionaries or Members for Properties?

                                                  There seems to be a tension between using class members and dictionaries for settings. Members seem more convenient, but harder to manipulate, though we have equivalent idioms. Argparse returns options as their own @@ -516,7 +516,7 @@

                                                  Dictionaries or Members for Properties? -

                                                  Known Problems (Solved in sr3)

                                                  +

                                                  Known Problems (Solved in sr3)

                                                  • passing of logs around is really odd. We didn’t understand what python logging objects were. Need to use them in the normal way. @@ -539,7 +539,7 @@

                                                    Known Problems (Solved in sr3) -

                                                    Concrete Plan (Done)

                                                    +

                                                    Concrete Plan (Done)

                                                    Replace sarra/sr_config with sarra/sr_cfg2. The new sr_cfg2 uses argparse and a simpler model for config file parsing. This became config.py

                                                    make sr.py accept operations on subsets, so it becomes the unique entry point. @@ -560,7 +560,7 @@

                                                    Concrete Plan (Done) -

                                                    Done

                                                    +

                                                    Done

                                                    The functionality of sr_amqp.py is completely reproduced in moth/amqp.py All the important logic is preserved, but it is transcribed into new classes. Should have identical failure recovery behaviour. But it doesn’t. We have @@ -624,7 +624,7 @@

                                                    Done

                                                    Also have written message rate limiting into core, so now have message_rate_min, and message_rate_max settings that replace/deprecate v2 post_rate_limit plugin.

                                                    -

                                                    Worries Addressed

                                                    +

                                                    Worries Addressed

                                                    This section contains issues that were taken care of. They were a bother for a while, so noting down what the solution was.

                                                      @@ -649,7 +649,7 @@

                                                      Worries Addressed -

                                                      Accel Overhaul

                                                      +

                                                      Accel Overhaul

                                                      plugin compatiblity under review… decided to re-write the accel_* plugins for sr3, and change the API because the v2 one has fundamental deficiencies:

                                                        @@ -672,7 +672,7 @@

                                                        Accel Overhaul -

                                                        DoneTodo

                                                        +

                                                        DoneTodo

                                                        Items from the TODO list that have been addressed.

                                                        • migrate sr_xattr.py to sarra/xattr.py (now called sarracenia/filemetadata.py)

                                                        • @@ -705,14 +705,14 @@

                                                          DoneTodo -

                                                          BUGS/Concerns/Issues

                                                          +

                                                          BUGS/Concerns/Issues

                                                          migrated to github issues with v3only tag.

                                                    -

                                                    After Parity: True Improvements

                                                    +

                                                    After Parity: True Improvements

                                                    -

                                                    TODO

                                                    +

                                                    TODO

                                                    At this point am able to report existing problems as issues with the v03only tag. so below is the things leftover after refactor:

                                                      @@ -746,7 +746,7 @@

                                                      TODO

                                                    -

                                                    Not Baked/Thinking

                                                    +

                                                    Not Baked/Thinking

                                                    Structural code things that are not settled, may change. Probably need to be settled before having anyone else dive in.

                                                      @@ -777,7 +777,7 @@

                                                      Not Baked/Thinking -

                                                      FIXME/Deferred

                                                      +

                                                      FIXME/Deferred

                                                      The point of the main sr3 work is to get a re-factor done to the point where the code is understandable to new coders, so that tasks can be assigned. This section includes a mix of tasks that can hopefully be assigned,

                                                      @@ -806,7 +806,7 @@

                                                      FIXME/Deferred -

                                                      Transition

                                                      +

                                                      Transition

                                                      Do not know if straightforward (Replacement) upgrade is a good approach. Will it be possible to test sarra sufficiently such that upgrades of entire pumps are possible? or will incremental (parallel) upgrades be required?

                                                      @@ -815,7 +815,7 @@

                                                      Transition -

                                                      Replacement

                                                      +

                                                      Replacement

                                                      The package has the same name as v2 ones (metpx-sarracenia) differing only in version number. Installing the new replaces the old completely. This requires that the new version be equal or better than the old in all aspects, or that installation be confined to test machines @@ -824,7 +824,7 @@

                                                      Replacement -

                                                      Parallel

                                                      +

                                                      Parallel

                                                      Name the package metpx-sarra3 and have the python class directory be sarra3 (instead of sarra.) (also ~/.config/sr3 and ~/.cache/sr3. likely the .cache files must be different because retry files have different formats? validate. ) So one can copy configurations from old to @@ -839,14 +839,14 @@

                                                      Parallel -

                                                      Conclusion

                                                      +

                                                      Conclusion

                                                      Have implemented Parallel model, with APPNAME=sr3 ( ~/.config/sr3, ~/.cache/sr3 ) sr3_ prefix replacing sr_ for all commands, and changing the sarra Python class to the full sarracenia name to avoid clashing python classes.

                                                -

                                                Incompatibilities

                                                +

                                                Incompatibilities

                                                There are not supposed to be any. This is a running list of things to fix or document. breaking changes:

                                                  @@ -900,7 +900,7 @@

                                                  Incompatibilities -

                                                  Features

                                                  +

                                                  Features

                                                  • All the components are now derived from the flow class, and run the general algorithm already designed as the basis of v2, but never implemented as such.

                                                  • diff --git a/Explanation/CommandLineGuide.html b/Explanation/CommandLineGuide.html index f58092600..c59dbb452 100644 --- a/Explanation/CommandLineGuide.html +++ b/Explanation/CommandLineGuide.html @@ -8,9 +8,9 @@ - + - + @@ -177,9 +177,9 @@ }
                                                    -

                                                    Command Line Guide

                                                    +

                                                    Command Line Guide

                                                    -

                                                    SR3 - Everything

                                                    +

                                                    SR3 - Everything

                                                    sr3 is a command line tool to manage Sarracenia configurations, individually or in groups. For the current user, it reads on all of the configuration files, state files, and consults the process table to determine @@ -280,9 +280,9 @@

                                                    SR3 - Everything -

                                                    ACTIONS

                                                    +

                                                    ACTIONS

                                                    -

                                                    declare|setup

                                                    +

                                                    declare|setup

                                                    Call the corresponding function for each configuration:

                                                    $ sr3 declare
                                                       declare: 2020-09-06 23:22:18,043 [INFO] root declare looking at cpost/pelle_dd1_f04
                                                    @@ -310,7 +310,7 @@ 

                                                    declare|setup -

                                                    dump

                                                    +

                                                    dump

                                                    print the three data structure used by sr. There are three lists:

                                                    • processes thought to be related to sr.

                                                    • @@ -356,7 +356,7 @@

                                                      dump

                                                    -

                                                    foreground

                                                    +

                                                    foreground

                                                    run a single instance of a single configuration as an interactive process logging to the current stderr/terminal output. for debugging.

                                                    list

                                                    @@ -409,7 +409,7 @@

                                                    foreground -

                                                    show

                                                    +

                                                    show

                                                    View all configuration settings (the result of all parsing… what the flow components actually see):

                                                    % sr3 show subscribe/q_f71
                                                     2022-03-20 15:30:32,507 1084652 [INFO] sarracenia.config parse_file download_f20.conf:35 obsolete v2:"on_message msg_log" converted to sr3:"logEvents after_accept"
                                                    @@ -539,7 +539,7 @@ 

                                                    show

                                                    -

                                                    convert

                                                    +

                                                    convert

                                                    Converting a config: both formats are accepted, as well as include files:

                                                    $ sr3 convert poll/sftp_f62
                                                       2022-06-14 15:00:00,762 1093345 [INFO] root convert converting poll/sftp_f62 from v2 to v3
                                                    @@ -553,7 +553,7 @@ 

                                                    convert -

                                                    start

                                                    +

                                                    start

                                                    launch all configured components:

                                                    $ sr3 start
                                                       gathering global state: procs, configs, state files, logs, analysis - Done.
                                                    @@ -562,7 +562,7 @@ 

                                                    start

                                                    -

                                                    stop

                                                    +

                                                    stop

                                                    stop all processes:

                                                    $ sr3 stop
                                                       gathering global state: procs, configs, state files, logs, analysis - Done.
                                                    @@ -573,7 +573,7 @@ 

                                                    stop

                                                    -

                                                    status

                                                    +

                                                    status

                                                    Sample OK status (sr is running):

                                                    fractal% sr3 status
                                                     status:
                                                    @@ -777,7 +777,7 @@ 

                                                    status

                                                    -

                                                    Message Gathering

                                                    +

                                                    Message Gathering

                                                    Most Metpx Sarracenia components loop on gathering and/or reception of sarracenia notification messages. Usually, the notification messages are sr_post(7) notification messages, announcing the availability of a file by publishing its URL, @@ -797,7 +797,7 @@

                                                    Message Gathering -

                                                    Setting the Broker

                                                    +

                                                    Setting the Broker

                                                    broker [amqp|mqtt]{s}://<user>:<password>@<brokerhost>[:port]/<vhost>

                                                    A URI is used to configure a connection to a notification message pump, either an MQTT or an AMQP broker. Some Sarracenia components set a reasonable default for @@ -816,7 +816,7 @@

                                                    Setting the Broker -

                                                    Creating the Queue

                                                    +

                                                    Creating the Queue

                                                    Once connected to an AMQP broker, the user needs to create a queue. Common settings for the queue on broker :

                                                      @@ -830,7 +830,7 @@

                                                      Creating the Queue -

                                                      [ queue|queue_name|qn <name>]

                                                      +

                                                      [ queue|queue_name|qn <name>]

                                                      By default, components create a queue name that should be unique. The default queue_name components create follows the following convention:

                                                      @@ -857,7 +857,7 @@

                                                      [ queue|queue_name|qn <name>] -

                                                      AMQP QUEUE BINDINGS

                                                      +

                                                      AMQP QUEUE BINDINGS

                                                      Once one has a queue, it must be bound to an exchange. Users almost always need to set these options. Once a queue exists on the broker, it must be bound to an exchange. Bindings define which @@ -875,7 +875,7 @@

                                                      AMQP QUEUE BINDINGS -

                                                      subtopic <amqp pattern> (default: #)

                                                      +

                                                      subtopic <amqp pattern> (default: #)

                                                      Within an exchange’s postings, the subtopic setting narrows the product selection. To give a correct value to the subtopic, one has the choice of filtering using subtopic with only AMQP’s limited wildcarding and @@ -939,7 +939,7 @@

                                                      subtopic <amqp pattern> (default: #) -

                                                      Client-side Filtering

                                                      +

                                                      Client-side Filtering

                                                      We have selected our notification messages through exchange, subtopic and perhaps patterned subtopic with AMQP’s limited wildcarding which is all done by the broker (server-side). The broker puts the @@ -947,7 +947,7 @@

                                                      Client-side Filtering
                                                      -

                                                      Brief Introduction to Regular Expressions

                                                      +

                                                      Brief Introduction to Regular Expressions

                                                      Regular expressions are a very powerful way of expressing pattern matches. They provide extreme flexibility, but in these examples we will only use a very trivial subset: The . is a wildcard matching any single character. If it @@ -975,7 +975,7 @@

                                                      Brief Introduction to Regular Expressions -

                                                      accept, reject and accept_unmatch

                                                      +

                                                      accept, reject and accept_unmatch

                                                      • accept <regexp pattern> (optional)

                                                      • reject <regexp pattern> (optional)

                                                      • @@ -1018,7 +1018,7 @@

                                                        accept, reject and accept_unmatch -

                                                        NAMING QUEUES

                                                        +

                                                        NAMING QUEUES

                                                        While in most common cases, a good value is generated by the application, in some cases there may be a need to override those choices with an explicit user specification. To do that, one needs to be aware of the rules for naming queues:

                                                        @@ -1032,7 +1032,7 @@

                                                        NAMING QUEUES -

                                                        POSTING

                                                        +

                                                        POSTING

                                                        Just as many components consumer a stream of notification messages, many components (often the same ones) also product an output stream of notification messages. To make files available to subscribers, a poster publishes the notification messages to an AMQP or @@ -1050,7 +1050,7 @@

                                                        POSTING -

                                                        NAMING EXCHANGES

                                                        +

                                                        NAMING EXCHANGES

                                                        1. Exchange names start with x

                                                        2. Exchanges that end in public are accessible (for reading) by any authenticated user.

                                                        3. @@ -1077,7 +1077,7 @@

                                                          NAMING EXCHANGES -

                                                          POLLING

                                                          +

                                                          POLLING

                                                          Polling is doing the same job as a post, except for files on a remote server. In the case of a poll, the post will have its url built from the pollUrl option, with the product’s path (directory/”matched file”). There is one @@ -1159,7 +1159,7 @@

                                                          POLLING -

                                                          Advanced Polling

                                                          +

                                                          Advanced Polling

                                                          The built-in Poll lists remote directories and parses the lines returned building paramiko.SFTPAttributes structures (similar to os.stat) for each file listed. There is a wide variety of customization available because resources to poll @@ -1186,14 +1186,14 @@

                                                          Advanced Polling -

                                                          COMPONENTS

                                                          +

                                                          COMPONENTS

                                                          All the components do some combination of polling, consuming, and posting. with variations that accomplish either forwarding of notification messages or data transfers. The components all apply the same single algorithm, just starting from different default settings to match common use cases.

                                                          -

                                                          CPUMP

                                                          +

                                                          CPUMP

                                                          cpump* is an implementation of the shovel component in C. On an individual basis, it should be faster than a single python downloader, with some limitations.

                                                          @@ -1219,14 +1219,14 @@

                                                          CPUMP the file is new, and the sum is added to the cache and the notification is posted.

                                                          -

                                                          FLOW

                                                          +

                                                          FLOW

                                                          Flow is the parent class from which all of the other components except cpost and cpump are built. Flow has no built-in behaviour. Settings can make it act like any other python component, or it can be used to build user defined components. Typically used with the flowMain option to run a user defined flow subclass.

                                                          -

                                                          POLL

                                                          +

                                                          POLL

                                                          poll is a component that connects to a remote server to check in various directories for some files. When a file is present, modified or created in the remote directory, the program will @@ -1260,7 +1260,7 @@

                                                          POLL The gather method that is built-in uses sarracenia.transfer protocols, currently implemented are sftp, ftp, and http.

                                                          -

                                                          Repeated Scans and VIP

                                                          +

                                                          Repeated Scans and VIP

                                                          When multiple servers are being co-operating to poll a remote server, the vip setting is used to decide which server will actually poll. All servers participating subscribe to where poll is posting, @@ -1270,7 +1270,7 @@

                                                          Repeated Scans and VIP

                                                          -

                                                          POST or WATCH

                                                          +

                                                          POST or WATCH

                                                          sr3_post posts the availability of a file by creating an notification message. In contrast to most other sarracenia components that act as daemons, sr3_post is a one shot invocation which posts and exits. @@ -1350,13 +1350,13 @@

                                                          POST or WATCHhttp://dd.weather.gc.ca/bulletins/alphanumeric/SACN32_CWAO_123456 using http without authentication on dd.weather.gc.ca.

                                                          -

                                                          File Partitioning

                                                          +

                                                          File Partitioning

                                                          use of the blocksize option has no effect in sr3. It is used to do file partitioning, and it will become effective again in the future, with the same semantics.

                                                          -

                                                          SARRA

                                                          +

                                                          SARRA

                                                          sarra is a program that Subscribes to file notifications, Acquires the files and ReAnnounces them at their new locations. The notification protocol is defined here sr_post(7)

                                                          @@ -1372,7 +1372,7 @@

                                                          SARRA

                                              -

                                              Specific Consuming Requirements

                                              +

                                              Specific Consuming Requirements

                                              If the notification messages are posted directly from a source, the exchange used is ‘xs_<brokerSourceUsername>’. To protect against malicious users, administrators should set sourceFromExchange to True. Such notification messages may not contain a source nor an origin cluster fields @@ -1390,7 +1390,7 @@

                                              Specific Consuming Requirements -

                                              SENDER

                                              +

                                              SENDER

                                              sender is a component derived from subscribe used to send local files to a remote server using a file transfer protocol, primarily SFTP. sender is a standard consumer, using all the normal AMQP settings for brokers, exchanges, @@ -1409,7 +1409,7 @@

                                              SENDERto option if found in one of the notification message’s destination clusters. If not, the notification message is skipped.

                                              -

                                              SETUP 1 : PUMP TO PUMP REPLICATION

                                              +

                                              SETUP 1 : PUMP TO PUMP REPLICATION

                                              For pump replication, mirror is set to True (default).

                                              baseDir supplies the directory path that, when combined with the relative one in the selected notification gives the absolute path of the file to be sent. @@ -1450,7 +1450,7 @@

                                              SETUP 1 : PUMP TO PUMP REPLICATION -

                                              DESTINATION SETUP 2 : METPX-SUNDEW LIKE DISSEMINATION

                                              +

                                              DESTINATION SETUP 2 : METPX-SUNDEW LIKE DISSEMINATION

                                              In this type of usage, we would not usually repost… but if the post_broker and post_exchange (url,**on_post**) are set, the product will be announced (with its possibly new location and new name). @@ -1489,7 +1489,7 @@

                                              DESTINATION SETUP 2 : METPX-SUNDEW LIKE DISSEMINATION

                                              -

                                              SHOVEL

                                              +

                                              SHOVEL

                                              shovel copies notification messages on one broker (given by the broker option) to another (given by the post_broker option.) subject to filtering by (exchange, subtopic, and optionally, accept/reject.)

                                              @@ -1506,12 +1506,12 @@

                                              SHOVEL

                                              -

                                              SUBSCRIBE

                                              +

                                              SUBSCRIBE

                                              Subscribe is the normal downloading flow component, that will connect to a broker, download the configured files, and then forward the notification messages with an altered baseUrl.

                                              -

                                              WATCH

                                              +

                                              WATCH

                                              Watches a directory and publishes posts when files in the directory change ( added, modified, or deleted). Its arguments are very similar to sr3_post. In the MetPX-Sarracenia suite, the main goal is to post the availability and readiness @@ -1587,7 +1587,7 @@

                                              WATCH without authentication on dd.weather.gc.ca.

                                              -

                                              WINNOW

                                              +

                                              WINNOW

                                              the winnow component subscribes to file notification messages and reposts them, suppressing redundant ones. How to decide which ones are redundant varies by use case. In the most straight-forward case, the messages have Identity header stores a file’s fingerprint as described in the sr_post(7) man page, @@ -1613,7 +1613,7 @@

                                              WINNOW

                                              -

                                              Configurations

                                              +

                                              Configurations

                                              If one has a ready made configuration called q_f71.conf, it can be added to the list of known ones with:

                                              subscribe add q_f71.conf
                                              @@ -1733,7 +1733,7 @@ 

                                              Configurations -

                                              flowCallbacks

                                              +

                                              flowCallbacks

                                              Sarracenia makes extensive use of small python code snippets that customize processing called flowCallback Flow_callbacks define and use additional settings:

                                              flowCallback sarracenia.flowcb.log.Log
                                              @@ -1768,7 +1768,7 @@ 

                                              flowCallbacks -

                                              callback options

                                              +

                                              callback options

                                              callbacks that are delivered with metpx-sr3 follow the following convention:

                                              • they are placed in the sarracenia/flowcb directory tree.

                                              • @@ -1781,7 +1781,7 @@

                                                callback options -

                                                Importing Extensions

                                                +

                                                Importing Extensions

                                                The import option works in a way familiar to Python developers, Making them available for use by the Sarracenia core, or flowCallback. Developers can add additional protocols for notification messages or @@ -1808,7 +1808,7 @@

                                                Importing ExtensionsProgrammer’s Guide

                                              -

                                              Deprecated v2 plugins

                                              +

                                              Deprecated v2 plugins

                                              There is and older (v2) style of plugins as well. That are usually prefixed with the name of the plugin:

                                              msg_to_clusters DDI
                                              @@ -1839,7 +1839,7 @@ 

                                              Deprecated v2 plugins

                                              -

                                              Environment Variables

                                              +

                                              Environment Variables

                                              On can also reference environment variables in configuration files, using the ${ENV} syntax. If Sarracenia routines needs to make use of an environment variable, then they can be set in configuration files:

                                              @@ -1848,7 +1848,7 @@

                                              Environment Variables

                                              -

                                              LOGS and MONITORING

                                              +

                                              LOGS and MONITORING

                                              • debug

                                                Setting option debug is identical to use logLevel debug

                                                @@ -1922,7 +1922,7 @@

                                                LOGS and MONITORING -

                                                CREDENTIALS

                                                +

                                                CREDENTIALS

                                                One normally does not specify passwords in configuration files. Rather they are placed in the credentials file:

                                                edit ~/.config/sr3/credentials.conf
                                                @@ -1956,7 +1956,7 @@ 

                                                CREDENTIALS -

                                                Credential Details

                                                +

                                                Credential Details

                                                You may need to specify additional options for specific credential entries. These details can be added after the end of the URL, with multiple details separated by commas (see examples above).

                                                Supported details:

                                                  @@ -1984,7 +1984,7 @@

                                                  Credential Details -

                                                  PERIODIC PROCESSING

                                                  +

                                                  PERIODIC PROCESSING

                                                  Most processing occurs on receipt of a notification message, but there is some periodic maintenance work that happens every housekeeping interval (default is 5 minutes.) Evey housekeeping, all of the configured on_housekeeping plugins are run. By default there are three present:

                                                  @@ -1999,18 +1999,18 @@

                                                  PERIODIC PROCESSING -

                                                  sanity_log_dead <interval> (default: 1.5*housekeeping)

                                                  +

                                                  sanity_log_dead <interval> (default: 1.5*housekeeping)

                                                  The sanity_log_dead option sets how long to consider too long before restarting a component.

                                              -

                                              nodup_ttl <off|on|999> (default: off)

                                              +

                                              nodup_ttl <off|on|999> (default: off)

                                              The cleanup of expired elements in the duplicate suppression store happens at each housekeeping.

                                              -

                                              ERROR RECOVERY

                                              +

                                              ERROR RECOVERY

                                              The tools are meant to work well unattended, and so when transient errors occur, they do their best to recover elegantly. There are timeouts on all operations, and when a failure is detected, the problem is noted for retry. Errors can happen at many times:

                                              @@ -2042,7 +2042,7 @@

                                              ERROR RECOVERY -

                                              EXAMPLES

                                              +

                                              EXAMPLES

                                              Here is a short complete example configuration file:

                                              broker amqps://dd.weather.gc.ca/
                                               
                                              @@ -2061,7 +2061,7 @@ 

                                              EXAMPLEShttps://github.com/MetPX/sarracenia/tree/main/sarracenia/examples

                                              -

                                              QUEUES and MULTIPLE STREAMS

                                              +

                                              QUEUES and MULTIPLE STREAMS

                                              When executed, subscribe chooses a queue name, which it writes to a file named after the configuration file given as an argument to subscribe with a .queue suffix ( .”configfile”.queue). @@ -2086,7 +2086,7 @@

                                              QUEUES and MULTIPLE STREAMS -

                                              report and report_exchange

                                              +

                                              report and report_exchange

                                              For each download, by default, an amqp report message is sent back to the broker. This is done with option :

                                                @@ -2100,7 +2100,7 @@

                                                report and report_exchange -

                                                INSTANCES

                                                +

                                                INSTANCES

                                                Sometimes one instance of a component and configuration is not enough to process & send all available notifications.

                                                instances <integer> (default:1)

                                                The instance option allows launching several instances of a component and configuration. @@ -2134,7 +2134,7 @@

                                                INSTANCES -

                                                vip - ACTIVE/PASSIVE OPTIONS

                                                +

                                                vip - ACTIVE/PASSIVE OPTIONS

                                                sr3 can be used on a single server node, or multiple nodes could share responsibility. Some other, separately configured, high availability software presents a vip (virtual ip) on the active server. Should @@ -2155,7 +2155,7 @@

                                                vip - ACTIVE/PASSIVE OPTIONS -

                                                [–blocksize <value>] (default: 0 (auto))

                                                +

                                                [–blocksize <value>] (default: 0 (auto))

                                                This blocksize option controls the partitioning strategy used to post files. The value should be one of:

                                                0 - autocompute an appropriate partitioning strategy (default)
                                                @@ -2171,7 +2171,7 @@ 

                                                [–blocksize <value>] (default: 0 (auto))sr3_cpump(1) for details.

                                              -

                                              [-pbd|–post_baseDir <path>] (optional)

                                              +

                                              [-pbd|–post_baseDir <path>] (optional)

                                              The post_baseDir option supplies the directory path that, when combined (or found) in the given path, gives the local absolute path to the data file to be posted. The post_baseDir part of the path will be removed from the posted notification message. @@ -2181,20 +2181,20 @@

                                              [-pbd|–post_baseDir <path>] (optional) -

                                              post_baseUrl <url> (MANDATORY)

                                              +

                                              post_baseUrl <url> (MANDATORY)

                                              The post_baseUrl option sets how to get the file… it defines the protocol, host, port, and optionally, the user. It is best practice to not include passwords in urls.

                                              -

                                              post_exchange <name> (default: xpublic)

                                              +

                                              post_exchange <name> (default: xpublic)

                                              The post_exchange option set under which exchange the new notification will be posted. In most cases it is ‘xpublic’.

                                              Whenever a publish happens for a product, a user can set to trigger a script. The option on_post would be used to do such a setup.

                                              -

                                              post_exchangeSplit <number> (default: 0)

                                              +

                                              post_exchangeSplit <number> (default: 0)

                                              The post_exchangeSplit option appends a two digit suffix resulting from hashing the last character of the checksum to the post_exchange name, in order to divide the output amongst a number of exchanges. This is currently used @@ -2210,7 +2210,7 @@

                                              post_exchangeSplit <number> (default: 0)

                                              -

                                              Remote Configurations

                                              +

                                              Remote Configurations

                                              One can specify URI’s as configuration files, rather than local files. Example:

                                                @@ -2233,7 +2233,7 @@

                                                Remote Configurations

                                              -

                                              Extensions

                                              +

                                              Extensions

                                              One can override or add functionality with python scripting.

                                              Sarracenia comes with a variety of example plugins, and uses some to implement base functionality, such as logging (implemented by default use of msg_log, file_log, post_log plugins):

                                              @@ -2250,7 +2250,7 @@

                                              Extensions -

                                              flowCallback and flowCallbackPrepend <class>

                                              +

                                              flowCallback and flowCallbackPrepend <class>

                                              The flowCallback directive takes a class to load can scan for entry points as an argument:

                                              flowCallback sarracenia.flowcb.log.Log
                                               
                                              @@ -2328,12 +2328,12 @@

                                              flowCallback and flowCallbackPrepend <class>

                                              -

                                              Identity

                                              +

                                              Identity

                                              One can use the import directive to add new checksum algorithms by sub-classing sarracenia.identity.Identity.

                                              -

                                              Transfer

                                              +

                                              Transfer

                                              One can add support for additional methods of downloading data by sub-classing sarracenia.transfer.Transfer.

                                              Transfer protocol scripts should be declared using the import option. @@ -2346,7 +2346,7 @@

                                              TransferProgramming Guide for more information on Extension development.

                                              -

                                              ROLES - feeder/admin/declare

                                              +

                                              ROLES - feeder/admin/declare

                                              of interest only to administrators

                                              Administrative options are set using:

                                              edit ~/.config/sr3/admin.conf
                                              @@ -2365,7 +2365,7 @@ 

                                              ROLES - feeder/admin/declare -

                                              subscriber

                                              +

                                              subscriber

                                              A subscriber is user that can only subscribe to data and return report messages. Subscribers are not permitted to inject data. Each subscriber has an xs_<user> named exchange on the pump, @@ -2376,7 +2376,7 @@

                                              subscriber -

                                              source

                                              +

                                              source

                                              A user permitted to subscribe or originate data. A source does not necessarily represent one person or type of data, but rather an organization responsible for the data produced. @@ -2389,7 +2389,7 @@

                                              source

                                              -

                                              feeder

                                              +

                                              feeder

                                              A user permitted to write to any exchange. Sort of an administrative flow user, meant to pump notification messages when no ordinary source or subscriber is appropriate to do so. Is to be used in @@ -2401,7 +2401,7 @@

                                              feeder

                                              -

                                              CONFIGURATION FILES

                                              +

                                              CONFIGURATION FILES

                                              While one can manage configuration files using the add, remove, list, edit, disable, and enable actions, one can also do all of the same activities manually by manipulating files in the settings @@ -2436,17 +2436,17 @@

                                              CONFIGURATION FILES -

                                              SUNDEW COMPATIBILITY OPTIONS

                                              +

                                              SUNDEW COMPATIBILITY OPTIONS

                                              For compatibility with Sundew, there are some additional delivery options which can be specified.

                                              -

                                              destfn_script <script> (default:None)

                                              +

                                              destfn_script <script> (default:None)

                                              This option defines a script to be run when everything is ready for the delivery of the product. The script receives the sr_sender class instance. The script takes the parent as an argument, and for example, any modification to parent.msg.new_file will change the name of the file written locally.

                                              -

                                              filename <keyword> (default:WHATFN)

                                              +

                                              filename <keyword> (default:WHATFN)

                                              From metpx-sundew the support of this option give all sorts of possibilities for setting the remote filename. Some keywords are based on the fact that metpx-sundew filenames are five (to six) fields strings separated by for colons.

                                              @@ -2525,7 +2525,7 @@

                                              filename <keyword> (default:WHATFN) -

                                              Field Replacements

                                              +

                                              Field Replacements

                                              In MetPX Sundew, there is a much more strict file naming standard, specialised for use with World Meteorological Organization (WMO) data. Note that the file naming convention predates, and bears no relation to the WMO file naming convention currently approved, but is strictly an internal diff --git a/Explanation/Concepts.html b/Explanation/Concepts.html index 3b8b1fdfd..abf1010ef 100644 --- a/Explanation/Concepts.html +++ b/Explanation/Concepts.html @@ -8,9 +8,9 @@ - + - + @@ -124,14 +124,14 @@ }

                                              -

                                              General Sarracenia Concepts

                                              +

                                              General Sarracenia Concepts

                                              Sarracenia pumps form a network. The network uses Message Queueing Protocol (MQP) brokers as a transfer manager which sends notification messages of file availability in one direction and report messages in the opposite direction. Administrators configure the paths that data flows through at each pump, as each broker acts independently, managing transfers from transfer engines it can reach, with no knowledge of the overall network. The locations of pump and the directions of traffic flow are chosen to work with permitted flows. Ideally, no firewall exceptions are needed.

                                              Sarracenia itself does no data transport. It is a management layer to co-ordinate the use of transport layers. To get a running pump, actual transport mechanisms (web or sftp servers) need to be set up as well (the most common for our use case being RabbitMQ). In the simplest case, all of the components are on the same server, but there is no need for that. The broker could be on a different server from both ends of a given hop of a data transfer.

                                              The best way for data transfers to occur is to avoid polling, thus limiting unnecessary work and time. Suppliers of data will want to take advantage of writing appropriate sr3_post notification messages to advertise data that is ready. Similarly, it is ideal if the receivers of said data use subscribe components, and (if required) an on_file plugin to trigger their further processing. This ensures the file transfers from the source to the destination without polling for the data. This is the most efficient way of working, but it is understood that not all software can be made co-operative. Sarracenia components used to poll in order to start transport flows are known as poll, and watch.

                                              Generally speaking, Linux is the main deployment platform, and the only platform on which server configurations are deployed and tested. Other platforms are used as client end points (Windows, etc.). This isn´t a limitation, it is just what is used and tested. Implementations of the pump on Windows should work, they just are not officially tested.

                                              Sarracenia pumps can be built on a single server or an array of them, (see Deployment Consideration <DeploymentConsiderations.rst> for more details ) .but all the concepts discussed below apply.

                                              -

                                              The Flow Algorithm

                                              +

                                              The Flow Algorithm

                                              All of the components (post, subscribe, sarra, sender, shovel, watch, winnow) share substantial code and differ only in default settings. Each component follows the same general algorithm known as the Flow algorithm. The steps for the Flow algorithm are:

                                              • Gather a list of notification messages

                                              • @@ -141,7 +141,7 @@

                                                The Flow Algorithm -

                          + @@ -179,7 +179,7 @@

                          The Flow Algorithm -

                          + @@ -311,7 +311,7 @@

                          The Flow AlgorithmHoare sense).

                          -

                          Multiple processes: Instances, Singletons and VIP

                          +

                          Multiple processes: Instances, Singletons and VIP

                          The flow algorithm isn’t confined to a single process. Many processes can run the same flow configuration. For the sarra, sender, shovel and subscribe, components, one sets the instance setting to the number of processes to run and consume from the configured queue that they share.

                          The poll, post, and watch components, by contrast, are limited to a single process on any given server. In the table above, there is a note about has_vip. When there are multiple servers participating in a configuration, the vip directive can be used to have the servers co-operate to provide a single service (where only one server is active at a time.) For most components, the vip directive in a configuration file defines a virtual ip address that a server must have actively on it for that component to be active. If Sarracenia detects that the interface is not present on the server, then the component will run in passive mode.

                          For almost all components, passive mode means that no processing will occur. The node will passively check if it has obtained the vip. If the node does not have the vip, it will stand by indefinitely.

                          @@ -324,7 +324,7 @@

                          Multiple processes: Instances, Singletons and VIPThe poll’s gather (and/or poll) subscribes to the exchange other vip participants are posting to and updates its cache from the notification messages, avoiding the other polls from having to poll the same endpoint for the same file list.

                          -

                          Mapping AMQP Concepts to Sarracenia

                          +

                          Mapping AMQP Concepts to Sarracenia

                          It is helpful to understand a bit about AMQP to work with Sarracenia. AMQP is a vast and interesting topic in its own right. No attempt is made to explain the entirety of it here. This section intends to provide a little context and introduce background concepts needed to understand and/or use Sarracenia. For more information on AMQP itself, a set of links is maintained at the Metpx web site

                          ../_images/amqp_flow_concept.svg

                          An AMQP Server is called a broker. A broker is sometimes used to refer to the software, other times server running the broker software (same confusion as web server.) In the above diagram, AMQP vocabulary is in Orange, and Sarracenia terms are in blue. There are many different broker software implementations. In our implementations we use rabbitmq. We are not trying to be rabbitmq specific, but it is to be noted that management functions differ between implementations.

                          @@ -360,7 +360,7 @@

                          Mapping AMQP Concepts to Sarracenia -

                          AMQP v09 (Rabbitmq) Settings

                          +

                          AMQP v09 (Rabbitmq) Settings

                          MetPX-Sarracenia is only a light wrapper/coating around Message Queueing Protocols. For those who are familiar with the underlying protocols, these are the mappings:

                            @@ -399,7 +399,7 @@

                            AMQP v09 (Rabbitmq) Settings -

                            MQTT (version =5) Settings

                            +

                            MQTT (version =5) Settings

                            MQTT is actually a better match to Sarracenia than AMQP, as it is entirely based on hierarchical topics. While topics are only one among a variety of choices for routing methods in AMQP.

                              @@ -424,7 +424,7 @@

                              MQTT (version =5) Settings -

                              Flow Through Pumps

                              +

                              Flow Through Pumps

                              ../_images/sr3_flow_example.svg

                              A description of the conventional flow of notification messages through exchanges on a pump:

                                @@ -442,7 +442,7 @@

                                Flow Through Pumps -

                                Users and Roles

                                +

                                Users and Roles

                                Usernames for pump authentication are significant in that they are visible to all. They are used in the directory path on public trees, as well as to authenticate to the broker. They need to be understandable. They are often wider scope than a person… perhaps call them ‘Accounts’. It can be elegant to configure the same usernames for use in transport engines.

                                All Account names should be unique, but nothing will avoid clashes when sources originate from different pump networks and clients at different destinations. In practice, name clashes are addressed by routing to avoid two different sources’ with the same name having their data offerings combined on a single tree. On the other hand, name clashes are not always an error. Use of a common source account name on different clusters may be used to implement folders that are shared between the two accounts with the same name.

                                Pump users are defined with the declare option. Each option starts with the declare keyword, followed by the specified role and lastly the user name which has that role.

                                diff --git a/Explanation/DeploymentConsiderations.html b/Explanation/DeploymentConsiderations.html index 07520219a..764aa6d37 100644 --- a/Explanation/DeploymentConsiderations.html +++ b/Explanation/DeploymentConsiderations.html @@ -8,9 +8,9 @@ - + - + @@ -135,7 +135,7 @@ }
                                -

                                Deployment Considerations

                                +

                                Deployment Considerations

                                Sarracenia data pumps are often placed in network designs near demarcation points, to provide an application level demarcation point to allow for security scanning and to limit visibility into different zones. Pumps may either have all services incorporated on a single server, @@ -143,7 +143,7 @@

                                Deployment Considerations -

                                Transport Engines

                                +

                                Transport Engines

                                Transport engines are the data servers queried by subscribers, by the end users, or other pumps. The subscribers read the notices and fetch the corresponding data, using the indicated protocol. The software to serve the data can be either SFTP or HTTP (or HTTPS.) For specifics of @@ -151,7 +151,7 @@

                                Transport Engines -

                                IPv6

                                +

                                IPv6

                                A sample pump was implemented on a small VPS with IPv6 enabled. A client from far away connected to the rabbitmq broker using IPv6, and the subscription to the apache httpd worked without issues. It just works. There @@ -163,7 +163,7 @@

                                IPv6

                          -

                          Designs

                          +

                          Designs

                          There are many different arrangements in which sarracenia can be used.

                          Dataless

                          where one runs just sarracenia on top of a broker with no local transfer engines. @@ -185,7 +185,7 @@

                          Designs -

                          Dataless or S=0

                          +

                          Dataless or S=0

                          A configuration which includes only the AMQP broker. This configuration can be used when users have access to disk space on both ends and only need a mediator. This is the configuration of sftp.science.gc.ca, where the HPC disk space provides the storage so that the pump does @@ -199,7 +199,7 @@

                          Dataless or S=0 -

                          Winnowed Dataless

                          +

                          Winnowed Dataless

                          Another example of a dataless pump would be to provide product selection from two upstream sources using sr_winnow. The sr_winnow is fed by shovels from upstream sources, and the local clients just connect to this local pump. sr_winnow takes @@ -211,14 +211,14 @@

                          Winnowed Dataless -

                          Dataless With Sr_poll

                          +

                          Dataless With Sr_poll

                          The sr_poll program can verify if products on a remote server are ready or modified. For each of the product, it emits an notification message on the local pump. One could use sr_subscribe anywhere, listen to notification messages and get the products (provided the credentials to access it)

                          -

                          Standalone

                          +

                          Standalone

                          In a standalone configuration, there is only one node in the configuration. It runs all components and shares none with any other nodes. That means the Broker and data services such as sftp and apache are on the one node.

                          @@ -228,7 +228,7 @@

                          Standalone -

                          Switching/Routing

                          +

                          Switching/Routing

                          In a switching/routing configuration, there is a pair of machines running a single broker for a pool of transfer engines. So each transfer engine’s view of the file space is local, but the queues are global to the pump.

                          @@ -245,16 +245,16 @@

                          Switching/Routing -

                          Security Considerations

                          +

                          Security Considerations

                          This section is meant to provide insight to those who need to perform a security review of the application prior to implementation.

                          -

                          Client

                          +

                          Client

                          All credentials used by the application are stored in the ~/.config/sarra/credentials.conf file, and that file is forced to 600 permissions.

                          -

                          Server/Broker

                          +

                          Server/Broker

                          Authentication used by transport engines is independent of that used for the brokers. A security assessment of rabbitmq brokers and the various transfer engines in use is needed to evaluate the overall security of a given deployment.

                          @@ -286,7 +286,7 @@

                          Server/Broker -

                          Input Validation

                          +

                          Input Validation

                          Users such as Alice post their notification messages to their own exchange (xs_Alice). Processes which read from user exchanges have a responsibility for validation. The process that reads xs_Alice (likely an sr_sarra) will overwrite any source or cluster heading written into the notification message with the correct values for @@ -318,7 +318,7 @@

                          Input Validation -

                          Privileged System Access

                          +

                          Privileged System Access

                          Ordinary (sources, and subscribers) users operate sarra within their own permissions on the system, like an scp command. The pump administrator account also runs under a normal linux user account and, given requires privileges only on the AMQP broker, but nothing on the underlying operating system. @@ -329,7 +329,7 @@

                          Privileged System Access -

                          Glossary

                          +

                          Glossary

                          Sarracenia documentation uses a number of words in a particular way. This glossary should make it easier to understand the rest of the documentation.

                          diff --git a/Explanation/DetectFileReady.html b/Explanation/DetectFileReady.html index 93387b8f3..806793b0f 100644 --- a/Explanation/DetectFileReady.html +++ b/Explanation/DetectFileReady.html @@ -8,9 +8,9 @@ - + - + @@ -121,7 +121,7 @@ }
                          -

                          File Detection Strategies

                          +

                          File Detection Strategies

                          The fundamental job of sr_watch is to notice when files are available to be transferred. The appropriate strategy varies according to:

                          @@ -143,7 +143,7 @@

                          File Detection Strategies -

                          File Detection Strategy Table

                          +

                          File Detection Strategy Table

                          Table 1: The Algorithm for All ComponentsTable 1: The Algorithm for All Components

                          PHASE

                          DESCRIPTION

                          Table 2: How Each Component Uses the Flow AlgorithmTable 2: How Each Component Uses the Flow Algorithm

                          Component

                          Use of the algorithm

                          File Detection Strategies (Order: Fastest to Slowest ) @@ -427,7 +427,7 @@

                          File Detection Strategy Table -

                          SHIM LIBRARY USAGE

                          +

                          SHIM LIBRARY USAGE

                          Rather than invoking a sr3_post to post each file to publish, one can have processes automatically post the files they right by having them use a shim library intercepting certain file i/o calls to libc and the kernel. To activate the shim library, in the shell environment add:

                          @@ -456,7 +456,7 @@

                          SHIM LIBRARY USAGE -

                          Shim Usage Notes

                          +

                          Shim Usage Notes

                          This method of notification does require some user environment setup. The user environment needs to the LD_PRELOAD environment variable set prior to launch of the process. Complications that remain as we have @@ -491,7 +491,7 @@

                          Shim Usage Notes -

                          Rename Processing

                          +

                          Rename Processing

                          It should be noted that file renaming is not as simple in the mirroring case as in the underlying operating system. While the operation is a single atomic one in an operating system, when using notifications, there are accept/reject cases that create four possible effects.

                          diff --git a/Explanation/DuplicateSuppression.html b/Explanation/DuplicateSuppression.html index 66a1fa632..394eccf69 100644 --- a/Explanation/DuplicateSuppression.html +++ b/Explanation/DuplicateSuppression.html @@ -8,9 +8,9 @@ - + - + @@ -128,7 +128,7 @@ }
                          -

                          Duplicate Suppression

                          +

                          Duplicate Suppression

                          When forwarding products in networks, one needs to avoid storms or loops of data transmission, where the same data circulates infinitely in the network, (for example: A sends a file to B, B sends it to C, C sends it back to A. If A sends it to B again, we have an infinite loop or storm if the volume is large enough. )

                          @@ -163,14 +163,14 @@

                          Duplicate SuppressionWhen supplied a number, that indicates the lifetime, in seconds of entries in the duplicate suppresion memory (e.g. 300 seconds == 5 minutes.)

                          -

                          Standard (path and data oriented)

                          +

                          Standard (path and data oriented)

                          method: when products have the same key and path, they are duplicates.

                          Two routes can receive the same product, with the same relative path. In normal processing, the products should be identical, and Identity checksums for it should be the same,

                          FIXME: the normal case when multiple intervening pumps.

                          -

                          Data Oriented

                          +

                          Data Oriented

                          method: when products the same key, they are duplicates.

                          in the config file either:

                          nodupe_basis data
                          @@ -189,7 +189,7 @@ 

                          Data Oriented -

                          Name Oriented

                          +

                          Name Oriented

                          method: when products have the same file name, they are duplicates.

                          In the config file, either:

                          nodupe_basis data
                          @@ -204,7 +204,7 @@ 

                          Name Oriented -

                          URP

                          +

                          URP

                          Radar production is done, in one case, on many different (6? ) operational servers producing “identical” products. They are identical in the sense that they are based on the same input, and have the same semantic meaning, but details of processing mean that none of @@ -216,7 +216,7 @@

                          URP

                          -

                          Files That Change Too Often (mdelaylatest)

                          +

                          Files That Change Too Often (mdelaylatest)

                          method: wait until file is x seconds old before forwarding.

                          NOTE: This is an additional filter to duplicate suppression, and the above methods can be used in conjunction with mdelaylatest. this filter is ideally @@ -238,7 +238,7 @@

                          Files That Change Too Often (mdelaylatest) -

                          Weatheroffice citypages

                          +

                          Weatheroffice citypages

                          ( https://hpfx.collab.science.gc.ca/YYYYMMDD/WXO-DD/citypage_weather/ )

                          The citypages are a compound product (derived from many separate upstream products.) The script that creates the citypage products seems to write a header, then some records, @@ -247,7 +247,7 @@

                          Weatheroffice citypages

                          -

                          HPC mirrorring

                          +

                          HPC mirrorring

                          In the high speed mirroring of data between high performance computing clusters, shell scripts often spend time appending records to files, perhaps hundreds of times per second. Once the script is complete, the file becomes read-only for consumers. It is not useful @@ -258,7 +258,7 @@

                          HPC mirrorring -

                          Files That are Too Old

                          +

                          Files That are Too Old

                          method: files that are too old are dropped.

                          in the configuration file:

                          nodupe_fileAgeMax 600
                          @@ -269,7 +269,7 @@ 

                          Files That are Too Old

                          -

                          Roll Your Own

                          +

                          Roll Your Own

                          In the configuration file:

                          your_settings
                           flowcb_prepend your_class.YourClass
                          diff --git a/Explanation/FileCompletion.html b/Explanation/FileCompletion.html
                          index 0d36cd73e..ae87db5e2 100644
                          --- a/Explanation/FileCompletion.html
                          +++ b/Explanation/FileCompletion.html
                          @@ -8,9 +8,9 @@
                                 
                                 
                             
                          -        
                          +        
                                   
                          -        
                          +        
                                   
                               
                               
                          @@ -117,14 +117,14 @@
                           }
                           
                           
                          -

                          Delivery Completion (inflight)

                          +

                          Delivery Completion (inflight)

                          Failing to properly set file completion protocols is a common source of intermittent and difficult-to-diagnose file transfer issues. For reliable file transfers, it is critical that both the sender and receiver agree on how to represent a file that isn’t complete. The inflight option (meaning a file is in flight between the sender and the receiver) supports many protocols appropriate for different situations:

                          -

                          Inflight Table

                          +

                          Inflight Table

                          @@ -235,7 +235,7 @@

                          Inflight Table -

                          Frequent Configuration Errors

                          +

                          Frequent Configuration Errors

                          Setting NONE when sending to Sundew.

                          The proper setting here is ‘.tmp’. Without it, almost all files will get through correctly, diff --git a/Explanation/Glossary.html b/Explanation/Glossary.html index b9f9b4d2c..193a14c62 100644 --- a/Explanation/Glossary.html +++ b/Explanation/Glossary.html @@ -8,9 +8,9 @@ - + - + @@ -130,11 +130,11 @@ }

                          -

                          Glossary

                          +

                          Glossary

                          Sarracenia documentation uses a number of words in a particular way. This glossary should make it easier to understand the rest of the documentation.

                          -

                          AMQP

                          +

                          AMQP

                          AMQP is the Advanced Message Queuing Protocol, which emerged from the financial trading industry and has gradually matured. Implementations first appeared in 2007, and there are now several open source ones. AMQP implementations are not JMS plumbing. JMS standardizes the API programmers use, but not the on-the-wire protocol. So @@ -155,7 +155,7 @@

                          AMQP that time, the application will rely on pre-1.0 standard message brokers, such as rabbitmq.

                          -

                          Back Pressure

                          +

                          Back Pressure

                          When a data pumping node is experiencing high latency, it is best not bring in more data at high rate and worsen the overload. Instead, one should refrain from accepting messages from the node so that upstream ones maintain queues, and other, less busy nodes can take @@ -170,23 +170,23 @@

                          Back Pressure -

                          Dataless Pumps

                          +

                          Dataless Pumps

                          There are some pumps that have no transport engine, they just mediate transfers for other servers, by making notification messages available to clients and servers in their network area.

                          -

                          Dataless Transfers

                          +

                          Dataless Transfers

                          Sometimes transfers through pumps are done without using local space on the pump.

                          -

                          Latency

                          +

                          Latency

                          Time from the insertion of data into a network (the time the notification message about a file is first published) to the time it is made available on an end point. We want to minimize latency in transfers, and high latency can indicate configuration or capacity issues.

                          -

                          MQTT

                          +

                          MQTT

                          The Message Queue Telemetry Transport (MQTT) version 5 is a second Message Queueing protocol with all the features necessary to support sarracenia’s data exchange patterns.

                            @@ -196,12 +196,12 @@

                            MQTT

                          -

                          Network Maps

                          +

                          Network Maps

                          Each pump should provide a network map to advise users of the known destination that they should advertise to send to. FIXME undefined so far.

                          -

                          Post, Notice, Notification, Advertisement, Announcement

                          +

                          Post, Notice, Notification, Advertisement, Announcement

                          These are AMQP messages build by sr_post, sr_poll, or sr_watch to let users know that a particular file is ready. The format of these AMQP messages is described by the sr_post(7) manual page. All of these @@ -210,7 +210,7 @@

                          Post, Notice, Notification, Advertisement, Announcement

                          -

                          Pump

                          +

                          Pump

                          A pump is a host running Sarracenia, either a rabbitmq AMQP server or an MQTTT one such as mosquitto. The notification message queueing middleware is called a broker. The pump has administrative users and manage the MQP broker @@ -230,13 +230,13 @@

                          Pump

                          -

                          Pumping Network

                          +

                          Pumping Network

                          A number of interconnects servers running the sarracenia stack. Each stack determines how it routes items to the next hop, so the entire size or extent of the network may not be known to those who put data into it.

                          -

                          Report messages

                          +

                          Report messages

                          These are AMQP messages (in sr_post(7) format, with _report_ field included) built by consumers of messages, to indicate what a given pump or subscriber decided to do with a message. They conceptually flow in the @@ -245,7 +245,7 @@

                          Report messages -

                          Source

                          +

                          Source

                          Someone who wants to ship data to someone else. They do that by advertising a trees of files that are copied from the starting point to one or more pumps in the network. The notification message sources produced tell others exactly where @@ -257,13 +257,13 @@

                          Source

                          -

                          Subscribers

                          +

                          Subscribers

                          are those who examine notification messages about files that are available, and download the files they are interested in.

                          Subscribers use subscribe(1)

                          -

                          Sundew

                          +

                          Sundew

                          MetPX Sundew is the ancestor of Sarracenia. It is a pure TCP/IP WMO 386 oriented data pump. The configuration files look similar, but the routing algorithms and concepts are quite different. MetPX is a push-only @@ -272,7 +272,7 @@

                          SundewMore History

                          -

                          WMO

                          +

                          WMO

                          The World Meteorological Organization, is a part of the United Nations that has the weather and environmental monitoring, prediction, and alerting services of each country as members. For many decades, there has been a real-time exchange of weather data between countries, often even in times of war. The standards diff --git a/Explanation/History/Evolution.html b/Explanation/History/Evolution.html index 3c4ce6704..56f4c4017 100644 --- a/Explanation/History/Evolution.html +++ b/Explanation/History/Evolution.html @@ -8,9 +8,9 @@ - + - + @@ -130,7 +130,7 @@ }

                          -

                          History/Context of Sarracenia

                          +

                          History/Context of Sarracenia

                          MetPX-Sarracenia is a product of the Meteorological Product Exchange Project, originated in Environment Canada, but now run by Shared Services Canada on their behalf. The project started in 2004, with the goal of providing a free stack that @@ -156,7 +156,7 @@

                          History/Context of Sarracenia -

                          dd_subscribe Renaming

                          +

                          dd_subscribe Renaming

                          The new project (MetPX-Sarracenia) has many components, is used for more than distribution, and more than one website, and causes confusion for sysadmins thinking it is associated with the dd(1) command (to convert and copy files). So, components @@ -199,7 +199,7 @@

                          dd_subscribe Renaming

                          -

                          Fewer Klocs, Better klocs

                          +

                          Fewer Klocs, Better klocs

                          Delivery Completion Protocols (in Order of Preference)

                          @@ -233,12 +233,12 @@

                          Fewer Klocs, Better klocs -

                          Deployments/Use Cases

                          +

                          Deployments/Use Cases

                          Deployment status in 2015: Sarracenia in 10 Minutes Video (5:26 in)

                          Deployment status in 2018: Deployments as of January 2018

                          -

                          Project Website

                          +

                          Project Website

                          Prior to March 2018, the primary web-site for the project was metpx.sf.net. That MetPX website was built from the documentation in the various modules in the project. It builds using all .rst files found in @@ -258,7 +258,7 @@

                          Project Websitehttps://metpx.github.io/sarracenia ) is updated by a github workflow on each commit.

                          -

                          Updating The sf.net Website

                          +

                          Updating The sf.net Website

                          Only the index-e.html and index-f.html pages are used on the sf.net website today. Unless you want to change those pages, this operation is useless. For all other pages, the links go directly into the various .rst files on diff --git a/Explanation/History/HPC_Mirroring_Use_Case.html b/Explanation/History/HPC_Mirroring_Use_Case.html index f541387dc..65abb33bb 100644 --- a/Explanation/History/HPC_Mirroring_Use_Case.html +++ b/Explanation/History/HPC_Mirroring_Use_Case.html @@ -8,9 +8,9 @@ - + - + @@ -127,11 +127,11 @@ }

                          -

                          Case Study: HPC Mirroring

                          +

                          Case Study: HPC Mirroring

                          -

                          Continuously Mirror 27 Million File Tree Very Quickly

                          +

                          Continuously Mirror 27 Million File Tree Very Quickly

                          -

                          Summary

                          +

                          Summary

                          This project has taken longer than expected, over three years, as the problem space was explored with the help of a very patient client while the tool to design and implement the efficient solution was eventually settled on. The client asked for a solution to make files available on the backup cluster within five @@ -156,7 +156,7 @@

                          Summary -

                          Problem Statement

                          +

                          Problem Statement

                          In November 2016, Environment and Climate Change Canada’s (ECCC) Meteorological Service of Canada (MSC), as part of the High Performance Computing Replacement (HPCR) project asked for very large directory trees to be mirrored in real-time. Shared Services Canada (SSC) had primary responsibility for deployment @@ -174,7 +174,7 @@

                          Problem Statement -

                          HPCR Solution Overview

                          +

                          HPCR Solution Overview

                          ../../_images/HPC-XC_High_Availability.png

                          In the diagram above, if operations are in Data Hall 1 (left of centre) and they fail, then the goal is to resume operations promptly from Data Hall 2 (on the right). For this to be realistic, production data must be available @@ -183,7 +183,7 @@

                          HPCR Solution Overview

                          -

                          Continuous Mirroring

                          +

                          Continuous Mirroring

                          There is a pair of clusters running these simulations, one normally mostly working on operations, and the other as a spare (running only research and development loads). When the primary fails, the intent is to run operations on the other supercomputer, using a spare disk to which all the @@ -222,7 +222,7 @@

                          Continuous Mirroring

                          -

                          Reading the Tree Takes Too Long

                          +

                          Reading the Tree Takes Too Long

                          One could just scan at a higher level in order to scan a single parent directory, but the half-dozen sub-trees trees were picked in order to have smaller ones which worked more quickly, regardless of the method being used to obtain lists of new files. What do we mean when we say these trees are too large? @@ -246,7 +246,7 @@

                          Reading the Tree Takes Too Long -

                          Detection Methods: Inotify, Policy, SHIM

                          +

                          Detection Methods: Inotify, Policy, SHIM

                          There is a Linux kernel feature known as INOTIFY, which can trigger an event when a file is modified. By setting an INOTIFY trigger on every directory in the tree, we can be notified when any file is modified in the tree. This was the initial approach taken. It turns out (in January 2017), that INOTIFY is indeed a @@ -286,7 +286,7 @@

                          Detection Methods: Inotify, Policy, SHIM -

                          Shim Library

                          +

                          Shim Library

                          The method settled on for notification is a shim library When a running application makes calls to API entry points that are provided by libraries or the kernel, there is a search process (resolved at application @@ -303,7 +303,7 @@

                          Shim Library -

                          Copying Files

                          +

                          Copying Files

                          It needs to be noted that while all of this work was progressing on the ‘obtain the list of files to be copied’ part of the problem, we were also working on the ‘copy the files to the other side’ part of the problem. Over the summer, results of performance tests and other @@ -342,7 +342,7 @@

                          Copying Files -

                          Shim Library Necessary

                          +

                          Shim Library Necessary

                          Unfortunately, the mirroring between sites was running with about a 10-minute lag on the source files system (about 30 times faster than a naive rsync approach), and was only working in principle, with many files missing in practice, it wasn’t usable for its intended purpose. The operational commissioning of the @@ -362,7 +362,7 @@

                          Shim Library Necessary

                          -

                          Does it Work?

                          +

                          Does it Work?

                          In December 2017, the software for the libsrshim approach looked ready, it was deployed in some small parallel (non-operational runs). Testing in parallel runs started in January 2018. There were many edge cases, and testing continued for two years, until finally being ready for deployment in December 2019. I

                          @@ -393,7 +393,7 @@

                          Does it Work? -

                          Is it Fast?

                          +

                          Is it Fast?

                          The GPFS-policy runs are the still the method in use operationally as this is written (2018/01). The performance numbers given in the summary are taken from the logs of one day of GPFS-policy runs.

                          @@ -524,7 +524,7 @@

                          Is it Fast? -

                          Overheads

                          +

                          Overheads

                          What is the effect on user jobs of putting the shim library in service? When used in large models with good i/o patterns necessary for high performance, the overhead added by the shim library can be negligeable. @@ -543,7 +543,7 @@

                          Overheads -

                          Contributions

                          +

                          Contributions

                          Dominic Racette - ECCC CMC Operations Implementation

                          Client lead on the mirroring project. A lot of auditing and running of tests. diff --git a/Explanation/History/deployment_2018.html b/Explanation/History/deployment_2018.html index 0ae3b80aa..b03f29ccf 100644 --- a/Explanation/History/deployment_2018.html +++ b/Explanation/History/deployment_2018.html @@ -8,9 +8,9 @@ - + - + @@ -135,7 +135,7 @@ }

                          -

                          Sarracenia Status January 2018

                          +

                          Sarracenia Status January 2018

                          [ version française ]

                          Sarracenia is a small application iteratively developed by addressing one use case at a time, so development and deployment have been inextricably linked up @@ -164,7 +164,7 @@

                          Sarracenia Status Jan
                          -

                          Comparison to 2015 Video

                          +

                          Comparison to 2015 Video

                          The November 2015 video ( Sarracenia in 10 Minutes ) outlined a vision. First phase of development work occurred in 2015 and early 2016, followed by important deployments later in 2016. This update, @@ -204,7 +204,7 @@

                          Comparison to 2015 Vi

                          Details to follow.

                          -

                          Central Data Flows

                          +

                          Central Data Flows

                          The slide below corresponds to deployed daily data flows in support of Environment Canada, mostly for operational weather forecasting, in place since January 2018.

                          @@ -227,7 +227,7 @@

                          Central Data Flows

                          -

                          Weather Application Flows

                          +

                          Weather Application Flows

                          FIXME: picture?

                          There is a number (perhaps a dozen?) of older applications (the most prominent ones being BULLPREP and Scribe) used for decades in the Storm Prediction Centres @@ -242,14 +242,14 @@

                          Weather Application F application work needed at all.

                          -

                          GOES-R Acquisition

                          +

                          GOES-R Acquisition

                          Acquisition of simulated and real GOES-R products from NOAA’s PDA, as well as via local downlinks at one location (eventually to become two) was entirely mediated by Sarracenia. The operational deployment of GOES-R happened in the first week of January, 2018.

                          -

                          HPC Acquisition Feeds

                          +

                          HPC Acquisition Feeds

                          FIXME: picture?

                          The supercomputing environment was entirely replaced in 2017. As part of that, the client Environmental Data acquisition suite (ADE in French) was @@ -259,7 +259,7 @@

                          HPC Acquisition Feeds improved as a result.

                          -

                          RADAR Data Flows

                          +

                          RADAR Data Flows

                          If we begin with RADAR data acquisition as an example, individual RADAR systems use FTP and/or SFTP to send files to eastern and western communications hubs. Those hubs run the directory watching component (sr_watch) and determine @@ -283,13 +283,13 @@

                          RADAR Data Flows< and very little integration is needed.

                          -

                          HPC Mirroring

                          +

                          HPC Mirroring

                          All through 2017, work was proceeding to implement high speed mirroring between the supercomputer site stores to permit failover. That work is now in a final deployment phase, and should be in operations by spring 2018. For more details see: HPC Mirroring Use Case

                          -

                          Application Changes in 2017

                          +

                          Application Changes in 2017

                          Development of Sarracenia had been exploratory over a number of years. The use cases initially attacked were those with a high degree of expert involvement. It proceeded following the minimum viable product (MVP) model for each use case, acquiring features to deal with next use case prior to deployment. In 2016, @@ -344,7 +344,7 @@

                          Application Changes i intervention in operations.

                          -

                          Coming in 2018

                          +

                          Coming in 2018

                          As of release 2.18.01a5, all of the use cases targeted have been explored and reasonable solutions are available, so there should be no further changes to the existing configuration language or options. No changes to existing diff --git a/Explanation/History/index.html b/Explanation/History/index.html index 59cc070a5..9ed5e9d0b 100644 --- a/Explanation/History/index.html +++ b/Explanation/History/index.html @@ -8,9 +8,9 @@ - + - + @@ -123,7 +123,7 @@ }

                          -

                          History

                          +

                          History

                          Contents:

                          -

                          Executive Summary

                          +

                          Executive Summary

                          Over the past decade, the World Meteorological Organization (WMO) Information Service WIS Part 1 has implemented meta data catalogues for some world-wide meteorological datasets. In WIS-DAR, Discovery, Access, and Retrieval, @@ -228,7 +228,7 @@

                          Executive Summary

                          -

                          GTS was Designed Long Ago

                          +

                          GTS was Designed Long Ago

                          ../../_images/gtsstructureL.png

                          The World Meteorological Organization (WMO) Information Service (WIS)’s Global Telecommunications System (GTS) is the WMO’s accepted method to circulate @@ -258,7 +258,7 @@

                          GTS was Designed Long unnecessarily.

                          -

                          GTS is Limited & Inflexible

                          +

                          GTS is Limited & Inflexible

                          ../../_images/GTS_Routing.jpg

                          In the traditional GTS, when new data is made available by a National Meteorological Centre (NMC), it needs to issue notices, and likely discuss with @@ -323,7 +323,7 @@

                          GTS is Limited &

                          -

                          Databases are Optimal for Fixed Sized Records. No One Uses Them That Way

                          +

                          Databases are Optimal for Fixed Sized Records. No One Uses Them That Way

                          There are typically two major schools of thought on meteorological data storage: Files and Databases. For many years, data was relatively small, there were relatively few datatypes, and they fit in small databases and @@ -352,7 +352,7 @@

                          Databases are Optimal items stored in files.

                          -

                          Internet Push is a Poor Fit for Large Feeds

                          +

                          Internet Push is a Poor Fit for Large Feeds

                          So called Push technologies are actually Pull. A client asks a server if they have new data available for them. The server responds with the list of new data available, then the client pulls the data. This means that an entity @@ -378,7 +378,7 @@

                          Internet Push is a P and are not easily inspected by anyone but the database administrator.

                          -

                          Store And Forward is Often Better in Practice

                          +

                          Store And Forward is Often Better in Practice

                          “Store and Forward” is a term we will use here to denote technologies that deal with data on receipt, in contrast to simply storing the data and awaiting clients’ polls. Real-time systems such as the GTS get around the @@ -455,7 +455,7 @@

                          Store And Forward is network, which will automatically be used in the event of node failure.

                          -

                          With AMQP Notices on a Standard File Server

                          +

                          With AMQP Notices on a Standard File Server

                          Several robust and mature protocols and software stacks are available for many data transport protocols: FTP, HTTP, HTTP(S), SFTP. A file server, as a means of Transporting data is a solved problem with many solutions available from @@ -505,7 +505,7 @@

                          With AMQP Notices on

                          -

                          And an Agreed Directory Tree

                          +

                          And an Agreed Directory Tree

                          Similar to the choice of indices in databases, efficiency of exchange in file servers depends critically on balancing the hierarchy in terms of numbers of files per directory. A hierarchy which ensures less than 10,000 files per directory performs @@ -607,7 +607,7 @@

                          And an Agreed Direct node feeds.

                          -

                          Simple/Scalable Peer Configurations for Nations

                          +

                          Simple/Scalable Peer Configurations for Nations

                          ../../_images/WMO_mesh.png

                          Assume a mesh of national nodes with arbitrary connectivity among them. Nodes download from the first neighbour to advertise data, transfers @@ -655,7 +655,7 @@

                          Simple/Scalable Peer resort to WMO specific standards.

                          -

                          Using An Open Reference Stack

                          +

                          Using An Open Reference Stack

                          ../../_images/A2B_oldtech.png

                          A sample national mesh node (Linux/UNIX most likely) configuration would include the following elements:

                          @@ -689,7 +689,7 @@

                          Using An Open Refere lightly loaded).

                          -

                          Maturity

                          +

                          Maturity

                          For Canada, this is not an experimental project beside other initiatives. Sarracenia is the focus of around a decade of work and the core of currently operational data pumping. It is in operational use to transfer @@ -805,7 +805,7 @@

                          MaturityFor more information: Deployments as of January 2018

                          -

                          Statelessness/Crawlable

                          +

                          Statelessness/Crawlable

                          As the file servers in question present static files, transactions with the proferred stack are completely stateless. Search engines crawl such trees easily, and, given critical mass, one could arrange with search @@ -814,7 +814,7 @@

                          Statelessness/Crawla work or cost as they are inherent to the technologies proposed.

                          -

                          Programmability/Interoperability

                          +

                          Programmability/Interoperability

                          A new application to process sr_post messages can be re-implemented if there is a desire to do so, as in addition to full documentation, source code for a handful of implementations @@ -827,7 +827,7 @@

                          Programmability/Inte the work.

                          -

                          Priorities

                          +

                          Priorities

                          FIXME: Make a picture, with separate queues for separate data types?

                          In WMO GTS, data is segregated into alphanumeric vs. binary data, and within a single flow, a priority mechanism was available, whose implementation was not @@ -848,7 +848,7 @@

                          Priorities
                          -

                          Inline Content in Messages

                          +

                          Inline Content in Messages

                          It is tempting to inline (or include) data within the AMQP messages for small data types. The hope is that we avoid a connection initiation and an extra round-trip. The typical example would be weather warnings. @@ -961,7 +961,7 @@

                          Inline Content in Me

                          -

                          Caveat: Solution for This Problem, Not Every Problem

                          +

                          Caveat: Solution for This Problem, Not Every Problem

                          AMQP brokers work well, with the sarracenia implementations at the Canadian meteorological service, they are used for tens of millions of file transfers for a total of 30 terabytes per day. Adoption is still limited as it is more diff --git a/Explanation/History/messages_v01.html b/Explanation/History/messages_v01.html index 65a70d8cc..7129d7be6 100644 --- a/Explanation/History/messages_v01.html +++ b/Explanation/History/messages_v01.html @@ -8,9 +8,9 @@ - + - + @@ -128,7 +128,7 @@ }

                          -

                          Message v01 Format

                          +

                          Message v01 Format

                          Status: Approved-Draft1-20150805

                          Description of the message protocol / format.

                          This file documents final conclusions/proposals, reasoning/debates goes elsewhere.

                          @@ -324,7 +324,7 @@

                          Message v01 Format -

                          Log messages

                          +

                          Log messages

                          Log message contains:

                          is only emitted after processing is completed, to indicate a final status.

                          topic matches notification message message except…

                          @@ -336,7 +336,7 @@

                          Log messages -

                          CFG messages

                          +

                          CFG messages

                          just a place holder.

                          really not baked yet. thinking is in configuration.txt

                          v01.cfg

                          diff --git a/Explanation/History/messages_v02.html b/Explanation/History/messages_v02.html index 0f9c75ae4..efbb56841 100644 --- a/Explanation/History/messages_v02.html +++ b/Explanation/History/messages_v02.html @@ -8,9 +8,9 @@ - + - + @@ -125,7 +125,7 @@

                          Status: Approved-Draft2-20150825

                          -

                          Description of the message v02 protocol / format

                          +

                          Description of the message v02 protocol / format

                          This file was used during the design phase, but post-implementation, it is replaced by the sr_post(7) manual page.

                          This file documents final conclusions/proposals, reasoning/debates diff --git a/Explanation/History/messages_v03.html b/Explanation/History/messages_v03.html index 964335b7e..a988b2aba 100644 --- a/Explanation/History/messages_v03.html +++ b/Explanation/History/messages_v03.html @@ -8,9 +8,9 @@ - + - + @@ -127,11 +127,11 @@ }

                          -

                          Changes Made to create v03

                          +

                          Changes Made to create v03

                          Actual format is defined here An explanation of motivation of the changes is below:

                          -

                          Changes from v02

                          +

                          Changes from v02

                          Version 03 is a change in encoding, but the semantics of the fields are unchanged from version 02. Changes are limited to how the fields are placed in the messages. In v02, AMQP headers were used to store name-value diff --git a/Explanation/History/sr3_Announcement.html b/Explanation/History/sr3_Announcement.html index 4235622aa..94732ec4c 100644 --- a/Explanation/History/sr3_Announcement.html +++ b/Explanation/History/sr3_Announcement.html @@ -8,9 +8,9 @@ - + - + @@ -124,7 +124,7 @@ }

                          -

                          Announcing Sr3

                          +

                          Announcing Sr3

                          After two years of development, on 2022/04/11, we are pleased to announce the availability of the first beta version of Sarracenia version 3: Sr3. To celebrate the release, there is a new web-site with in depth information:

                          diff --git a/Explanation/History/talks/SarraIntro/README.html b/Explanation/History/talks/SarraIntro/README.html index 4d6734ff9..fa35ef7d8 100644 --- a/Explanation/History/talks/SarraIntro/README.html +++ b/Explanation/History/talks/SarraIntro/README.html @@ -8,9 +8,9 @@ - + - + diff --git a/Explanation/Overview.html b/Explanation/Overview.html index a92e508f8..85ed5a8cb 100644 --- a/Explanation/Overview.html +++ b/Explanation/Overview.html @@ -8,9 +8,9 @@ - + - + @@ -107,14 +107,14 @@ }
                          -

                          Overview

                          +

                          Overview

                          MetPX-Sarracenia is a publication/subscription management toolkit for publication of real-time data.

                          Sarracenia adds a message queueing protocol layer of file availability notifications to file and web servers to drive workflows that transfer and transform data continuously in a real-time and mission-critical context.

                          A main goal of the toolkit is to link together processes so that they avoid having to poll (repeatedly query, list, and then filter) servers or directories. Sarracenia can also be used to implement an initial upstream poll, which is still win because tasks beyond initial identification of the file to process can be driven by notifications, which are substantially cheaper (in i/o and processing) than polling even local directories.

                          This management layer provides simple methods to get parallellism in file transfers, robustness in the face of failures, load balancing among steps in a workflow, and takes care of many failure modes, so application developers do not need to. Hundreds of such flows can be composed together into large data pumps and operated using common methods familiar to Linux System Administrators.

                          Design Video from 2015: Sarracenia in 10 Minutes Video

                          -

                          Longer Overview

                          +

                          Longer Overview

                          MetPX-Sarracenia is a configuration file and command line driven service to download files as they are made available. One can subscribe to a Sarracenia enabled web server (called a data pump) and select data to stream from it, using linux, Mac, or Windows. More than that:

                          • It avoids people having to poll the web server to know if their data is there yet (can be 100x less work for client and server from just this).

                          • @@ -150,7 +150,7 @@

                            Longer Overview -

                            Implementations

                            +

                            Implementations

                            Part of Sarracenia defines an application layer message over AMQP as a transport. Sarracenia has multiple implementations:

                            • Sarracenia itself ( http://github.com/MetPX/sarracenia ) a complete reference implementation in Python >= 3.4. It runs on Linux, Mac, and Windows.

                            • @@ -162,7 +162,7 @@

                              Implementations -

                              Why Not Just Use Rsync?

                              +

                              Why Not Just Use Rsync?

                              There are a number of tree replication tools that are widely used, why invent another? RSync, for example is a fabulous tool, and we recommend it highly for many use cases. But there are times when Sarracenia can go 72 times faster than rsync: Case Study: HPC Mirroring Use Case

                              Rsync and other tools are comparison based (dealing with a single Source and Destination). Sarracenia, while it does not require or use multi-casting, is oriented towards delivery to multiple receivers, particularly when the source does not know who all the receivers are (pub/sub). Where rsync synchronization is typically done by walking a large tree, that means that the synchronization interval is inherently limited to the frequency at which you can do the file tree walks (in large trees, that can be a long time.) Each file tree walk reads the entire tree in order to generate signatures, so supporting larger numbers of clients causes @@ -173,11 +173,11 @@

                              Why Not Just Use Rsync?Caveat file segmentation was dropped. FIXME

                          -

                          Why No FTP?

                          +

                          Why No FTP?

                          The transport protocols fully supported by Sarracenia are http(s) and SFTP (SSH File Transfer Protocol). In many cases, when public data is being exchanged, FTP is a lingua franca that is used. The main advantage being relatively simple programmatic access, but that advantage is obviated by the use of Sarracenia itself. Further, these days, with increased security concerns, and with cpu instructions for encryption and multiple cores something of a cpu glut, it no longer makes much sense not to encrypt traffic. Additionally, to support multi-streaming, Sarracenia makes use of byte-ranges, which are provided by SFTP and HTTP servers, but not FTP. So we cannot support file partitioning on FTP. So while FTP sort-of-works, it is not now, nor ever will be, fully supported.

                          History of Data Pumping Applications for Environment Canada

                          -

                          DESTFNSCRIPTS

                          +

                          DESTFNSCRIPTS

                          As a compatibility layer with the ancestor MetPX Sundew, Sarracenia implements Destination File Naming Scripts, where the one can create a flowcallback class with a destfn entry point, and then use that to set the name of @@ -712,7 +712,7 @@

                          DESTFNSCRIPTS -

                          Callbacks that need Python Modules

                          +

                          Callbacks that need Python Modules

                          Some callbacks need to use other python modules. While normal imports are fine, one can integrate them better for sr3 users by supporting the features mechism:

                          @@ -765,7 +765,7 @@

                          Callbacks that need Python Modules -

                          Flow Callback Poll Customization

                          +

                          Flow Callback Poll Customization

                          A built-in subclass of flowcb, sarracenia.flowcb.poll.Poll implements the bulk of sr3 polling. There are many times different types resources to poll, and so many options to customize it are needed. Customization is accomplished @@ -829,7 +829,7 @@

                          Flow Callback Poll Customization -

                          Better File Reception

                          +

                          Better File Reception

                          For example, rather than using the file system, sr_subscribe could indicate when each file is ready by writing to a named pipe:

                          blacklab% sr_subscribe edit dd_swob.conf
                          @@ -865,7 +865,7 @@ 

                          Better File Reception

                          -

                          Advanced File Reception

                          +

                          Advanced File Reception

                          The after_work entry point in a sarracenia.flowcb class is an action to perform after receipt of a file (or after sending, in a sender.) The RxPipe module is an example provided with sarracenia:

                          @@ -921,7 +921,7 @@

                          Advanced File Reception
                          -

                          Using Credentials in Plugins

                          +

                          Using Credentials in Plugins

                          To implement support of additional protocols, one often needs credentials value in the script with the code :

                            @@ -944,7 +944,7 @@

                            Using Credentials in Plugins -

                            Why v3 API should be used whenever possible

                            +

                            Why v3 API should be used whenever possible

                            • uses importlib from python, much more standard way to register plugins. now syntax errors will be picked up just like any other python module being imported, @@ -979,7 +979,7 @@

                              Why v3 API should be used whenever possible -

                              File Notification Without Downloading

                              +

                              File Notification Without Downloading

                              If the data pump exists in a large shared environment, such as a Supercomputing Centre with a site file system, the file might be available without downloading. So just @@ -1009,7 +1009,7 @@

                              File Notification Without Downloading -

                              Extension Ideas

                              +

                              Extension Ideas

                              Examples of things that would be fun to do with plugins:

                          -

                          Accessing Messages from Python

                          +

                          Accessing Messages from Python

                          So far, we have presented methods of writing customizations of Sarracenia processing, where one writes extensions, via either callbacks or extension classes to change what sarracenia flow instances do.

                          diff --git a/Explanation/Sundew_Migration/filter_conversion.html b/Explanation/Sundew_Migration/filter_conversion.html index a8e7afa7a..356c5c32f 100644 --- a/Explanation/Sundew_Migration/filter_conversion.html +++ b/Explanation/Sundew_Migration/filter_conversion.html @@ -8,9 +8,9 @@ - + - + @@ -126,7 +126,7 @@ }
                          -

                          Sundew filter migration to sarracenia (PXATX)

                          +

                          Sundew filter migration to sarracenia (PXATX)

                          Manual section:

                          1

                          @@ -156,7 +156,7 @@

                          Sundew filter migrati
                          -

                          DESCRIPTION

                          +

                          DESCRIPTION

                          This document suppose that the reader is familiar with the concepts and usage of sundew and sarracenia.

                          sundew filters supports a plugin mechanism that allows processing onto @@ -178,7 +178,7 @@

                          DESCRIPTIONsr-sarra process.

                          -

                          ONE TO ONE FILTER

                          +

                          ONE TO ONE FILTER

                          I will present one way that I used to implement a one to one filter. There could be other alternatives… but this one worked nicely for me.

                          Lets go through the steps of making a one to one filter plugin. @@ -312,7 +312,7 @@

                          ONE TO ONE FILTER could be modified without having to modify all one to one filters.

                          -

                          CONSIDERATIONS WITH ONE TO ONE FILTERS

                          +

                          CONSIDERATIONS WITH ONE TO ONE FILTERS

                          I wrote some of the migrated filters and there are some considerations to be taken while implementing filters from sundew.

                          I have tried to make the less use of the sundew-extension but when @@ -341,7 +341,7 @@

                          CONSIDERATIONS WITH O to add (or update) to the extension a datetime suffix for the new products.

                          -

                          FINAL REMARKS ON ONE TO ONE FILTER

                          +

                          FINAL REMARKS ON ONE TO ONE FILTER

                          Usually a converter, say topng, will add the extension .png to the end product. This was not the case in sundew where the whatfn was kept as is but part of the sundew_extension was modified to show the new format.

                          @@ -360,7 +360,7 @@

                          FINAL REMARKS ON ONE

                          If part of this document needs to be clarified please let me know

                          -

                          ONE TO MANY FILTER

                          +

                          ONE TO MANY FILTER

                          I will present one way that I have used to implement a one to many filter. Most of what was said earlier in the one to one filter still holds. The configuration of such an sarra process follows the same rules. diff --git a/Explanation/Sundew_Migration/index.html b/Explanation/Sundew_Migration/index.html index 640a49ac9..84d7b0b88 100644 --- a/Explanation/Sundew_Migration/index.html +++ b/Explanation/Sundew_Migration/index.html @@ -8,9 +8,9 @@ - + - + @@ -118,7 +118,7 @@ }

                          -

                          Sundew Migration Guide

                          +

                          Sundew Migration Guide

                          Contents:

                          -

                          DESCRIPTION

                          +

                          DESCRIPTION

                          This document suppose that the reader is familiar with the concepts and usage of sundew and sarracenia.

                          sundew receiver supports a pull mechanism that allow querying a remote @@ -187,7 +187,7 @@

                          DESCRIPTION

                          -

                          METHODOLOGY

                          +

                          METHODOLOGY

                          I did this document using a very simple sundew pull receiver to make sure to put just the right amount of details.

                          First set up a conversion environment. Where sarracenia is downloaded, @@ -264,7 +264,7 @@

                          METHODOLOGY

                          -

                          SR_POLL CONFIG

                          +

                          SR_POLL CONFIG

                          The generated sr_poll config looks like this: cat BC_ENV_AQ_WAMR.conf:

                          #
                          @@ -373,7 +373,7 @@ 

                          SR_POLL CONFIG

                          -

                          SR_SARRA CONFIG

                          +

                          SR_SARRA CONFIG

                          The generated sr_sarra config looks like this: cat get_BC_ENV_AQ_WAMR.conf:

                          -

                          TESTING

                          +

                          TESTING

                          We install sr_poll BC_ENV_AQ_WAM.conf and sr_sarra get_BC_ENV_AQ_WAM.conf on DDSR_DEV. (on ddsr_dev, there are various things to modify. Setting xattr_disable true, changing ddsr.cmc for ddsr_dev.cmc, in broker… document_root option in senders and perhaps more)

                          Leave the processes running and check the right disposal/announcement of the products.

                          -

                          MIGRATING FILTERS

                          +

                          MIGRATING FILTERS

                          Will do another paper for sundew filters that become sr_sarra.

                          -

                          MIGRATING SENDER

                          +

                          MIGRATING SENDER

                          Will do another paper on how to migrate senders.

                          -

                          SEE ALSO

                          +

                          SEE ALSO

                          sr_poll(1) - post announcemensts of specific files.

                          sr_sarra(8) - Subscribe, Acquire, and ReAdvertise tool.

                          https://github.com/MetPX/ - sr_subscribe is a component of MetPX-Sarracenia, the AMQP based data pump.

                          diff --git a/Explanation/Sundew_Migration/sundew_sender_migration.html b/Explanation/Sundew_Migration/sundew_sender_migration.html index 35b1df0f9..48fe2bf8d 100644 --- a/Explanation/Sundew_Migration/sundew_sender_migration.html +++ b/Explanation/Sundew_Migration/sundew_sender_migration.html @@ -8,9 +8,9 @@ - + - + @@ -124,7 +124,7 @@ }
                          -

                          Sundew sender migration to sarracenia (PXATX)

                          +

                          Sundew sender migration to sarracenia (PXATX)

                          Manual section:

                          1

                          @@ -152,7 +152,7 @@

                          Sundew sender migrati
                          -

                          DESCRIPTION

                          +

                          DESCRIPTION

                          This document was written right after my presentation of August 8th. It will basically be a summary of what was said for the sundew sender migration part of it.

                          @@ -184,7 +184,7 @@

                          DESCRIPTION

                          -

                          SETUP

                          +

                          SETUP

                          Historically, after having poke the several clusters (sundew and sarra) with tools on data-lb-ops1 (under users px and sarra)… it was so annoying that I decided one day to get all the information available @@ -301,7 +301,7 @@

                          SETUP -

                          SUNDEW SENDER CONVERSION PROCESS

                          +

                          SUNDEW SENDER CONVERSION PROCESS

                          I cannot say for sure that all my tools get everything straight. Should you find better ways or modifications to do, dont hesitate.

                          For now, should you use them out of the box, here is how I would diff --git a/Explanation/index.html b/Explanation/index.html index 00329c52a..43c39eaed 100644 --- a/Explanation/index.html +++ b/Explanation/index.html @@ -8,9 +8,9 @@ - + - + @@ -112,7 +112,7 @@ }

                          -

                          Explanation

                          +

                          Explanation

                          Contents:

                            diff --git a/Explanation/sftps.html b/Explanation/sftps.html index 88e4319e5..725621505 100644 --- a/Explanation/sftps.html +++ b/Explanation/sftps.html @@ -8,9 +8,9 @@ - + - + @@ -123,7 +123,7 @@ }
                            -

                            Why SFTP is More Often Chosen than FTPS

                            +

                            Why SFTP is More Often Chosen than FTPS

                            There has been some discussion around where to place an S in order to secure file transfers. Among a variety of competing technologies, there are two that may appear fairly equivalent: SFTP and FTPS. Both of these @@ -138,7 +138,7 @@

                            Why SFTP is More Often Chosen than FTPS -

                            FTP

                            +

                            FTP

                            In the early days of the internet, before even the advent of the world-wide web, one of the earliest applications was file transfer, as first defined by the Internet Engineering Task @@ -160,7 +160,7 @@

                            FTP

                            -

                            Product Exchangers: Supporting Large Numbers of Transfers

                            +

                            Product Exchangers: Supporting Large Numbers of Transfers

                            In modern times, if one is transferring hundreds of thousands or millions of files, there will likely be a large number of network devices between Alice and Bob’s servers. The following diagram is a typical @@ -231,7 +231,7 @@

                            Product Exchangers: Supporting Large Numbers of Transfers -

                            FTPS

                            +

                            FTPS

                            FTPS - is FTP with Transport Level Security added to it. The control path is now encrypted, and thus not available to proxies on each of the firewalls and load balancers (such @@ -282,7 +282,7 @@

                            FTPS find a peer that prefers FTPS.

                            -

                            Cost

                            +

                            Cost

                            If one assumes that the control path alone can be intercepted, leaving the data path alone, then from the point of view of computational complexity, the control path, rather than simply passing packets through each NAT/PAT device @@ -312,7 +312,7 @@

                            Cost updates, need to maintain additional static maps, more firewall monitoring).

                            -

                            Functionality: Byte Ranges

                            +

                            Functionality: Byte Ranges

                            In addition to the much greater complexity of firewall support for FTPS, and the added load on expensive firewalls, there is also reduced functionality available when compared to newer protocols, @@ -324,7 +324,7 @@

                            Functionality: Byte Ranges -

                            Security/Vulnerability

                            +

                            Security/Vulnerability

                            FTPS, like FTP, is usually authenticated using passwords which are secret. If the peer in an exchange suffers an intrusion, the hash of the password, which can be used to obtain the password itself using so-called brute @@ -388,7 +388,7 @@

                            Security/Vulnerability

                            -

                            Reliability/Complexity

                            +

                            Reliability/Complexity

                            There are several modes of FTP: ascii/binary, active/passive, that create more cases to allow for. FTPS adds more cases: explicit/implicit to the number to allow for. Encryption can be enabled and disabled at various points in the control and data paths.

                            @@ -412,7 +412,7 @@

                            Reliability/Complexity

                            -

                            Summary

                            +

                            Summary

                            Either FTPS proxying is done in a fully general manner:

                            • the intervening devices must perform man-in-the-middle diff --git a/How2Guides/Admin.html b/How2Guides/Admin.html index 5d72b7d64..4ed4da31f 100644 --- a/How2Guides/Admin.html +++ b/How2Guides/Admin.html @@ -8,9 +8,9 @@ - + - + @@ -158,26 +158,26 @@ }

                              -

                              Administering AMQP Data Pumps

                              +

                              Administering AMQP Data Pumps

                              Note

                              FIXME: Missing sections are highlighted by FIXME. What is here is accurate.

                              -

                              Overview

                              +

                              Overview

                              Describes setup and operations of a MetPX-Sarracenia Data Pump using Rabbitmq as the message queueing protocol broker. For administration, most tasks are different, depending on the broker used. If using another broker, there needs to be another admin guide.

                              -

                              Pre-Requisites

                              +

                              Pre-Requisites

                              Ideally, one should be familiar with user-level access to existing pumps as either a subscriber or a source before proceeding to administration. This manual aims to be prescriptive, rather than explanatory. For the reasons why things are built as they are see Concepts.rst

                              -

                              Minimum Requirements

                              +

                              Minimum Requirements

                              The AMQP broker is extremely light on today’s servers. The examples in this manual were implemented on a commercial virtual private server (VPS) with 256 MB of RAM, and 700MB of swap taken from a 20 GByte disk. Such @@ -202,7 +202,7 @@

                              Minimum Requirements

                              -

                              Operations

                              +

                              Operations

                              To operate a pump, there needs to be a user designated as the pump administrator. The administrator is different from the others mostly in the permission granted to create arbitrary exchanges, and the ability to run processes that address the common @@ -242,7 +242,7 @@

                              Operations -

                              Housekeeping - sr_audit

                              +

                              Housekeeping - sr_audit

                              When a client connects to a broker, it creates a queue which is then bound to an exchange. The user can choose to have the client self-destruct when disconnected (auto-delete), or it can make it durable which means it should remain, waiting for the client to connect again, even across @@ -253,7 +253,7 @@

                              Housekeeping - sr_auditmax_queue_size 50000 in default.conf.

                              -

                              Excess Queueing/Performance

                              +

                              Excess Queueing/Performance

                              When rabbitmq has hundreds of thousands of notification messages queued, broker performance can suffer. Such accumulations can occur when the destination of a sender is down for a prolonged period, or a subscriber is unavailable for some reason. In many cases, one can simply shutdown the sender, @@ -282,7 +282,7 @@

                              Excess Queueing/Performance -

                              Routing

                              +

                              Routing

                              The inter-connection of multiple pumps is done, on the data side, by daisy-chaining sr_sarra and/or sr_sender configurations from one pump to the next.

                              The to_clusters, and source headers are used for routing decisions @@ -298,7 +298,7 @@

                              RoutingReports section for more details.

                              -

                              What is Going On?

                              +

                              What is Going On?

                              The sr_report command can be invoked to bind to ‘xreport’ instead of the default user exchange to get report information for an entire broker.

                              Canned sr_report configuration with an on_message action can be configured to @@ -312,7 +312,7 @@

                              What is Going On? -

                              Init Integration

                              +

                              Init Integration

                              By default, when sarracenia is installed, it is done as a user tool and not a system-wide resource. The tools/ sub-directory directory allows for integration with tools for different usage scenarios.

                              @@ -343,12 +343,12 @@

                              Init Integration -

                              Rabbitmq Setup

                              +

                              Rabbitmq Setup

                              Sample information on setting up a rabbitmq broker for sarracenia to use. The broker does not have to be on the same host as anything else, but there has to be one reachable from at least one of the transport engines.

                              -

                              Installation

                              +

                              Installation

                              Generally speaking, we want to stay above 3.x version.

                              https://www.rabbitmq.com/install-debian.html

                              Briefly:

                              @@ -360,7 +360,7 @@

                              Installation -

                              WebUI

                              +

                              WebUI

                              Basically, from a root shell one must:

                              rabbitmq-plugins enable rabbitmq_management
                               
                              @@ -370,7 +370,7 @@

                              WebUI interface for the management ui is suggested.

                              -

                              TLS

                              +

                              TLS

                              One should encrypt broker traffic. Obtaining certificates is outside the scope of these instructions, so it is not discussed in detail. For the purposes of the example, one method is to obtain certificates from letsencrypt

                              @@ -453,7 +453,7 @@

                              TLS

                              -

                              Change Defaults

                              +

                              Change Defaults

                              In order to perform any configuration changes the broker needs to be running. One needs to start up the rabbitmq broker. On older ubuntu systems, that would be done by:

                              service rabbitmq-server start
                              @@ -543,7 +543,7 @@ 

                              Change Defaults -

                              Managing Users on a Pump Using Sr_audit

                              +

                              Managing Users on a Pump Using Sr_audit

                              To set up a pump, one needs a broker administrative user (in the examples: sarra) and a feeder user (in the examples: feeder). Management of other users is done with the sr3 program.

                              @@ -683,7 +683,7 @@

                              Managing Users on a Pump Using Sr_audit -

                              First Subscribe

                              +

                              First Subscribe

                              When setting up a pump, normally the purpose is to connect it to some other pump. To set the parameters setting up a subscription helps us set parameters for sarra later. So first try a subscription to an upstream pump:

                              @@ -742,7 +742,7 @@

                              First Subscribe -

                              Sarra from Another Pump

                              +

                              Sarra from Another Pump

                              Sarra works by having a downstream pump re-advertise products from an upstream one. Sarra needs all the configuration of a subscription, but also needs the configuration to post to the downstream broker. The feeder account on the broker is used for this sort of work, and is a semi-administrative user, able to publish data to any exchange. Assume apache is set up (not covered here) with a @@ -826,7 +826,7 @@

                              Sarra from Another Pump

                              -

                              Reports

                              +

                              Reports

                              Now that data is flowing, we need to take a look at the flow of report messages, which essentially are used by each pump to tell upstream that data has been downloaded. Sr_audit helps with routing by creating the following configurations:

                              @@ -928,7 +928,7 @@

                              Reports -

                              Sarra From a Source

                              +

                              Sarra From a Source

                              When reading posts directly from a source, one needs to turn on validation. FIXME: example of how user posts are handled.

                              @@ -941,7 +941,7 @@

                              Sarra From a Source -

                              Cleanup

                              +

                              Cleanup

                              These are examples, the implementation of cleanup is not covered by sarracenia. Given a reasonably small tree as given above, it can be practical to scan the tree and prune the old files from it. A cron @@ -974,7 +974,7 @@

                              Cleanup -

                              Ensuring Things are Up

                              +

                              Ensuring Things are Up

                              Processes can crash. One can have automated restart by running sr3 sanity periodically:

                              root@boule:/etc/cron.d# more sanity
                               # remove files one hour after they show up.
                              @@ -985,26 +985,26 @@ 

                              Ensuring Things are Up

                              -

                              Startup

                              +

                              Startup

                              The Debian package installs a systemd unit, but python3 installation does not take care of that.

                              -

                              Sr_Poll

                              +

                              Sr_Poll

                              FIXME: feed the sarra from source configured with an sr_poll. set up.

                              -

                              Sr_winnow

                              +

                              Sr_winnow

                              FIXME: sample sr_winnow configuration explained, with some shovels also.

                              -

                              Sr_sender

                              +

                              Sr_sender

                              Where firewalls prevent use of sarra to pull from a pump like a subscriber would, one can reverse the feed by having the upstream pump explicitly feed the downstream one.

                              FIXME: elaborate sample sr_sender configuration.

                              -

                              Manually Adding Users

                              +

                              Manually Adding Users

                              To avoid the use of sr_admin, or work around issues, one can adjust user settings manually:

                              cd /usr/local/bin
                               wget -q https://boule.example.com:15671/cli/rabbitmqadmin
                              @@ -1032,7 +1032,7 @@ 

                              Manually Adding Users

                              -

                              Advanced Installations

                              +

                              Advanced Installations

                              On some configurations (we usually call them bunny), we use a clustered rabbitmq, like so:

                              /var/lib/rabbitmq/.erlang.cookie  same on all nodes
                               
                              @@ -1053,7 +1053,7 @@ 

                              Advanced Installations

                              -

                              Clustered Broker Keepalived Setup

                              +

                              Clustered Broker Keepalived Setup

                              In this example, bunny-op is a vip that migrates between bunny1-op and bunny2-op. Keepalived moves the vip between the two:

                              #=============================================
                              @@ -1091,7 +1091,7 @@ 

                              Clustered Broker Keepalived Setup -

                              LDAP Integration

                              +

                              LDAP Integration

                              To enable LDAP authentication for rabbitmq:

                              rabbitmq-plugins enable rabbitmq_auth_backend_ldap
                               
                              @@ -1134,7 +1134,7 @@ 

                              LDAP Integration -

                              Requires RABBITMQ > 3.3.x

                              +

                              Requires RABBITMQ > 3.3.x

                              Was searching on how to use LDAP strictly for password authentication The answer I got from the Rabbitmq gurus

                              On 07/08/14 20:51, michel.grenier@ec.gc.ca wrote:
                              @@ -1166,7 +1166,7 @@ 

                              Requires RABBITMQ > 3.3.x -

                              Support

                              +

                              Support

                              It is now possible to enable MQTT in Sarracenia through the RabbitMQ MQTT plugin. Here is a minimal howto guide for our RabbitMQTT support:

                              • After any other MQTT service listening to port 1883 got disabled, enable RabbitMQ MQTT plugin.:

                                @@ -1236,7 +1236,7 @@

                                Support -

                                Hooks from Sundew

                                +

                                Hooks from Sundew

                                This information is very likely irrelevant to almost all users. Sundew is another module of MetPX which is essentially being replaced by Sarracenia. This information is only useful to those with an installed based of Sundew wishing to bridge to sarracenia. The early work on Sarracenia used only the subscribe client as a downloader, and the existing WMO switch module @@ -1245,7 +1245,7 @@

                                Hooks from Sundew -

                                Notifications on DD

                                +

                                Notifications on DD

                                As a higher performance replacement for Atom/RSS feeds which tell subscribers when new data is available, we put a broker on our data dissemination server (dd.weather.gc.ca). Clients can subscribe to it. To create the notifications, we have one Sundew Sender (named wxo-b1-oper-dd.conf) with a send script:

                                diff --git a/How2Guides/Admin_Rabbit_Addendum.html b/How2Guides/Admin_Rabbit_Addendum.html index 02738682f..204a01751 100644 --- a/How2Guides/Admin_Rabbit_Addendum.html +++ b/How2Guides/Admin_Rabbit_Addendum.html @@ -8,9 +8,9 @@ - + - + @@ -129,16 +129,16 @@ }
                                -

                                Administering Rabbitmq Adddendum

                                +

                                Administering Rabbitmq Adddendum

                                Old edits people wanted to keep?

                                -

                                Introduction

                                +

                                Introduction

                                AMQP stands for Advanced Message Queuing Protocol. It is the definition of a protocol that comes from the need to standardize an asynchronous message change system. In AMQP jargon we will talk about message producers, message consumers and broker.

                                -

                                RABBITMQ-SERVER installation

                                +

                                RABBITMQ-SERVER installation

                                On our machines that need to process AMQP messages, we install the broker, by installing the package rabbitmq-server_3.3.5-1_all.deb. The basic installation is done as follows on all our machines:

                                @@ -187,7 +187,7 @@

                                RABBITMQ-SERVER installation -

                                RABBITMQ-SERVER cluster installation

                                +

                                RABBITMQ-SERVER cluster installation

                                On the bunny we have opted for a cluster installation. To do this we follow the following instructions:

                                Stop rabbitmq-server on all nodes....
                                 
                                @@ -211,7 +211,7 @@ 

                                RABBITMQ-SERVER cluster installation -

                                RABBITMQ-SERVER ldap installation

                                +

                                RABBITMQ-SERVER ldap installation

                                On the servers where we want to have an authentication using the following instructions:

                                rabbitmq-plugins enable rabbitmq_auth_backend_ldap
                                 
                                @@ -256,7 +256,7 @@ 

                                RABBITMQ-SERVER ldap installation -

                                Use of AMQP on DD (DDI, DD.BETA)

                                +

                                Use of AMQP on DD (DDI, DD.BETA)

                                We (Peter) wanted to do an implementation of AMQP in METPX. To do this, we use the python-amqplib library which implements the necessary functionality of AMQP in python. We have thus developped a pxSender of type amqp which is the producer of notification messages as well as a pxReceiver of type amqp which serves as a consumer of notification messages. @@ -267,7 +267,7 @@

                                Use of AMQP on DD (DDI, DD.BETA) -

                                Notifications for DD

                                +

                                Notifications for DD

                                We found in AMQP an opportunity to announce products when they arrive on DD. So a user instead of constantly verifying if a product is present on DD. To change it, he could subscribe (AMQP topic) to receive a message (the url of the product) that would be omitted only at the delivery of the product on DD. @@ -339,7 +339,7 @@

                                Notifications for DD

                                -

                                Utilities installed on DD servers

                                +

                                Utilities installed on DD servers

                                When a client connects to the broker (rabbitmq-server) it must create a queue and attach it to an exchange. We can give this queue the option that it self-destructs when it is no longer in use or that it is preserved and continues to stack products if the client is offline. In general, we would like the queue to be preserved and thus the connection resumption restarts the product collection without loss.

                                @@ -362,13 +362,13 @@

                                Utilities installed on DD servers -

                                Using AMQP with URP, BUNNY, PDS-OP

                                +

                                Using AMQP with URP, BUNNY, PDS-OP

                                Note

                                also applies to dev…

                                -

                                From URP-1/2 announce to BUNNY-OP that a product is ready

                                +

                                From URP-1/2 announce to BUNNY-OP that a product is ready

                                On urp-1/2 a metpx rolls the sender amqp_expose_db.conf which announces that a product has just arrived in the db of metpx with a message of the form:

                                Md5sum of product name           file-size  url                        dbname
                                 a985c32cbdee8af2ab5d7b8f6022e781 498081     http://urp-1.cmc.ec.gc.ca/ db/20150120/RADAR/URP/IWA/201501201810~~PA,60,10,PA_PRECIPET,MM_HR,MM:URP:IWA:RADAR:META::20150120180902
                                @@ -381,7 +381,7 @@ 

                                From URP-1/2 announce to BUNNY-OP that a product is ready -

                                BUNNY-OP and dd_dispatcher.py

                                +

                                BUNNY-OP and dd_dispatcher.py

                                bunny-op is a vip that lives on bunny1-op or bunny2-op. It is with keepalived that we make sure that this vip resides on one of the bunny-op. We also test that rabbitmq-server is running on the same server. @@ -427,7 +427,7 @@

                                BUNNY-OP and dd_dispatcher.pyv00.urp.input with the same md5sum as the first one, it is ignored, so the products announced from the exchange key v00.urp.notify are unique and represent the first arrival of the 2 operative URPs.

                                -

                                PDS-OP receptions of dispatch notification messages, wget of radar products

                                +

                                PDS-OP receptions of dispatch notification messages, wget of radar products

                                On pds-op, a pull_urp receiver, execute the fx_script pull_amqp_wget.py. In this script, the following command:

                                # shared queue : each pull receive 1 message (prefetch_count=1)
                                @@ -443,7 +443,7 @@ 

                                PDS-OP receptions of dispatch notification messages, wget of radar products<

                                the url is reb�ted from the last 2 fields of the message and a wget of the product is made and placed in the receiver queue which is then ignored/routed in an ordinary way.

                                -

                                Verification / Troubleshooting

                                +

                                Verification / Troubleshooting

                                In order of production

                                1. diff --git a/How2Guides/Email_Ingesting_With_Sarracenia.html b/How2Guides/Email_Ingesting_With_Sarracenia.html index f581f846d..f33a7b5e5 100644 --- a/How2Guides/Email_Ingesting_With_Sarracenia.html +++ b/How2Guides/Email_Ingesting_With_Sarracenia.html @@ -8,9 +8,9 @@ - + - + @@ -123,14 +123,14 @@ }
                                  -

                                  Email Ingesting with Sarracenia (v2)

                                  +

                                  Email Ingesting with Sarracenia (v2)

                                  Email is an easy way to route data between servers. Using the Post Office Protocol (POP3) and Internet Message Access Protocol (IMAP), email files can be disseminated through Sarracenia by extending the polling and downloading functions.

                                  -

                                  Polling

                                  +

                                  Polling

                                  -

                                  Extending Polling Protocols

                                  +

                                  Extending Polling Protocols

                                  Out of the box, Sarracenia supports polling pollUrl with HTTP/HTTPS and SFTP/FTP protocols. Other protocols can be supported by subclassing the sarracenia.flowcb.poll.Poll class. Fortunately there is an existing mail poll plugin, which invokes a plugin. @@ -179,7 +179,7 @@

                                  Extending Polling Protocols -

                                  Implementing POP/IMAP

                                  +

                                  Implementing POP/IMAP

                                  NOTE: not yet converted to v3.

                                  With Python’s poplib and imaplib modules, the pollUrl can be parsed and the email server connected to as per the scheme specified. Sarracenia can extract the credentials from the pollUrl @@ -239,7 +239,7 @@

                                  Implementing POP/IMAP

                                  -

                                  Downloading

                                  +

                                  Downloading

                                  The email messages, once retrieved, are formatted in raw Multipurpose Internet Mail Extensions (MIME) 1.0 format, as indicated in the first header of the file. The metadata of the email is conveyed in a series of headers, one per line, in name:value format. This can be parsed for attachments, message bodies, encoding methods, etc. A @@ -249,7 +249,7 @@

                                  Downloadingdownload_email_ingest.py.

                                  -

                                  Decoding Contents

                                  +

                                  Decoding Contents

                                  Once the email message is downloaded, an on_file plugin can parse the MIME formatted file and extract the attachment, usually denoted by the Content-Disposition header, or the message body/subject/address fields, to be saved as a new file for further data refining. An example of a plugin that does this can be found under plugins as file_email_decode.py. @@ -300,7 +300,7 @@

                                  Decoding Contents -

                                  Use Case

                                  +

                                  Use Case

                                  The email ingest plugins were developed for the short burst data use case, where information would arrive in message attachments. Previously the emails were downloaded with a fetchmail script, and a cronjob would run every once in a while to detect and decode new files and their email attachments, diff --git a/How2Guides/FlowCallbacks.html b/How2Guides/FlowCallbacks.html index eb6e0260d..df2521234 100644 --- a/How2Guides/FlowCallbacks.html +++ b/How2Guides/FlowCallbacks.html @@ -8,9 +8,9 @@ - + - + @@ -125,7 +125,7 @@ }

                                  -

                                  Writing FlowCallback Plugins

                                  +

                                  Writing FlowCallback Plugins

                                  All Sarracenia components implement the Flow algorithm. Sarracenia’s main class is sarracenia.flow and the a great deal of core functionality is implemented using the class created to add @@ -158,7 +158,7 @@

                                  Writing FlowCallback Plugins -

                                  Config File Entries to use Flow_Callbacks

                                  +

                                  Config File Entries to use Flow_Callbacks

                                  To add a callback to a a flow, a line is added to the config file:

                                  flowcb sarracenia.flowcb.log.Log
                                   
                                  @@ -189,7 +189,7 @@

                                  Config File Entries to use Flow_Callbacks -

                                  Worklists

                                  +

                                  Worklists

                                  Besides option, the other main argument to after_accept and after_work callback routines is the worklist. The worklist is given to entry points occurring during notification message processing, and is a number of worklists of notification messages:

                                  @@ -213,7 +213,7 @@

                                  Worklists -

                                  Logging

                                  +

                                  Logging

                                  Python has great built-in logging, and once has to just use the module in a normal, pythonic way, with:

                                  import logging
                                  @@ -247,7 +247,7 @@ 

                                  Logging -

                                  Initialization and Settings

                                  +

                                  Initialization and Settings

                                  The next step is declaring a class:

                                  class Myclass(FlowCB):
                                   
                                  @@ -290,7 +290,7 @@

                                  Initialization and Settings -

                                  Entry Points

                                  +

                                  Entry Points

                                  Other entry_points, extracted from sarracenia/flowcb/__init__.py

                                   def ack(self,messagelist):
                                        Task: acknowledge notification messages from a gather source.
                                  @@ -367,7 +367,7 @@ 

                                  Entry Points -

                                  new_* Fields

                                  +

                                  new_* Fields

                                  During processing of notification messages, the original standard field values are generally left un-changed (as-read in.) To change fields of notification messages forwarded to downstream consumers, one modifies new_field instead of the one from the message, as the original is necessary for successful upstream retrieval:

                                  @@ -382,7 +382,7 @@

                                  new_* Fields -

                                  Sample Flowcb Sub-Class

                                  +

                                  Sample Flowcb Sub-Class

                                  This is an example callback class file (gts2wis2.py) that accepts files whose names begin with AHL’s, and renames the directory tree to a different standard, the evolving one for the WMO WIS 2.0 (for more information on that module: @@ -467,7 +467,7 @@

                                  Sample Flowcb Sub-Class

                                  -

                                  Download Renaming

                                  +

                                  Download Renaming

                                  Sometimes the URL used to obtain data from a server isn’t the same as the name one wants to assign to the downloaded result. This occurs often when polling upstream arbitrary web services. For such cases the message format defines the retrievePath, or @@ -490,11 +490,11 @@

                                  Download Renaming -

                                  Web Sites with non-standard file listings

                                  +

                                  Web Sites with non-standard file listings

                                  The poll/nasa_mls

                                  -

                                  Other Examples

                                  +

                                  Other Examples

                                  Subclassing of Sarracenia.flowcb is used internally to do a lot of core work. It’s a good idea to look at the sarracenia source code itself. For example:

                                    @@ -519,7 +519,7 @@

                                    Other Examples -

                                    Modifying Files in Flight

                                    +

                                    Modifying Files in Flight

                                    The sarracenia.transfer class has an on_data entry point:

                                     def on_data(self, chunk) -> bytes:
                                          """
                                    @@ -559,7 +559,7 @@ 

                                    Modifying Files in Flight -

                                    Subclassing Flow

                                    +

                                    Subclassing Flow

                                    If none of the built-in components ( poll, post, sarra, shovel, subscribe, watch, winnow ) have the behaviour desired, one can build a custom component to do the right thing by sub-classing flow.

                                    Copy one of the flow sub-classes from the source code, and modify to taste. In the configuration diff --git a/How2Guides/Hydro_Examples.html b/How2Guides/Hydro_Examples.html index 22ebc62f4..f41286e8f 100644 --- a/How2Guides/Hydro_Examples.html +++ b/How2Guides/Hydro_Examples.html @@ -8,9 +8,9 @@ - + - + @@ -124,12 +124,12 @@ }

                                    -

                                    Using Plugins to Grab Hydrometric Data (v2)

                                    +

                                    Using Plugins to Grab Hydrometric Data (v2)

                                    Several different environmental data websites use APIs to communicate data. In order to advertise the availability of new files and integrate them seamlessly into the Sarracenia stack, a few plugins are needed to extend the polling functionality.

                                    -

                                    Polling Protocols Natively Supported

                                    +

                                    Polling Protocols Natively Supported

                                    Out of the box, Sarracenia supports polling of HTTP/HTTPS and SFTP/FTP sources where the filename gets appended to the end of the base URL. For example, if you’re trying to access the water level data of Ghost Lake Reservoir near Cochrane in Alberta, which can be accessed by navigating to @@ -141,7 +141,7 @@

                                    Polling Protocols Natively Supported -

                                    Extending Polling Protocols

                                    +

                                    Extending Polling Protocols

                                    If the data source doesn’t abide to this convention (see NOAA CO-OPS API and USGS Instantaneous Values Web Service for examples of two data sources that don’t), a module registered_as can be included at the bottom of a plugin file to define the list of protocols being extended or implemented:

                                    @@ -153,9 +153,9 @@

                                    Extending Polling Protocols -

                                    Examples of Integrating APIs into Plugins

                                    +

                                    Examples of Integrating APIs into Plugins

                                    -

                                    NOAA CO-OPS API

                                    +

                                    NOAA CO-OPS API

                                    The National Oceanic and Atmospheric Administration Tides and Currents Department releases their CO-OPS station observations and predictions data through a GET RESTful web service, available at the NOAA Tides and Currents website. For example, if you want to access the @@ -261,7 +261,7 @@

                                    NOAA CO-OPS API -

                                    SHC SOAP Web Service

                                    +

                                    SHC SOAP Web Service

                                    A SOAP web service (Simple Object Access Protocol) uses an XML-based messaging system to supply requested data over a network. The client can specify parameters for a supported operation (for example a search) on the web service, denoted with a wdsl file extension, and the server will return an XML-formatted SOAP @@ -287,7 +287,7 @@

                                    SHC SOAP Web Servicesubsoapshc.conf.

                                    -

                                    USGS Instantaneous Values Web Service

                                    +

                                    USGS Instantaneous Values Web Service

                                    The United States Geological Survey publishes their water data through their Instantaneous Values RESTful Web Service, which uses HTTP GET requests to filter their data. It returns the data in XML files once requested, and can support more than one station ID argument at a time (bulk data download). More info on @@ -318,7 +318,7 @@

                                    USGS Instantaneous Values Web Service -

                                    Use Case

                                    +

                                    Use Case

                                    The hydrometric plugins were developed for the Environment Canada canhys use case, where files containing station metadata would be used as input to gather the hydrometric data. Each plugin also works by generating all valid station IDs from the water authority itself and plugging those inputs in. This alternative option can be diff --git a/How2Guides/UPGRADING.html b/How2Guides/UPGRADING.html index ac838987d..9f3b63406 100644 --- a/How2Guides/UPGRADING.html +++ b/How2Guides/UPGRADING.html @@ -8,9 +8,9 @@ - + - + @@ -126,7 +126,7 @@ }

                                    -

                                    UPGRADE GUIDE

                                    +

                                    UPGRADE GUIDE

                                    This document describes changes in behaviour to provide guidance to those upgrading from a previous version. Sections are titled to indicate changes needed when upgrading to that version. To upgrade across several versions, one needs to start @@ -151,14 +151,14 @@

                                    UPGRADE GUIDE -

                                    Installation Instructions

                                    +

                                    Installation Instructions

                                    Installation Guide

                                    -

                                    git

                                    +

                                    git

                                    -

                                    3.0.41

                                    +

                                    3.0.41

                                    CHANGE: v03 postformat field renamed: “integrity” is now “identity”

                                      @@ -171,7 +171,7 @@

                                      3.0.41

                                    -

                                    3.0.40

                                    +

                                    3.0.40

                                    CHANGE: Python API breaking changes

                                    for sarracenia.moth, now specify broker as options[‘broker’] instead of as @@ -198,14 +198,14 @@

                                    3.0.40

                                    -

                                    3.0.37

                                    +

                                    3.0.37

                                    BUG: sr3 cleanup does not work at all.

                                    https://github.com/MetPX/sarracenia/issues/669

                                    -

                                    3.0.26

                                    +

                                    3.0.26

                                    CHANGE: event options (logEvents, and fileEvents) now replace previous value

                                    used to be unioned (or’d) with previous value. now can preface the set elements with + to get the previous behaviour. @@ -217,7 +217,7 @@

                                    3.0.26

                                    -

                                    3.0.25

                                    +

                                    3.0.25

                                    CHANGE: default value for acceptUnmatched is now True for all components.

                                    prior to this release, default was False in subscribe component, and True for all others.

                                    @@ -225,7 +225,7 @@

                                    3.0.25

                                    -

                                    3.0.23

                                    +

                                    3.0.23

                                    NOTICE: now prefer strftime date specification in patterns, in place of

                                    ones inherited from Sundew. converted by sr3 convert.

                                    @@ -234,7 +234,7 @@

                                    3.0.23

                                    -

                                    3.0.22

                                    +

                                    3.0.22

                                    CHANGE: destination, when used in a poll is replaced by pollUrl

                                    CHANGE: destination, when used in a sender is replaced by sendTo

                                    @@ -247,7 +247,7 @@

                                    3.0.22

                                    -

                                    3.0.17

                                    +

                                    3.0.17

                                    CHANGE: The “Vendor” string is now “MetPX” instead of “science.gc.ca”.

                                    This affects some file placement particularly on Windows.

                                    @@ -262,7 +262,7 @@

                                    3.0.17

                                    -

                                    3.0.15

                                    +

                                    3.0.15

                                    NOTICE: re-instating debian and windows packages by removing hard requirements for python modules

                                    which are difficult to satisfy. From 3.0.15, dependencies are modular.

                                    @@ -299,7 +299,7 @@

                                    3.0.15

                                    -

                                    3.0.14

                                    +

                                    3.0.14

                                    initial beta.

                                    NOTICE: only pip packages currently work. No Debian packages on launchpad.net

                                    nor any windows packages.

                                    @@ -307,7 +307,7 @@

                                    3.0.14

                                    -

                                    V2 to Sr3

                                    +

                                    V2 to Sr3

                                    NOTICE: Sr3 is a very deep refactor of Sarracenia. For more detail on the nature

                                    of the changes, go here Briefly, where v2 is an application written in python that had a small extension facility, diff --git a/How2Guides/docker.html b/How2Guides/docker.html index 8b2165bc0..680c33f78 100644 --- a/How2Guides/docker.html +++ b/How2Guides/docker.html @@ -8,9 +8,9 @@ - + - + @@ -96,9 +96,9 @@ }

                                    -

                                    Running MetPX via Docker

                                    +

                                    Running MetPX via Docker

                                    -

                                    Introduction

                                    +

                                    Introduction

                                    While Sarracenia can be installed via pip, debian/Ubuntu, a Docker capability is also provided in support of “run anywhere” containerization and cloud native environments.

                                    @@ -122,7 +122,7 @@

                                    Introduction -

                                    Logging

                                    +

                                    Logging

                                    Norms in the docker world are to send messages to standard output, so the option logStdout should be used in any configurations in a docker container. This will make docker logs work as expected in a docker environment, by printing diff --git a/How2Guides/index.html b/How2Guides/index.html index 0d0c5e14a..d33a5e3e0 100644 --- a/How2Guides/index.html +++ b/How2Guides/index.html @@ -8,9 +8,9 @@ - + - + @@ -110,7 +110,7 @@ }

                                    -

                                    HOWTOS

                                    +

                                    HOWTOS

                                    • Subscribing to Data Feeds
                                    • diff --git a/How2Guides/source.html b/How2Guides/source.html index 4689df2b3..5d6c5b902 100644 --- a/How2Guides/source.html +++ b/How2Guides/source.html @@ -8,9 +8,9 @@ - + - + @@ -124,9 +124,9 @@ }
                                      -

                                      Data Sources

                                      +

                                      Data Sources

                                      -

                                      Injecting Data into a MetPX-Sarracenia Pump Network

                                      +

                                      Injecting Data into a MetPX-Sarracenia Pump Network

                                      Warning

                                      FIXME: Missing sections are highlighted by FIXME. @@ -139,13 +139,13 @@

                                      Injecting Data into a MetPX-Sarracenia Pump Network

                                      -

                                      Revision Record

                                      +

                                      Revision Record

                                      version:

                                      UNKNOWN

                                      date:
                                      -

                                      Aug 16, 2023

                                      +

                                      Aug 18, 2023

                                      A Sarracenia data pump is a web (or sftp) server with notifications for subscribers @@ -200,7 +200,7 @@

                                      Revision Record -

                                      SFTP Injection

                                      +

                                      SFTP Injection

                                      Using the sr_post(1) command directly is the most straightforward way to inject data into the pump network. To use sr_post, you have to know:

                                        @@ -302,7 +302,7 @@

                                        SFTP Injection -

                                        HTTP Injection

                                        +

                                        HTTP Injection

                                        If we take a similar case, but in this case there is some http accessible space, the steps are the same or even simpler if no authentication is required for the pump to acquire the data. One needs to install a web server of some kind.

                                        @@ -349,7 +349,7 @@

                                        HTTP Injection -

                                        Polling External Sources

                                        +

                                        Polling External Sources

                                        Some sources are inherently remote, and we are unable to interest or affect them. One can configure sr_poll to pull in data from external sources, typically web sites. The sr_poll command typically runs as a singleton that tracks what is new at a source tree @@ -365,7 +365,7 @@

                                        Polling External Sources -

                                        Report Messages

                                        +

                                        Report Messages

                                        If the sr_post worked, that means the pump accepted to take a look at your file. To find out where your data goes to afterward, one needs to examine source log messages. It is also important to note that the initial pump, or any other pump @@ -386,7 +386,7 @@

                                        Report Messages -

                                        Large Files

                                        +

                                        Large Files

                                        Larger files are not sent as a single block. They are sent in parts, and each part is fingerprinted, so that when files are updated, unchanged portions are not sent again. There is a default threshold built into the sr_ commands, above @@ -401,7 +401,7 @@

                                        Large Files -

                                        Reliability and Checksums

                                        +

                                        Reliability and Checksums

                                        Every piece of data injected into the pumping network needs to have a unique fingerprint (or checksum). Data will flow if it is new, and determining if the data is new is based on the fingerprint. To get reliability in a sarracenia network, multiple independent sources are provisioned. @@ -453,7 +453,7 @@

                                        Reliability and Checksums -

                                        User Headers

                                        +

                                        User Headers

                                        What if there is some piece of metadata that a data source has chosen for some reason not to include in the filename hierarchy? How can data consumers know that information without having to download the file in order to determine that it is uninteresting. An example would be @@ -479,7 +479,7 @@

                                        User Headers -

                                        Efficiency Considerations

                                        +

                                        Efficiency Considerations

                                        It is not recommended to put overly complex logic in the plugin scripts, as they execute synchronously with post and receive operations. Note that the use of built-in facilities of AMQP (headers) is done to explicitly be as efficient as possible. As an extreme example, including encoded XML into notification messages @@ -501,7 +501,7 @@

                                        Efficiency Considerations -

                                        Quickly Announcing Very Large Trees On Linux

                                        +

                                        Quickly Announcing Very Large Trees On Linux

                                        To mirror very large trees (millions of files) in real time, it takes too long for tools like rsync or find to traverse and generate lists of files to copy. On Linux, one can intercept calls for file operations using the well known shim library technique. This technique provides virtually diff --git a/How2Guides/subscriber.html b/How2Guides/subscriber.html index 27d0e9530..c7f608938 100644 --- a/How2Guides/subscriber.html +++ b/How2Guides/subscriber.html @@ -8,9 +8,9 @@ - + - + @@ -133,22 +133,22 @@ }

                                        -

                                        Subscriber Guide

                                        +

                                        Subscriber Guide

                                        -

                                        Receiving Data from a MetPX-Sarracenia Data Pump

                                        +

                                        Receiving Data from a MetPX-Sarracenia Data Pump

                                        -

                                        Revision Record

                                        +

                                        Revision Record

                                        version:

                                        UNKNOWN

                                        date:
                                        -

                                        Aug 16, 2023

                                        +

                                        Aug 18, 2023

                                        -

                                        Introduction

                                        +

                                        Introduction

                                        A Sarracenia data pump is a web server with notifications for subscribers to know, quickly, when new data has arrived. To find out what data is already available on a pump, @@ -304,7 +304,7 @@

                                        Introduction -

                                        Server Side Resources Allocated for Subscribers

                                        +

                                        Server Side Resources Allocated for Subscribers

                                        Every configuration results in corresponding resources being declared on the broker, whose lifetime is controlled by the expire setting. The default expire is set to 300 seconds to avoid cluttering up servers with small experiments. Set expire @@ -338,7 +338,7 @@

                                        Server Side Resources Allocated for Subscribers -

                                        Working with Multiple Configurations

                                        +

                                        Working with Multiple Configurations

                                        Place all configuration files, with the .conf suffix, in a standard directory: ~/.config/sr3/subscribe/ For example, if there are two files in that directory: dd_amis.conf and hpfx_amis.conf, one could then run:

                                        @@ -386,7 +386,7 @@

                                        Working with Multiple Configurations -

                                        High Priority Delivery

                                        +

                                        High Priority Delivery

                                        While the Sarracenia protocol does not provide explicit prioritization, the use of multiple queues provides similar benefits. Each configuration results in a queue declaration on the server side. Group products at like priority into @@ -446,7 +446,7 @@

                                        High Priority Delivery

                                        -

                                        Refining Selection

                                        +

                                        Refining Selection

                                        Warning

                                        FIXME: Make a picture, with a:

                                        @@ -567,15 +567,15 @@

                                        Refining Selection -

                                        Data Loss

                                        +

                                        Data Loss

                                        -

                                        Outage

                                        +

                                        Outage

                                        The expire determines how long the data pump will hold onto your queued subscription, after a disconnection. The setting needs to be set longer than the longest outage your feed needs to survive without data loss.

                                        -

                                        Too slow, Queue Too Large

                                        +

                                        Too slow, Queue Too Large

                                        The performance of a feed is important, as, serving the internet, a one client´s slow download affects all the other ones, and a few slow clients can overwhelm a data pump. Often there are server policies in place @@ -662,7 +662,7 @@

                                        Too slow, Queue Too Large -

                                        Performance

                                        +

                                        Performance

                                        There are many aspects of Performance that we won’t go into here.

                                        more:

                                        Minimizing the time after a file has been delivered, and before it is picked up by the next hop:

                                        @@ -679,7 +679,7 @@

                                        Performance -

                                        Optimize File Selection per Process

                                        +

                                        Optimize File Selection per Process

                                        • Often users specif # as their subtopic, meaning the accept/rejects do all the work. In many cases, users are only interested in a small fraction of the files being published. For best performance, Make *subtopic* as specific as possible to have minimize sending notification messages that are send by the broker and arrive on the subscriber only to be rejected. (use log_reject option to find such products.)

                                        • Place *reject* statements as early as possible in the configuration. As rejection saves processing of any later regex’s in the configuration.

                                        • @@ -720,7 +720,7 @@

                                          Optimize File Selection per Process -

                                          Use Instances

                                          +

                                          Use Instances

                                          Once you have optimized what a single subscriber can do, if it is not fast enough, then use the instances option to have more processes participate in the processing. Having 10 or 20 instances is not a problem at all. The maximum @@ -740,7 +740,7 @@

                                          Use Instances -

                                          High Performance Duplicate Suppression

                                          +

                                          High Performance Duplicate Suppression

                                          One caveat to the use of instances is that suppress_duplicates is ineffective as the different occurrences of the same file will not be received by the same instance, and so with n instances, roughly n-1/n duplicates will slip through.

                                          @@ -769,7 +769,7 @@

                                          High Performance Duplicate Suppression -

                                          Plugins

                                          +

                                          Plugins

                                          Default file processing is often fine, but there are also pre-built customizations that can be used to change processing done by components. The list of pre-built plugins is in a ‘plugins’ directory wherever the package is installed (viewable with sr_subscribe list) @@ -863,7 +863,7 @@

                                          PluginsWriting Flow Callbacks

                                        -

                                        file_rxpipe

                                        +

                                        file_rxpipe

                                        The file_rxpipe plugin that writes the names of files downloaded to a named pipe. Setting this up required two lines in an flow configuration file:

                                        $ mknod /home/peter/test/.rxpipe p
                                        @@ -892,7 +892,7 @@ 

                                        file_rxpipe -

                                        Anti-Virus Scanning

                                        +

                                        Anti-Virus Scanning

                                        Another example of easy use of a plugin is to achieve anti-virus scanning. Assuming that ClamAV-daemon is installed, as well as the python3-pyclamd package, then one can add the following to a subscriber @@ -951,7 +951,7 @@

                                        Anti-Virus Scanning -

                                        Logging and Debugging

                                        +

                                        Logging and Debugging

                                        As sr3 components usually run as a daemon (unless invoked in foreground mode) one normally examines its log file to find out how processing is going. When only a single instance is running, one can view the log of the running process like so:

                                        @@ -1028,7 +1028,7 @@

                                        Logging and Debugging

                                      -

                                      flowcb/log.py Debug Tuning

                                      +

                                      flowcb/log.py Debug Tuning

                                      In addition to application-options, there is a flowcb that is used by default for logging, which has additional options:

                                        @@ -1048,7 +1048,7 @@

                                        flowcb/log.py Debug Tuning -

                                        moth Debug Tuning

                                        +

                                        moth Debug Tuning

                                        Turning on logLevel to debug on the entire application often results in inordinately large log files. By default the Messages Organized into Topic Hierarchies (Moth) parent class for the messaging protocols, ignores the application-wide debug option. To enable debugging output from these classes, there @@ -1071,7 +1071,7 @@

                                        moth Debug Tuning -

                                        Housekeeping Metrics

                                        +

                                        Housekeeping Metrics

                                        Flow Callbacks can implement a on_housekeeping entry point. This entry point is usually an opportunity for callbacks to print metrics periodically. The builtin log and resource monitoring callbacks, for example, give lines in the log like so:

                                        @@ -1090,7 +1090,7 @@

                                        Housekeeping Metrics

                                      -

                                      Redundant File Reception

                                      +

                                      Redundant File Reception

                                      In environments where high reliability is required, multiple servers are often configured to provide services. The Sarracenia approach to high availability is ´Active-Active´ in that all sources are online @@ -1106,7 +1106,7 @@

                                      Redundant File Reception -

                                      Web Proxies

                                      +

                                      Web Proxies

                                      The best method of working with web proxies is to put the following in the default.conf:

                                      declare env HTTP_PROXY http://yourproxy.com
                                      @@ -1117,7 +1117,7 @@ 

                                      Web Proxies -

                                      API Level Access

                                      +

                                      API Level Access

                                      Sarracenia version 3 also offers python modules that can be called from existing python applications.

                                        @@ -1134,7 +1134,7 @@

                                        API Level Access -

                                        More Information

                                        +

                                        More Information

                                        • The sr3(1) is the definitive source of reference information for configuration options. For additional information,

                                        • diff --git a/How2Guides/v2ToSr3.html b/How2Guides/v2ToSr3.html index 3dd6a3403..0964f046a 100644 --- a/How2Guides/v2ToSr3.html +++ b/How2Guides/v2ToSr3.html @@ -8,9 +8,9 @@ - + - + @@ -143,7 +143,7 @@ }
                                          -

                                          Porting V2 Plugins to Sr3

                                          +

                                          Porting V2 Plugins to Sr3

                                          This is a guide to porting plugins from Sarracenia version 2.X (metpx-sarracenia) to Sarracenia version 3.x (metpx-sr3)

                                    -

                                    File Placement

                                    +

                                    File Placement

                                    v2 places configuration files under ~/.config/sarra, and state files under ~/.cache/sarra

                                    v3 places configuration files under ~/.config/sr3, and state files under ~/.cache/sr3

                                    v2 has a C implementation of sarra called sarrac. The C implementation for v3, is called sr3c, and is the same as the v2 one, except it uses the v3 file locations.

                                    -

                                    Command Line Difference

                                    +

                                    Command Line Difference

                                    Briefly, the sr3 entry point is used to start/stop/status things:

                                    v2:  sr_*component* start config
                                     
                                    @@ -260,7 +260,7 @@ 

                                    Command Line Differen

                                    -

                                    What Will Work Without Change

                                    +

                                    What Will Work Without Change

                                    The first step in porting a configuration subscribe/X to v3, is just to copy the configuration file from ~/.config/sarra to the corresponding location in ~/.config/sr3 and try:

                                    sr3 show subscribe/X
                                    @@ -328,7 +328,7 @@ 

                                    What Will Work Withou

                                    -

                                    What Won’t Work Without Change

                                    +

                                    What Won’t Work Without Change

                                    • do_* they are just fundamentally different in v3.

                                    @@ -360,7 +360,7 @@

                                    What Won’t Work Wit

                                  -

                                  Coding Differences between plugins in v2 vs. Sr3

                                  +

                                  Coding Differences between plugins in v2 vs. Sr3

                                  The API for adding or customizing functionality in sr3 is quite different from v2. In general, v3 plugins:

                                  -

                                  Configuration Files

                                  +

                                  Configuration Files

                                  in v2, the primary configuration option to declare a plugin is:

                                  plugin X
                                   
                                  @@ -781,7 +781,7 @@

                                  Configuration Files

                                  -

                                  Configuration Upgrade

                                  +

                                  Configuration Upgrade

                                  Once a plugin is ported, one can also arrange for the v3 option parser to recognize a v2 plugin invocation and replace it with a v3 one. looking in /sarracenia/config.py#L144, there is a data structure convert_to_v3. A sample entry would be:

                                  @@ -801,7 +801,7 @@

                                  Configuration Upgrade

                              -

                              Options

                              +

                              Options

                              In v2, one would declare settings to be used by a plugin in the __init__ routine, with the declare_option.:

                              parent.declare_option('poll_usgs_stn_file')
                              @@ -822,12 +822,12 @@ 

                              Options

                              -

                              Mapping v2 Entry Points to v3 Callbacks

                              +

                              Mapping v2 Entry Points to v3 Callbacks

                              for a comprehensive look at the v3 entry points, have a look at:

                              https://github.com/MetPX/sarracenia/blob/v03_wip/sarracenia/flowcb/__init__.py

                              for details.

                              -

                              on_message, on_post –> after_accept

                              +

                              on_message, on_post –> after_accept

                              v2: receives one notification message, returns True/False

                              v3: receives worklist

                              modify worklist.incoming @@ -857,7 +857,7 @@

                              on_message, on_post

                              -

                              on_file –> after_work

                              +

                              on_file –> after_work

                              v2: receives one notification message, returns True/False

                              v3: receives worklist

                              modify worklist.ok (transfer has already happenned.) @@ -875,7 +875,7 @@

                              on_file –> afte

                              -

                              on_heartbeat -> on_housekeeping

                              +

                              on_heartbeat -> on_housekeeping

                              v2: receives parent as argument.

                              will work unchanged.

                              @@ -890,7 +890,7 @@

                              on_heartbeat -> o

                          -

                          do_poll -> poll

                          +

                          do_poll -> poll

                          v2: call do_poll from plugin.

                          -

                          Virtual IP processing in poll

                          +

                          Virtual IP processing in poll

                          In v2 if you have a vIP set, all participating nodes poll the upstream server and maintain the list of current files, they just don’t publish the result. So if you have 8 servers sharing a vIP, all eight are polling, kind of sad. @@ -982,7 +982,7 @@

                          Virtual IP processin

                          -

                          on_html_page -> subclass flowcb/poll

                          +

                          on_html_page -> subclass flowcb/poll

                          Here is a v2 plugin nsa_mls_nrt.py:

                          #!/usr/bin/env python3
                           
                          @@ -1114,7 +1114,7 @@ 

                          on_html_page -> s

                          -

                          on_line -> poll subclassing

                          +

                          on_line -> poll subclassing

                          Similarly to on_html_page above, all uses of on_line in the previous version were about re-formatting lines to be parseable. the on_line routine can be similarly sub-classed to replace it. One had to modify the parent.line @@ -1125,7 +1125,7 @@

                          on_line -> poll s on which to build an example.

                          -

                          do_send -> send:

                          +

                          do_send -> send:

                          v2: do_send could be either a standalone routine, or associated with a protocol type

                          • based on registered_as() so the destination determines whether it is used or not.

                          • @@ -1149,7 +1149,7 @@

                            do_send -> send:<

                          -

                          do_download -> download:

                          +

                          do_download -> download:

                          create a flowCallback class with a download entry point.

                          • accepts a single notification message as an argument.

                          • @@ -1184,7 +1184,7 @@

                            do_download -> do

                          -

                          DESTFNSCRIPT

                          +

                          DESTFNSCRIPT

                          DESTFNSCRIPT is re-cast as a flowcb entry point, where the directive is now formatted similarly to the flowcallback in the configuration

                          v2 configuration:

                          @@ -1262,7 +1262,7 @@

                          DESTFNSCRIPT

                          -

                          v3 only: post,gather

                          +

                          v3 only: post,gather

                          The polling/posting is actually done in flow callback (flowcb) classes. The exit status does not matter, all such routines will be called in order.

                          The return of a gather is a list of notification messages to be appended to worklist.incoming

                          @@ -1280,9 +1280,9 @@

                          v3 only: post,gather

                          -

                          v3 Complex Examples

                          +

                          v3 Complex Examples

                          -

                          flowcb/nodupe

                          +

                          flowcb/nodupe

                          duplicate suppression in v3, has:

                          • an after_accept routing the prunes duplicates from worklist.incoming. @@ -1290,7 +1290,7 @@

                            flowcb/nodupe

                          -

                          flowcb/retry

                          +

                          flowcb/retry

                          • has an after_accept function to append notification messages to the @@ -1303,7 +1303,7 @@

                            flowcb/retry

                          -

                          Table of v2 and sr3 Equivalents

                          +

                          Table of v2 and sr3 Equivalents

                          Here is an overview of plugins included in Sarracenia, One can browse the two trees, and using the table below, can review, compare and contrast the implementations.

                          diff --git a/Reference/code.html b/Reference/code.html index 9d7d1241e..c54759310 100644 --- a/Reference/code.html +++ b/Reference/code.html @@ -8,9 +8,9 @@ - + - + @@ -52,7 +52,7 @@
                        • Posting Message Format Man page
                        • FlowCallback Reference
                        • Code Reference
                        • -class sarracenia.config.Config(parent=None)[source]
                          +class sarracenia.config.Config(parent=None)[source]

                          Bases: object

                          The option parser to produce a single configuration.

                          it can be instantiated with one of:

                          @@ -603,7 +603,7 @@

                          cfg.finalize()

                          -__deepcopy__(memo) Configuration[source]
                          +__deepcopy__(memo) Configuration[source]

                          code for this from here: https://stackoverflow.com/questions/1500718/how-to-override-the-copy-deepcopy-operations-for-a-python-object Needed for python < 3.7ish? (ubuntu 18) found this bug: https://bugs.python.org/issue10076 deepcopy fails for objects with re’s in them? @@ -612,25 +612,25 @@

                          -__init__(parent=None) Config[source]
                          +__init__(parent=None) Config[source]

                          instantiate an empty Configuration

                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -_build_mask(option, arguments)[source]
                          +_build_mask(option, arguments)[source]

                          return new entry to be appended to list of masks

                          -_parse_binding(subtopic_string)[source]
                          +_parse_binding(subtopic_string)[source]
                          FIXME: see original parse, with substitions for url encoding.

                          also should sqwawk about error if no exchange or topicPrefix defined. also None to reset to empty, not done.

                          @@ -640,7 +640,7 @@
                          -_parse_setting(opt, value)[source]
                          +_parse_setting(opt, value)[source]

                          v3 plugin accept options for specific modules.

                          parsed from: set sarracenia.flowcb.log.filter.Log.level debug

                          @@ -657,26 +657,26 @@
                          -_parse_v2plugin(entryPoint, value)[source]
                          +_parse_v2plugin(entryPoint, value)[source]

                          config file parsing for a v2 plugin.

                          -_resolve_exchange()[source]
                          +_resolve_exchange()[source]

                          based on the given configuration, fill in with defaults or guesses. sets self.exchange.

                          -_sundew_basename_parts(pattern, basename)[source]
                          +_sundew_basename_parts(pattern, basename)[source]

                          modified from metpx SenderFTP

                          -_validate_urlstr(urlstr) tuple[source]
                          +_validate_urlstr(urlstr) tuple[source]

                          returns a tuple ( bool, expanded_url ) the bool is whether the expansion worked, and the expanded_url is one with the added necessary authentication details from sarracenia.Credentials.

                          @@ -684,18 +684,18 @@
                          -_varsub(word)[source]
                          +_varsub(word)[source]

                          substitute variable values from options

                          -class addBinding(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]
                          +class addBinding(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]

                          Bases: Action

                          called by argparse to deal with queue bindings.

                          -__call__(parser, namespace, values, option_string)[source]
                          +__call__(parser, namespace, values, option_string)[source]

                          Call self as a function.

                          @@ -703,7 +703,7 @@
                          -add_option(option, kind='list', default_value=None, all_values=None)[source]
                          +add_option(option, kind='list', default_value=None, all_values=None)[source]

                          options can be declared in any plugin. There are various kind of options, where the declared type modifies the parsing.

                          • ‘count’ integer count type.

                          • @@ -735,25 +735,25 @@
                            -applyComponentDefaults(component)[source]
                            +applyComponentDefaults(component)[source]

                            overlay defaults options for the given component to the given configuration.

                            -dictify()[source]
                            +dictify()[source]

                            return a dict version of the cfg…

                            -dump()[source]
                            +dump()[source]

                            print out what the configuration looks like.

                            -finalize(component=None, config=None)[source]
                            +finalize(component=None, config=None)[source]

                            Before final use, take the existing settings, and infer any missing needed defaults from what is provided. Should be called prior to using a configuration.

                            There are default options that apply only if they are not overridden…

                            @@ -761,13 +761,13 @@
                            -mask_ppstr(mask)[source]
                            +mask_ppstr(mask)[source]

                            return a pretty print string version of the given mask, easier for humans to read.

                            -merge(oth)[source]
                            +merge(oth)[source]

                            merge to lists of options.

                            merge two lists of options if one is cumulative then merge, otherwise if not None, then take value from oth

                            @@ -775,7 +775,7 @@
                            -override(oth)[source]
                            +override(oth)[source]

                            override a value in a set of options.

                            why override() method and not just assign values to the dictionary? in the configuration file, there are various ways to have variable substituion. @@ -785,7 +785,7 @@

                            -parse_args(isPost=False)[source]
                            +parse_args(isPost=False)[source]
                            user information:

                            accept a configguration, apply argParse library to augment the given configuration with command line settings.

                            @@ -811,19 +811,19 @@
                            -parse_file(cfg, component=None)[source]
                            +parse_file(cfg, component=None)[source]

                            add settings from a given config file to self

                            -sundew_dirPattern(pattern, urlstr, basename, destDir)[source]
                            +sundew_dirPattern(pattern, urlstr, basename, destDir)[source]

                            does substitutions for patterns in directories.

                            -variableExpansion(cdir, message=None)[source]
                            +variableExpansion(cdir, message=None)[source]

                            replace substitution patterns, variable substitutions as described in https://metpx.github.io/sarracenia/Reference/sr3_options.7.html#variables

                            @@ -840,32 +840,32 @@
                            -sarracenia.config.config_path(subdir, config, mandatory=True, ctype='conf')[source]
                            +sarracenia.config.config_path(subdir, config, mandatory=True, ctype='conf')[source]

                            Given a subdir/config look for file in configish places.

                            return Tuple: Found (True/False), path_of_file_found|config_that_was_not_found

                            -sarracenia.config.get_log_filename(hostdir, component, configuration, no)[source]
                            +sarracenia.config.get_log_filename(hostdir, component, configuration, no)[source]

                            return the name of a single logfile for a single instance.

                            -sarracenia.config.get_pid_filename(hostdir, component, configuration, no)[source]
                            +sarracenia.config.get_pid_filename(hostdir, component, configuration, no)[source]

                            return the file name for the pid file for the specified instance.

                            -sarracenia.config.get_user_cache_dir(hostdir)[source]
                            +sarracenia.config.get_user_cache_dir(hostdir)[source]

                            hostdir = None if statehost is false,

                            -sarracenia.config.logger = <Logger sarracenia.config (WARNING)>
                            +sarracenia.config.logger = <Logger sarracenia.config (WARNING)>

                            respect appdir stuff using an environment variable. for not just hard coded as a class variable appdir_stuff

                            @@ -877,7 +877,7 @@
                            -sarracenia.config.no_file_config()[source]
                            +sarracenia.config.no_file_config()[source]

                            initialize a config that will not use Sarracenia configuration files at all. meant for use by people writing independent programs to start up instances with python API calls.

                            @@ -885,7 +885,7 @@
                            -sarracenia.config.one_config(component, config, isPost=False)[source]
                            +sarracenia.config.one_config(component, config, isPost=False)[source]

                            single call return a fully parsed single configuration for a single component to run.

                            read in admin.conf and default.conf

                            apply component default overrides ( maps to: component/check ?) @@ -897,7 +897,7 @@

                            -sarracenia.config.str_options = ['action', 'admin', 'baseDir', 'broker', 'cluster', 'directory', 'exchange', 'exchange_suffix', 'feeder', 'filename', 'flatten', 'flowMain', 'header', 'identity', 'logLevel', 'pollUrl', 'post_baseUrl', 'post_baseDir', 'post_broker', 'post_exchange', 'post_exchangeSuffix', 'post_format', 'post_topic', 'queueName', 'sendTo', 'rename', 'report_exchange', 'source', 'strip', 'timezone', 'nodupe_ttl', 'nodupe_driver', 'nodupe_basis', 'tlsRigour', 'topic', 'vip']
                            +sarracenia.config.str_options = ['action', 'admin', 'baseDir', 'broker', 'cluster', 'directory', 'exchange', 'exchange_suffix', 'feeder', 'filename', 'flatten', 'flowMain', 'header', 'identity', 'logLevel', 'pollUrl', 'post_baseUrl', 'post_baseDir', 'post_broker', 'post_exchange', 'post_exchangeSuffix', 'post_format', 'post_topic', 'queueName', 'sendTo', 'rename', 'report_exchange', 'source', 'strip', 'timezone', 'nodupe_ttl', 'nodupe_driver', 'nodupe_basis', 'tlsRigour', 'topic', 'vip']

                            for backward compatibility,

                            convert some old plugins that are hard to get working with v2wrapper, into v3 plugin.

                            @@ -907,11 +907,11 @@
                          -
                          -

                          sarracenia.credentials

                          -
                          +
                          +

                          sarracenia.credentials

                          +
                          -class sarracenia.credentials.Credential(urlstr=None)[source]
                          +class sarracenia.credentials.Credential(urlstr=None)[source]

                          Bases: object

                          An object that holds information about a credential, read from a credential file, which has one credential per line, format:

                          @@ -926,7 +926,7 @@

                          Format Documentation.

                          -url
                          +url

                          object with URL, password, etc.

                          Type:
                          @@ -937,7 +937,7 @@
                          -ssh_keyfile
                          +ssh_keyfile

                          path to SSH key file for SFTP

                          Type:
                          @@ -948,7 +948,7 @@
                          -passive
                          +passive

                          use passive FTP mode, defaults to True

                          Type:
                          @@ -959,7 +959,7 @@
                          -binary
                          +binary

                          use binary FTP mode, defaults to True

                          Type:
                          @@ -970,7 +970,7 @@
                          -tls
                          +tls

                          use FTPS with TLS, defaults to False

                          Type:
                          @@ -981,7 +981,7 @@
                          -prot_p
                          +prot_p

                          use a secure data connection for TLS

                          Type:
                          @@ -992,7 +992,7 @@
                          -bearer_token
                          +bearer_token

                          bearer token for HTTP authentication

                          Type:
                          @@ -1003,7 +1003,7 @@
                          -login_method
                          +login_method

                          force a specific login method for AMQP (PLAIN, AMQPLAIN, EXTERNAL or GSSAPI)

                          @@ -1021,7 +1021,7 @@
                          -__init__(urlstr=None)[source]
                          +__init__(urlstr=None)[source]

                          Create a Credential object.

                          Parameters:
                          @@ -1032,13 +1032,13 @@
                          -__str__()[source]
                          +__str__()[source]

                          Returns attributes of the Credential object as a readable string.

                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          @@ -1046,12 +1046,12 @@
                          -class sarracenia.credentials.CredentialDB(Unused_logger=None)[source]
                          +class sarracenia.credentials.CredentialDB(Unused_logger=None)[source]

                          Bases: object

                          Parses, stores and manages Credential objects.

                          -credentials
                          +credentials

                          contains all sarracenia.credentials.Credential objects managed by the CredentialDB.

                          Type:
                          @@ -1071,7 +1071,7 @@
                          -__init__(Unused_logger=None)[source]
                          +__init__(Unused_logger=None)[source]

                          Create a CredentialDB.

                          Parameters:
                          @@ -1082,13 +1082,13 @@
                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -_parse(line)[source]
                          +_parse(line)[source]

                          Parse a line of a credentials file, add it to the CredentialDB.

                          Parameters:
                          @@ -1099,7 +1099,7 @@
                          -_resolve(urlstr, url=None)[source]
                          +_resolve(urlstr, url=None)[source]

                          Resolve credentials for AMQP vhost from ones passed as a string, and optionally a urllib.parse.ParseResult object, into a sarracenia.credentials.Credential object.

                          @@ -1125,7 +1125,7 @@
                          -add(urlstr, details=None)[source]
                          +add(urlstr, details=None)[source]

                          Add a new credential to the DB.

                          Parameters:
                          @@ -1140,7 +1140,7 @@
                          -get(urlstr)[source]
                          +get(urlstr)[source]

                          Retrieve a Credential from the DB by urlstr. If the Credential is valid, but not already cached, it will be added to the CredentialDB.

                          @@ -1168,7 +1168,7 @@
                          -has(urlstr)[source]
                          +has(urlstr)[source]

                          Return True if the Credential matching the urlstr is already in the CredentialDB.

                          Parameters:
                          @@ -1179,7 +1179,7 @@
                          -isTrue(S)[source]
                          +isTrue(S)[source]

                          Returns True if s is true, yes, on or 1.

                          Parameters:
                          @@ -1190,7 +1190,7 @@
                          -isValid(url, details=None)[source]
                          +isValid(url, details=None)[source]

                          Validates a URL and Credential object. Checks for empty passwords, schemes, etc.

                          Parameters:
                          @@ -1211,7 +1211,7 @@
                          -read(path)[source]
                          +read(path)[source]

                          Read in a file containing credentials (e.g. credentials.conf). All credentials are parsed and added to the CredentialDB.

                          @@ -1224,11 +1224,11 @@
                          -
                          -

                          sarracenia.diskqueue

                          -
                          +
                          +

                          sarracenia.diskqueue

                          +
                          -class sarracenia.diskqueue.DiskQueue(options, name)[source]
                          +class sarracenia.diskqueue.DiskQueue(options, name)[source]

                          Bases: object

                          Process Persistent Queue…

                          Persist messages to a file so that processing can be attempted again later. @@ -1265,12 +1265,12 @@

                          -__init__(options, name)[source]
                          +__init__(options, name)[source]
                          -__len__() int[source]
                          +__len__() int[source]

                          Returns the total number of messages in the DiskQueue.

                          Number of messages in the DiskQueue does not necessarily equal the number of messages available to get. Messages in the .new file are counted, but can’t be retrieved until @@ -1287,13 +1287,13 @@

                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -_count_msgs(file_path) int[source]
                          +_count_msgs(file_path) int[source]

                          Count the number of messages (lines) in the queue file. This should be used only when opening an existing file, because get() does not remove messages from the file.

                          @@ -1311,44 +1311,44 @@
                          -cleanup()[source]
                          +cleanup()[source]

                          remove statefiles.

                          -close()[source]
                          +close()[source]

                          clean shutdown.

                          -get(maximum_messages_to_get=1)[source]
                          +get(maximum_messages_to_get=1)[source]

                          qty number of messages to retrieve from the queue.

                          -in_cache(message) bool[source]
                          +in_cache(message) bool[source]

                          return whether the entry is message is in the cache or not. side effect: adds it.

                          -is_expired(message) bool[source]
                          +is_expired(message) bool[source]

                          return is the given message expired ?

                          -msg_get_from_file(fp, path)[source]
                          +msg_get_from_file(fp, path)[source]

                          read a message from the state file.

                          -needs_requeuing(message) bool[source]
                          +needs_requeuing(message) bool[source]

                          return * True if message is not expired, and not already in queue. * False otherwise.

                          @@ -1356,7 +1356,7 @@
                          -on_housekeeping()[source]
                          +on_housekeeping()[source]
                          read rest of queue_file (from current point of unretried ones.)
                          • check if message is duplicate or expired.

                          • @@ -1375,18 +1375,18 @@
                            -put(message_list)[source]
                            +put(message_list)[source]

                            add messages to the end of the queue.

                          -
                          -

                          sarracenia.filemetadata

                          -
                          +
                          +

                          sarracenia.filemetadata

                          +
                          -class sarracenia.filemetadata.FileMetadata(path)[source]
                          +class sarracenia.filemetadata.FileMetadata(path)[source]

                          Bases: object

                          This class implements storing metadata with a file.

                          on unlix/linux/mac systems, we use extended attributes, @@ -1411,47 +1411,47 @@

                          x.persist() <- write metadata back to file, if necessary.

                          -__init__(path)[source]
                          +__init__(path)[source]
                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -get(name) str[source]
                          +get(name) str[source]

                          return the value of the named extended attribute.

                          -list()[source]
                          +list()[source]

                          return the list of defined extended attributes. (keys to the dict.)

                          -persist()[source]
                          +persist()[source]

                          write the in-memory extended attributes to disk.

                          -set(name, value)[source]
                          +set(name, value)[source]

                          set the name & value pair to the extended attributes for the file.

                          -
                          -

                          sarracenia.flow

                          -
                          +
                          +

                          sarracenia.flow

                          +
                          -class sarracenia.flow.Flow(cfg=None)[source]
                          +class sarracenia.flow.Flow(cfg=None)[source]

                          Bases: object

                          Implement the General Algorithm from the Concepts Guide.

                          All of the component types (e.g. poll, subscribe, sarra, winnow, shovel ) are implemented @@ -1489,33 +1489,33 @@

                          -__init__(cfg=None)[source]
                          +__init__(cfg=None)[source]

                          The cfg is should be an sarra/config object.

                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -_runCallbackMetrics()[source]
                          +_runCallbackMetrics()[source]

                          Collect metrics from plugins with a metricsReport entry point.

                          Expects the plugin to return a dictionary containing metrics, which is saved to self.metrics[plugin_name].

                          -do() None[source]
                          +do() None[source]

                          stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers.

                          -do_download() None[source]
                          +do_download() None[source]
                          do download work for self.worklist.incoming, placing files:

                          successfully downloaded in worklist.ok temporary failures in worklist.failed @@ -1526,18 +1526,18 @@

                          -do_send()[source]
                          +do_send()[source]
                          -download(msg, options) bool[source]
                          +download(msg, options) bool[source]

                          download/transfer one file based on message, return True if successful, otherwise False.

                          -file_should_be_downloaded(msg) bool[source]
                          +file_should_be_downloaded(msg) bool[source]

                          determine whether a comparison of local_file and message metadata indicates that it is new enough that writing the file locally is warranted.

                          return True to say downloading is warranted.

                          @@ -1553,7 +1553,7 @@
                          -link1file(msg, symbolic=True) bool[source]
                          +link1file(msg, symbolic=True) bool[source]

                          perform a link of a single file, based on a message, returning boolean success if it’s Symbolic, then do that. else do a hard link.

                          imported from v2/subscribe/doit_download “link event, try to link the local product given by message”

                          @@ -1561,31 +1561,31 @@
                          -mkdir(msg) bool[source]
                          +mkdir(msg) bool[source]

                          perform an mkdir.

                          -reject(m, code, reason) None[source]
                          +reject(m, code, reason) None[source]

                          reject a message.

                          -removeOneFile(path) bool[source]
                          +removeOneFile(path) bool[source]

                          process an unlink event, returning boolean success.

                          -renameOneItem(old, path) bool[source]
                          +renameOneItem(old, path) bool[source]

                          for messages with an rename file operation, it is to rename a file.

                          -run()[source]
                          +run()[source]

                          This is the core routine of the algorithm, with most important data driven loop in it. This implements the General Algorithm (as described in the Concepts Explanation Guide) check if stop_requested once in a while, but never return otherwise.

                          @@ -1593,13 +1593,13 @@
                          -set_local_file_attributes(local_file, msg)[source]
                          +set_local_file_attributes(local_file, msg)[source]

                          after a file has been written, restore permissions and ownership if necessary.

                          -sundew_getDestInfos(msg, currentFileOption, filename)[source]
                          +sundew_getDestInfos(msg, currentFileOption, filename)[source]

                          modified from sundew client

                          WHATFN – First part (‘:’) of filename HEADFN – Use first 2 fields of filename @@ -1611,7 +1611,7 @@

                          -updateFieldsAccepted(msg, urlstr, pattern, maskDir, maskFileOption, mirror, path_strip_count, pstrip, flatten) None[source]
                          +updateFieldsAccepted(msg, urlstr, pattern, maskDir, maskFileOption, mirror, path_strip_count, pstrip, flatten) None[source]

                          Set new message fields according to values when the message is accepted.

                          • urlstr: the urlstr being matched (baseUrl+relPath+sundew_extension)

                          • @@ -1627,18 +1627,18 @@
                            -write_inline_file(msg) bool[source]
                            +write_inline_file(msg) bool[source]

                            write local file based on a message with inlined content.

                          -
                          -

                          sarracenia.flow.poll

                          -
                          +
                          +

                          sarracenia.flow.poll

                          +
                          -class sarracenia.flow.poll.Poll(options)[source]
                          +class sarracenia.flow.poll.Poll(options)[source]

                          Bases: Flow

                          repeatedly query a remote (non-sarracenia) server to list the files there. post messages (to post_broker) for every new file discovered there.

                          @@ -1649,13 +1649,13 @@ * consume all the messages posted, keeping new file duplicate cache updated.

                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -do()[source]
                          +do()[source]

                          stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers.

                          @@ -1663,45 +1663,45 @@
                          -
                          -

                          sarracenia.flow.post

                          -
                          +
                          +

                          sarracenia.flow.post

                          +
                          -class sarracenia.flow.post.Post(options)[source]
                          +class sarracenia.flow.post.Post(options)[source]

                          Bases: Flow

                          post messages about local files.

                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -
                          -

                          sarracenia.flow.report

                          -
                          +
                          +

                          sarracenia.flow.report

                          +
                          -class sarracenia.flow.report.Report(options)[source]
                          +class sarracenia.flow.report.Report(options)[source]

                          Bases: Flow

                          forward report messages.

                          Not really implemented at the moment. It is just a shovel synonym for now. more logic should be added.

                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -
                          -

                          sarracenia.flow.sarra

                          -
                          +
                          +

                          sarracenia.flow.sarra

                          +
                          -class sarracenia.flow.sarra.Sarra(options)[source]
                          +class sarracenia.flow.sarra.Sarra(options)[source]

                          Bases: Flow

                          • download files from a remote server to the local one

                          • @@ -1710,13 +1710,13 @@
                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -do()[source]
                          +do()[source]

                          stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers.

                          @@ -1724,11 +1724,11 @@
                          -
                          -

                          sarracenia.flow.sender

                          -
                          +
                          +

                          sarracenia.flow.sender

                          +
                          -class sarracenia.flow.sender.Sender(options)[source]
                          +class sarracenia.flow.sender.Sender(options)[source]

                          Bases: Flow

                          • subscribe to a stream of messages about local files.

                          • @@ -1738,13 +1738,13 @@
                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -do()[source]
                          +do()[source]

                          stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers.

                          @@ -1752,11 +1752,11 @@
                          -
                          -

                          sarracenia.flow.shovel

                          -
                          +
                          +

                          sarracenia.flow.shovel

                          +
                          -class sarracenia.flow.shovel.Shovel(options)[source]
                          +class sarracenia.flow.shovel.Shovel(options)[source]

                          Bases: Flow

                          • subscribe to some messages.

                          • @@ -1764,18 +1764,18 @@
                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -
                          -

                          sarracenia.flow.subscribe

                          -
                          +
                          +

                          sarracenia.flow.subscribe

                          +
                          -class sarracenia.flow.subscribe.Subscribe(options)[source]
                          +class sarracenia.flow.subscribe.Subscribe(options)[source]

                          Bases: Flow

                          • subscribe to messages about files.

                          • @@ -1783,13 +1783,13 @@
                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -do()[source]
                          +do()[source]

                          stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers.

                          @@ -1797,29 +1797,29 @@
                          -
                          -

                          sarracenia.flow.watch

                          -
                          +
                          +

                          sarracenia.flow.watch

                          +
                          -class sarracenia.flow.watch.Watch(options)[source]
                          +class sarracenia.flow.watch.Watch(options)[source]

                          Bases: Flow

                          • create messages for files that appear in a directory.

                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -
                          -

                          sarracenia.flow.winnow

                          -
                          +
                          +

                          sarracenia.flow.winnow

                          +
                          -class sarracenia.flow.winnow.Winnow(options)[source]
                          +class sarracenia.flow.winnow.Winnow(options)[source]

                          Bases: Flow

                          • subscribe to a stream of messages.

                          • @@ -1828,22 +1828,22 @@
                          -__init__(options)[source]
                          +__init__(options)[source]

                          The cfg is should be an sarra/config object.

                          -
                          -

                          sarracenia.instance

                          -
                          +
                          +

                          sarracenia.instance

                          +
                          -class sarracenia.instance.RedirectedTimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None, errors=None)[source]
                          +class sarracenia.instance.RedirectedTimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None, errors=None)[source]

                          Bases: TimedRotatingFileHandler

                          -doRollover()[source]
                          +doRollover()[source]

                          do a rollover; in this case, a date/time stamp is appended to the filename when the rollover happens. However, you want the file to be named for the start of the interval, not the current time. If there is a backup count, @@ -1855,25 +1855,25 @@

                          -class sarracenia.instance.instance[source]
                          +class sarracenia.instance.instance[source]

                          Bases: object

                          Process management for a single flow instance. start and stop instances.

                          this is the main entry point launched from the sr3 cli, with arguments for it to turn into a specific configuration.

                          -__init__()[source]
                          +__init__()[source]
                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -start()[source]
                          +start()[source]

                          Main element to run a single flow instance. It parses the command line arguments twice. the first pass, is to initialize the log file and debug level, and select the configuration file to parse. Once the log file is set, and output & error re-direction is in place, the second pass begins:

                          @@ -1886,11 +1886,11 @@
                          -
                          -

                          sarracenia.identity

                          -
                          +
                          +

                          sarracenia.identity

                          +
                          -class sarracenia.identity.Identity[source]
                          +class sarracenia.identity.Identity[source]

                          Bases: object

                          A class for algorithms to get a fingerprint for a file being announced. Appropriate fingerprinting algorithms vary according to file type.

                          @@ -1906,13 +1906,13 @@
                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -update_file(path)[source]
                          +update_file(path)[source]

                          read the entire file, check sum it. this is kind of last resort as it cost an extra file read. It is better to call update( as the file is being read for other reasons.

                          @@ -1920,84 +1920,84 @@
                          -property value
                          +property value

                          return the current value of the checksum calculation.

                          -
                          -

                          sarracenia.identity.arbitrary

                          -
                          +
                          +

                          sarracenia.identity.arbitrary

                          +
                          -class sarracenia.identity.arbitrary.Arbitrary[source]
                          +class sarracenia.identity.arbitrary.Arbitrary[source]

                          Bases: Identity

                          For applications where there is no known way of determining equivalence, allow them to supply an arbitrary tag, that can be used to compare products for duplicate suppression purposes.

                          use setter to set the value… some sort of external checksum algorithm that cannot be reproduced.

                          -__init__()[source]
                          +__init__()[source]
                          -property value
                          +property value

                          return the current value of the checksum calculation.

                          -
                          -

                          sarracenia.identity.sha512

                          -
                          +
                          +

                          sarracenia.identity.sha512

                          +
                          -class sarracenia.identity.sha512.Sha512[source]
                          +class sarracenia.identity.sha512.Sha512[source]

                          Bases: Identity

                          The SHA512 algorithm to checksum the entire file, which is called ‘s’.

                          -
                          -

                          sarracenia.identity.md5

                          -
                          +
                          +

                          sarracenia.identity.md5

                          +
                          -class sarracenia.identity.md5.Md5[source]
                          +class sarracenia.identity.md5.Md5[source]

                          Bases: Identity

                          use the (obsolete) Message Digest 5 (MD5) algorithm, applied on the content of a file, to generate an identity signature.

                          -static registered_as()[source]
                          +static registered_as()[source]

                          v2name.

                          -
                          -

                          sarracenia.identity.random

                          -
                          +
                          +

                          sarracenia.identity.random

                          +
                          -class sarracenia.identity.random.Random[source]
                          +class sarracenia.identity.random.Random[source]

                          Bases: Identity

                          Trivial minimalist checksumming algorithm, returns random number for any file.

                          -property value
                          +property value

                          return the current value of the checksum calculation.

                          -
                          -

                          sarracenia.moth

                          -
                          +
                          +

                          sarracenia.moth

                          +
                          -class sarracenia.moth.Moth(props=None, is_subscriber=True)[source]
                          +class sarracenia.moth.Moth(props=None, is_subscriber=True)[source]

                          Bases: object

                          Moth … Messages Organized by Topic Headers @@ -2130,7 +2130,7 @@

                          -__init__(props=None, is_subscriber=True) None[source]
                          +__init__(props=None, is_subscriber=True) None[source]

                          If is_subscriber=True, then this is a consuming instance. expect calls to get* routines.

                          if is_subscriber=False, then expect/permit only calls to put*

                          @@ -2138,32 +2138,32 @@
                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -ack(message) None[source]
                          +ack(message) None[source]

                          tell broker that a given message has been received.

                          ack uses the ‘ack_id’ property to send an acknowledgement back to the broker.

                          -cleanup() None[source]
                          +cleanup() None[source]

                          get rid of server-side resources associated with a client. (queues/id’s, etc…)

                          -property default_options: dict
                          +property default_options: dict

                          get default properties to override, used by client for validation.

                          -getNewMessage() Message[source]
                          +getNewMessage() Message[source]

                          If there is one new message available, return it. Otherwise return None. Do not block.

                          side effects:

                          metrics. @@ -2176,13 +2176,13 @@

                          -metricsDisconnect() None[source]
                          +metricsDisconnect() None[source]

                          tear down an existing connection.

                          -newMessages() list[source]
                          +newMessages() list[source]

                          If there are new messages available from the broker, return them, otherwise return None.

                          On Success, this routine returns immediately (non-blocking) with either None, or a list of messages.

                          On failure, this routine blocks, and loops reconnecting to broker, until interaction with broker is successful.

                          @@ -2190,7 +2190,7 @@
                          -putNewMessage(message, content_type='application/json') bool[source]
                          +putNewMessage(message, content_type='application/json') bool[source]

                          publish a message as set up to the given topic.

                          return True is succeeded, False otherwise.

                          @@ -2204,11 +2204,11 @@
                          -
                          -

                          sarracenia.moth.amqp

                          -
                          +
                          +

                          sarracenia.moth.amqp

                          +
                          -class sarracenia.moth.amqp.AMQP(props, is_subscriber)[source]
                          +class sarracenia.moth.amqp.AMQP(props, is_subscriber)[source]

                          Bases: Moth

                          implementation of the Moth API for the amqp library, which is built to talk to rabbitmq brokers in 0.8 and 0.9 AMQP dialects.

                          @@ -2219,7 +2219,7 @@ queueDeclare - declare queue before use.

                          -__connect(broker) bool
                          +__connect(broker) bool

                          connect to broker. returns True if connected, false otherwise.

                          @@ -2230,19 +2230,19 @@
                          -__init__(props, is_subscriber) None[source]
                          +__init__(props, is_subscriber) None[source]

                          connect to broker, depending on message_strategy stubborness, remain connected.

                          -ack(m) None[source]
                          +ack(m) None[source]

                          do what you need to acknowledge that processing of a message is done.

                          -getNewMessage() Message[source]
                          +getNewMessage() Message[source]

                          If there is one new message available, return it. Otherwise return None. Do not block.

                          side effects:

                          metrics. @@ -2255,7 +2255,7 @@

                          -getSetup() None[source]
                          +getSetup() None[source]

                          Setup so we can get messages.

                          if message_strategy is stubborn, will loop here forever.

                          connect, declare queue, apply bindings.

                          @@ -2265,7 +2265,7 @@
                          -newMessages() list[source]
                          +newMessages() list[source]

                          If there are new messages available from the broker, return them, otherwise return None.

                          On Success, this routine returns immediately (non-blocking) with either None, or a list of messages.

                          On failure, this routine blocks, and loops reconnecting to broker, until interaction with broker is successful.

                          @@ -2273,7 +2273,7 @@
                          -putNewMessage(body, content_type='application/json', exchange=None) bool[source]
                          +putNewMessage(body, content_type='application/json', exchange=None) bool[source]

                          put a new message out, to the configured exchange by default.

                          @@ -2281,23 +2281,23 @@
                          -sarracenia.moth.amqp.logger = <Logger sarracenia.moth.amqp (WARNING)>
                          +sarracenia.moth.amqp.logger = <Logger sarracenia.moth.amqp (WARNING)>

                          amqp_ss_maxlen

                          the maximum length of a “short string”, as per AMQP protocol, in bytes.

                          -
                          -

                          sarracenia.moth.pika

                          -
                          +
                          +

                          sarracenia.moth.pika

                          +
                          -class sarracenia.moth.pika.PIKA(broker)[source]
                          +class sarracenia.moth.pika.PIKA(broker)[source]

                          Bases: Moth

                          moth subclass based on the pika AMQP/rabbitmq client library.

                          stub: not implemented.

                          -__init__(broker)[source]
                          +__init__(broker)[source]

                          If is_subscriber=True, then this is a consuming instance. expect calls to get* routines.

                          if is_subscriber=False, then expect/permit only calls to put*

                          @@ -2307,17 +2307,17 @@
                          -

                          sarracenia.moth.mqtt

                          +

                          sarracenia.moth.mqtt

                          -
                          -

                          sarracenia.moth.amq1

                          -
                          +
                          +

                          sarracenia.moth.amq1

                          +
                          -class sarracenia.moth.amq1.AMQ1(broker, props, is_subscriber)[source]
                          +class sarracenia.moth.amq1.AMQ1(broker, props, is_subscriber)[source]

                          Bases: Moth

                          -__init__(broker, props, is_subscriber)[source]
                          +__init__(broker, props, is_subscriber)[source]

                          AMQP 1.0 library to be built with libqpid-proton (the only free amqp 1.0 library around.)

                          stub, not implemented

                          @@ -2325,61 +2325,61 @@

                          sarracenia.moth.mqtt

                          -
                          -

                          sarracenia.rabbitmq_admin

                          -

                          rabbitmq administration bindings, to allow sr to invoke broker management functions.

                          +
                          +

                          sarracenia.rabbitmq_admin

                          +

                          rabbitmq administration bindings, to allow sr to invoke broker management functions.

                          -sarracenia.rabbitmq_admin.add_user(url, role, user, passwd, simulate)[source]
                          +sarracenia.rabbitmq_admin.add_user(url, role, user, passwd, simulate)[source]

                          add the given user with the given credentials.

                          -sarracenia.rabbitmq_admin.broker_get_exchanges(url, ssl_key_file=None, ssl_cert_file=None)[source]
                          +sarracenia.rabbitmq_admin.broker_get_exchanges(url, ssl_key_file=None, ssl_cert_file=None)[source]

                          get the list of existing exchanges using a url query.

                          -sarracenia.rabbitmq_admin.del_user(url, user, simulate)[source]
                          +sarracenia.rabbitmq_admin.del_user(url, user, simulate)[source]

                          delete user from the given broker.

                          -sarracenia.rabbitmq_admin.exec_rabbitmqadmin(url, options, simulate=False)[source]
                          +sarracenia.rabbitmq_admin.exec_rabbitmqadmin(url, options, simulate=False)[source]

                          invoke rabbitmqadmin using a sub-process, with the given options.

                          -sarracenia.rabbitmq_admin.get_exchanges(url)[source]
                          +sarracenia.rabbitmq_admin.get_exchanges(url)[source]

                          get the list of existing exchanges.

                          -sarracenia.rabbitmq_admin.get_queues(url)[source]
                          +sarracenia.rabbitmq_admin.get_queues(url)[source]

                          get the list of existing queues.

                          -sarracenia.rabbitmq_admin.get_users(url)[source]
                          +sarracenia.rabbitmq_admin.get_users(url)[source]

                          get the list of existing users.

                          -sarracenia.rabbitmq_admin.run_rabbitmqadmin(url, options, simulate=False)[source]
                          +sarracenia.rabbitmq_admin.run_rabbitmqadmin(url, options, simulate=False)[source]

                          spawn a subprocess to run rabbitmqadmin with the given options. capture result.

                          -sarracenia.rabbitmq_admin.user_access(url, user)[source]
                          +sarracenia.rabbitmq_admin.user_access(url, user)[source]

                          Given an administrative URL, return a list of exchanges and queues the user can access.

                          lox = list of exchanges, just a list of names. loq = array of queues, where the value of each is the number of messages ready.

                          @@ -2393,16 +2393,16 @@

                          sarracenia.moth.mqtt

                          -
                          -

                          sarracenia.transfer

                          -
                          +
                          +

                          sarracenia.transfer

                          +
                          -exception sarracenia.transfer.TimeoutException[source]
                          +exception sarracenia.transfer.TimeoutException[source]

                          Bases: Exception

                          timeout exception

                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          @@ -2410,7 +2410,7 @@

                          sarracenia.moth.mqtt
                          -class sarracenia.transfer.Transfer(proto, options)[source]
                          +class sarracenia.transfer.Transfer(proto, options)[source]

                          Bases: object

                          This is a sort of abstract base classe for implementing transfer protocols. Implemented subclasses include support for: local files, https, sftp, and ftp.

                          @@ -2446,18 +2446,18 @@

                          sarracenia.moth.mqtt * bufsize - size of buffers for file transfers.

                          -__init__(proto, options)[source]
                          +__init__(proto, options)[source]
                          -__weakref__
                          +__weakref__

                          list of weak references to the object (if defined)

                          -on_data(chunk) bytes[source]
                          +on_data(chunk) bytes[source]

                          transform data as it is being read. Given a buffer, return the transformed buffer. Checksum calculation is based on pre transformation… likely need @@ -2468,26 +2468,26 @@

                          sarracenia.moth.mqtt
                          -sarracenia.transfer.alarm_set(time)[source]
                          +sarracenia.transfer.alarm_set(time)[source]

                          FIXME: replace with set itimer for > 1 second resolution… currently rouding to nearest second.

                          -
                          -

                          sarracenia.transfer.file

                          -
                          +
                          +

                          sarracenia.transfer.file

                          +
                          -class sarracenia.transfer.file.File(proto, options)[source]
                          +class sarracenia.transfer.file.File(proto, options)[source]

                          Bases: Transfer

                          Transfer sub-class for local file i/o.

                          -__init__(proto, options)[source]
                          +__init__(proto, options)[source]
                          -cd(path)[source]
                          +cd(path)[source]

                          proto classes are used for remote sessions, so this cd is for REMOTE directory… when file remote as a protocol it is for the source. should not change the “local” working directory when downloading.

                          @@ -2496,11 +2496,11 @@

                          sarracenia.moth.mqtt

                          -
                          -

                          sarracenia.transfer.https

                          -
                          +
                          +

                          sarracenia.transfer.https

                          +
                          -class sarracenia.transfer.https.Https(proto, options)[source]
                          +class sarracenia.transfer.https.Https(proto, options)[source]

                          Bases: Transfer

                          HyperText Transfer Protocol (HTTP) ( https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol ) sarracenia transfer protocol subclass supports/uses additional custom options:

                          @@ -2513,17 +2513,17 @@

                          sarracenia.moth.mqtt

                          -__init__(proto, options)[source]
                          +__init__(proto, options)[source]
                          -
                          -

                          sarracenia.transfer.ftp

                          -
                          +
                          +

                          sarracenia.transfer.ftp

                          +
                          -class sarracenia.transfer.ftp.Ftp(proto, options)[source]
                          +class sarracenia.transfer.ftp.Ftp(proto, options)[source]

                          Bases: Transfer

                          File Transfer Protocol (FTP) ( https://datatracker.ietf.org/doc/html/rfc959 ) sarracenia transfer protocol subclass supports/uses additional custom options:

                          @@ -2534,17 +2534,17 @@

                          sarracenia.moth.mqtt

                          built using: ftplib ( https://docs.python.org/3/library/ftplib.html )

                          -__init__(proto, options)[source]
                          +__init__(proto, options)[source]

                          -
                          -

                          sarracenia.transfer.sftp

                          -
                          +
                          +

                          sarracenia.transfer.sftp

                          +
                          -class sarracenia.transfer.sftp.Sftp(proto, options)[source]
                          +class sarracenia.transfer.sftp.Sftp(proto, options)[source]

                          Bases: Transfer

                          SecSH File Transfer Protocol (SFTP) ( https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt ) Sarracenia transfer protocol subclass supports/uses additional custom options:

                          @@ -2554,7 +2554,7 @@

                          sarracenia.moth.mqtt

                          The module uses the paramiko library for python SecSH support ( https://www.paramiko.org/ )

                          -__init__(proto, options)[source]
                          +__init__(proto, options)[source]

                          diff --git a/Reference/flowcb.html b/Reference/flowcb.html index 77b13cd0e..7315eb7e4 100644 --- a/Reference/flowcb.html +++ b/Reference/flowcb.html @@ -8,9 +8,9 @@ - + - + @@ -51,228 +51,228 @@
                        • Sr3_cpump C Manual Page
                        • Posting Message Format Man page
                        • FlowCallback Reference
                        • -
                          -

                          sarracenia.flowcb.mdelaylatest

                          -
                          +
                          +

                          sarracenia.flowcb.mdelaylatest

                          +
                          -class sarracenia.flowcb.mdelaylatest.MDelayLatest(options)[source]
                          +class sarracenia.flowcb.mdelaylatest.MDelayLatest(options)[source]

                          Bases: FlowCB

                          This plugin delays processing of messages by message_delay seconds If multiple versions of a file are published within the interval, only the latest one @@ -1666,17 +1666,17 @@ In the meantime, the message is placed on the retry queue by marking it as failed.

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -
                          -

                          sarracenia.flowcb.nodupe

                          -
                          +
                          +

                          sarracenia.flowcb.nodupe

                          +
                          -class sarracenia.flowcb.nodupe.NoDupe(options, class_logger=None)[source]
                          +class sarracenia.flowcb.nodupe.NoDupe(options, class_logger=None)[source]

                          Bases: FlowCB

                          duplicate suppression family of modules.

                          invoked with:

                          @@ -1689,11 +1689,11 @@
                          -
                          -

                          sarracenia.flowcb.nodupe.data

                          -
                          +
                          +

                          sarracenia.flowcb.nodupe.data

                          +
                          -class sarracenia.flowcb.nodupe.data.Data(options, class_logger=None)[source]
                          +class sarracenia.flowcb.nodupe.data.Data(options, class_logger=None)[source]

                          Bases: FlowCB

                          duplicate suppression based on data alone. Overrides the path used for lookups in the cache so that all files have the same name, and so if the checksum @@ -1701,11 +1701,11 @@

                          -
                          -

                          sarracenia.flowcb.nodupe.name

                          -
                          +
                          +

                          sarracenia.flowcb.nodupe.name

                          +
                          -class sarracenia.flowcb.nodupe.name.Name(options, class_logger=None)[source]
                          +class sarracenia.flowcb.nodupe.name.Name(options, class_logger=None)[source]

                          Bases: FlowCB

                          Override the the comparison so that files with the same name, regardless of what directory they are in, are considered the same. @@ -1714,11 +1714,11 @@

                          -
                          -

                          sarracenia.flowcb.retry

                          -
                          +
                          +

                          sarracenia.flowcb.retry

                          +
                          -class sarracenia.flowcb.retry.Retry(options)[source]
                          +class sarracenia.flowcb.retry.Retry(options)[source]

                          Bases: FlowCB

                          overall goal:

                            @@ -1738,32 +1738,32 @@
                          -__init__(options) None[source]
                          +__init__(options) None[source]
                          -after_accept(worklist) None[source]
                          +after_accept(worklist) None[source]

                          If there are only a few new messages, get some from the download retry queue and put them into worklist.incoming.

                          -after_post(worklist) None[source]
                          +after_post(worklist) None[source]

                          Messages in worklist.failed should be put in the post retry queue.

                          -after_work(worklist) None[source]
                          +after_work(worklist) None[source]

                          Messages in worklist.failed should be put in the download retry queue. If there are only a few new messages, get some from the post retry queue and put them into worklist.ok.

                          -metricsReport() dict[source]
                          +metricsReport() dict[source]

                          Returns the number of messages in the download_retry and post_retry queues.

                          Returns:
                          @@ -1778,13 +1778,13 @@
                          -
                          -

                          sarracenia.flowcb.pclean

                          -

                          msg_pclean module: base module for propagation tests and cleanup for Sarracenia components (in flow test) +

                          +

                          sarracenia.flowcb.pclean

                          +

                          msg_pclean module: base module for propagation tests and cleanup for Sarracenia components (in flow test) Used by https://github.com/MetPX/sr_insects test suite for CI/CD.

                          -class sarracenia.flowcb.pclean.PClean(options)[source]
                          +class sarracenia.flowcb.pclean.PClean(options)[source]

                          Bases: FlowCB

                          Base plugin class that is used in shovel pclean_f9x:

                          @@ -1799,12 +1799,12 @@

                          The posted message contains a tag in the header for the test performed which is the extension used for the test

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -build_path_dict(fxx_dirs, relpath, ext='')[source]
                          +build_path_dict(fxx_dirs, relpath, ext='')[source]

                          This build paths necessary to pclean tests

                          It is a subset of all flow test path based on fxx download directory provided.

                          @@ -1824,7 +1824,7 @@
                          -get_extension(relpath)[source]
                          +get_extension(relpath)[source]

                          Check whether the extension is in the header

                          Parameters:
                          @@ -1839,25 +1839,25 @@
                          -
                          -

                          sarracenia.flowcb.sample

                          -
                          +
                          +

                          sarracenia.flowcb.sample

                          +
                          -class sarracenia.flowcb.sample.Sample(options)[source]
                          +class sarracenia.flowcb.sample.Sample(options)[source]

                          Bases: FlowCB

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -
                          -

                          sarracenia.flowcb.scheduled

                          -
                          +
                          +

                          sarracenia.flowcb.scheduled

                          +
                          -class sarracenia.flowcb.scheduled.Scheduled(options)[source]
                          +class sarracenia.flowcb.scheduled.Scheduled(options)[source]

                          Bases: FlowCB

                          Scheduled flow callback plugin arranges to post url’s at scheduled times.

                          @@ -1898,12 +1898,12 @@ just haven’t thought about it. opportunity for improvement.

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -wait_seconds(sleepfor)[source]
                          +wait_seconds(sleepfor)[source]

                          sleep for the given number of seconds, like time.sleep() but broken into shorter naps to be able to honour stop_requested.

                          @@ -1912,13 +1912,13 @@
                          -

                          sarracenia.flowcb.script

                          +

                          sarracenia.flowcb.script

                          -
                          -

                          sarracenia.flowcb.shiftdir2baseurl

                          -
                          +
                          +

                          sarracenia.flowcb.shiftdir2baseurl

                          +
                          -class sarracenia.flowcb.shiftdir2baseurl.ShiftDir2baseUrl(options)[source]
                          +class sarracenia.flowcb.shiftdir2baseurl.ShiftDir2baseUrl(options)[source]

                          Bases: FlowCB

                          modify message to shift directories from relPath to baseUrl:

                          @@ -1927,17 +1927,17 @@

                          sarracenia.flowcb.sc

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -
                          -

                          sarracenia.flowcb.poll

                          -
                          +
                          +

                          sarracenia.flowcb.poll

                          +
                          -class sarracenia.flowcb.poll.Poll(options, class_logger=None)[source]
                          +class sarracenia.flowcb.poll.Poll(options, class_logger=None)[source]

                          Bases: FlowCB

                          The Poll flow callback class implements the main logic for polling remote resources. the poll routine returns a list of messages for new files to be filtered.

                          @@ -1979,12 +1979,12 @@

                          sarracenia.flowcb.sc
                          -__init__(options, class_logger=None)[source]
                          +__init__(options, class_logger=None)[source]
                          -handle_data(data)[source]
                          +handle_data(data)[source]

                          routine called from html.parser to deal with a single line. if the line is about a file, then create a new entry for it with a metadata available from SFTPAttributes.

                          @@ -2007,14 +2007,14 @@

                          sarracenia.flowcb.sc
                          -on_html_page(data) dict[source]
                          +on_html_page(data) dict[source]

                          called once per directory or page of HTML, invokes html.parser, returns a dictionary of file entries.

                          -on_line(line) SFTPAttributes[source]
                          +on_line(line) SFTPAttributes[source]

                          default line processing, converts a file listing into an SFTPAttributes. does nothing if input is already an SFTPAttributes item, returning it unchanged. verifies that file is accessible (based on self.o.permDefault pattern to establish minimum permissions.)

                          @@ -2023,9 +2023,9 @@

                          sarracenia.flowcb.sc

                          -
                          -

                          sarracenia.flowcb.poll.airnow

                          -

                          Posts updated files of airnowtech. +

                          +

                          sarracenia.flowcb.poll.airnow

                          +

                          Posts updated files of airnowtech. Compatible with Python 3.5+.

                          usage:

                          in an sr3 poll configuration file:

                          @@ -2037,14 +2037,14 @@

                          sarracenia.flowcb.sc

                          -class sarracenia.flowcb.poll.airnow.Airnow(options, class_logger=None)[source]
                          +class sarracenia.flowcb.poll.airnow.Airnow(options, class_logger=None)[source]

                          Bases: FlowCB

                          -
                          -

                          sarracenia.flowcb.poll.mail

                          -

                          Posts any new emails from an email server, connected to using +

                          +

                          sarracenia.flowcb.poll.mail

                          +

                          Posts any new emails from an email server, connected to using the specified protocol, either pop3 or imap. The imaplib/poplib implementations in Python use the most secure SSL settings by default: PROTOCOL_TLS, OP_NO_SSLv2, and OP_NO_SSLv3. @@ -2069,25 +2069,25 @@

                          sarracenia.flowcb.sc

                          to process these posts.

                          -class sarracenia.flowcb.poll.mail.Mail(options)[source]
                          +class sarracenia.flowcb.poll.mail.Mail(options)[source]

                          Bases: Poll

                          -__init__(options)[source]
                          +__init__(options)[source]

                          -
                          -

                          sarracenia.flowcb.poll.nasa_mls_nrt

                          -
                          +
                          +

                          sarracenia.flowcb.poll.nasa_mls_nrt

                          +
                          -class sarracenia.flowcb.poll.nasa_mls_nrt.Nasa_mls_nrt(options, class_logger=None)[source]
                          +class sarracenia.flowcb.poll.nasa_mls_nrt.Nasa_mls_nrt(options, class_logger=None)[source]

                          Bases: Poll

                          -handle_data(data)[source]
                          +handle_data(data)[source]

                          decode some HTML into an SFTPAttributes record for a file.

                          @@ -2095,11 +2095,11 @@

                          sarracenia.flowcb.sc

                          -

                          sarracenia.flowcb.poll.nexrad

                          +

                          sarracenia.flowcb.poll.nexrad

                          -
                          -

                          sarracenia.flowcb.poll.noaa_hydrometric

                          -

                          Posts updated files of NOAA water level/temperature hydrometric data. Station site IDs provided +

                          +

                          sarracenia.flowcb.poll.noaa_hydrometric

                          +

                          Posts updated files of NOAA water level/temperature hydrometric data. Station site IDs provided in the poll_noaa_stn_file. Compatible with Python 3.5+.

                          usage: sample url: https://tidesandcurrents.noaa.gov/api/datagetter?range=1&station=9450460&product=water_temperature&units=metric&time_zone=gmt&application=web_services&format=csv

                          @@ -2126,19 +2126,19 @@

                          sarracenia.flowcb.po so that normalk downloader works, so only the poll one needed.

                          -class sarracenia.flowcb.poll.noaa_hydrometric.Noaa_hydrometric(options)[source]
                          +class sarracenia.flowcb.poll.noaa_hydrometric.Noaa_hydrometric(options)[source]

                          Bases: FlowCB

                          -__init__(options)[source]
                          +__init__(options)[source]

                          -
                          -

                          sarracenia.flowcb.poll.usgs

                          -

                          Posts updated files of USGS hydrometric data. Station site IDs provided +

                          +

                          sarracenia.flowcb.poll.usgs

                          +

                          Posts updated files of USGS hydrometric data. Station site IDs provided in the poll_usgs_stn_file. Compatible with Python 3.5+.

                          Status: UNTESTED… don’t have a working basis (even on v2) to compare against.

                          was updated for v3. but don’t have credentials to confirm it now works.

                          @@ -2175,23 +2175,23 @@

                          sarracenia.flowcb.po

                          -class sarracenia.flowcb.poll.usgs.Usgs(options)[source]
                          +class sarracenia.flowcb.poll.usgs.Usgs(options)[source]

                          Bases: FlowCB

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -
                          -

                          sarracenia.flowcb.post

                          -

                          Place holder… thought this was not needed, then there was a stack trace.

                          +
                          +

                          sarracenia.flowcb.post

                          +

                          Place holder… thought this was not needed, then there was a stack trace.

                          -
                          -

                          sarracenia.flowcb.send.email

                          -

                          sarracenia.flowcb.send.email.Email is an sr3 sender plugin. Once a file is +

                          +

                          sarracenia.flowcb.send.email

                          +

                          sarracenia.flowcb.send.email.Email is an sr3 sender plugin. Once a file is posted, the plugin matches the topic(what the filename begins with) to the file name and sends the appropriate emails.

                          @@ -2216,42 +2216,42 @@

                          sarracenia.flowcb.po

                          Original Author: Wahaj Taseer - June, 2019

                          -class sarracenia.flowcb.send.email.Email(options)[source]
                          +class sarracenia.flowcb.send.email.Email(options)[source]

                          Bases: FlowCB

                          -__init__(options)[source]
                          +__init__(options)[source]

                          -
                          -

                          sarracenia.flowcb.post.message

                          -
                          +
                          +

                          sarracenia.flowcb.post.message

                          +
                          -class sarracenia.flowcb.post.message.Message(options)[source]
                          +class sarracenia.flowcb.post.message.Message(options)[source]

                          Bases: FlowCB

                          post messages to sarracenia.moth message queuing protocol destination.

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -
                          -

                          sarracenia.flowcb.send

                          -

                          plugins intended for on_message entry_point.

                          +
                          +

                          sarracenia.flowcb.send

                          +

                          plugins intended for on_message entry_point.

                          (when messages are received.)

                          -

                          sarracenia.flowcb.wistree

                          +

                          sarracenia.flowcb.wistree

                          -
                          -

                          sarracenia.flowcb.work

                          -

                          plugins that use primarily the after_work entry point, normally +

                          +

                          sarracenia.flowcb.work

                          +

                          plugins that use primarily the after_work entry point, normally executed after the file transfer (either send or get) has completed.

                          usually such plugins will contain a loop:

                          @@ -2260,23 +2260,23 @@

                          sarracenia.flowcb.wi

                          to operate on all the files transferrred or processed successfully.

                          -
                          -

                          sarracenia.flowcb.work.age

                          -

                          print the age of files written (compare current time to mtime of message.) +

                          +

                          sarracenia.flowcb.work.age

                          +

                          print the age of files written (compare current time to mtime of message.) usage:

                          flowcb work.age

                          -class sarracenia.flowcb.work.age.Age(options, class_logger=None)[source]
                          +class sarracenia.flowcb.work.age.Age(options, class_logger=None)[source]

                          Bases: FlowCB

                          -
                          -

                          sarracenia.flowcb.work.rxpipe

                          -
                          +
                          +

                          sarracenia.flowcb.work.rxpipe

                          +
                          -class sarracenia.flowcb.work.rxpipe.Rxpipe(options)[source]
                          +class sarracenia.flowcb.work.rxpipe.Rxpipe(options)[source]

                          Bases: FlowCB

                          After each file is transferred, write it’s name to a named_pipe.

                          @@ -2285,21 +2285,21 @@

                          sarracenia.flowcb.wi

                          -__init__(options)[source]
                          +__init__(options)[source]
                          -
                          -

                          sarracenia.flowcb.v2wrapper

                          -
                          +
                          +

                          sarracenia.flowcb.v2wrapper

                          +
                          -class sarracenia.flowcb.v2wrapper.V2Wrapper(o)[source]
                          +class sarracenia.flowcb.v2wrapper.V2Wrapper(o)[source]

                          Bases: FlowCB

                          -__init__(o)[source]
                          +__init__(o)[source]

                          A wrapper class to run v02 plugins. us run_entry(entry_point,module)

                          entry_point is a string like ‘on_message’, and module being the one to add.

                          @@ -2315,13 +2315,13 @@

                          sarracenia.flowcb.wi
                          -on_time(time)[source]
                          +on_time(time)[source]

                          run plugins for a given entry point.

                          -run_entry(ep, m)[source]
                          +run_entry(ep, m)[source]

                          run plugins for a given entry point.

                          @@ -2329,7 +2329,7 @@

                          sarracenia.flowcb.wi
                          -sarracenia.flowcb.v2wrapper.sumstrFromMessage(msg) str[source]
                          +sarracenia.flowcb.v2wrapper.sumstrFromMessage(msg) str[source]

                          accepts a v3 message as argument msg. returns the corresponding sum string for a v2 ‘sum’ header.

                          diff --git a/Reference/index.html b/Reference/index.html index 25881ebbd..2abf2c84c 100644 --- a/Reference/index.html +++ b/Reference/index.html @@ -8,9 +8,9 @@ - + - + @@ -108,7 +108,7 @@ }
                          -

                          Reference

                          +

                          Reference

                          Contents:

                          diff --git a/Reference/sr3.1.html b/Reference/sr3.1.html index 5264518d2..d1f7d5dc8 100644 --- a/Reference/sr3.1.html +++ b/Reference/sr3.1.html @@ -8,9 +8,9 @@ - + - + @@ -122,15 +122,15 @@ }
                          -

                          SR3

                          +

                          SR3

                          -

                          sr3 Sarracenia CLI

                          +

                          sr3 Sarracenia CLI

                          Manual section:

                          1

                          Date:
                          -

                          Aug 16, 2023

                          +

                          Aug 18, 2023

                          Version:

                          UNKNOWN

                          @@ -140,11 +140,11 @@

                          sr3 Sarracenia CLI -

                          SYNOPSIS

                          +

                          SYNOPSIS

                          sr3 options action [ component/config … ]

                          -

                          DESCRIPTION

                          +

                          DESCRIPTION

                          Sr3 is a tool to manage a fleet of daemons, whose output is mostly in log files. Sr3 allows one to start, stop, and inquire the status of configured Sarracenia flows. It is the primary command line entry point to @@ -165,7 +165,7 @@

                          DESCRIPTION -

                          OPTIONS

                          +

                          OPTIONS

                          Most options are stored in configuration files referred to by the component/config indicated by the listing file, but on occasion, one may wish to use command line to override values in the configuration file. Options are defined in Sr3 Options (7) @@ -177,7 +177,7 @@

                          OPTIONS -

                          ACTIONS

                          +

                          ACTIONS

                          The type of action to take. One of:

                            @@ -206,7 +206,7 @@

                            ACTIONS -

                            COMPONENTS

                            +

                            COMPONENTS

                            The Flow Algorithm is what is run by all sr3 processes. The flow algorithm’s behaviour is customized by options, some of which control optional modules (flowcallbacks) Each component has a @@ -224,7 +224,7 @@

                            COMPONENTS -

                            CONFIGURATIONS

                            +

                            CONFIGURATIONS

                            When a component/configuration pair is specified on the command line, It is actually building the effective configuration from:

                            @@ -272,7 +272,7 @@

                            CONFIGURATIONS -

                            Remote Configurations

                            +

                            Remote Configurations

                            One can specify URI’s as configuration files, rather than local files. Example:

                              @@ -295,7 +295,7 @@

                              Remote Configurations

                          -

                          Logs

                          +

                          Logs

                          for the logs, look in ~/.cache/sr3/logs (on linux. Other platforms, will vary.) To find them on any platform:

                          fractal% sr3 list
                          @@ -308,7 +308,7 @@ 

                          Logs

                          -

                          EXAMPLES

                          +

                          EXAMPLES

                          Here is a short complete example configuration file:

                          broker amqps://dd.weather.gc.ca/
                           
                          @@ -328,7 +328,7 @@ 

                          EXAMPLES -

                          SEE ALSO

                          +

                          SEE ALSO

                          User Commands:

                          sr3_post(1) - post file notification messages (python implementation.)

                          sr3_cpost(1) - post file announcemensts (C implementation.)

                          diff --git a/Reference/sr3_cpump.1.html b/Reference/sr3_cpump.1.html index 5d2c28700..e466fa735 100644 --- a/Reference/sr3_cpump.1.html +++ b/Reference/sr3_cpump.1.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                          -

                          SR_CPUMP

                          +

                          SR_CPUMP

                          -

                          sr_shovel in C

                          +

                          sr_shovel in C

                          Manual section:

                          1

                          Date:
                          -

                          Aug 16, 2023

                          +

                          Aug 18, 2023

                          Version:

                          UNKNOWN

                          @@ -137,12 +137,12 @@

                          sr_shovel in C -

                          SYNOPSIS

                          +

                          SYNOPSIS

                          sr_cpump foreground|start|stop|restart|reload|status configfile sr_cpump cleanup|declare|setup configfile

                          -

                          DESCRIPTION

                          +

                          DESCRIPTION

                          sr_cpump is an alternate implementation of the shovel component of sr3(1) with some limitations.

                          @@ -187,7 +187,7 @@

                          DESCRIPTION -

                          CONFIGURATION

                          +

                          CONFIGURATION

                          In general, the options for this component are described by the sr3_options(7) page which should be read first. It fully explains the option configuration language, and how to find @@ -197,7 +197,7 @@

                          CONFIGURATION -

                          ENVIRONMENT VARIABLES

                          +

                          ENVIRONMENT VARIABLES

                          If the SR_CONFIG_EXAMPLES variable is set, then the add directive can be used to copy examples into the user’s directory for use and/or customization.

                          An entry in the ~/.config/sarra/default.conf (created via sr_subscribe edit default.conf ) @@ -209,7 +209,7 @@

                          ENVIRONMENT VARIABLES

                          -

                          SEE ALSO

                          +

                          SEE ALSO

                          User Commands:

                          sr3(1) - Sarracenia main command line interface.

                          sr3_post(1) - post file notification messages (python implementation.)

                          diff --git a/Reference/sr3_credentials.7.html b/Reference/sr3_credentials.7.html index 999b6b58d..3430a0df6 100644 --- a/Reference/sr3_credentials.7.html +++ b/Reference/sr3_credentials.7.html @@ -8,9 +8,9 @@ - + - + @@ -116,15 +116,15 @@ }
                          -

                          SR3 CREDENTIALS

                          +

                          SR3 CREDENTIALS

                          -

                          SR3 Credential File Format

                          +

                          SR3 Credential File Format

                          manual section:

                          7

                          Date:
                          -

                          Aug 16, 2023

                          +

                          Aug 18, 2023

                          Version:

                          UNKNOWN

                          @@ -134,7 +134,7 @@

                          SR3 Credential File Format -

                          CONFIGURATION

                          +

                          CONFIGURATION

                          One normally does not specify passwords in configuration files. Rather they are placed in the credentials file:

                          edit ~/.config/sr3/credentials.conf
                          @@ -168,7 +168,7 @@ 

                          CONFIGURATION -

                          Credential Details

                          +

                          Credential Details

                          You may need to specify additional options for specific credential entries. These details can be added after the end of the URL, with multiple details separated by commas (see examples above).

                          Supported details:

                            @@ -195,7 +195,7 @@

                            Credential Details -

                            SEE ALSO

                            +

                            SEE ALSO

                            sr3(1) - Sarracenia main command line interface.

                            sr3_post(1) - post file notification messages (python implementation.)

                            sr3_cpost(1) - post file announcemensts (C implementation.)

                            diff --git a/Reference/sr3_options.7.html b/Reference/sr3_options.7.html index 769f2f84e..501bbe4ad 100644 --- a/Reference/sr3_options.7.html +++ b/Reference/sr3_options.7.html @@ -8,9 +8,9 @@ - + - + @@ -120,15 +120,15 @@ }
                            -

                            SR3 OPTIONS

                            +

                            SR3 OPTIONS

                            -

                            SR3 Configuration File Format

                            +

                            SR3 Configuration File Format

                            manual section:

                            7

                            Date:
                            -

                            Aug 16, 2023

                            +

                            Aug 18, 2023

                            Version:

                            UNKNOWN

                            @@ -138,7 +138,7 @@

                            SR3 Configuration File Format -

                            SYNOPSIS

                            +

                            SYNOPSIS

                            name value
                             name value for use
                             name value_${substitution}
                            @@ -149,7 +149,7 @@ 

                            SYNOPSIS -

                            DESCRIPTION

                            +

                            DESCRIPTION

                            Options are placed in configuration files, one per line, in the form:

                            option <value>
                             
                            @@ -220,7 +220,7 @@

                            DESCRIPTION -

                            Variables

                            +

                            Variables

                            One can include substitutions in option values. They are represented by ${name}. The name can be an ordinary environment variable, or a chosen from a number of built-in ones. For example:

                            @@ -263,7 +263,7 @@

                            Variables -

                            Sundew Compatible Substituions

                            +

                            Sundew Compatible Substituions

                            In MetPX Sundew, there is a much more strict file naming standard, specialised for use with World Meteorological Organization (WMO) data. Note that the file naming convention predates, and @@ -314,7 +314,7 @@

                            Sundew Compatible Substituions -
                            SR_DEV_APPNAME
                            +

                            SR_DEV_APPNAME

                            The SR_DEV_APPNAME environment variable can be set so that the application configuration and state directories are created under a different name. This is used in development to be able to have many configurations active at once. It enables more testing than always working with the developer´s real configuration.

                            @@ -325,7 +325,7 @@
                            SR_DEV_APPNAME -

                            OPTION TYPES

                            +

                            OPTION TYPES

                            sr3 options come in several types:

                            count

                            integer count type.

                            @@ -349,19 +349,19 @@

                            OPTION TYPES -

                            OPTIONS

                            +

                            OPTIONS

                            The actual options are listed below. Note that they are case sensitive, and only a subset are available on the command line. Those that are available on the command line have the same effect as when specified in configuration files.

                            The options available in configuration files:

                            -

                            accelThreshold <size> default: 0 (disabled.)

                            +

                            accelThreshold <size> default: 0 (disabled.)

                            The accelThreshold indicates the minimum size of file being transferred for which a binary downloader will be launched.

                            -

                            accelXxxCommand

                            +

                            accelXxxCommand

                            Can specify alternate binaries for downloaders to tune for specific cases.

                            @@ -392,7 +392,7 @@

                            accelXxxCommand -

                            accept, reject and acceptUnmatched

                            +

                            accept, reject and acceptUnmatched

                            • accept <regexp pattern> (optional) [<keywords>]

                            • reject <regexp pattern> (optional)

                            • @@ -474,14 +474,14 @@

                              accept, reject and acceptUnmatched -

                              acceptSizeWrong: <boolean> (default: False)

                              +

                              acceptSizeWrong: <boolean> (default: False)

                              When a file is downloaded and its size does not match the one advertised, it is normally rejected, as a failure. This option accepts the file even with the wrong size. helpful when file is changing frequently, and there is some queueing, so the file is changed by the time it is retrieved.

                              -

                              attempts <count> (default: 3)

                              +

                              attempts <count> (default: 3)

                              The attempts option indicates how many times to attempt downloading the data before giving up. The default of 3 should be appropriate in most cases. When the retry option is false, the file is then dropped immediately.

                              @@ -491,7 +491,7 @@

                              attempts <count> (default: 3) -

                              baseDir <path> (default: /)

                              +

                              baseDir <path> (default: /)

                              baseDir supplies the directory path that, when combined with the relative one in the selected notification gives the absolute path of the file to be sent. The default is None which means that the path in the notification is the absolute one.

                              @@ -505,14 +505,14 @@

                              baseDir <path> (default: /) -

                              baseUrl_relPath <flag> (default: off)

                              +

                              baseUrl_relPath <flag> (default: off)

                              Normally, the relative path (baseUrl_relPath is False, appended to the base directory) for files which are downloaded will be set according to the relPath header included in the notification message. If baseUrl_relPath is set, however, the notification message’s relPath will be prepended with the sub-directories from the notification message’s baseUrl field.

                              -

                              batch <count> (default: 100)

                              +

                              batch <count> (default: 100)

                              The batch option is used to indicate how many files should be transferred over a connection, before it is torn down, and re-established. On very low volume transfers, where timeouts can occur between transfers, this should be @@ -521,7 +521,7 @@

                              batch <count> (default: 100) -

                              blocksize <size> default: 0 (auto)

                              +

                              blocksize <size> default: 0 (auto)

                              NOTE: NOT IMPLEMENTEDin sr3, expected to return in future version This blocksize option controls the partitioning strategy used to post files. The value should be one of:

                              @@ -538,7 +538,7 @@

                              blocksize <size> default: 0 (auto)sr3_cpump(1) for details.

                              -

                              broker

                              +

                              broker

                              broker [amqp|mqtt]{s}://<user>:<password>@<brokerhost>[:port]/<vhost>

                              A URI is used to configure a connection to a notification message pump, either an MQTT or an AMQP broker. Some Sarracenia components set a reasonable default for @@ -558,13 +558,13 @@

                              broker

                              -

                              byteRateMax <size> (default: 0)

                              +

                              byteRateMax <size> (default: 0)

                              byteRateMax is greater than 0, the process attempts to respect this delivery speed in kilobytes per second… ftp,ftps,or sftp)

                              FIXME: byteRateMax… only implemented by sender? or subscriber as well, data only, or notification messages also?

                              -

                              callback <classSpec>

                              +

                              callback <classSpec>

                              callback appends a flowcallback class to the list of those to be called during processing.

                              Most customizable processing or “plugin” logic, is implemented using the flow callback class. At different points in notification message processing, flow callback classes define @@ -584,12 +584,12 @@

                              callback <classSpec>More detail here FlowCallback load_library

                              -

                              callback_prepend <classSpec>

                              +

                              callback_prepend <classSpec>

                              identical to callback, but meant to specify functions to be executed early, that is prepended to the list of plugins to run.

                              -

                              dangerWillRobinson (default: omitted)

                              +

                              dangerWillRobinson (default: omitted)

                              This option is only recognized as a command line option. It is specified when an operation is expected to have irreversibly destructive or perhaps unexpected effects. for example:

                              sr3 stop
                              @@ -606,7 +606,7 @@ 

                              dangerWillRobinson (default: omitted) -

                              declare

                              +

                              declare

                              env NAME=Value

                              On can also reference environment variables in configuration files, using the ${ENV} syntax. If Sarracenia routines needs to make use @@ -644,21 +644,21 @@

                              declare -

                              debug

                              +

                              debug

                              Setting option debug is identical to use logLevel debug

                              -

                              delete <boolean> (default: off)

                              +

                              delete <boolean> (default: off)

                              When the delete option is set, after a download has completed successfully, the subscriber will delete the file at the upstream source. Default is false.

                              -

                              discard <boolean> (default: off)

                              +

                              discard <boolean> (default: off)

                              The discard option,if set to true, deletes the file once downloaded. This option can be useful when debugging or testing a configuration.

                              -

                              directory <path> (default: .)

                              +

                              directory <path> (default: .)

                              The directory option defines where to put the files on your server. Combined with accept / reject options, the user can select the files of interest and their directories of residence (see the mirror @@ -679,32 +679,32 @@

                              directory <path> (default: .) -

                              destfn_script <script> (default:None)

                              +

                              destfn_script <script> (default:None)

                              This Sundew compatibility option defines a script to be run when everything is ready for the delivery of the product. The script receives the sender class instance. The script takes the parent as an argument, and for example, any modification to parent.msg.new_file will change the name of the file written locally.

                              -

                              download <flag> (default: True)

                              +

                              download <flag> (default: True)

                              used to disable downloading in subscribe and/or sarra component. set False by default in shovel or winnow components.

                              -

                              dry_run <flag> (default: False)

                              +

                              dry_run <flag> (default: False)

                              Run in simulation mode with respect to file transfers. Still connects to a broker and downloads and processes messages, but transfers are disabled, for use when testing a sender, or a downloader, say to run in parallel with an existing one, and compare the logs to see if the sender is configured to send the same files as the old one (implemented with some other system.)

                              -

                              durable <flag> (default: True)

                              +

                              durable <flag> (default: True)

                              The AMQP durable option, on queue declarations. If set to True, the broker will preserve the queue across broker reboots. It means writes the queue is on disk if the broker is restarted.

                              -

                              fileEvents <event,event,…>

                              +

                              fileEvents <event,event,…>

                              A comma separated list of file event types to monitor. Available file events: create, delete, link, modify, mkdir, rmdir to only add events to the current list start the event list with a plus sign (+). @@ -721,7 +721,7 @@

                              fileEvents <event,event,…> -

                              exchange <name> (default: xpublic) and exchangeSuffix

                              +

                              exchange <name> (default: xpublic) and exchangeSuffix

                              The convention on data pumps is to use the xpublic exchange. Users can establish private data flow for their own processing. Users can declare their own exchanges that always begin with xs_<username>, so to save having to specify that each @@ -731,14 +731,14 @@

                              exchange <name> (default: xpublic) and exchangeSuffix -

                              exchangeDeclare <flag>

                              +

                              exchangeDeclare <flag>

                              On startup, by default, Sarracenia redeclares resources and bindings to ensure they are uptodate. If the exchange already exists, this flag can be set to False, so no attempt to exchange the queue is made, or it´s bindings. These options are useful on brokers that do not permit users to declare their exchanges.

                              -

                              expire <duration> (default: 5m == five minutes. RECOMMEND OVERRIDING)

                              +

                              expire <duration> (default: 5m == five minutes. RECOMMEND OVERRIDING)

                              The expire option is expressed as a duration… it sets how long should live a queue without connections.

                              A raw integer is expressed in seconds, if the suffix m,h,d,w @@ -754,7 +754,7 @@

                              expire <duration> (default: 5m == five minutes. RECOMMEND OVERRIDING) long queues for left-over experiments.

                              -

                              filename <keyword> (default:WHATFN)

                              +

                              filename <keyword> (default:WHATFN)

                              From metpx-sundew, the support of this option give all sorts of possibilities for setting the remote filename. Some keywords are based on the fact that metpx-sundew filenames are five (to six) fields strings separated by for colons.

                              @@ -801,7 +801,7 @@

                              filename <keyword> (default:WHATFN) -

                              flatten <string> (default: ‘/’)

                              +

                              flatten <string> (default: ‘/’)

                              The flatten option is use to set a separator character. The default value ( ‘/’ ) nullifies the effect of this option. This character replaces the ‘/’ in the url directory and create a “flatten” filename from its dd.weather.gc.ca path. @@ -819,7 +819,7 @@

                              flatten <string> (default: ‘/’) -

                              flowMain (default: None)

                              +

                              flowMain (default: None)

                              By default, a flow will run the sarracenia.flow.Flow class, which implements the Flow algorithm generically. The generic version does no data transfer, only creating and manipulating messages. That is appropriate for shovel, winnow, post & watch components, but components that transfer or transform data need @@ -834,7 +834,7 @@

                              flowMain (default: None)

                              -

                              housekeeping <interval> (default: 300 seconds)

                              +

                              housekeeping <interval> (default: 300 seconds)

                              The housekeeping option sets how often to execute periodic processing as determined by the list of on_housekeeping plugins. By default, it prints a log message every houskeeping interval.

                              -

                              include config

                              +

                              include config

                              include another configuration within this configuration.

                              -

                              inflight <string> (default: .tmp or NONE if post_broker set)

                              +

                              inflight <string> (default: .tmp or NONE if post_broker set)

                              The inflight option sets how to ignore files when they are being transferred or (in mid-flight betweeen two systems). Incorrect setting of this option causes unreliable transfers, and care must be taken. See Delivery Completion @@ -920,7 +920,7 @@

                              inflight <string> (default: .tmp or NONE if post_broker set) -

                              inline <flag> (default: False)

                              +

                              inline <flag> (default: False)

                              When posting messages, The inline option is used to have the file content included in the post. This can be efficient when sending small files over high latency links, a number of round trips can be saved by avoiding the retrieval @@ -931,15 +931,15 @@

                              inline <flag> (default: False) -

                              inlineByteMax <size>

                              +

                              inlineByteMax <size>

                              the maximums size of messages to inline.

                              -

                              inlineOnly

                              +

                              inlineOnly

                              discard messages if the data is not inline.

                              -

                              inplace <flag> (default: On)

                              +

                              inplace <flag> (default: On)

                              Large files may be sent as a series of parts, rather than all at once. When downloading, if inplace is true, these parts will be appended to the file in an orderly fashion. Each part, after it is inserted in the file, is announced to subscribers. @@ -950,7 +950,7 @@

                              inplace <flag> (default: On) -

                              Instances

                              +

                              Instances

                              Sometimes one instance of a component and configuration is not enough to process & send all available notifications.

                              instances <integer> (default:1)

                              The instance option allows launching several instances of a component and configuration. @@ -975,7 +975,7 @@

                              Instances -

                              identity <string>

                              +

                              identity <string>

                              All file notification messages include a checksum. It is placed in the amqp message header will have as an entry sum with default value ‘d,md5_checksum_on_data’. The sum option tell the program how to calculate the checksum. @@ -1005,28 +1005,28 @@

                              identity <string> -

                              logEvents ( default: after_accept,after_work,on_housekeeping )

                              +

                              logEvents ( default: after_accept,after_work,on_housekeeping )

                              The set of points during notification message processing to emit standard log messages. other values: on_start, on_stop, post, gather, … etc… It is comma separated, and if the list starts with a plus sign (+) then the selected events are appended to current value. A minus signe (-) can be used to remove events from the set.

                              -

                              logLevel ( default: info )

                              +

                              logLevel ( default: info )

                              The level of logging as expressed by python’s logging. Possible values are : critical, error, info, warning, debug.

                              -

                              LogMetrics ( default: False )

                              +

                              LogMetrics ( default: False )

                              Write metrics to a daily metrics file for statistics gathering. can be used to generate statistics. File is in the same directory as the logs, and has a date suffix.

                              -

                              logReject ( default: False )

                              +

                              logReject ( default: False )

                              Normally, messages rejection is done silently. When logReject is True, a log message will be generated for each message rejected, and indicating the basis for the rejection.

                              -

                              logStdout ( default: False )

                              +

                              logStdout ( default: False )

                              The logStdout disables log management. Best used on the command line, as there is some risk of creating stub files before the configurations are completely parsed:

                              sr3 --logStdout start
                              @@ -1041,36 +1041,36 @@ 

                              logStdout ( default: False ) -

                              logRotateCount <max_logs> ( default: 5 )

                              +

                              logRotateCount <max_logs> ( default: 5 )

                              Maximum number of logs archived.

                              -

                              logRotateInterval <interval>[<time_unit>] ( default: 1d )

                              +

                              logRotateInterval <interval>[<time_unit>] ( default: 1d )

                              The duration of the interval with an optional time unit (ie 5m, 2h, 3d)

                              -

                              messageCountMax <count> (default: 0)

                              +

                              messageCountMax <count> (default: 0)

                              If messageCountMax is greater than zero, the flow will exit after processing the given number of messages. This is normally used only for debugging.

                              -

                              messageRateMax <float> (default: 0)

                              +

                              messageRateMax <float> (default: 0)

                              if messageRateMax is greater than zero, the flow attempts to respect this delivery speed in terms of messages per second. Note that the throttle is on messages obtained or generated per second, prior to accept/reject filtering. the flow will sleep to limit the processing rate.

                              -

                              messageRateMin <float> (default: 0)

                              +

                              messageRateMin <float> (default: 0)

                              if messageRateMin is greater than zero, and the flow detected is lower than this rate, a warning message will be produced:

                              -

                              message_ttl <duration> (default: None)

                              +

                              message_ttl <duration> (default: None)

                              The message_ttl option set the time a message can live in the queue. Past that time, the message is taken out of the queue by the broker.

                              -

                              mirror <flag> (default: off)

                              +

                              mirror <flag> (default: off)

                              The mirror option can be used to mirror the dd.weather.gc.ca tree of the files. If set to True the directory given by the directory option will be the basename of a tree. Accepted files under that directory will be @@ -1088,7 +1088,7 @@

                              mirror <flag> (default: off) -

                              no <count>

                              +

                              no <count>

                              (normally not used by humans)

                              Present on instances started by the sr3 management interface. The no option is only used on the command line, and not intended for users. @@ -1096,7 +1096,7 @@

                              no <count> -

                              nodupe_basis <data|name|path> (default: path)

                              +

                              nodupe_basis <data|name|path> (default: path)

                              A keyword option to identify which files are compared for duplicate suppression purposes. Normally, the duplicate suppression uses the entire path to identify files which have not changed. This allows for files with identical @@ -1116,17 +1116,17 @@

                              nodupe_basis <data|name|path> (default: path)More information: Duplicate Suppresion

                              -

                              nodupe_fileAgeMax

                              +

                              nodupe_fileAgeMax

                              If files are older than this setting (default: 30d in poll, 0 in other components), then ignore them, they are too old to post. 0 deactivates the setting.

                              -

                              nodupe_fileAgeMin

                              +

                              nodupe_fileAgeMin

                              If files are newer than this setting (default: 0), then ignore them, they are too old to post. 0 deactivates the setting.

                              -

                              nodupe_ttl <off|on|999[smhdw]>

                              +

                              nodupe_ttl <off|on|999[smhdw]>

                              When nodupe_ttl (also suppress_duplicates*, and **cache ) is set to a non-zero time interval, each new message is compared against ones received within that interval, to see if it is a duplicate. Duplicates are not processed further. What is a duplicate? A file with @@ -1152,7 +1152,7 @@

                              nodupe_ttl <off|on|999[smhdw]> -

                              outlet post|json|url (default: post)

                              +

                              outlet post|json|url (default: post)

                              The outlet option is used to allow writing of notification messages to file instead of posting to a broker. The valid argument values are:

                              post:

                              @@ -1180,14 +1180,14 @@

                              outlet post|json|url (default: post) -

                              overwrite <flag> (default: off)

                              +

                              overwrite <flag> (default: off)

                              The overwrite option,if set to false, avoid unnecessary downloads under these conditions :

                              1- the file to be downloaded is already on the user’s file system at the right place and

                              2- the checksum of the amqp message matched the one of the file.

                              The default is False.

                              -

                              path <path>

                              +

                              path <path>

                              post evaluates the filesystem path from the path option and possibly the post_baseDir if the option is used.

                              If a path defines a file then this file is watched.

                              @@ -1201,7 +1201,7 @@

                              path <path> -

                              permDefault, permDirDefault, permLog, permCopy

                              +

                              permDefault, permDirDefault, permLog, permCopy

                              Permission bits on the destination files written are controlled by the permCopy directives. permCopy will apply the mode permissions posted by the source of the file. If no source mode is available, the permDefault will be applied to files, and the @@ -1218,13 +1218,13 @@

                              permDefault, permDirDefault, permLog, permCopy -

                              pollUrl <url>

                              +

                              pollUrl <url>

                              Specification of a remote server resources to query with a poll See the POLLING in the Command Line Guide.

                              -

                              post_baseDir <path>

                              +

                              post_baseDir <path>

                              The post_baseDir option supplies the directory path that, when combined (or found) in the given path, gives the local absolute path to the data file to be posted. The post_baseDir part of the path will be removed from the posted notification message. @@ -1234,17 +1234,17 @@

                              post_baseDir <path>

                              -

                              post_baseUrl <url>

                              +

                              post_baseUrl <url>

                              The post_baseUrl option sets how to get the file… it defines the protocol, host, port, and optionally, the user. It is best practice to not include passwords in urls.

                              -

                              post_broker <url>

                              +

                              post_broker <url>

                              the broker url to post messages to see broker for details

                              -

                              post_exchange <name> (default: xpublic)

                              +

                              post_exchange <name> (default: xpublic)

                              The post_exchange option set under which exchange the new notification will be posted. when publishing to a pump as an administrator, a common choice for post_exchange is ‘xpublic’.

                              @@ -1253,7 +1253,7 @@

                              post_exchange <name> (default: xpublic) -

                              post_exchangeSplit <count> (default: 0)

                              +

                              post_exchangeSplit <count> (default: 0)

                              The post_exchangeSplit option appends a two digit suffix resulting from hashing the last character of the checksum to the post_exchange name, in order to divide the output amongst a number of exchanges. This is currently used @@ -1268,7 +1268,7 @@

                              post_exchangeSplit <count> (default: 0) -

                              post_format <name> (default: v03)

                              +

                              post_format <name> (default: v03)

                              Sets the message format for posted messages. the currently included values are:

                              • v02 … used by all existing data pumps for most cases.

                              • @@ -1278,26 +1278,26 @@

                                post_format <name> (default: v03) -

                                post_on_start

                                +

                                post_on_start

                                When starting watch, one can either have the program post all the files in the directories watched or not. (not implemented in sr3_cpost)

                              -

                              post_topic <string>

                              +

                              post_topic <string>

                              Explicitly set a posting topic string, overriding the usual group of settings. For sarracenia data pumps, this should never be needed, as the use of post_exchange, post_topicPrefix, and relpath normally builds the right value for topics for both posting and binding.

                              -

                              post_topicPrefix (default: topicPrefix)

                              +

                              post_topicPrefix (default: topicPrefix)

                              Prepended to the sub-topic to form a complete topic hierarchy. This option applies to publishing. Denotes the version of messages published in the sub-topics. (v03 refers to sr3_post.7.html) defaults to whatever was received.

                              -

                              prefetch <N> (default: 1)

                              +

                              prefetch <N> (default: 1)

                              The prefetch option sets the number of messages to fetch at one time. When multiple instances are running and prefetch is 4, each instance will obtain up to four messages at a time. To minimize the number of messages lost if an instance dies and have @@ -1306,7 +1306,7 @@

                              prefetch <N> (default: 1) -

                              queueName|queue|queue_name|qn

                              +

                              queueName|queue|queue_name|qn

                              • queueName <name>

                              @@ -1335,14 +1335,14 @@

                              queueName|queue|queue_name|qn -

                              queueBind

                              +

                              queueBind

                              On startup, by default, Sarracenia redeclares resources and bindings to ensure they are uptodate. If the queue already exists, These flags can be set to False, so no attempt to declare the queue is made, or it´s bindings. These options are useful on brokers that do not permit users to declare their queues.

                              -

                              queueDeclare

                              +

                              queueDeclare

                              FIXME: same as above.. is this normal?

                              On startup, by default, Sarracenia redeclares resources and bindings to ensure they are uptodate. If the queue already exists, These flags can be @@ -1350,14 +1350,14 @@

                              queueDeclare -

                              randomize <flag>

                              +

                              randomize <flag>

                              Active if -r|–randomize appears in the command line… or randomize is set to True in the configuration file used. If there are several notification messages because the file is posted by block (the blocksize option was set), the block notification messages are randomized meaning that they will not be posted

                              -

                              realpathAdjust <count> (Experimental) (default: 0)

                              +

                              realpathAdjust <count> (Experimental) (default: 0)

                              The realpathAdjust option adjusts how much paths are resolved with the C standard realpath library routine. The count indicates how many path elements should be ignored, counting from the beginning of the path with positive numbers, or the end with negative ones. @@ -1365,7 +1365,7 @@

                              realpathAdjust <count> (Experimental) (default: 0) -

                              realpathFilter <flag> (Experimental)

                              +

                              realpathFilter <flag> (Experimental)

                              the realpathFilter option resolves paths using the C standard realpath library routine, but only for the purpose of applying accept reject filters. This is used only during posting.

                              @@ -1373,7 +1373,7 @@

                              realpathFilter <flag> (Experimental) -

                              realpathPost <flag> (Experimental)

                              +

                              realpathPost <flag> (Experimental)

                              The realpathPost option resolves paths given to their canonical ones, eliminating any indirection via symlinks. The behaviour improves the ability of watch to monitor trees, but the trees may have completely different paths than the arguments @@ -1381,17 +1381,17 @@

                              realpathPost <flag> (Experimental) -

                              sendTo <url>

                              +

                              sendTo <url>

                              Specification of a remote resource to deliver to in a sender.

                              -

                              rename <path>

                              +

                              rename <path>

                              With the rename option, the user can suggest a destination path for its files. If the given path ends with ‘/’ it suggests a directory path… If it doesn’t, the option specifies a file renaming. Often used with variable substitutions, to provide dynamic, patterned names.

                              -

                              report and report_exchange

                              +

                              report and report_exchange

                              NOTE: NOT IMPLEMENTEDin sr3, expected to return in future version For each download, by default, an amqp report message is sent back to the broker. This is done with option :

                              @@ -1406,7 +1406,7 @@

                              report and report_exchange -

                              reset <flag> (default: False)

                              +

                              reset <flag> (default: False)

                              When reset is set, and a component is (re)started, its queue is deleted (if it already exists) and recreated according to the component’s queue options. This is when a broker option is modified, as the broker will @@ -1418,22 +1418,22 @@

                              reset <flag> (default: False) -

                              retryEmptyBeforeExit: <boolean> (default: False)

                              +

                              retryEmptyBeforeExit: <boolean> (default: False)

                              Used for sr_insects flow tests. Prevents Sarracenia from exiting while there are messages remaining in the retry queue(s). By default, a post will cleanly exit once it has created and attempted to publish messages for all files in the specified directory. If any messages are not successfully published, they will be saved to disk to retry later. If a post is only run once, as in the flow tests, these messages will never be retried unless retryEmptyBeforeExit is set to True.

                              -

                              retry_ttl <duration> (default: same as expire)

                              +

                              retry_ttl <duration> (default: same as expire)

                              The retry_ttl (retry time to live) option indicates how long to keep trying to send a file before it is aged out of a the queue. Default is two days. If a file has not been transferred after two days of attempts, it is discarded.

                              -

                              sanity_log_dead <interval> (default: 1.5*housekeeping)

                              +

                              sanity_log_dead <interval> (default: 1.5*housekeeping)

                              The sanity_log_dead option sets how long to consider too long before restarting a component.

                              -

                              shim_defer_posting_to_exit (EXPERIMENTAL)

                              +

                              shim_defer_posting_to_exit (EXPERIMENTAL)

                              (option specific to libsrshim) Postpones file posting until the process exits. @@ -1442,7 +1442,7 @@

                              shim_defer_posting_to_exit (EXPERIMENTAL) -

                              shim_post_minterval interval (EXPERIMENTAL)

                              +

                              shim_post_minterval interval (EXPERIMENTAL)

                              (option specific to libsrshim) If a file is opened for writing and closed multiple times within the interval, @@ -1457,7 +1457,7 @@

                              shim_post_minterval interval (EXPERIMENTAL)

                              -

                              shim_skip_parent_open_files (EXPERIMENTAL)

                              +

                              shim_skip_parent_open_files (EXPERIMENTAL)

                              (option specific to libsrshim) The shim_skip_ppid_open_files option means that a process checks @@ -1466,21 +1466,21 @@

                              shim_skip_parent_open_files (EXPERIMENTAL) -

                              sleep <time>

                              +

                              sleep <time>

                              The time to wait between generating events. When files are written frequently, it is counter productive to produce a post for every change, as it can produce a continuous stream of changes where the transfers cannot be done quickly enough to keep up. In such circumstances, one can group all changes made to a file in sleep time, and produce a single post.

                              -

                              statehost <False|True> ( default: False )

                              +

                              statehost <False|True> ( default: False )

                              In large data centres, the home directory can be shared among thousands of nodes. Statehost adds the node name after the cache directory to make it unique to each node. So each node has it’s own statefiles and logs. example, on a node named goofy, ~/.cache/sarra/log/ becomes ~/.cache/sarra/goofy/log.

                              -

                              strip <count|regexp> (default: 0)

                              +

                              strip <count|regexp> (default: 0)

                              You can modify the relative mirrored directories with the strip option. If set to N (an integer) the first ‘N’ directories from the relative path are removed. For example:

                              @@ -1511,7 +1511,7 @@

                              strip <count|regexp> (default: 0) -

                              sourceFromExchange <flag> (default: off)

                              +

                              sourceFromExchange <flag> (default: off)

                              The sourceFromExchange option is mainly for use by administrators. If messages received are posted directly from a source, the exchange used is ‘xs_<brokerSourceUsername>’. Such messages could be missing source and from_cluster @@ -1533,7 +1533,7 @@

                              sourceFromExchange <flag> (default: off) -

                              subtopic <amqp pattern> (default: #)

                              +

                              subtopic <amqp pattern> (default: #)

                              Within an exchange’s postings, the subtopic setting narrows the product selection. To give a correct value to the subtopic, one has the choice of filtering using subtopic with only AMQP’s limited wildcarding and @@ -1596,7 +1596,7 @@

                              subtopic <amqp pattern> (default: #) -

                              timeCopy (default: on)

                              +

                              timeCopy (default: on)

                              On unix-like systems, when the ls commend or a file browser shows modification or access times, it is a display of the posix st_atime, and st_ctime elements of a struct struct returned by stat(2) call. When timeCopy is on, headers @@ -1607,12 +1607,12 @@

                              timeCopy (default: on)

                              -

                              timeout <interval> (default: 0)

                              +

                              timeout <interval> (default: 0)

                              The timeout option, sets the number of seconds to wait before aborting a connection or download transfer (applied per buffer during transfer).

                              -

                              tlsRigour (default: medium)

                              +

                              tlsRigour (default: medium)

                              tlsRigour can be set to: lax, medium, or strict, and gives a hint to the application of how to configure TLS connections. TLS, or Transport Level Security (used to be called Secure Socket Layer (SSL)) is the wrapping of @@ -1627,31 +1627,31 @@

                              tlsRigour (default: medium) -

                              topic <string>

                              +

                              topic <string>

                              Explicitly set a subscribing topic string, overriding the value usually derived from a group of settings. For sarracenia data pumps, this should never be needed, as the use of exchange, topicPrefix, and subtopic normally builds the right value.

                              -

                              topicPrefix (default: v03)

                              +

                              topicPrefix (default: v03)

                              prepended to the sub-topic to form a complete topic hierarchy. This option applies to subscription bindings. Denotes the version of messages received in the sub-topics. (v03 refers to sr3_post.7.html)

                              -

                              users <flag> (default: false)

                              +

                              users <flag> (default: false)

                              As an adjunct when the declare action is used, to ask sr3 to declare users on the broker, as well as queues and exchanges.

                              -

                              v2compatRenameDoublePost <flag> ( default: false)

                              +

                              v2compatRenameDoublePost <flag> ( default: false)

                              version 3 of Sarracenia features improved logic around file renaming, using a single message per rename operation. Version 2 required two posts. When posting, in a mirroring situation, for consumption by v2 clients, this flag should be set.

                              -

                              varTimeOffset (default: 0)

                              +

                              varTimeOffset (default: 0)

                              For example:

                              varTimeOffset -7m
                               
                              @@ -1661,7 +1661,7 @@

                              varTimeOffset (default: 0) -

                              vip - ACTIVE/PASSIVE OPTIONS

                              +

                              vip - ACTIVE/PASSIVE OPTIONS

                              The vip option indicates that a configuration must be active on only a single node in a cluster at a time, a singleton. This is typically required for a poll component, but it can be used in senders or other @@ -1685,7 +1685,7 @@

                              vip - ACTIVE/PASSIVE OPTIONS -

                              SEE ALSO

                              +

                              SEE ALSO

                              sr3(1) - Sarracenia main command line interface.

                              sr3_post(1) - post file notification messages (python implementation.)

                              sr3_cpost(1) - post file announcemensts (C implementation.)

                              diff --git a/Reference/sr3_post.1.html b/Reference/sr3_post.1.html index e1262a3ce..ea4d774c0 100644 --- a/Reference/sr3_post.1.html +++ b/Reference/sr3_post.1.html @@ -8,9 +8,9 @@ - + - + @@ -120,15 +120,15 @@ }
                              -

                              Sr3_Post

                              +

                              Sr3_Post

                              -

                              Publish the Availability of Files

                              +

                              Publish the Availability of Files

                              Manual section:

                              1

                              Date:
                              -

                              Aug 16, 2023

                              +

                              Aug 18, 2023

                              Version:

                              UNKNOWN

                              @@ -138,13 +138,13 @@

                              Publish the Availability of Files -

                              SYNOPSIS

                              +

                              SYNOPSIS

                              sr3_post|sr3_cpost [ OPTIONS ][ -pb|–post_broker broker ][ -pbu|–post_baseUrl url[,url]…* ] [ -p|–path ] path1 path2…pathN ]

                              ( also libsrshim.so )

                              -

                              DESCRIPTION

                              +

                              DESCRIPTION

                              sr3_post posts the availability of a file by creating an notification message. In contrast to most other sarracenia components that act as daemons, sr3_post is a one shot invocation which posts and exits. @@ -164,7 +164,7 @@

                              DESCRIPTION -

                              Mandatory Settings

                              +

                              Mandatory Settings

                              The post_base_url url,url,… option specifies the location subscribers will download the file from. There is usually one post per file. Format of argument to the post_base_url option:

                              @@ -226,11 +226,11 @@

                              Mandatory Settings -

                              ARGUMENTS AND OPTIONS

                              +

                              ARGUMENTS AND OPTIONS

                              Please refer to the sr3_options(7) manual page for a detailed description of all settings, and methods of specifying them.

                              -

                              path path1 path2 … pathN

                              +

                              path path1 path2 … pathN

                              sr3_post evaluates the filesystem paths from the path option and possibly the baseDir if the option is used.

                              @@ -240,13 +240,13 @@

                              path path1 path2 … pathN -

                              post_broker <broker>

                              +

                              post_broker <broker>

                              the broker to which the post is sent.

                              -

                              post_baseDir <path>

                              +

                              post_baseDir <path>

                              The base_dir option supplies the directory path that, when combined (or found) in the given path, @@ -259,20 +259,20 @@

                              post_baseDir <path>

                              -

                              post_exchange <exchange>

                              +

                              post_exchange <exchange>

                              Sr_post publishes to an exchange named xs_”broker_username” by default. Use the post_exchange option to override that default.

                              -

                              -h|–help

                              +

                              -h|–help

                              Display program options.

                              -

                              blocksize <value>

                              +

                              blocksize <value>

                              Not currently useful, will re-instate post v3

                              This option controls the partitioning strategy used to post files. The value should be one of:

                              @@ -303,7 +303,7 @@

                              blocksize <value> -

                              post_baseUrl <url>

                              +

                              post_baseUrl <url>

                              The url option sets the protocol, credentials, host and port under which the product can be fetched.

                              The AMQP announcememet is made of the three fields, the notification message time, @@ -313,11 +313,11 @@

                              post_baseUrl <url>

                              -

                              reset

                              +

                              reset

                              When one has used –suppress_duplicates|–cache, this option empties the cache.

                              -

                              rename <path>

                              +

                              rename <path>

                              With the rename option, the user can suggest a destination path to its files. If the given path ends with ‘/’ it suggests a directory path… If it doesn’t, the option specifies a file renaming.

                              sr_post, and sr_watch use a file based model based on a process and a disk cache, @@ -327,7 +327,7 @@

                              rename <path> -

                              shim_defer_posting_to_exit EXPERIMENTAL

                              +

                              shim_defer_posting_to_exit EXPERIMENTAL

                              Postpones file posting until the process exits. In cases where the same file is repeatedly opened and appended to, this @@ -335,7 +335,7 @@

                              shim_defer_posting_to_exit EXPERIMENTAL -

                              shim_post_minterval interval EXPERIMENTAL

                              +

                              shim_post_minterval interval EXPERIMENTAL

                              If a file is opened for writing and closed multiple times within the interval, it will only be posted once. When a file is written to many times, particularly @@ -349,7 +349,7 @@

                              shim_post_minterval interval EXPERIMENTAL

                              -

                              shim_skip_parent_open_files EXPERIMENTAL

                              +

                              shim_skip_parent_open_files EXPERIMENTAL

                              The shim_skip_ppid_open_files option means that a process checks whether the parent process has the same file open, and does not @@ -357,7 +357,7 @@

                              shim_skip_parent_open_files EXPERIMENTAL -

                              sleep time

                              +

                              sleep time

                              This option is only available in the c implementation (sr_cpost)

                              When the option is set, it transforms cpost into a sr_watch, with sleep being the time to wait between @@ -373,13 +373,13 @@

                              sleep time -

                              subtopic <key>

                              +

                              subtopic <key>

                              The subtopic default can be overwritten with the subtopic option.

                              -

                              nodupe_ttl on|off|999

                              +

                              nodupe_ttl on|off|999

                              Avoid posting duplicates by comparing each file to those seen during the suppress_duplicates interval. When posting directories, will cause @@ -393,7 +393,7 @@

                              nodupe_ttl on|off|999

                              -

                              identity <method>[,<value>]

                              +

                              identity <method>[,<value>]

                              All file notification messages include a checksum. The sum option specifies how to calculate the it. It is a comma separated string. Valid Identity methods are

                              cod,x      - Calculate On Download applying x
                              @@ -410,19 +410,19 @@ 

                              identity <method>[,<value>] -

                              topicPrefix <key>

                              +

                              topicPrefix <key>

                              Not usually used By default, the topic is made of the default topicPrefix : version V03 followed by the default subtopic: the file path separated with dots (dot being the topic separator for amqp). You can overwrite the topicPrefix by setting this option.

                              -

                              header <name>=<value>

                              +

                              header <name>=<value>

                              Add a <name> header with the given value to notification messages. Used to pass strings as metadata.

                              -

                              SHIM LIBRARY USAGE

                              +

                              SHIM LIBRARY USAGE

                              Rather than invoking a sr_post to post each file to publish, one can have processes automatically post the files they right by having them use a shim library intercepting certain file i/o calls to libc and the kernel. To activate the shim library, in the shell environment add:

                              @@ -451,7 +451,7 @@

                              SHIM LIBRARY USAGE -

                              Shim Usage Tips

                              +

                              Shim Usage Tips

                              This method of notification does require some user environment setup. The user environment needs to the LD_PRELOAD environment variable set prior to launch of the process. Complications that remain as we have @@ -486,7 +486,7 @@

                              Shim Usage Tips -

                              Rename Processing

                              +

                              Rename Processing

                              It should be noted that file renaming is not as simple in the mirroring case as in the underlying operating system. While the operation is a single atomic one in an operating system, when using notifications, there are accept/reject cases that create four possible effects.

                              @@ -524,7 +524,7 @@

                              Rename Processing -

                              ENVIRONMENT VARIABLES

                              +

                              ENVIRONMENT VARIABLES

                              In the C implementation (sr_cpost), if the SR_CONFIG_EXAMPLES variable is set, then the add directive can be used to copy examples into the user’s directory for use and/or customization.

                              An entry in the ~/.config/sarra/default.conf (created via sr_subscribe edit default.conf ) @@ -536,7 +536,7 @@

                              ENVIRONMENT VARIABLES

                              -

                              SEE ALSO

                              +

                              SEE ALSO

                              sr3(1) - Sarracenia main command line interface.

                              sr3_post(1) - post file notification messages (python implementation.)

                              sr3_cpost(1) - post file announcemensts (C implementation.)

                              diff --git a/Reference/sr_post.7.html b/Reference/sr_post.7.html index e0f7edefe..07573031d 100644 --- a/Reference/sr_post.7.html +++ b/Reference/sr_post.7.html @@ -8,9 +8,9 @@ - + - + @@ -125,15 +125,15 @@ }
                              -

                              SR_post

                              +

                              SR_post

                              -

                              Sarracenia v03 Notification Message Format/Protocol

                              +

                              Sarracenia v03 Notification Message Format/Protocol

                              Manual section:

                              7

                              Date:
                              -

                              Aug 16, 2023

                              +

                              Aug 18, 2023

                              Version:

                              UNKNOWN

                              @@ -143,7 +143,7 @@

                              Sarracenia v03 Notification Message Format/Protocol

                              -

                              STATUS: Stable/Default

                              +

                              STATUS: Stable/Default

                              Sarracenia version 2 notification messages are the previous standard, used for terabytes and millions of files per day of transfers. Version 3 is a proposal for a next iteration of Sarracenia notification messages.

                              @@ -162,11 +162,11 @@

                              STATUS: Stable/Default

                              -

                              SYNOPSIS

                              +

                              SYNOPSIS

                              Version 03 format of file change notification messages for sr_post.

                              An sr_post notification message consists of a topic, and the BODY

                              -

                              AMQP Topic: <version>.{<dir>.}

                              +

                              AMQP Topic: <version>.{<dir>.}

                              <version> = "v03" the version of the protocol or format.
                               "post" = the type of notification message within the protocol.
                               <dir> = a sub-directory leading to the file (perhaps many directories deep)
                              @@ -174,7 +174,7 @@ 

                              AMQP Topic: <version>.{<dir>.}

                              -

                              BODY: { <headers> } (JSON encoding.)

                              +

                              BODY: { <headers> } (JSON encoding.)

                              The headers are an array of name:value pairs:

                              MANDATORY:
                               
                              @@ -261,7 +261,7 @@ 

                              BODY: { <headers> } (JSON encoding.)

                              -

                              DESCRIPTION

                              +

                              DESCRIPTION

                              Sources create notification messages in the sr_post format to announce file changes. Subscribers read the post to decide whether a download of the content being announced is warranted. This manual page completely describes the format of those notification messages. The notification messages are payloads @@ -320,7 +320,7 @@

                              DESCRIPTION -

                              TOPIC

                              +

                              TOPIC

                              In topic based AMQP exchanges, every notification message has a topic header. AMQP defines the ‘.’ character as a hierarchical separator (like ‘' in a windows path name, or ‘/’ on linux) there is also a pair of wildcards defined by the standard: ‘*’ matches a single topic, ‘#’ matches the rest of @@ -350,7 +350,7 @@

                              TOPIC

                              -

                              Mapping to MQTT

                              +

                              Mapping to MQTT

                              One goal of v03 format is to have a payload format that works with more than just AMQP. Message Queing Telemetry Transport (MQTT v3.11) is an iso standard ( https://www.iso.org/standard/69466.html protocol that can easily support the same pub/sub messaging pattern, but a few details @@ -368,7 +368,7 @@

                              Mapping to MQTT -

                              THE FIXED HEADERS

                              +

                              THE FIXED HEADERS

                              The notification message is a single JSON encoded array, with a mandatory set of fields, while allowing for use of arbitrary other fields. Mandatory fields must be present in every notification message, and

                              @@ -387,7 +387,7 @@

                              THE FIXED HEADERS -

                              from_cluster=<cluster_name>

                              +

                              from_cluster=<cluster_name>

                              The from_cluster header defines the name of the source cluster where the data was introduced into the network. It is used to return the logs back @@ -395,14 +395,14 @@

                              from_cluster=<cluster_name>

                              -

                              size and blocks

                              +

                              size and blocks

                              "size":<sz> ,
                               
                              @@ -470,13 +470,13 @@ 

                              size and blocks -

                              rename=<relpath>

                              +

                              rename=<relpath>

                              The relative path from the current directory in which to place the file.

                              -

                              fileOp { ‘rename’:<path> … }

                              +

                              fileOp { ‘rename’:<path> … }

                              when a file is renamed at the source, to send it to subscribers, two notification messages result: one notification message is announced with the new name as the base_url, @@ -493,7 +493,7 @@

                              fileOp { ‘rename’:<path> … } -

                              identity

                              +

                              identity

                              The identity field gives a checksum useful for identifying the contents of a file:

                              "identity" : { "method" : <method>, "value": <value> }
                              @@ -544,7 +544,7 @@ 

                              identity -

                              Report Messages

                              +

                              Report Messages

                              Some clients may return telemetry to the origin of downloaded data for troubleshooting and statistical purposes. Such notification messages, have the v03.report topic, and have a report header which is a JSON object with four fields:

                              @@ -559,7 +559,7 @@

                              Report Messages -

                              Report_Code

                              +

                              Report_Code

                              The report code is a three digit status code, adopted from the HTTP protocol (w3.org/IETF RFC 2616) encoded as text. As per the RFC, any code returned should be interpreted as follows:

                              @@ -635,15 +635,15 @@

                              Report_Code -

                              Other Report Fields

                              +

                              Other Report Fields

                              <report_message> a string.

                              -

                              Optional Headers

                              +

                              Optional Headers

                              for the file mirroring use case, additional headers will be present:

                              -

                              atime,mtime,mode

                              +

                              atime,mtime,mode

                              man 2 stat - the linux/unix standard file metadata: access time, modification time, and permission (mode bits) @@ -670,7 +670,7 @@

                              atime,mtime,mode -

                              EXAMPLE

                              +

                              EXAMPLE

                              AMQP TOPIC: v03.NRDPS.GIF
                               MQTT TOPIC: exchange/v03/NRDPS/GIF/
                               Body: { "pubTime": "201506011357.345", "baseUrl": "sftp://afsiext@cmcdataserver", "relPath": "/data/NRPDS/outputs/NRDPS_HiRes_000.gif",
                              @@ -700,7 +700,7 @@ 

                              EXAMPLE -

                              Another example

                              +

                              Another example

                              The post resulting from the following sr_watch command, noticing creation of the file ‘foo’:

                              sr_watch -pbu sftp://stanley@mysftpserver.com/ -path /data/shared/products/foo -pb amqp://broker.com
                               
                              @@ -726,7 +726,7 @@

                              Another example -

                              Optimization Possibilities

                              +

                              Optimization Possibilities

                              optimization goal is for readabilty and ease of implementation, much more than efficiency or performance. There are many optimizations to reduce overheads of various sorts, all of which will increase implementation @@ -739,7 +739,7 @@

                              Optimization Possibilities -

                              Standards

                              +

                              Standards

                              • Sarracenia relies on AMQP pre 1.0 @@ -764,7 +764,7 @@

                                Standards -

                                SEE ALSO

                                +

                                SEE ALSO

                                sr3(1) - Sarracenia main command line interface.

                                sr3_post(1) - post file notification messages (python implementation.)

                                sr3_cpost(1) - post file announcemensts (C implementation.)

                                diff --git a/Tutorials/1_CLI_introduction.html b/Tutorials/1_CLI_introduction.html index c72752719..0bef01e3b 100644 --- a/Tutorials/1_CLI_introduction.html +++ b/Tutorials/1_CLI_introduction.html @@ -8,9 +8,9 @@ - + - + @@ -363,7 +363,7 @@ }
                                -

                                Downloading Using the Command Line

                                +

                                Downloading Using the Command Line

                                This jupyter notebook introduces Sarracenia version 3 usage from the command line (mostly on Linux, but should be similar on Windows and Mac also, main difference being different conventions for where preferences and logs are stored. This is probably the easiest way to work with Sarracenia. You configure a flow to download files into a directory, and you can read the directory to process the files there.

                                [1]:
                                @@ -377,12 +377,12 @@ 

                                Downloading Using the Command Line -

                                Prerequisites

                                +

                                Prerequisites

                                The above is just a way to get jupyter notebooks to install metpx-sr3 on a server. Creating some directories in case people use API access without running things through the API. The basic pre-requisite is to have metpx-sr3 installed somehow, either as a .deb package, or using pip (or pip3) available to the environment used by jupyter.

                                The rest of this notebook assumes metpx-sr3 is installed.

                                -

                                SR3

                                +

                                SR3

                                The command line interface is called sr3 (short for Sarracenia version 3). One defines flows to run using configuration files in a simple format: keyword value format. there are example configurations to get you started:

                                -

                                Conclusion

                                +

                                Conclusion

                                If all you want to do is obtain data from a data pump in real-time, using the command line interface to control some processes that run all the time, so that they dump files in a certain directory is the easiest way to go.

                                It isn’t very efficient though. When you have large numbers of files to work with, and you want high speed processing, it is better, in the sense of lower cpu and i/o overhead, and in terms of speed of processing, to have your own application informed of the arrival of files, rather than scanning a directory.

                                The easiest way to do that is to add some callbacks to your flows. We’ll cover that next.

                                diff --git a/Tutorials/2_CLI_with_flowcb_demo.html b/Tutorials/2_CLI_with_flowcb_demo.html index 5d727aa6d..0ecc03b50 100644 --- a/Tutorials/2_CLI_with_flowcb_demo.html +++ b/Tutorials/2_CLI_with_flowcb_demo.html @@ -8,9 +8,9 @@ - + - + @@ -371,7 +371,7 @@ }
                                -

                                Customize File handling with Callbacks.

                                +

                                Customize File handling with Callbacks.

                                All Sarracenia components implement the Flow algorithm, with different callbacks, in the Python programming language. Sarracenia’s main (Python) class is sarracenia.flow and the a great deal of core functionality is implemented using the class created to add custom processing to a flow, the flowcb (flow callback) class.

                                For a detailed discussion of the flow algorithm itself, have a look at Concepts manual. For any flow, one can add custom processing at a variety of times during processing by sub-classing the sarracenia.flowcb class.

                                Briefly, the algorithm has the following steps:

                                @@ -592,7 +592,7 @@

                                Customize File handling with Callbacks. -

                                Config File Entries and Callbacks

                                +

                                Config File Entries and Callbacks

                                flowcb.log

                                To add a callback to a a flow, a line is added to the flows’s configuration file:

                                flowcb sarracenia.flowcb.log.Log
                                @@ -618,7 +618,7 @@ 

                                Config File Entries and Callbacks -

                                Writing Your Own Callbacks

                                +

                                Writing Your Own Callbacks

                                A flow callback, is a python class built with routines named to indicate when the programmer wants them to be called. To do that, create a routine which subclasses sarracenia.flowcb.FlowCB so the class will normally have:

                                from sarracenia.flowcb import FlowCB

                                in among the imports near the top of the file. In the main part of the file, there will be the custom callback classes:

                                @@ -653,7 +653,7 @@

                                Writing Your Own Callbacks -

                                Worklists

                                +

                                Worklists

                                Besides options, the other main argument to after_accept and after_work callback routines is the worklist. The worklist is given to entry points occurring during message processing, and is a number of worklists of messages:

                                worklist.incoming --> messages to process (either new or retries.)
                                 worklist.ok       --> successfully processed
                                @@ -672,7 +672,7 @@ 

                                Worklists -

                                Logging

                                +

                                Logging

                                Python has great built-in logging, and once has to just use the module in a normal, pythonic way, with:

                                import logging

                                After all imports in your python source file, then define a logger for the source file:

                                @@ -682,7 +682,7 @@

                                Logging -

                                Sample Flow Callback Class

                                +

                                Sample Flow Callback Class

                                With the above information about option handling, worklists, and logging, we are ready to understand the wistree module we just used. As a very simple example, here is the source code of the callback used above is given below:

                                [ ]:
                                @@ -720,7 +720,7 @@ 

                                Sample Flow Callback Class -

                                Sample Flowcb Sub-Class

                                +

                                Sample Flowcb Sub-Class

                                This wistree.py class, shows more aspects of the callback API, with an init.py as well as bringing in an externam python module, as well as adding fields to the messages. The Wistree class accepts files whose names begin with AHL’s (World Meteorological Organization Abbreviated Header Lines for meteorological products), and renames the directory tree to a different standard, the evolving one for the WMO WIS 2.0 (for more information on that module: https://github.com/wmo-im/GTStoWIS2)

                                [6]:
                                @@ -787,7 +787,7 @@ 

                                Sample Flowcb Sub-Class

                                -

                                Plugins That Change How a File is Downloaded

                                +

                                Plugins That Change How a File is Downloaded

                                The after_accept routine is one of the two most common ones in use. It is used to change processing prior to a file being downloaded or sent. To process the file after it has been downloaded, the after_work entry point is used to process the worklist.ok (files that were successfully downloaded) list.

                                The after_accept routine has an outer loop that cycles through the entire list of incoming messages. It builds a new list of incoming messages from the ones it accepts, while appending all the rejected ones to worklist.failed. The list is just a list of messages, where each message is a python dictionary with all the fields stored in a v03 format message. In the message there are, for example, baseURL and relPath fields:

                                  @@ -797,7 +797,7 @@

                                  Plugins That Change How a File is Downloaded -

                                  Plugins that Process a file after it is Downloaded

                                  +

                                  Plugins that Process a file after it is Downloaded

                                  A common use case is for plugins with an after_work entry point to read the file after it is downloaded and transform it into some derived product with a different name. So the new file is created as in the previous section. The message for the downloaded file still needs to be moved onto a list to ensure that it is acknowledged to the broker. Such an entry point would look like this:

                                  [9]:
                                  @@ -822,14 +822,14 @@ 

                                  Plugins that Process a file after it is Downloaded

                                -

                                Plugins that Rename Files

                                +

                                Plugins that Rename Files

                                The plugin above changes the layout of the files that are to be downloaded, based on the GTStoWIS class, which prescribes a different directory tree on output. There are a lot of fields to update when changing file placement, so best to use:

                                msg.updatePaths( self.o, new_dir, new_file )

                                to update all necessary fields in the message properly. It will update ‘new_baseURL’, ‘new_relPath’, ‘new_subtopic’ for use when posting.

                                The try/except part of the routine deals with the case that, should a file arrive with a name from which a topic tree cannot be built, then a python exception may occur, and the message is added to the failed worklist, and will not be processed by later plugins.

                                -

                                Plugins That Create New Files

                                +

                                Plugins That Create New Files

                                The routine above is perfect when a file is just renamed. If a plugin needs to create new files only vaguely derived from the input file, then you want to create new messages for these files from scratch:

                                import sarracenia
                                 
                                @@ -851,7 +851,7 @@ 

                                Plugins That Create New Files -

                                Other Examples

                                +

                                Other Examples

                                Subclassing of Sarracenia.flowcb is used internally to do a lot of core work. It’s a good idea to look at the sarracenia source code itself. For example:

                                • sarracenia.flowcb have a look at the init.py file in there, which provides this information on a more programmatically succinct format.

                                • diff --git a/Tutorials/3_api_flow_demo.html b/Tutorials/3_api_flow_demo.html index bc8a2758e..f3ab19dc7 100644 --- a/Tutorials/3_api_flow_demo.html +++ b/Tutorials/3_api_flow_demo.html @@ -8,9 +8,9 @@ - + - + @@ -367,7 +367,7 @@ }
                                  -

                                  flow API Example

                                  +

                                  flow API Example

                                  The sarracenia.flow class provides built in accept/reject filtering for messages, supports built-in downloading in several protocols, retries on failure, and allows the creation of callbacks, to customize processing.

                                  You need to provide a configuration as an argument when instantiating a subscriber. the sarracenia.config.no_file_config() returns an empty configuration without consulting any of the sr3 configuration file tree.

                                  After adding the modifications needed to the configuration, the subscriber is then initiated and run.

                                  @@ -430,23 +430,23 @@

                                  flow API Example -

                                  starters.

                                  +

                                  starters.

                                  the broker, bindings, and queueName settings are explained in the moth notebook.

                                  -

                                  cfg.download

                                  +

                                  cfg.download

                                  Whether you want the flow to download the files corresponding to the messages. If true, then it will download the files.

                                  -

                                  cfg.batch

                                  +

                                  cfg.batch

                                  Messages are processed in batches. The number of messages to retrieve per call to newMessages() is limited by the batch setting. We set it to 1 here so you can see each file being downloaded immediately when the corresponding message is downloaded. you can leave this blank, and it defaults to 25. Settings are matter of taste and use case.

                                  -

                                  cfg.messageCountMax

                                  +

                                  cfg.messageCountMax

                                  Normally we just leave this setting at it’s default (0) which has no effect on processing. for demonstration purposes, we limit the number of messages the subscriber will process with this setting. after messageCountMax messages have been received, stop processing.

                                  -

                                  cfg.masks

                                  +

                                  cfg.masks

                                  masks are a compiled form of accept/reject directives. a relPath is compared to the regex in the mask. If the regex matches, and accept is true, then the message is accepted for further processing. If the regex matches, but accept is False, then processing of the message is stopped (the message is rejected.)

                                  masks are a tuple. the meaning can be looked up in the sr3(1) man page.

                                    @@ -462,7 +462,7 @@

                                    cfg.masks -

                                    cfg.no, cfg.pid_filename

                                    +

                                    cfg.no, cfg.pid_filename

                                    These settings are needed because they would ordinarily be set by the sarracenia.instance class which is normally used to launch flows. They allow setting up of run-time paths for retry_queues, and statefiles, to remember settings if need be between runs.

                                    [3]:
                                    @@ -540,7 +540,7 @@ 

                                    cfg.no, cfg.pid_filename -

                                    Conclusion:

                                    +

                                    Conclusion:

                                    With the sarracenia.flow class, an async method of operation is supported, it can be customized using flowcb (flow callback) class to introduce specific processing at specific times. It is just like invocation of a single instance from the command line, except all configuration is done within python by setting cfg fields, rather than using the configuration language.

                                    What is lost vs. using the command line tool:

                                      diff --git a/Tutorials/4_api_moth_sub_demo.html b/Tutorials/4_api_moth_sub_demo.html index 69fdcf1eb..9b25afb12 100644 --- a/Tutorials/4_api_moth_sub_demo.html +++ b/Tutorials/4_api_moth_sub_demo.html @@ -8,9 +8,9 @@ - + - + @@ -369,7 +369,7 @@ }
                                      -

                                      A first Example using Sarracenia Moth API

                                      +

                                      A first Example using Sarracenia Moth API

                                      Sarracenia is a package built to announce the availability of new data, usually as files. We put files on standard servers, making them available via web or sftp, and tell users that they have arrived using messages.

                                      Sarracenia uses existing standard message passing protocols, like rabbitmq/AMQP to transport the messages, and in message passing circles, as server that distributes messages is called a broker.

                                      We call the combination of a message broker, and a file server (which can be a single server, or a large cluster) a data pump.

                                      @@ -433,7 +433,7 @@

                                      A first Example using Sarracenia Moth API -

                                      Bindings

                                      +

                                      Bindings

                                      The bindings option sets out the three values above. in the example, The bindings are:

                                      • topic_prefix: v02.post (get v02 messages.)

                                      • @@ -443,7 +443,7 @@

                                        Bindings -

                                        subtopic

                                        +

                                        subtopic

                                        The subtopic here ( # ) is matches everything produced on the server. The wider the subtopic, the more messages have to be sent, and the more processing done. It is better to make it narrower. Taking the example above, if we are interested in swob, a subtopic like:

                                        • *.WXO-DD.observations.swob-ml.#

                                        • @@ -452,7 +452,7 @@

                                          subtopic -

                                          queueName

                                          +

                                          queueName

                                          By convention in brokers administered by Sarracenia, users can only create queues that start with q_ followed by their user name. we connected as anonymous, and so q_anonymous must be used. After that, the rest can be whatever you want, but there are a few considerations:

                                          • If you want to start up multiple python processes to share a data feed, they all specify the same queue_name, and they will share the flow of messages. It scales well for a few dozen co-operating downloaders, but does not scale infinitely, do not expect more than 99 or so processes to be able to effectively share a load from a single queue. To scale beyond that with AMQP, multiple selections are better.

                                          • @@ -460,12 +460,12 @@

                                            queueName -

                                            Messages

                                            +

                                            Messages

                                            Different messaging protocols have different storage structures and conventions. the MoTH class returns messages as python dictionaries regardless of what protocol is used to obtain them or, if forwarding them, to transmit them. One can add fields for programmatic use to the messages just by adding elements to the dictionary. If they are only for internal use, then add the name of the dictionary element to the special ‘_deleteOnPost’ key, so that the dictionary element will be dropped when forwarding the message.

                                      -

                                      Ack

                                      +

                                      Ack

                                      Messages are marked in transit by the broker, and if you do not acknowledge them, the data pump will hold onto them, and eventually re-dispatch them. keeping pending messages in memory will also slow down processing of all messages. One should acknowledge receipt of messages as soon as practicable, but not so soon that you will lose data if the the program is interrupted. In the example, we acknowledge after we have done our work of printing the message.

                                      [6]:
                                      @@ -656,12 +656,12 @@ 

                                      Ack

                                      -

                                      Downloading Data with Python

                                      +

                                      Downloading Data with Python

                                      You can use the urllib python library to download data, and then parse it. In this example, the data is an XML structure per message downloaded and read into memory. Some station data is then printed.

                                      This works well with urllib for hyper-test transport protocol resources, but other resources may be announced using other protocols, such as sftp, or ftp. The python code will need to be expanded to deal with other protocols, as well as error conditions, such as temporary failures.

                                      -

                                      Conclusion

                                      +

                                      Conclusion

                                      Sarracenia.moth.amqp is the lightest-weight way to add consumption of Sarracenia messages to your existing python stack. You explicitly ask for new messages when ready to use them.

                                      Things this type of integration does not provide:

                                        diff --git a/Tutorials/5_api_moth_post_demo.html b/Tutorials/5_api_moth_post_demo.html index 5490057a3..6124d0895 100644 --- a/Tutorials/5_api_moth_post_demo.html +++ b/Tutorials/5_api_moth_post_demo.html @@ -8,9 +8,9 @@ - + - + @@ -358,7 +358,7 @@ }
                                        -

                                        Posting from Python Code

                                        +

                                        Posting from Python Code

                                        If you have some python code that is already creating files, and you have no wish to invoke a separate program to post the files, one can access message posting logic easily, given an existing file.

                                        This example is for programmatically creating posts for files. It requires write access to a broker, with a user that is allowed to post to an exchange.

                                        Need to establish a posting configuration, and then instantiate a posting_engine (an instance than can be used to post messages.)

                                        diff --git a/Tutorials/Install.html b/Tutorials/Install.html index 514671dbc..aa9b9c8ff 100644 --- a/Tutorials/Install.html +++ b/Tutorials/Install.html @@ -8,9 +8,9 @@ - + - + @@ -126,20 +126,20 @@ }
                                        -

                                        MetPX-Sarracenia Installation

                                        +

                                        MetPX-Sarracenia Installation

                                        -

                                        Revision Record

                                        +

                                        Revision Record

                                        version:

                                        UNKNOWN

                                        date:
                                        -

                                        Aug 16, 2023

                                        +

                                        Aug 18, 2023

                                        -

                                        Do you already have it?

                                        +

                                        Do you already have it?

                                        If sarracenia is already installed you may invoke it like with:

                                        fractal% sr3 status
                                         status:
                                        @@ -188,7 +188,7 @@ 

                                        Do you already have it?

                                        -

                                        Client Installation

                                        +

                                        Client Installation

                                        The package is built for python version 3.6 or higher. On systems where they are available, debian packages are recommended. These can be obtained from the launchpad repository. If you cannot use debian packages, then consider pip packages @@ -200,7 +200,7 @@

                                        Client Installation -

                                        Ubuntu/Debian (apt/dpkg) Recommended

                                        +

                                        Ubuntu/Debian (apt/dpkg) Recommended

                                        On Ubuntu 22.04 and derivatives:

                                        sudo add-apt-repository ppa:ssc-hpc-chp-spc/metpx
                                         sudo apt update
                                        @@ -280,7 +280,7 @@ 

                                        Ubuntu/Debian (apt/dpkg) Recommended

                                        -

                                        Redhat/Suse Distros (rpm based)

                                        +

                                        Redhat/Suse Distros (rpm based)

                                        Python distutils on redhat package manager based distributions does not handle dependencies with the current packaging, so one needs to manually install them. For example, on fedora 28 mandatories:

                                        @@ -313,7 +313,7 @@

                                        Redhat/Suse Distros (rpm based) -

                                        PIP

                                        +

                                        PIP

                                        On Windows or Linux distributions where system packages are not available or other special cases, such as if using python in virtual env, where it is more practical to install the package using pip (python install package) @@ -346,7 +346,7 @@

                                        PIP

                                        -

                                        System Startup and Shutdown

                                        +

                                        System Startup and Shutdown

                                        If the intent is to implement a Data Pump, that is a server with a role in doing large amounts of data transfers, then the convention is to create an sarra application user, and arrange for it to be started on boot, and stopped on shutdown.

                                        @@ -374,7 +374,7 @@

                                        System Startup and Shutdown -

                                        Periodic Processing/Cron Jobs

                                        +

                                        Periodic Processing/Cron Jobs

                                        Regardless of how it is installed, Additional periodic processing may be necessary:

                                          @@ -392,7 +392,7 @@

                                          Periodic Processing/Cron Jobs -

                                          Windows

                                          +

                                          Windows

                                          On Windows, there are 2 (other) possible options:

                                          Without Python

                                          Download Sarracenia installer file from here, @@ -409,13 +409,13 @@

                                          WindowsWindows user manual for more information on how to run Sarracenia on Windows.

                                        -

                                        Packages

                                        +

                                        Packages

                                        Debian packages and python wheels can be downloaded directly from: launchpad

                                        -

                                        Source

                                        +

                                        Source

                                        Source code for each module is available https://github.com/MetPX:

                                        $ git clone https://github.com/MetPX/sarracenia sarracenia
                                         $ cd sarracenia
                                        @@ -436,7 +436,7 @@ 

                                        Source

                                        -

                                        Sarrac

                                        +

                                        Sarrac

                                        The C client is available in prebuilt binaries in the launchpad repositories alongside the python packages:

                                        $ sudo add-apt-repository ppa:ssc-hpc-chp-spc/metpx
                                         $ sudo apt-get update
                                        diff --git a/Tutorials/Setup_a_local_subscriber.html b/Tutorials/Setup_a_local_subscriber.html
                                        index 4c817d783..2cb5e034a 100644
                                        --- a/Tutorials/Setup_a_local_subscriber.html
                                        +++ b/Tutorials/Setup_a_local_subscriber.html
                                        @@ -8,9 +8,9 @@
                                               
                                               
                                           
                                        -        
                                        +        
                                                 
                                        -        
                                        +        
                                                 
                                             
                                             
                                        @@ -110,7 +110,7 @@
                                         }
                                         
                                         
                                        -

                                        Server Admin: A Local Subscriber

                                        +

                                        Server Admin: A Local Subscriber

                                        This example goes over how to subscribe to the swob files from the Environment Canada Weather office.

                                        $ sudo apt install rabbitmq-server
                                         $ sudo rabbitmqctl list_users
                                        diff --git a/Tutorials/Setup_a_remote_subscriber.html b/Tutorials/Setup_a_remote_subscriber.html
                                        index 0f02c36e8..eb45c82f1 100644
                                        --- a/Tutorials/Setup_a_remote_subscriber.html
                                        +++ b/Tutorials/Setup_a_remote_subscriber.html
                                        @@ -8,9 +8,9 @@
                                               
                                               
                                           
                                        -        
                                        +        
                                                 
                                        -        
                                        +        
                                                 
                                             
                                             
                                        @@ -115,10 +115,10 @@
                                         }
                                         
                                         
                                        -

                                        How to setup a Remote Subscriber

                                        +

                                        How to setup a Remote Subscriber

                                        This example goes over how to subscribe to the swob files from the Environment Canada Weather office.

                                        -

                                        Setup

                                        +

                                        Setup

                                        Initialize the credentials storage in the ~/.config/sr3/credentials.conf file:

                                        $ sr3 edit credentials.conf
                                           amqps://anonymous:anonymous@dd.weather.gc.ca
                                        @@ -160,7 +160,7 @@ 

                                        Setup

                                        -

                                        Startup

                                        +

                                        Startup

                                        Now start up the newly created subscriber:

                                        $ sr3 start swob
                                           2015-12-03 06:53:35,268 [INFO] user_config = 0 ../swob.conf
                                        @@ -218,7 +218,7 @@ 

                                        Startup -

                                        Cleanup

                                        +

                                        Cleanup

                                        To not download more files, stop the subscriber:

                                        $ sr_subscribe stop swob
                                           2015-12-03 17:32:22,219 [INFO] sr_subscribe swob 01 stopped
                                        diff --git a/Tutorials/Windows.html b/Tutorials/Windows.html
                                        index 1956be377..e14a34ef6 100644
                                        --- a/Tutorials/Windows.html
                                        +++ b/Tutorials/Windows.html
                                        @@ -8,9 +8,9 @@
                                               
                                               
                                           
                                        -        
                                        +        
                                                 
                                        -        
                                        +        
                                                 
                                             
                                             
                                        @@ -122,14 +122,14 @@
                                         }
                                         
                                         
                                        -

                                        Windows user manual

                                        +

                                        Windows user manual

                                        This document teaches novice user with Python on Windows how they could easily run Sarracenia in various ways. The screenshots were taken from Windows Server 2012 R2 Standard edition. Feel free to create issues if you believe that this document could be enhanced with one (or more) important case(s).

                                        -

                                        Running Sarracenia with a Command Prompt

                                        +

                                        Running Sarracenia with a Command Prompt

                                        -

                                        From the Start Menu:

                                        +

                                        From the Start Menu:

                                        Click on Sarracenia (it will execute sr3.exe restart):

                                        ../_images/start-menu-1.png

                                        This will pop Sarracenia’s Command Prompt, start Sarracenia processes as instructed by your configurations and show logging information.

                                        @@ -137,7 +137,7 @@

                                        From the Start Menu:Keep this window alive until you are done with Sarracenia. Closing it or typing ctrl-c will kill all Sarracenia processes. You may also want to restart Sarracenia which will stop those processes cleanly.

                                        -

                                        From a Windows Powershell session:

                                        +

                                        From a Windows Powershell session:

                                        If sr3 is not found at the command line, even after a pip install metpx-sr3, then it may be because pip does not get the entry points added to the Power Shell Path and you may need to do that manually:

                                        PS C:\Users\SilvaP2> sr3
                                        @@ -212,7 +212,7 @@ 

                                        From a Windows Powershell session: -

                                        From Anaconda Prompt:

                                        +

                                        From Anaconda Prompt:

                                        Run this command:

                                        activate sr3 && s3r restart
                                         
                                        @@ -220,11 +220,11 @@

                                        From Anaconda Prompt:

                                        -

                                        Running Sarracenia without a Command Prompt

                                        +

                                        Running Sarracenia without a Command Prompt

                                        Here is a case where someone (like a sysadmin) needs to run Sarracenia without a Command Prompt and ensure that the system starts at Windows startup. The obvious way of doing it would be from the Task Scheduler.

                                        -

                                        From the Task Scheduler:

                                        +

                                        From the Task Scheduler:

                                        Open Task scheduler:

                                        ../_images/03_task_scheduler.png

                                        Select Create Basic Task… from the action panel on the right:

                                        diff --git a/Tutorials/index.html b/Tutorials/index.html index a7f46564e..92880bdbb 100644 --- a/Tutorials/index.html +++ b/Tutorials/index.html @@ -8,9 +8,9 @@ - + - + @@ -109,7 +109,7 @@ }
                                        -

                                        Tutorials

                                        +

                                        Tutorials

                                        Contents:

                                          diff --git a/_Footer.html b/_Footer.html index c78c54293..80da39ad4 100644 --- a/_Footer.html +++ b/_Footer.html @@ -8,9 +8,9 @@ - + - + diff --git a/_Sidebar.html b/_Sidebar.html index c3daaad8b..a4239f8a5 100644 --- a/_Sidebar.html +++ b/_Sidebar.html @@ -8,9 +8,9 @@ - + - + @@ -96,7 +96,7 @@ }
                                          -

                                          MetPX Sarracenia Wiki

                                          +

                                          MetPX Sarracenia Wiki

                            @@ -107,13 +107,13 @@

                            MetPX Sarracenia Wiki

                            Languages

                            -

                            👨‍🎓️ Main

                            +

                            👨‍🎓️ Main

                            -

                            🧙 Reference

                            +

                            🧙 Reference

                            • Thing 1

                            • Thing 2

                            • @@ -122,7 +122,7 @@

                              🧙 Reference -

                              👷 Developers

                              +

                              👷 Developers

                              • 🏗️ Compilation

                              • 🤝 Contributing guidelines

                              • diff --git a/_modules/index.html b/_modules/index.html index 1e31fbc78..e04f54dea 100644 --- a/_modules/index.html +++ b/_modules/index.html @@ -7,9 +7,9 @@ - + - + diff --git a/_modules/sarracenia.html b/_modules/sarracenia.html index 08f835ef5..cc7fd20cc 100644 --- a/_modules/sarracenia.html +++ b/_modules/sarracenia.html @@ -7,9 +7,9 @@ - + - + @@ -193,7 +193,9 @@

                                Source code for sarracenia

                                 
                                 import sarracenia.filemetadata
                                 
                                -
                                [docs]class Sarracenia: +
                                +[docs] +class Sarracenia: """ Core utilities of Sarracenia. The main class here is sarracenia.Message. a Sarracenia.Message is subclassed from a dict, so for most uses, it works like the @@ -268,7 +270,10 @@

                                Source code for sarracenia

                                     pass
                                -
                                [docs]class TimeConversions: + +
                                +[docs] +class TimeConversions: """ Time conversion routines. @@ -304,7 +309,10 @@

                                Source code for sarracenia

                                     pass
                                -
                                [docs]def stat( path ) -> sarracenia.filemetadata.FmdStat: + +
                                +[docs] +def stat( path ) -> sarracenia.filemetadata.FmdStat: """ os.stat call replacement which improves on it by returning and SFTPAttributes structure, in place of the OS stat one, @@ -332,6 +340,7 @@

                                Source code for sarracenia

                                     sa.st_ctime = native_stat.st_atime
                                     return sa
                                + def nowflt(): return timestr2flt(nowstr()) @@ -340,7 +349,9 @@

                                Source code for sarracenia

                                     return timeflt2str(time.time())
                                 
                                 
                                -
                                [docs]def timeflt2str(f=None): +
                                +[docs] +def timeflt2str(f=None): """ timeflt2str - accepts a float and returns a string. @@ -359,6 +370,7 @@

                                Source code for sarracenia

                                     return "{}{}".format(time.strftime("%Y%m%dT%H%M%S", time.gmtime(f)), nsec)
                                + def timeValidate(s) -> bool: if len(s) < 14: return False @@ -385,7 +397,9 @@

                                Source code for sarracenia

                                         return s[0:8] + 'T' + s[8:]
                                 
                                 
                                -
                                [docs]def durationToSeconds(str_value, default=None) -> float: +
                                +[docs] +def durationToSeconds(str_value, default=None) -> float: """ this function converts duration to seconds. str_value should be a number followed by a unit [s,m,h,d,w] ex. 1w, 4d, 12h @@ -424,6 +438,7 @@

                                Source code for sarracenia

                                     return duration
                                + known_report_codes = { 201: "Download successful. (variations: Downloaded, Inserted, Published, Copied, or Linked)", @@ -443,7 +458,9 @@

                                Source code for sarracenia

                                 }
                                 
                                 
                                -
                                [docs]class Message(dict): +
                                +[docs] +class Message(dict): """ A notification message in Sarracenia is stored as a python dictionary, with a few extra management functions. @@ -452,11 +469,14 @@

                                Source code for sarracenia

                                         Unfortunately, sub-classing of dict means that to copy it from a dict will mean losing the type,
                                         and hence the need for the copyDict member.
                                     """
                                -
                                [docs] def __init__(self): +
                                +[docs] + def __init__(self): self['_format'] = 'v03' self['_deleteOnPost'] = set(['_format'])
                                + def __computeIdentity(msg, path, o): """ check extended attributes for a cached identity sum calculation. @@ -535,7 +555,9 @@

                                Source code for sarracenia

                                         xattr.set('identity', sumstr)
                                         xattr.persist()
                                 
                                -
                                [docs] def copyDict(msg, d): +
                                +[docs] + def copyDict(msg, d): """ copy dictionary into message. """ @@ -544,7 +566,10 @@

                                Source code for sarracenia

                                         for h in d:
                                             msg[h] = d[h]
                                -
                                [docs] def dumps(msg) -> str: + +
                                +[docs] + def dumps(msg) -> str: """ FIXME: used to be msg_dumps. print a message in a compact but relatively compact way. @@ -601,7 +626,10 @@

                                Source code for sarracenia

                                         s = s[:-1] + " }"
                                         return s
                                -
                                [docs] @staticmethod + +
                                +[docs] + @staticmethod def fromFileData(path, o, lstat=None): """ create a message based on a given file, calculating the checksum. @@ -626,7 +654,10 @@

                                Source code for sarracenia

                                                 m['contentType'] = 'text/link' # I invented this one, could not find any reference
                                         return m
                                -
                                [docs] @staticmethod + +
                                +[docs] + @staticmethod def fromFileInfo(path, o, lstat=None): """ based on the fiven information about the file (it's name and a stat record if available) @@ -749,7 +780,10 @@

                                Source code for sarracenia

                                 
                                         return msg
                                -
                                [docs] @staticmethod + +
                                +[docs] + @staticmethod def fromStream(path, o, data=None): """ Create a file and message for the given path. @@ -765,7 +799,10 @@

                                Source code for sarracenia

                                 
                                         return sarracenia.Message.fromFileData(path, o, stat(path))
                                -
                                [docs] def setReport(msg, code, text=None): + +
                                +[docs] + def setReport(msg, code, text=None): """ FIXME: used to be msg_set_report set message fields to indicate result of action so reports can be generated. @@ -794,7 +831,10 @@

                                Source code for sarracenia

                                         msg['report'] = {'code': code, 'message': text}
                                         msg['_deleteOnPost'] |= set(['report','timeCompleted'])
                                -
                                [docs] def updatePaths(msg, options, new_dir=None, new_file=None): + +
                                +[docs] + def updatePaths(msg, options, new_dir=None, new_file=None): """ set the new\\\_ fields in the message based on changed file placement. if new_ options are ommitted updaste the rest of the fields in @@ -880,7 +920,10 @@

                                Source code for sarracenia

                                                 msg['new_dir'] = msg['new_dir'].lstrip('/')
                                                 msg['new_relPath'] = msg['new_relPath'].lstrip('/')
                                -
                                [docs] def validate(msg): + +
                                +[docs] + def validate(msg): """ FIXME: used to be msg_validate return True if message format seems ok, return True, else return False, log some reasons. @@ -901,7 +944,10 @@

                                Source code for sarracenia

                                             logger.error('malformed message: %s', msg)
                                         return res
                                -
                                [docs] def getContent(msg): + +
                                +[docs] + def getContent(msg): """ Retrieve the data referred to by a message. The data may be embedded in the messate, or this routine may resolve a link to an external server @@ -927,7 +973,9 @@

                                Source code for sarracenia

                                             retUrl = msg['baseUrl'] + '/' + msg['relPath']
                                 
                                         with urllib.request.urlopen(retUrl) as response:
                                -            return response.read()
                                + return response.read()
                                +
                                +
                                diff --git a/_modules/sarracenia/config.html b/_modules/sarracenia/config.html index c68c9e8df..fe3773f75 100644 --- a/_modules/sarracenia/config.html +++ b/_modules/sarracenia/config.html @@ -7,9 +7,9 @@ - + - + @@ -386,7 +386,9 @@

                                Source code for sarracenia.config

                                                                    Config.appdir_stuff['appauthor'])
                                 
                                 
                                -
                                [docs]def get_user_cache_dir(hostdir): +
                                +[docs] +def get_user_cache_dir(hostdir): """ hostdir = None if statehost is false, """ @@ -397,12 +399,15 @@

                                Source code for sarracenia.config

                                     return ucd
                                + def get_user_config_dir(): return sarracenia.user_config_dir(Config.appdir_stuff['appname'], Config.appdir_stuff['appauthor']) -
                                [docs]def get_pid_filename(hostdir, component, configuration, no): +
                                +[docs] +def get_pid_filename(hostdir, component, configuration, no): """ return the file name for the pid file for the specified instance. """ @@ -417,7 +422,10 @@

                                Source code for sarracenia.config

                                     return piddir + os.sep + component + '_' + configuration + '_%02d' % no + '.pid'
                                -
                                [docs]def get_log_filename(hostdir, component, configuration, no): + +
                                +[docs] +def get_log_filename(hostdir, component, configuration, no): """ return the name of a single logfile for a single instance. """ @@ -434,6 +442,7 @@

                                Source code for sarracenia.config

                                     return logdir + os.sep + component + configuration + '_%02d' % no + '.log'
                                + def wget_config(urlstr, path, remote_config_url=False): logger.debug("wget_config %s %s" % (urlstr, path)) @@ -521,7 +530,9 @@

                                Source code for sarracenia.config

                                     return False
                                 
                                 
                                -
                                [docs]def config_path(subdir, config, mandatory=True, ctype='conf'): +
                                +[docs] +def config_path(subdir, config, mandatory=True, ctype='conf'): """ Given a subdir/config look for file in configish places. @@ -601,7 +612,10 @@

                                Source code for sarracenia.config

                                     return False, config
                                -
                                [docs]class Config: + +
                                +[docs] +class Config: """ The option parser to produce a single configuration. @@ -771,7 +785,9 @@

                                Source code for sarracenia.config

                                     }
                                     credentials = None
                                 
                                -
                                [docs] def __init__(self, parent=None) -> 'Config': +
                                +[docs] + def __init__(self, parent=None) -> 'Config': """ instantiate an empty Configuration """ @@ -856,7 +872,10 @@

                                Source code for sarracenia.config

                                         self.users = False
                                         self.vip = None
                                -
                                [docs] def __deepcopy__(self, memo) -> 'Configuration': + +
                                +[docs] + def __deepcopy__(self, memo) -> 'Configuration': """ code for this from here: https://stackoverflow.com/questions/1500718/how-to-override-the-copy-deepcopy-operations-for-a-python-object Needed for python < 3.7ish? (ubuntu 18) found this bug: https://bugs.python.org/issue10076 @@ -877,7 +896,10 @@

                                Source code for sarracenia.config

                                                 setattr(result, k, copy.deepcopy(v, memo))
                                         return result
                                -
                                [docs] def _validate_urlstr(self, urlstr) -> tuple : + +
                                +[docs] + def _validate_urlstr(self, urlstr) -> tuple : """ returns a tuple ( bool, expanded_url ) the bool is whether the expansion worked, and the expanded_url is one with @@ -894,7 +916,10 @@

                                Source code for sarracenia.config

                                             return False, cred_details
                                         return True, cred_details
                                -
                                [docs] def applyComponentDefaults( self, component ): + +
                                +[docs] + def applyComponentDefaults( self, component ): """ overlay defaults options for the given component to the given configuration. """ @@ -911,6 +936,7 @@

                                Source code for sarracenia.config

                                         elif component in ['watch']:
                                             self.override(sarracenia.flow.watch.default_options)
                                + @property def admin(self): return self.__admin @@ -950,7 +976,9 @@

                                Source code for sarracenia.config

                                         else:
                                             self.__post_broker = v
                                 
                                -
                                [docs] def _varsub(self, word): +
                                +[docs] + def _varsub(self, word): """ substitute variable values from options """ @@ -995,7 +1023,10 @@

                                Source code for sarracenia.config

                                                     result = result.replace('\\', '/')
                                         return result
                                -
                                [docs] def _build_mask(self, option, arguments): + +
                                +[docs] + def _build_mask(self, option, arguments): """ return new entry to be appended to list of masks """ try: @@ -1020,7 +1051,10 @@

                                Source code for sarracenia.config

                                                 option.lower() in ['accept' ], self.mirror, self.strip,
                                                 self.pstrip, self.flatten)
                                -
                                [docs] def mask_ppstr(self, mask): + +
                                +[docs] + def mask_ppstr(self, mask): """ return a pretty print string version of the given mask, easier for humans to read. """ @@ -1034,7 +1068,10 @@

                                Source code for sarracenia.config

                                         w = 'with ' if fn or flatten or strip else ''
                                         return f'{s} {pattern} into {maskDir} {w}mirror:{mirror}{strip}{flatten}{fn}'
                                -
                                [docs] def add_option(self, option, kind='list', default_value=None, all_values=None ): + +
                                +[docs] + def add_option(self, option, kind='list', default_value=None, all_values=None ): """ options can be declared in any plugin. There are various *kind* of options, where the declared type modifies the parsing. @@ -1140,7 +1177,10 @@

                                Source code for sarracenia.config

                                 
                                         logger.debug('%s declared as type:%s value:%s' % (option, type(getattr(self,option)), v))
                                -
                                [docs] def dump(self): + +
                                +[docs] + def dump(self): """ print out what the configuration looks like. """ @@ -1171,7 +1211,10 @@

                                Source code for sarracenia.config

                                         pprint.pprint( d, width=term.columns, compact=True )
                                         return
                                -
                                [docs] def dictify(self): + +
                                +[docs] + def dictify(self): """ return a dict version of the cfg... """ @@ -1188,6 +1231,7 @@

                                Source code for sarracenia.config

                                 
                                         return cd
                                + def get_source_from_exchange(self,exchange): #self.logger.debug("%s get_source_from_exchange %s" % (self.program_name,exchange)) @@ -1218,7 +1262,9 @@

                                Source code for sarracenia.config

                                             if value is not None:
                                                 setattr(self, key, value)
                                 
                                -
                                [docs] def merge(self, oth): +
                                +[docs] + def merge(self, oth): """ merge to lists of options. @@ -1233,13 +1279,16 @@

                                Source code for sarracenia.config

                                             for k in oth.__dict__.keys():
                                                 self._merge_field(k, self._varsub(getattr(oth, k)))
                                + def _override_field(self, key, value): if key == 'masks': self.masks += value else: setattr(self, key, value) -
                                [docs] def override(self, oth): +
                                +[docs] + def override(self, oth): """ override a value in a set of options. @@ -1257,7 +1306,10 @@

                                Source code for sarracenia.config

                                                 logger.error('k=%s, v=%s' % (k, getattr(oth, k)))
                                                 self._override_field(k, self._varsub(getattr(oth, k)))
                                -
                                [docs] def _resolve_exchange(self): + +
                                +[docs] + def _resolve_exchange(self): """ based on the given configuration, fill in with defaults or guesses. sets self.exchange. @@ -1278,7 +1330,10 @@

                                Source code for sarracenia.config

                                                     self, 'no') and (self.no > 0):
                                                 self.exchange += "%02d" % self.no
                                -
                                [docs] def _parse_binding(self, subtopic_string): + +
                                +[docs] + def _parse_binding(self, subtopic_string): """ FIXME: see original parse, with substitions for url encoding. also should sqwawk about error if no exchange or topicPrefix defined. @@ -1300,7 +1355,10 @@

                                Source code for sarracenia.config

                                         if hasattr(self, 'exchange') and hasattr(self, 'topicPrefix'):
                                             self.bindings.append((self.exchange, self.topicPrefix, subtopic))
                                -
                                [docs] def _parse_v2plugin(self, entryPoint, value): + +
                                +[docs] + def _parse_v2plugin(self, entryPoint, value): """ config file parsing for a v2 plugin. @@ -1315,6 +1373,7 @@

                                Source code for sarracenia.config

                                         else:
                                             self.v2plugins[entryPoint].append(value)
                                + def _parse_declare(self, words): if words[0] in ['env', 'envvar', 'var', 'value']: @@ -1328,7 +1387,9 @@

                                Source code for sarracenia.config

                                         elif words[0] in ['exchange']:
                                             self.declared_exchanges.append(words[1])
                                 
                                -
                                [docs] def _parse_setting(self, opt, value): +
                                +[docs] + def _parse_setting(self, opt, value): """ v3 plugin accept options for specific modules. @@ -1354,6 +1415,7 @@

                                Source code for sarracenia.config

                                 
                                         self.settings[opt_class][opt_var] = ' '.join(value)
                                + def _parse_sum(self, value): #logger.error('FIXME! input value: %s' % value) @@ -1408,7 +1470,9 @@

                                Source code for sarracenia.config

                                         self.identity_method = 'invalid'
                                         #logger.error('returning 4: invalid' )
                                 
                                -
                                [docs] def parse_file(self, cfg, component=None): +
                                +[docs] + def parse_file(self, cfg, component=None): """ add settings from a given config file to self """ if component: @@ -1670,7 +1734,10 @@

                                Source code for sarracenia.config

                                                     setattr(self, k, v)
                                                     self.undeclared.append(k)
                                -
                                [docs] def finalize(self, component=None, config=None): + +
                                +[docs] + def finalize(self, component=None, config=None): """ Before final use, take the existing settings, and infer any missing needed defaults from what is provided. Should be called prior to using a configuration. @@ -1961,6 +2028,7 @@

                                Source code for sarracenia.config

                                             logger.critical( f"vip feature requested, but missing library: {' '.join(features['vip']['modules_needed'])} " )
                                             sys.exit(1)
                                + def check_undeclared_options(self): alloptions = str_options + flag_options + float_options + list_options + set_options + count_options + size_options + duration_options @@ -1984,7 +2052,9 @@

                                Source code for sarracenia.config

                                       sundew_* ... 
                                    """
                                 
                                -
                                [docs] def _sundew_basename_parts(self, pattern, basename): +
                                +[docs] + def _sundew_basename_parts(self, pattern, basename): """ modified from metpx SenderFTP """ @@ -2002,8 +2072,11 @@

                                Source code for sarracenia.config

                                 
                                         return lst
                                + # from metpx SenderFTP -
                                [docs] def sundew_dirPattern(self, pattern, urlstr, basename, destDir): +
                                +[docs] + def sundew_dirPattern(self, pattern, urlstr, basename, destDir): """ does substitutions for patterns in directories. @@ -2034,6 +2107,7 @@

                                Source code for sarracenia.config

                                 
                                         return ndestDir
                                + # modified from metpx SenderFTP def sundew_matchPattern(self, BN, EN, BP, keywd, defval): @@ -2075,7 +2149,9 @@

                                Source code for sarracenia.config

                                 
                                         return defval
                                 
                                -
                                [docs] def variableExpansion(self, cdir, message=None ): +
                                +[docs] + def variableExpansion(self, cdir, message=None ): """ replace substitution patterns, variable substitutions as described in https://metpx.github.io/sarracenia/Reference/sr3_options.7.html#variables @@ -2235,6 +2311,7 @@

                                Source code for sarracenia.config

                                         return new_dir
                                + """ 2020/05/26 PAS... FIXME: end of sheer terror. @@ -2242,11 +2319,15 @@

                                Source code for sarracenia.config

                                        tamed a bit.
                                     """
                                 
                                -
                                [docs] class addBinding(argparse.Action): +
                                +[docs] + class addBinding(argparse.Action): """ called by argparse to deal with queue bindings. """ -
                                [docs] def __call__(self, parser, namespace, values, option_string): +
                                +[docs] + def __call__(self, parser, namespace, values, option_string): if values == 'None': namespace.bindings = [] @@ -2272,9 +2353,13 @@

                                Source code for sarracenia.config

                                                    topicPrefix = namespace.topicPrefix.split('/')
                                 
                                             namespace.bindings.append(
                                -                (namespace.exchange, topicPrefix, values))
                                + (namespace.exchange, topicPrefix, values))
                                +
                                -
                                [docs] def parse_args(self, isPost=False): + +
                                +[docs] + def parse_args(self, isPost=False): """ user information: accept a configguration, apply argParse library to augment the given configuration @@ -2520,7 +2605,9 @@

                                Source code for sarracenia.config

                                             self.displayFull = args.full
                                             delattr(args,'full')
                                 
                                -        self.merge(args)
                                + self.merge(args)
                                +
                                + def default_config(): @@ -2539,7 +2626,9 @@

                                Source code for sarracenia.config

                                 
                                     return cfg
                                 
                                -
                                [docs]def no_file_config(): +
                                +[docs] +def no_file_config(): """ initialize a config that will not use Sarracenia configuration files at all. meant for use by people writing independent programs to start up instances @@ -2558,7 +2647,10 @@

                                Source code for sarracenia.config

                                     return cfg
                                -
                                [docs]def one_config(component, config, isPost=False): + +
                                +[docs] +def one_config(component, config, isPost=False): """ single call return a fully parsed single configuration for a single component to run. @@ -2630,6 +2722,7 @@

                                Source code for sarracenia.config

                                 
                                     return cfg
                                + def cfglogs(cfg_preparse, component, config, logLevel, child_inst): lr_when = 'midnight' diff --git a/_modules/sarracenia/credentials.html b/_modules/sarracenia/credentials.html index 898a7c303..2df7a5cda 100644 --- a/_modules/sarracenia/credentials.html +++ b/_modules/sarracenia/credentials.html @@ -7,9 +7,9 @@ - + - + @@ -116,7 +116,9 @@

                                Source code for sarracenia.credentials

                                 import sys
                                 
                                 
                                -
                                [docs]class Credential: +
                                +[docs] +class Credential: """An object that holds information about a credential, read from a credential file, which has one credential per line, format:: url option1=value1, option2=value2 @@ -150,7 +152,9 @@

                                Source code for sarracenia.credentials

                                 
                                     """
                                 
                                -
                                [docs] def __init__(self, urlstr=None): +
                                +[docs] + def __init__(self, urlstr=None): """Create a Credential object. Args: @@ -170,7 +174,10 @@

                                Source code for sarracenia.credentials

                                         self.bearer_token = None
                                         self.login_method = None
                                -
                                [docs] def __str__(self): + +
                                +[docs] + def __str__(self): """Returns attributes of the Credential object as a readable string. """ @@ -197,10 +204,14 @@

                                Source code for sarracenia.credentials

                                         s += " %s" % self.prot_p
                                         s += " %s" % self.bearer_token
                                         s += " %s" % self.login_method
                                -        return s
                                + return s
                                +
                                -
                                [docs]class CredentialDB: + +
                                +[docs] +class CredentialDB: """Parses, stores and manages Credential objects. Attributes: @@ -218,7 +229,9 @@

                                Source code for sarracenia.credentials

                                        remote = credentials.get( "sftp://hoho@theserver" )
                                     """
                                 
                                -
                                [docs] def __init__(self, Unused_logger=None): +
                                +[docs] + def __init__(self, Unused_logger=None): """Create a CredentialDB. Args: @@ -229,7 +242,10 @@

                                Source code for sarracenia.credentials

                                 
                                         logger.debug("__init__")
                                -
                                [docs] def add(self, urlstr, details=None): + +
                                +[docs] + def add(self, urlstr, details=None): """Add a new credential to the DB. Args: @@ -245,7 +261,10 @@

                                Source code for sarracenia.credentials

                                 
                                         self.credentials[urlstr] = details
                                -
                                [docs] def get(self, urlstr): + +
                                +[docs] + def get(self, urlstr): """Retrieve a Credential from the DB by urlstr. If the Credential is valid, but not already cached, it will be added to the CredentialDB. @@ -296,7 +315,10 @@

                                Source code for sarracenia.credentials

                                         self.add(urlstr)
                                         return False, self.credentials[urlstr]
                                -
                                [docs] def has(self, urlstr): + +
                                +[docs] + def has(self, urlstr): """Return ``True`` if the Credential matching the urlstr is already in the CredentialDB. Args: @@ -305,7 +327,10 @@

                                Source code for sarracenia.credentials

                                         logger.debug("has %s" % urlstr)
                                         return urlstr in self.credentials
                                -
                                [docs] def isTrue(self, S): + +
                                +[docs] + def isTrue(self, S): """Returns ``True`` if s is ``true``, ``yes``, ``on`` or ``1``. Args: @@ -315,7 +340,10 @@

                                Source code for sarracenia.credentials

                                         if s == 'true' or s == 'yes' or s == 'on' or s == '1': return True
                                         return False
                                -
                                [docs] def isValid(self, url, details=None): + +
                                +[docs] + def isValid(self, url, details=None): """Validates a URL and Credential object. Checks for empty passwords, schemes, etc. Args: @@ -374,7 +402,10 @@

                                Source code for sarracenia.credentials

                                 
                                         return True
                                -
                                [docs] def _parse(self, line): + +
                                +[docs] + def _parse(self, line): """Parse a line of a credentials file, add it to the CredentialDB. Args: @@ -450,7 +481,10 @@

                                Source code for sarracenia.credentials

                                             logger.error("credentials/parse %s" % line)
                                             logger.debug('Exception details: ', exc_info=True)
                                -
                                [docs] def read(self, path): + +
                                +[docs] + def read(self, path): """Read in a file containing credentials (e.g. credentials.conf). All credentials are parsed and added to the CredentialDB. @@ -470,9 +504,12 @@

                                Source code for sarracenia.credentials

                                         except:
                                             logger.error("credentials/read path = %s" % path)
                                             logger.debug('Exception details: ', exc_info=True)
                                + #logger.debug("Credentials = %s\n" % self.credentials) -
                                [docs] def _resolve(self, urlstr, url=None): +
                                +[docs] + def _resolve(self, urlstr, url=None): """Resolve credentials for AMQP vhost from ones passed as a string, and optionally a urllib.parse.ParseResult object, into a sarracenia.credentials.Credential object. @@ -524,7 +561,9 @@

                                Source code for sarracenia.credentials

                                             #logger.debug("Credentials get resolved %s %s" % (urlstr,details))
                                             return True, details
                                 
                                -        return False, None
                                + return False, None
                                +
                                +
                                diff --git a/_modules/sarracenia/diskqueue.html b/_modules/sarracenia/diskqueue.html index 4bf8c75a1..f10f68fd6 100644 --- a/_modules/sarracenia/diskqueue.html +++ b/_modules/sarracenia/diskqueue.html @@ -7,9 +7,9 @@ - + - + @@ -95,7 +95,9 @@

                                Source code for sarracenia.diskqueue

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class DiskQueue(): +
                                +[docs] +class DiskQueue(): """ Process Persistent Queue... @@ -142,7 +144,9 @@

                                Source code for sarracenia.diskqueue

                                         not sure what will run better.
                                    
                                     """
                                -
                                [docs] def __init__(self, options, name): +
                                +[docs] + def __init__(self, options, name): logger.debug(" %s __init__" % name) @@ -201,7 +205,10 @@

                                Source code for sarracenia.diskqueue

                                 
                                 
                                 
                                -
                                [docs] def put(self, message_list): + +
                                +[docs] + def put(self, message_list): """ add messages to the end of the queue. """ @@ -216,7 +223,10 @@

                                Source code for sarracenia.diskqueue

                                             self.msg_count_new += 1
                                         self.new_fp.flush()
                                -
                                [docs] def cleanup(self): + +
                                +[docs] + def cleanup(self): """ remove statefiles. """ @@ -224,7 +234,10 @@

                                Source code for sarracenia.diskqueue

                                             os.unlink(self.queue_file)
                                         self.msg_count = 0
                                -
                                [docs] def close(self): + +
                                +[docs] + def close(self): """ clean shutdown. """ @@ -247,7 +260,10 @@

                                Source code for sarracenia.diskqueue

                                         self.msg_count = 0
                                         self.msg_count_new = 0
                                -
                                [docs] def _count_msgs(self, file_path) -> int: + +
                                +[docs] + def _count_msgs(self, file_path) -> int: """Count the number of messages (lines) in the queue file. This should be used only when opening an existing file, because :func:`~sarracenia.diskqueue.DiskQueue.get` does not remove messages from the file. @@ -268,7 +284,10 @@

                                Source code for sarracenia.diskqueue

                                 
                                         return count
                                -
                                [docs] def __len__(self) -> int: + +
                                +[docs] + def __len__(self) -> int: """Returns the total number of messages in the DiskQueue. Number of messages in the DiskQueue does not necessarily equal the number of messages available to ``get``. @@ -280,6 +299,7 @@

                                Source code for sarracenia.diskqueue

                                         """
                                         return self.msg_count + self.msg_count_new
                                + def msgFromJSON(self, line): try: msg = jsonpickle.decode(line) @@ -293,7 +313,9 @@

                                Source code for sarracenia.diskqueue

                                     def msgToJSON(self, message):
                                         return jsonpickle.encode(message) + '\n'
                                 
                                -
                                [docs] def get(self, maximum_messages_to_get=1): +
                                +[docs] + def get(self, maximum_messages_to_get=1): """ qty number of messages to retrieve from the queue. @@ -333,7 +355,10 @@

                                Source code for sarracenia.diskqueue

                                 
                                         return ml
                                -
                                [docs] def in_cache(self, message) -> bool: + +
                                +[docs] + def in_cache(self, message) -> bool: """ return whether the entry is message is in the cache or not. side effect: adds it. @@ -362,7 +387,10 @@

                                Source code for sarracenia.diskqueue

                                         self.retry_cache[cache_key] = True
                                         return False
                                -
                                [docs] def is_expired(self, message) -> bool: + +
                                +[docs] + def is_expired(self, message) -> bool: """ return is the given message expired ? """ @@ -377,7 +405,10 @@

                                Source code for sarracenia.diskqueue

                                         # expired ?
                                         return msg_age > self.o.retry_ttl
                                -
                                [docs] def needs_requeuing(self, message) -> bool: + +
                                +[docs] + def needs_requeuing(self, message) -> bool: """ return * True if message is not expired, and not already in queue. @@ -396,7 +427,10 @@

                                Source code for sarracenia.diskqueue

                                 
                                         return True
                                -
                                [docs] def msg_get_from_file(self, fp, path): + +
                                +[docs] + def msg_get_from_file(self, fp, path): """ read a message from the state file. """ @@ -419,7 +453,10 @@

                                Source code for sarracenia.diskqueue

                                 
                                         return fp, msg
                                -
                                [docs] def on_housekeeping(self): + +
                                +[docs] + def on_housekeeping(self): """ read rest of queue_file (from current point of unretried ones.) @@ -537,7 +574,9 @@

                                Source code for sarracenia.diskqueue

                                             pass
                                 
                                         elapse = sarracenia.nowflt() - self.now
                                -        logger.info("on_housekeeping elapse %f" % elapse)
                                + logger.info("on_housekeeping elapse %f" % elapse)
                                +
                                +
                                diff --git a/_modules/sarracenia/filemetadata.html b/_modules/sarracenia/filemetadata.html index a90bafefd..f3f50a3b4 100644 --- a/_modules/sarracenia/filemetadata.html +++ b/_modules/sarracenia/filemetadata.html @@ -7,9 +7,9 @@ - + - + @@ -157,7 +157,9 @@

                                Source code for sarracenia.filemetadata

                                     xattr_disabled = True
                                 
                                 
                                -
                                [docs]class FileMetadata: +
                                +[docs] +class FileMetadata: """ This class implements storing metadata *with* a file. @@ -187,7 +189,9 @@

                                Source code for sarracenia.filemetadata

                                       x.persist() <- write metadata back to file, if necessary.
                                 
                                    """
                                -
                                [docs] def __init__(self, path): +
                                +[docs] + def __init__(self, path): global supports_alternate_data_streams global supports_extended_attributes @@ -228,6 +232,7 @@

                                Source code for sarracenia.filemetadata

                                             self.x['identity'] = self.x['integrity']
                                             del self.x['integrity']
                                + def __del__(self): self.persist() @@ -237,13 +242,18 @@

                                Source code for sarracenia.filemetadata

                                 
                                    """
                                 
                                -
                                [docs] def list(self): +
                                +[docs] + def list(self): """ return the list of defined extended attributes. (keys to the dict.) """ return self.x.keys()
                                -
                                [docs] def get(self, name) -> str: + +
                                +[docs] + def get(self, name) -> str: """ return the value of the named extended attribute. """ @@ -251,14 +261,20 @@

                                Source code for sarracenia.filemetadata

                                             return self.x[name]
                                         return None
                                -
                                [docs] def set(self, name, value): + +
                                +[docs] + def set(self, name, value): """ set the name & value pair to the extended attributes for the file. """ self.dirty = True self.x[name] = value
                                -
                                [docs] def persist(self): + +
                                +[docs] + def persist(self): """ write the in-memory extended attributes to disk. """ @@ -296,7 +312,9 @@

                                Source code for sarracenia.filemetadata

                                             # silent failure means it falls back to using other means.
                                             pass
                                 
                                -        self.dirty = False
                                + self.dirty = False
                                +
                                +
                                diff --git a/_modules/sarracenia/flow.html b/_modules/sarracenia/flow.html index 23becd001..f73b3b8ef 100644 --- a/_modules/sarracenia/flow.html +++ b/_modules/sarracenia/flow.html @@ -7,9 +7,9 @@ - + - + @@ -140,7 +140,9 @@

                                Source code for sarracenia.flow

                                     import netifaces
                                 
                                 
                                -
                                [docs]class Flow: +
                                +[docs] +class Flow: """ Implement the General Algorithm from the Concepts Guide. @@ -200,7 +202,9 @@

                                Source code for sarracenia.flow

                                             return Flow(cfg)
                                         return None
                                 
                                -
                                [docs] def __init__(self, cfg=None): +
                                +[docs] + def __init__(self, cfg=None): """ The cfg is should be an sarra/config object. """ @@ -281,6 +285,7 @@

                                Source code for sarracenia.flow

                                         # metrics - dictionary with names of plugins as the keys
                                         self.metricsFlowReset()
                                + def metricsFlowReset(self) -> None: self.metrics = { 'flow': { 'stop_requested': False, 'last_housekeeping': 0, 'transferConnected': False, 'transferConnectStart': 0, 'transferConnectTime':0, @@ -351,7 +356,9 @@

                                Source code for sarracenia.flow

                                                     logger.error( f'flowCallback plugin {p}/{entry_point} crashed: {ex}' )
                                                     logger.debug( "details:", exc_info=True )
                                 
                                -
                                [docs] def _runCallbackMetrics(self): +
                                +[docs] + def _runCallbackMetrics(self): """Collect metrics from plugins with a ``metricsReport`` entry point. Expects the plugin to return a dictionary containing metrics, which is saved to ``self.metrics[plugin_name]``. @@ -384,6 +391,7 @@

                                Source code for sarracenia.flow

                                                     logger.debug( "details:", exc_info=True )
                                + def has_vip(self): if not features['vip']['present']: return True @@ -408,13 +416,16 @@

                                Source code for sarracenia.flow

                                 
                                         return False
                                 
                                -
                                [docs] def reject(self, m, code, reason) -> None: +
                                +[docs] + def reject(self, m, code, reason) -> None: """ reject a message. """ self.worklist.rejected.append(m) m.setReport(code, reason)
                                + def please_stop(self) -> None: logger.info( f'ok, telling {len(self.plugins["please_stop"])} callbacks about it.' @@ -445,7 +456,9 @@

                                Source code for sarracenia.flow

                                                         logger.error( f'flowCallback plugin {p}/ack crashed: {ex}' )
                                                         logger.debug( "details:", exc_info=True )
                                 
                                -
                                [docs] def run(self): +
                                +[docs] + def run(self): """ This is the core routine of the algorithm, with most important data driven loop in it. This implements the General Algorithm (as described in the Concepts Explanation Guide) @@ -717,7 +730,10 @@

                                Source code for sarracenia.flow

                                                 last_time = now
                                -
                                [docs] def sundew_getDestInfos(self, msg, currentFileOption, filename): + +
                                +[docs] + def sundew_getDestInfos(self, msg, currentFileOption, filename): """ modified from sundew client @@ -810,12 +826,15 @@

                                Source code for sarracenia.flow

                                         return destFileName + satnet + timeSuffix
                                + # ============================================== # how will the download file land on this server # with all options, this is really tricky # ============================================== -
                                [docs] def updateFieldsAccepted(self, msg, urlstr, pattern, maskDir, +
                                +[docs] + def updateFieldsAccepted(self, msg, urlstr, pattern, maskDir, maskFileOption, mirror, path_strip_count, pstrip, flatten) -> None: """ Set new message fields according to values when the message is accepted. @@ -972,6 +991,7 @@

                                Source code for sarracenia.flow

                                 
                                 
                                 
                                +
                                     def filter(self) -> None:
                                 
                                         logger.debug(
                                @@ -1097,7 +1117,9 @@ 

                                Source code for sarracenia.flow

                                             if len(new_incoming) > 0:
                                                 self.worklist.incoming.extend(new_incoming)
                                 
                                -
                                [docs] def do(self) -> None: +
                                +[docs] + def do(self) -> None: """ stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers. @@ -1109,6 +1131,7 @@

                                Source code for sarracenia.flow

                                         logger.debug('processing %d messages worked! (stop requested: %s)' %
                                                      (len(self.worklist.ok), self._stop_requested))
                                + def post(self) -> None: for p in self.plugins["post"]: try: @@ -1122,7 +1145,9 @@

                                Source code for sarracenia.flow

                                         # apply on_report plugins
                                         pass
                                 
                                -
                                [docs] def write_inline_file(self, msg) -> bool: +
                                +[docs] + def write_inline_file(self, msg) -> bool: """ write local file based on a message with inlined content. @@ -1221,6 +1246,7 @@

                                Source code for sarracenia.flow

                                 
                                         return True
                                + def compute_local_checksum(self, msg) -> None: if sarracenia.filemetadata.supports_extended_attributes: @@ -1257,7 +1283,9 @@

                                Source code for sarracenia.flow

                                         }
                                         msg['_deleteOnPost'] |= set(['local_identity'])
                                 
                                -
                                [docs] def file_should_be_downloaded(self, msg) -> bool: +
                                +[docs] + def file_should_be_downloaded(self, msg) -> bool: """ determine whether a comparison of local_file and message metadata indicates that it is new enough that writing the file locally is warranted. @@ -1350,7 +1378,10 @@

                                Source code for sarracenia.flow

                                         else:
                                             return True
                                -
                                [docs] def removeOneFile(self, path) -> bool: + +
                                +[docs] + def removeOneFile(self, path) -> bool: """ process an unlink event, returning boolean success. """ @@ -1370,7 +1401,10 @@

                                Source code for sarracenia.flow

                                 
                                         return ok
                                -
                                [docs] def renameOneItem(self, old, path) -> bool: + +
                                +[docs] + def renameOneItem(self, old, path) -> bool: """ for messages with an rename file operation, it is to rename a file. """ @@ -1401,7 +1435,10 @@

                                Source code for sarracenia.flow

                                             ok = False
                                         return ok
                                -
                                [docs] def mkdir(self, msg) -> bool: + +
                                +[docs] + def mkdir(self, msg) -> bool: """ perform an mkdir. """ @@ -1437,7 +1474,10 @@

                                Source code for sarracenia.flow

                                             logger.debug('Exception details:', exc_info=True)
                                         return ok
                                -
                                [docs] def link1file(self, msg, symbolic=True) -> bool: + +
                                +[docs] + def link1file(self, msg, symbolic=True) -> bool: """ perform a link of a single file, based on a message, returning boolean success if it's Symbolic, then do that. else do a hard link. @@ -1484,7 +1524,10 @@

                                Source code for sarracenia.flow

                                 
                                         return ok
                                -
                                [docs] def do_download(self) -> None: + +
                                +[docs] + def do_download(self) -> None: """ do download work for self.worklist.incoming, placing files: successfully downloaded in worklist.ok @@ -1683,10 +1726,13 @@

                                Source code for sarracenia.flow

                                 
                                         self.worklist.incoming = []
                                + # v2 sr_util.py ... generic sr_transport imported here... # generalized download... -
                                [docs] def download(self, msg, options) -> bool: +
                                +[docs] + def download(self, msg, options) -> bool: """ download/transfer one file based on message, return True if successful, otherwise False. """ @@ -2015,6 +2061,7 @@

                                Source code for sarracenia.flow

                                             return False
                                         return True
                                + # generalized send... def send(self, msg, options): self.o = options @@ -2356,7 +2403,9 @@

                                Source code for sarracenia.flow

                                             return False
                                 
                                     # set_local_file_attributes
                                -
                                [docs] def set_local_file_attributes(self, local_file, msg): +
                                +[docs] + def set_local_file_attributes(self, local_file, msg): """ after a file has been written, restore permissions and ownership if necessary. """ @@ -2398,6 +2447,7 @@

                                Source code for sarracenia.flow

                                                 atime = sarracenia.timestr2flt(msg['atime'])
                                             os.utime(local_file, (atime, mtime))
                                + # set_remote_file_attributes def set_remote_file_attributes(self, proto, remote_file, msg): #logger.debug("sr_transport set_remote_file_attributes %s" % remote_file) @@ -2436,7 +2486,9 @@

                                Source code for sarracenia.flow

                                 
                                     # imported from v2: sr_sender/doit_send
                                 
                                -
                                [docs] def do_send(self): +
                                +[docs] + def do_send(self): """ """ if not self.o.download: @@ -2465,7 +2517,9 @@

                                Source code for sarracenia.flow

                                                 i = i + 1
                                             if not ok:
                                                 self.worklist.failed.append(msg)
                                -        self.worklist.incoming = []
                                + self.worklist.incoming = []
                                +
                                + import sarracenia.flow.poll diff --git a/_modules/sarracenia/flow/poll.html b/_modules/sarracenia/flow/poll.html index b1ade2067..e65602e4d 100644 --- a/_modules/sarracenia/flow/poll.html +++ b/_modules/sarracenia/flow/poll.html @@ -7,9 +7,9 @@ - + - + @@ -114,7 +114,9 @@

                                Source code for sarracenia.flow.poll

                                 #  'sumflg': 'cod,md5',
                                 
                                 
                                -
                                [docs]class Poll(Flow): +
                                +[docs] +class Poll(Flow): """ repeatedly query a remote (non-sarracenia) server to list the files there. post messages (to post_broker) for every new file discovered there. @@ -127,7 +129,9 @@

                                Source code for sarracenia.flow.poll

                                        * consume all the messages posted, keeping new file duplicate cache updated.
                                           
                                     """
                                -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) @@ -147,7 +151,10 @@

                                Source code for sarracenia.flow.poll

                                                 logger.critical( f"attempting to configure an FTP poll pollUrl={self.o.pollUrl}, but missing python modules: {' '.join(features['ftppoll']['modules_needed'])}" )
                                                 sys.exit(1)
                                -
                                [docs] def do(self): + +
                                +[docs] + def do(self): """ stub to do the work: does nothing, marking everything done. to be replaced in child classes that do transforms or transfers. @@ -165,6 +172,7 @@

                                Source code for sarracenia.flow.poll

                                         self.worklist.incoming = []
                                + def gather(self): super().gather() @@ -182,6 +190,7 @@

                                Source code for sarracenia.flow.poll

                                                 if len(new_incoming) > 0:
                                                     self.worklist.incoming.extend(new_incoming)
                                +
                                diff --git a/_modules/sarracenia/flow/post.html b/_modules/sarracenia/flow/post.html index 85866e7c9..163ac7389 100644 --- a/_modules/sarracenia/flow/post.html +++ b/_modules/sarracenia/flow/post.html @@ -7,9 +7,9 @@ - + - + @@ -99,16 +99,22 @@

                                Source code for sarracenia.flow.post

                                 #'sumflg': 'sha512',
                                 
                                 
                                -
                                [docs]class Post(Flow): +
                                +[docs] +class Post(Flow): """ post messages about local files. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert(0, 'sarracenia.flowcb.gather.file.File') self.plugins['load'].insert(0, - 'sarracenia.flowcb.post.message.Message')
                                + 'sarracenia.flowcb.post.message.Message')
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/report.html b/_modules/sarracenia/flow/report.html index 6a4d1a1c8..aa41d011d 100644 --- a/_modules/sarracenia/flow/report.html +++ b/_modules/sarracenia/flow/report.html @@ -7,9 +7,9 @@ - + - + @@ -81,14 +81,18 @@

                                Source code for sarracenia.flow.report

                                 default_options = {'acceptUnmatched': True, 'nodupe_ttl': 0}
                                 
                                 
                                -
                                [docs]class Report(Flow): +
                                +[docs] +class Report(Flow): """ forward report messages. Not really implemented at the moment. It is just a shovel synonym for now. more logic should be added. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert( @@ -96,7 +100,9 @@

                                Source code for sarracenia.flow.report

                                 
                                         if hasattr(self.o, 'post_exchange'):
                                             self.plugins['load'].insert(
                                -                0, 'sarracenia.flowcb.post.message.Message')
                                + 0, 'sarracenia.flowcb.post.message.Message')
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/sarra.html b/_modules/sarracenia/flow/sarra.html index cc5bc5ade..e88f50313 100644 --- a/_modules/sarracenia/flow/sarra.html +++ b/_modules/sarracenia/flow/sarra.html @@ -7,9 +7,9 @@ - + - + @@ -81,13 +81,17 @@

                                Source code for sarracenia.flow.sarra

                                 default_options = {'acceptUnmatched': True, 'download': True}
                                 
                                 
                                -
                                [docs]class Sarra(Flow): +
                                +[docs] +class Sarra(Flow): """ * download files from a remote server to the local one * modify the messages so they refer to the downloaded files. * re-post them to another exchange for the next other subscribers. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert( @@ -97,7 +101,10 @@

                                Source code for sarracenia.flow.sarra

                                             self.plugins['load'].insert(
                                                 0, 'sarracenia.flowcb.post.message.Message')
                                -
                                [docs] def do(self): + +
                                +[docs] + def do(self): if self.o.download: self.do_download() @@ -106,7 +113,9 @@

                                Source code for sarracenia.flow.sarra

                                             self.worklist.ok = self.worklist.incoming
                                             self.worklist.incoming = []
                                 
                                -        logger.debug('processing %d messages worked!' % len(self.worklist.ok))
                                + logger.debug('processing %d messages worked!' % len(self.worklist.ok))
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/sender.html b/_modules/sarracenia/flow/sender.html index dfd317ecc..a45c9f718 100644 --- a/_modules/sarracenia/flow/sender.html +++ b/_modules/sarracenia/flow/sender.html @@ -7,9 +7,9 @@ - + - + @@ -82,14 +82,18 @@

                                Source code for sarracenia.flow.sender

                                 default_options = {'acceptUnmatched': True, 'download': True}
                                 
                                 
                                -
                                [docs]class Sender(Flow): +
                                +[docs] +class Sender(Flow): """ * subscribe to a stream of messages about local files. * send the files to a remote server. * modify the messages to refer to the remote file copies. * post the messages for subscribers of the remote server. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert( @@ -101,11 +105,16 @@

                                Source code for sarracenia.flow.sender

                                 
                                         self.scheme = urllib.parse.urlparse(self.o.sendTo).scheme
                                -
                                [docs] def do(self): + +
                                +[docs] + def do(self): self.do_send() - logger.debug('processing %d messages worked!' % len(self.worklist.ok))
                                + logger.debug('processing %d messages worked!' % len(self.worklist.ok))
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/shovel.html b/_modules/sarracenia/flow/shovel.html index d06bd21ec..9a405b67c 100644 --- a/_modules/sarracenia/flow/shovel.html +++ b/_modules/sarracenia/flow/shovel.html @@ -7,9 +7,9 @@ - + - + @@ -81,18 +81,24 @@

                                Source code for sarracenia.flow.shovel

                                 default_options = {'acceptUnmatched': True, 'nodupe_ttl': 0}
                                 
                                 
                                -
                                [docs]class Shovel(Flow): +
                                +[docs] +class Shovel(Flow): """ * subscribe to some messages. * post them somewhere else. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert( 0, 'sarracenia.flowcb.gather.message.Message') self.plugins['load'].insert(0, - 'sarracenia.flowcb.post.message.Message')
                                + 'sarracenia.flowcb.post.message.Message')
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/subscribe.html b/_modules/sarracenia/flow/subscribe.html index 5c8fd28df..d1a887662 100644 --- a/_modules/sarracenia/flow/subscribe.html +++ b/_modules/sarracenia/flow/subscribe.html @@ -7,9 +7,9 @@ - + - + @@ -81,12 +81,16 @@

                                Source code for sarracenia.flow.subscribe

                                 default_options = {'acceptUnmatched': True, 'download': True, 'mirror': False}
                                 
                                 
                                -
                                [docs]class Subscribe(Flow): +
                                +[docs] +class Subscribe(Flow): """ * subscribe to messages about files. * download the corresponding files. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert( @@ -96,7 +100,10 @@

                                Source code for sarracenia.flow.subscribe

                                             self.plugins['load'].insert(
                                                 0, 'sarracenia.flowcb.post.message.Message')
                                -
                                [docs] def do(self): + +
                                +[docs] + def do(self): if self.o.download: self.do_download() @@ -105,7 +112,9 @@

                                Source code for sarracenia.flow.subscribe

                                             self.worklist.ok = self.worklist.incoming
                                             self.worklist.incoming = []
                                 
                                -        logger.debug('processing %d messages worked!' % len(self.worklist.ok))
                                + logger.debug('processing %d messages worked!' % len(self.worklist.ok))
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/watch.html b/_modules/sarracenia/flow/watch.html index bffbad4f0..9dee754e5 100644 --- a/_modules/sarracenia/flow/watch.html +++ b/_modules/sarracenia/flow/watch.html @@ -7,9 +7,9 @@ - + - + @@ -98,18 +98,24 @@

                                Source code for sarracenia.flow.watch

                                 }
                                 
                                 
                                -
                                [docs]class Watch(Flow): +
                                +[docs] +class Watch(Flow): """ * create messages for files that appear in a directory. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) logger.info('watching!') self.plugins['load'].insert(0, 'sarracenia.flowcb.gather.file.File') self.plugins['load'].insert(0, - 'sarracenia.flowcb.post.message.Message')
                                + 'sarracenia.flowcb.post.message.Message')
                                +
                                +
                                diff --git a/_modules/sarracenia/flow/winnow.html b/_modules/sarracenia/flow/winnow.html index aae834bbe..725b6cde5 100644 --- a/_modules/sarracenia/flow/winnow.html +++ b/_modules/sarracenia/flow/winnow.html @@ -7,9 +7,9 @@ - + - + @@ -81,19 +81,25 @@

                                Source code for sarracenia.flow.winnow

                                 default_options = {'acceptUnmatched': True, 'nodupe_ttl': 300}
                                 
                                 
                                -
                                [docs]class Winnow(Flow): +
                                +[docs] +class Winnow(Flow): """ * subscribe to a stream of messages. * suppress duplicates, * post the thinned out stream somewhere else. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options) self.plugins['load'].insert( 0, 'sarracenia.flowcb.gather.message.Message') self.plugins['load'].insert(0, - 'sarracenia.flowcb.post.message.Message')
                                + 'sarracenia.flowcb.post.message.Message')
                                +
                                +
                                diff --git a/_modules/sarracenia/flowcb.html b/_modules/sarracenia/flowcb.html index 4c0c06e4e..a78f30209 100644 --- a/_modules/sarracenia/flowcb.html +++ b/_modules/sarracenia/flowcb.html @@ -7,9 +7,9 @@ - + - + @@ -96,7 +96,9 @@

                                Source code for sarracenia.flowcb

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class FlowCB: +
                                +[docs] +class FlowCB: """ Flow Callback is the main class for implementing plugin customization to flows. @@ -259,7 +261,9 @@

                                Source code for sarracenia.flowcb

                                          before the full stop happens.
                                 
                                     """
                                -
                                [docs] def __init__(self, options, class_logger=None): +
                                +[docs] + def __init__(self, options, class_logger=None): self.o = options self.stop_requested = False @@ -271,14 +275,21 @@

                                Source code for sarracenia.flowcb

                                             class_logger.setLevel(getattr(logging, self.o.logLevel.upper()))
                                -
                                [docs] def please_stop(self): + +
                                +[docs] + def please_stop(self): """ flow callbacks should not time.sleep for long periods, but only nap and check between naps if a stop has been requested. """ - self.stop_requested = True
                                + self.stop_requested = True
                                +
                                -
                                [docs]def load_library(factory_path, options): + +
                                +[docs] +def load_library(factory_path, options): """ Loading the entry points for a python module. It searches the normal python module path using the importlib module. @@ -337,6 +348,7 @@

                                Source code for sarracenia.flowcb

                                 
                                     plugin = class_(opt)
                                     return plugin
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/delete.html b/_modules/sarracenia/flowcb/accept/delete.html index a2cd5128d..84a5264c3 100644 --- a/_modules/sarracenia/flowcb/accept/delete.html +++ b/_modules/sarracenia/flowcb/accept/delete.html @@ -7,9 +7,9 @@ - + - + @@ -88,7 +88,9 @@

                                Source code for sarracenia.flowcb.accept.delete

                                < logger = logging.getLogger(__name__) -
                                [docs]class Delete(FlowCB): +
                                +[docs] +class Delete(FlowCB): def after_accept(self, worklist): new_incoming = [] @@ -107,6 +109,7 @@

                                Source code for sarracenia.flowcb.accept.delete

                                < new_incoming.append(message) worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/downloadbaseurl.html b/_modules/sarracenia/flowcb/accept/downloadbaseurl.html index 3442c0ab9..e4968951d 100644 --- a/_modules/sarracenia/flowcb/accept/downloadbaseurl.html +++ b/_modules/sarracenia/flowcb/accept/downloadbaseurl.html @@ -7,9 +7,9 @@ - + - + @@ -95,7 +95,9 @@

                                Source code for sarracenia.flowcb.accept.downloadbaseurl

                                logger = logging.getLogger(__name__) -
                                [docs]class DownloadBaseUrl(FlowCB): +
                                +[docs] +class DownloadBaseUrl(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: @@ -107,6 +109,7 @@

                                Source code for sarracenia.flowcb.accept.downloadbaseurl

                                with open(keypath + '/' + key, 'wb') as f: with urllib.request.urlopen(message['baseUrl']) as k: f.write(k.read())
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/hourtree.html b/_modules/sarracenia/flowcb/accept/hourtree.html index 26b4fbe50..01fe49a40 100644 --- a/_modules/sarracenia/flowcb/accept/hourtree.html +++ b/_modules/sarracenia/flowcb/accept/hourtree.html @@ -7,9 +7,9 @@ - + - + @@ -92,7 +92,9 @@

                                Source code for sarracenia.flowcb.accept.hourtree

                                logger = logging.getLogger(__name__) -
                                [docs]class HourTree(FlowCB): +
                                +[docs] +class HourTree(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: @@ -104,6 +106,7 @@

                                Source code for sarracenia.flowcb.accept.hourtree

                                new_fname = message['new_file'].split('/') message['new_file'] = '/'.join( new_fname[0:-1]) + '/' + datestr + '/' + new_fname[-1]
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/httptohttps.html b/_modules/sarracenia/flowcb/accept/httptohttps.html index d24a47da9..64e904729 100644 --- a/_modules/sarracenia/flowcb/accept/httptohttps.html +++ b/_modules/sarracenia/flowcb/accept/httptohttps.html @@ -7,9 +7,9 @@ - + - + @@ -91,7 +91,9 @@

                                Source code for sarracenia.flowcb.accept.httptohttps

                                logger = logging.getLogger(__name__) -
                                [docs]class HttpToHttps(FlowCB): +
                                +[docs] +class HttpToHttps(FlowCB): def after_accept(self, worklist): new_incoming = [] @@ -104,6 +106,7 @@

                                Source code for sarracenia.flowcb.accept.httptohttps

                                new_incoming.append(message) worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/longflow.html b/_modules/sarracenia/flowcb/accept/longflow.html index c7a9a37b2..b02a7ea83 100644 --- a/_modules/sarracenia/flowcb/accept/longflow.html +++ b/_modules/sarracenia/flowcb/accept/longflow.html @@ -7,9 +7,9 @@ - + - + @@ -92,12 +92,15 @@

                                Source code for sarracenia.flowcb.accept.longflow

                                logger = logging.getLogger(__name__) -
                                [docs]class LongFlow(FlowCB): +
                                +[docs] +class LongFlow(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: logger.info('setting toolong header') message['headers']['toolong'] = '1234567890ßñç' * 26
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/posthourtree.html b/_modules/sarracenia/flowcb/accept/posthourtree.html index ce0e8f041..5e94f4b09 100644 --- a/_modules/sarracenia/flowcb/accept/posthourtree.html +++ b/_modules/sarracenia/flowcb/accept/posthourtree.html @@ -7,9 +7,9 @@ - + - + @@ -91,7 +91,9 @@

                                Source code for sarracenia.flowcb.accept.posthourtree

                                logger = logging.getLogger(__name__) -
                                [docs]class Posthourtree(FlowCB): +
                                +[docs] +class Posthourtree(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: @@ -99,6 +101,7 @@

                                Source code for sarracenia.flowcb.accept.posthourtree

                                # insert the hour into the rename header of the message to be posted. message['new_dir'] += '/' + datestr logger.info( f"post_hour_tree: new_dir: {message['new_dir']}" )
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/postoverride.html b/_modules/sarracenia/flowcb/accept/postoverride.html index c789b546a..87129396b 100644 --- a/_modules/sarracenia/flowcb/accept/postoverride.html +++ b/_modules/sarracenia/flowcb/accept/postoverride.html @@ -7,9 +7,9 @@ - + - + @@ -99,14 +99,19 @@

                                Source code for sarracenia.flowcb.accept.postoverride

                                logger = logging.getLogger(__name__) -
                                [docs]class PostOverride(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class PostOverride(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option('postOverride', 'str') self.o.add_option('postOverrideDel', 'str') if hasattr(self.o, 'postOverride'): logger.info('postOverride settings: %s' % self.o.postOverride)
                                + def after_accept(self, worklist): new_incoming = [] for message in worklist.incoming: @@ -126,6 +131,7 @@

                                Source code for sarracenia.flowcb.accept.postoverride

                                del message['headers'][od] new_incoming.append(message) worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/printlag.html b/_modules/sarracenia/flowcb/accept/printlag.html index 5ea75311f..ef53f3caa 100644 --- a/_modules/sarracenia/flowcb/accept/printlag.html +++ b/_modules/sarracenia/flowcb/accept/printlag.html @@ -7,9 +7,9 @@ - + - + @@ -102,7 +102,9 @@

                                Source code for sarracenia.flowcb.accept.printlag

                                logger = logging.getLogger(__name__) -
                                [docs]class PrintLag(FlowCB): +
                                +[docs] +class PrintLag(FlowCB): def after_accept(self, worklsit): for message in worklsit.incoming: @@ -112,6 +114,7 @@

                                Source code for sarracenia.flowcb.accept.printlag

                                logger.info( "print_lag, posted: %s, lag: %.2f sec. to deliver: %s, " % (message['pubTime'], (now - then), message['new_file']))
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/rename4jicc.html b/_modules/sarracenia/flowcb/accept/rename4jicc.html index 427de9ba2..2409893ff 100644 --- a/_modules/sarracenia/flowcb/accept/rename4jicc.html +++ b/_modules/sarracenia/flowcb/accept/rename4jicc.html @@ -7,9 +7,9 @@ - + - + @@ -96,7 +96,9 @@

                                Source code for sarracenia.flowcb.accept.rename4jicc

                                logger = logging.getLogger(__name__) -
                                [docs]class Rename4Jicc(FlowCB): +
                                +[docs] +class Rename4Jicc(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: @@ -113,6 +115,7 @@

                                Source code for sarracenia.flowcb.accept.rename4jicc

                                # set in message (and headers for logging) message['new_file'] = local_file
                                + # dont use this... new_file is where the file will be downloaded... so need to keep a rename in headers #message['headers']['rename'] = local_file
                                diff --git a/_modules/sarracenia/flowcb/accept/renamedmf.html b/_modules/sarracenia/flowcb/accept/renamedmf.html index acbbdeb8e..22095cc3f 100644 --- a/_modules/sarracenia/flowcb/accept/renamedmf.html +++ b/_modules/sarracenia/flowcb/accept/renamedmf.html @@ -7,9 +7,9 @@ - + - + @@ -95,13 +95,16 @@

                                Source code for sarracenia.flowcb.accept.renamedmf

                                logger = logging.getLogger(__name__) -
                                [docs]class RenameDMF(FlowCB): +
                                +[docs] +class RenameDMF(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: datestr = time.strftime(':%Y%m%d%H%M%S', time.localtime()) message['new_file'] += datestr message['headers']['rename'] += datestr
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/renamewhatfn.html b/_modules/sarracenia/flowcb/accept/renamewhatfn.html index b9207a95d..0bf230ead 100644 --- a/_modules/sarracenia/flowcb/accept/renamewhatfn.html +++ b/_modules/sarracenia/flowcb/accept/renamewhatfn.html @@ -7,9 +7,9 @@ - + - + @@ -101,7 +101,9 @@

                                Source code for sarracenia.flowcb.accept.renamewhatfn

                                logger = logging.getLogger(__name__) -
                                [docs]class RenameWhatFn(FlowCB): +
                                +[docs] +class RenameWhatFn(FlowCB): def after_accept(self, worklist): for message in worklist.incoming: @@ -112,6 +114,7 @@

                                Source code for sarracenia.flowcb.accept.renamewhatfn

                                message['new_file'] = message['new_file'].replace(extra, '') message['headers']['rename'] = message['headers'][ 'rename'].replace(extra, '')
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/save.html b/_modules/sarracenia/flowcb/accept/save.html index 68e9a5c03..24052e185 100644 --- a/_modules/sarracenia/flowcb/accept/save.html +++ b/_modules/sarracenia/flowcb/accept/save.html @@ -7,9 +7,9 @@ - + - + @@ -101,8 +101,12 @@

                                Source code for sarracenia.flowcb.accept.save

                                logger = logging.getLogger('__name__') -
                                [docs]class Save(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Save(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) if not hasattr(self.o, "msgSaveFile"): @@ -113,6 +117,7 @@

                                Source code for sarracenia.flowcb.accept.save

                                "a") logger.debug("msg_save initialized")
                                + def after_accept(self, worklist): for message in worklist.incoming: self.o.msgSaveFile.write( @@ -123,6 +128,7 @@

                                Source code for sarracenia.flowcb.accept.save

                                logger.info( "msg_save saving msg with topic:%s (aborting further processing)" % message['topic'])
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/speedo.html b/_modules/sarracenia/flowcb/accept/speedo.html index 5e13d49b5..4048155a6 100644 --- a/_modules/sarracenia/flowcb/accept/speedo.html +++ b/_modules/sarracenia/flowcb/accept/speedo.html @@ -7,9 +7,9 @@ - + - + @@ -99,8 +99,12 @@

                                Source code for sarracenia.flowcb.accept.speedo

                                < logger = logging.getLogger(__name__) -
                                [docs]class Speedo(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Speedo(FlowCB): +
                                +[docs] + def __init__(self, options): """ set defaults for options. can be overridden in config file. """ @@ -123,6 +127,7 @@

                                Source code for sarracenia.flowcb.accept.speedo

                                < self.o.msg_speedo_msgcount = 0 self.o.msg_speedo_bytecount = 0
                                + def after_accept(self, worklist): for message in worklist.incoming: msgtime = timestr2flt(message['pubTime']) @@ -155,6 +160,7 @@

                                Source code for sarracenia.flowcb.accept.speedo

                                < self.o.msg_speedo_last = now self.o.msg_speedo_msgcount = 0 self.o.msg_speedo_bytecount = 0
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/sundewpxroute.html b/_modules/sarracenia/flowcb/accept/sundewpxroute.html index 5eb425105..c94d705ac 100644 --- a/_modules/sarracenia/flowcb/accept/sundewpxroute.html +++ b/_modules/sarracenia/flowcb/accept/sundewpxroute.html @@ -7,9 +7,9 @@ - + - + @@ -93,8 +93,12 @@

                                Source code for sarracenia.flowcb.accept.sundewpxroute

                                logger = logging.getLogger(__name__) -
                                [docs]class SundewPxRoute(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class SundewPxRoute(FlowCB): +
                                +[docs] + def __init__(self, options): """ For World Meteorological Organization message oriented routing. @@ -138,6 +142,7 @@

                                Source code for sarracenia.flowcb.accept.sundewpxroute

                                "sundew_pxroute For %s, the following headers are routed %s" % (self.o.pxClient[0], self.ahls_to_route.keys()))
                                + def after_accept(self, worklist): new_incoming = [] @@ -156,6 +161,7 @@

                                Source code for sarracenia.flowcb.accept.sundewpxroute

                                logger.debug("sundew_pxroute no, do not deliver: %s, " % ahl) worklist.rejected.append(message) worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/testretry.html b/_modules/sarracenia/flowcb/accept/testretry.html index c4e447ca9..fb2e7983c 100644 --- a/_modules/sarracenia/flowcb/accept/testretry.html +++ b/_modules/sarracenia/flowcb/accept/testretry.html @@ -7,9 +7,9 @@ - + - + @@ -90,14 +90,19 @@

                                Source code for sarracenia.flowcb.accept.testretry

                                logger = logging.getLogger(__name__) -
                                [docs]class TestRetry(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class TestRetry(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) sefl.sendTo = None self.msg_baseUrl_good = None self.details_bad = None self.msg_baseUrl_bad = 'sftp://ruser:rpass@retryhost'
                                + def after_accept(self, worklist): new_incoming = [] for message in worklist.incoming: @@ -147,6 +152,7 @@

                                Source code for sarracenia.flowcb.accept.testretry

                                logger.debug("return from msg_test_retry") # TODO not sure where to add to new_incoming. as of now not appending to new_incoming or worklist.rejected worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/toclusters.html b/_modules/sarracenia/flowcb/accept/toclusters.html index c37bd0d0f..d891cac34 100644 --- a/_modules/sarracenia/flowcb/accept/toclusters.html +++ b/_modules/sarracenia/flowcb/accept/toclusters.html @@ -7,9 +7,9 @@ - + - + @@ -98,8 +98,12 @@

                                Source code for sarracenia.flowcb.accept.toclusters

                                logger = logging.getLogger(__name__) -
                                [docs]class ToClusters(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class ToClusters(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) if not hasattr(self.o, 'msgToClusters'): logger.info("msgToClusters setting mandatory") @@ -108,6 +112,7 @@

                                Source code for sarracenia.flowcb.accept.toclusters

                                logger.info("msgToClusters valid destinations: %s " % self.o.msgToClusters)
                                + def after_accept(self, worklist): new_incoming = [] for message in worklist.incoming: @@ -116,6 +121,7 @@

                                Source code for sarracenia.flowcb.accept.toclusters

                                else: worklist.rejected.append(message) worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/tohttp.html b/_modules/sarracenia/flowcb/accept/tohttp.html index f8eb2efd7..448ed168f 100644 --- a/_modules/sarracenia/flowcb/accept/tohttp.html +++ b/_modules/sarracenia/flowcb/accept/tohttp.html @@ -7,9 +7,9 @@ - + - + @@ -90,8 +90,12 @@

                                Source code for sarracenia.flowcb.accept.tohttp

                                < logger = logging.getLogger(__name__) -
                                [docs]class ToHttp(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class ToHttp(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) if hasattr(self.o, 'baseDir'): self.o.ldocroot = self.o.baseDir @@ -100,6 +104,7 @@

                                Source code for sarracenia.flowcb.accept.tohttp

                                < self.o.hurlre = re.compile('file:/' + self.o.ldocroot)
                                + def after_accept(self, worklist): for message in worklist.incoming: logger.debug("msg_2http input: urlstr: %s" % message['urlstr']) @@ -109,6 +114,7 @@

                                Source code for sarracenia.flowcb.accept.tohttp

                                < message['set_notice_url'](message['url']) logger.debug("msg_2http baseDir=%s " % (self.o.baseDir)) logger.info("msg_2http output: urlstr: %s" % message['urlstr'])
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/tolocal.html b/_modules/sarracenia/flowcb/accept/tolocal.html index 150bdcd7c..74860caab 100644 --- a/_modules/sarracenia/flowcb/accept/tolocal.html +++ b/_modules/sarracenia/flowcb/accept/tolocal.html @@ -7,9 +7,9 @@ - + - + @@ -125,8 +125,12 @@

                                Source code for sarracenia.flowcb.accept.tolocal

                                logger = logging.getLogger(__name__) -
                                [docs]class ToLocal(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class ToLocal(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) if hasattr(self.o, 'baseDir'): self.o.ldocroot = self.o.baseDir @@ -139,6 +143,7 @@

                                Source code for sarracenia.flowcb.accept.tolocal

                                if hasattr(self.o, 'toLocalUrl'): self.o.lurlre = re.compile(self.o.toLocalUrl[0])
                                + def after_accept(self, worklist): for message in worklist.incoming: # TODO should all these be logger.error? should we append @@ -153,6 +158,7 @@

                                Source code for sarracenia.flowcb.accept.tolocal

                                logger.error("doc_root=%s " % (self.o.baseDir)) logger.error("output: urlstr: %s saved url: %s" % (message['urlstr'], message['savedurl']))
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/tolocalfile.html b/_modules/sarracenia/flowcb/accept/tolocalfile.html index c23f8d686..9dfedf75b 100644 --- a/_modules/sarracenia/flowcb/accept/tolocalfile.html +++ b/_modules/sarracenia/flowcb/accept/tolocalfile.html @@ -7,9 +7,9 @@ - + - + @@ -153,7 +153,9 @@

                                Source code for sarracenia.flowcb.accept.tolocalfile

                                logger = logging.getLogger('__name__') -
                                [docs]class ToLocalFile(FlowCB): +
                                +[docs] +class ToLocalFile(FlowCB): def after_accept(self, worklist): new_incoming = [] @@ -176,6 +178,7 @@

                                Source code for sarracenia.flowcb.accept.tolocalfile

                                worklist.rejected.append(message) worklist.incoming = new_incoming
                                +
                                diff --git a/_modules/sarracenia/flowcb/accept/wmotypesuffix.html b/_modules/sarracenia/flowcb/accept/wmotypesuffix.html index 0b4fff4a5..c0d5fcbfa 100644 --- a/_modules/sarracenia/flowcb/accept/wmotypesuffix.html +++ b/_modules/sarracenia/flowcb/accept/wmotypesuffix.html @@ -7,9 +7,9 @@ - + - + @@ -99,7 +99,9 @@

                                Source code for sarracenia.flowcb.accept.wmotypesuffix

                                logger = logging.getLogger(__name__) -
                                [docs]class WmoTypeSuffix(FlowCB): +
                                +[docs] +class WmoTypeSuffix(FlowCB): def find_type(self, TT): if TT[0] in ['G']: return '.grid' @@ -128,6 +130,7 @@

                                Source code for sarracenia.flowcb.accept.wmotypesuffix

                                message['new_file'] = message['new_file'] + type_suffix if 'rename' in message: message['rename'] = message['rename'] + type_suffix
                                + # TODO else -> worklist.rejected.append(message) ?? should this be happening at any point?
                                diff --git a/_modules/sarracenia/flowcb/clamav.html b/_modules/sarracenia/flowcb/clamav.html index 9d299cce1..a6b6d1caa 100644 --- a/_modules/sarracenia/flowcb/clamav.html +++ b/_modules/sarracenia/flowcb/clamav.html @@ -7,9 +7,9 @@ - + - + @@ -115,7 +115,9 @@

                                Source code for sarracenia.flowcb.clamav

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Clamav(FlowCB): +
                                +[docs] +class Clamav(FlowCB): """ Invoke ClamAV anti-virus scanning on files as they pass through a data pump. when it is invoked depends on the component it is used from. @@ -127,7 +129,9 @@

                                Source code for sarracenia.flowcb.clamav

                                        after downloading.
                                 
                                     """
                                -
                                [docs] def __init__(self, options) -> None: +
                                +[docs] + def __init__(self, options) -> None: super().__init__(options,logger) @@ -139,6 +143,7 @@

                                Source code for sarracenia.flowcb.clamav

                                             self.av = pyclamd.ClamdAgnostic()
                                             print("clam_scan on_part plugin initialized")
                                + def avscan_hit(self, scanfn) -> bool: # worried about how long the scan will take. @@ -187,6 +192,7 @@

                                Source code for sarracenia.flowcb.clamav

                                             f'files scanned {self.metric_scanned}, hits: {self.metric_hits} ')
                                         self.metric_scanned = 0
                                         self.metric_hits = 0
                                +
                                diff --git a/_modules/sarracenia/flowcb/destfn/sample.html b/_modules/sarracenia/flowcb/destfn/sample.html index 4f9a9433a..64584aeb3 100644 --- a/_modules/sarracenia/flowcb/destfn/sample.html +++ b/_modules/sarracenia/flowcb/destfn/sample.html @@ -7,9 +7,9 @@ - + - + @@ -110,7 +110,9 @@

                                Source code for sarracenia.flowcb.destfn.sample

                                < logger = logging.getLogger(__name__) -
                                [docs]class Sample(FlowCB): +
                                +[docs] +class Sample(FlowCB): def destfn(self,msg) -> str: @@ -119,6 +121,7 @@

                                Source code for sarracenia.flowcb.destfn.sample

                                < msg['destfn_added_prefix'] = 'renamed_' return 'renamed_' + relPath[-1]
                                +
                                diff --git a/_modules/sarracenia/flowcb/filter/deleteflowfiles.html b/_modules/sarracenia/flowcb/filter/deleteflowfiles.html index dafb04580..5dfaf3891 100644 --- a/_modules/sarracenia/flowcb/filter/deleteflowfiles.html +++ b/_modules/sarracenia/flowcb/filter/deleteflowfiles.html @@ -7,9 +7,9 @@ - + - + @@ -81,7 +81,9 @@

                                Source code for sarracenia.flowcb.filter.deleteflowfiles

                                logger = logging.getLogger(__name__) -
                                [docs]class DeleteFlowFiles(FlowCB): +
                                +[docs] +class DeleteFlowFiles(FlowCB): """ This is a custom callback class for the sr_insects flow tests. delete files for messages in two directories. @@ -102,6 +104,7 @@

                                Source code for sarracenia.flowcb.filter.deleteflowfiles

                                logger.debug("Exception details:", exc_info=True) worklist.failed.append(m) worklist.incoming = []
                                +
                                diff --git a/_modules/sarracenia/flowcb/filter/fdelay.html b/_modules/sarracenia/flowcb/filter/fdelay.html index 572ec01fd..e363a0d1c 100644 --- a/_modules/sarracenia/flowcb/filter/fdelay.html +++ b/_modules/sarracenia/flowcb/filter/fdelay.html @@ -7,9 +7,9 @@ - + - + @@ -99,8 +99,12 @@

                                Source code for sarracenia.flowcb.filter.fdelay

                                < logger = logging.getLogger(__name__) -
                                [docs]class Fdelay(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Fdelay(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) @@ -115,6 +119,7 @@

                                Source code for sarracenia.flowcb.filter.fdelay

                                < self.o.fdelay = self.o.msg_fdelay
                                + def after_accept(self, worklist): # Prepare msg delay test outgoing = [] @@ -164,6 +169,7 @@

                                Source code for sarracenia.flowcb.filter.fdelay

                                < outgoing.append(m) worklist.incoming = outgoing
                                +
                                diff --git a/_modules/sarracenia/flowcb/filter/pclean_f90.html b/_modules/sarracenia/flowcb/filter/pclean_f90.html index 2ce110dbe..ee05e3e64 100644 --- a/_modules/sarracenia/flowcb/filter/pclean_f90.html +++ b/_modules/sarracenia/flowcb/filter/pclean_f90.html @@ -7,9 +7,9 @@ - + - + @@ -91,7 +91,9 @@

                                Source code for sarracenia.flowcb.filter.pclean_f90

                                logger = logging.getLogger(__name__) -
                                [docs]class PClean_F90(PClean): +
                                +[docs] +class PClean_F90(PClean): """ functionality within the flow_tests of the sr_insects project. This plugin class receive a msg from xflow_public and check propagation of the underlying file @@ -205,6 +207,7 @@

                                Source code for sarracenia.flowcb.filter.pclean_f90

                                worklist.incoming = outgoing logger.info("end len(worklist.incoming) = %d" % len(worklist.incoming)) logger.info("end len(worklist.rejected) = %d" % len(worklist.rejected))
                                +
                                diff --git a/_modules/sarracenia/flowcb/filter/pclean_f92.html b/_modules/sarracenia/flowcb/filter/pclean_f92.html index 62ef6b326..558cb150b 100644 --- a/_modules/sarracenia/flowcb/filter/pclean_f92.html +++ b/_modules/sarracenia/flowcb/filter/pclean_f92.html @@ -7,9 +7,9 @@ - + - + @@ -88,7 +88,9 @@

                                Source code for sarracenia.flowcb.filter.pclean_f92

                                logger = logging.getLogger(__name__) -
                                [docs]class PClean_F92(PClean): +
                                +[docs] +class PClean_F92(PClean): """ This plugin that manage the removal of every file - it fails if one removal failed @@ -144,6 +146,7 @@

                                Source code for sarracenia.flowcb.filter.pclean_f92

                                worklist.incoming = outgoing logger.info("len(worklist.incoming) = %d" % len(worklist.incoming)) logger.info("len(worklist.rejected) = %d" % len(worklist.rejected))
                                +
                                diff --git a/_modules/sarracenia/flowcb/filter/wmo2msc.html b/_modules/sarracenia/flowcb/filter/wmo2msc.html index c08ec3569..69a392ecc 100644 --- a/_modules/sarracenia/flowcb/filter/wmo2msc.html +++ b/_modules/sarracenia/flowcb/filter/wmo2msc.html @@ -7,9 +7,9 @@ - + - + @@ -152,8 +152,12 @@

                                Source code for sarracenia.flowcb.filter.wmo2msc

                                logger = logging.getLogger('__name__') -
                                [docs]class Wmo2msc(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Wmo2msc(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option( 'filter_wmo2msc_uniquify', 'str', 'hash' ) @@ -172,7 +176,10 @@

                                Source code for sarracenia.flowcb.filter.wmo2msc

                                self.trimre = re.compile(b" +\n")
                                -
                                [docs] def replaceChar(self, oldchar, newchar): + +
                                +[docs] + def replaceChar(self, oldchar, newchar): """ replace all occurrences of oldchar by newchar in the the message byte stream. started as a direct copy from sundew of routine with same name in bulletin.py @@ -183,7 +190,10 @@

                                Source code for sarracenia.flowcb.filter.wmo2msc

                                self.bintxt = self.bintxt.replace(bytearray(oldchar, 'latin_1'), bytearray(newchar, 'latin_1'))
                                -
                                [docs] def doSpecificProcessing(self): + +
                                +[docs] + def doSpecificProcessing(self): """doSpecificProcessing() Modify bulletins received from Washington via the WMO socket protocol. @@ -264,6 +274,7 @@

                                Source code for sarracenia.flowcb.filter.wmo2msc

                                if len(self.bintxt) < lenb: print('Trimmed %d trailing blanks!' % (lenb - len(self.bintxt)))
                                + def after_accept(self, worklist): new_incoming = [] for message in worklist.incoming: @@ -396,6 +407,7 @@

                                Source code for sarracenia.flowcb.filter.wmo2msc

                                worklist.incoming = new_incoming
                                + """ SUPPLEMENTARY INFORMATION diff --git a/_modules/sarracenia/flowcb/gather/file.html b/_modules/sarracenia/flowcb/gather/file.html index 7229ed5c9..cee5e08b6 100644 --- a/_modules/sarracenia/flowcb/gather/file.html +++ b/_modules/sarracenia/flowcb/gather/file.html @@ -7,9 +7,9 @@ - + - + @@ -113,15 +113,23 @@

                                Source code for sarracenia.flowcb.gather.file

                                if features['watch']['present']: -
                                [docs] class SimpleEventHandler(PatternMatchingEventHandler): -
                                [docs] def __init__(self, parent): +
                                +[docs] + class SimpleEventHandler(PatternMatchingEventHandler): +
                                +[docs] + def __init__(self, parent): self.on_created = parent.on_created self.on_deleted = parent.on_deleted self.on_modified = parent.on_modified self.on_moved = parent.on_moved - super().__init__()
                                + super().__init__()
                                +
                                + -
                                [docs]def path_inflight_tooNew(inflight, lstat): +
                                +[docs] +def path_inflight_tooNew(inflight, lstat): """ check the inflight, compare fail age against it. return True if the file is too new to be posted. @@ -146,7 +154,10 @@

                                Source code for sarracenia.flowcb.gather.file

                                [docs]class File(FlowCB): + +
                                +[docs] +class File(FlowCB): """ read the file system, create messages for the files you find. @@ -189,7 +200,9 @@

                                Source code for sarracenia.flowcb.gather.file

                                # on_moved (for SimpleEventHandler) self.on_add('move', event.src_path, event.dest_path) -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): """ """ @@ -213,6 +226,7 @@

                                Source code for sarracenia.flowcb.gather.file

                                'modify' in self.o.fileEvents)
                                + def post_delete(self, path, key=None, value=None,is_directory=False): #logger.debug("post_delete %s (%s,%s)" % (path, key, value)) @@ -488,7 +502,9 @@

                                Source code for sarracenia.flowcb.gather.file

                                return messages -
                                [docs] def post1file(self, path, lstat, is_directory=False) -> list: +
                                +[docs] + def post1file(self, path, lstat, is_directory=False) -> list: """ create the notification message for a single file, based on the lstat metadata. @@ -548,6 +564,7 @@

                                Source code for sarracenia.flowcb.gather.file

                                return messages
                                + def post1move(self, src, dst): #logger.debug("post1move %s %s" % (src,dst) ) @@ -562,7 +579,9 @@

                                Source code for sarracenia.flowcb.gather.file

                                return messages -
                                [docs] def process_event(self, event, src, dst): +
                                +[docs] + def process_event(self, event, src, dst): """ return a list of messages. """ @@ -619,6 +638,7 @@

                                Source code for sarracenia.flowcb.gather.file

                                return self.post1file(src, lstat) return []
                                + def set_blocksize(self, bssetting, fsiz): tfactor = 50 * 1024 * 1024 @@ -664,7 +684,9 @@

                                Source code for sarracenia.flowcb.gather.file

                                self.left_events.pop(key) return messages -
                                [docs] def walk(self, src): +
                                +[docs] + def walk(self, src): """ walk directory tree returning 1 message for each file in it. """ @@ -703,7 +725,10 @@

                                Source code for sarracenia.flowcb.gather.file

                                return messages
                                -
                                [docs] def walk_priming(self, p): + +
                                +[docs] + def walk_priming(self, p): """ Find all the subdirectories of the given path, start watches on them. deal with symbolically linked directories correctly @@ -761,6 +786,7 @@

                                Source code for sarracenia.flowcb.gather.file

                                return True
                                + def watch_dir(self, sld): logger.debug("watch_dir %s" % sld) @@ -799,7 +825,9 @@

                                Source code for sarracenia.flowcb.gather.file

                                self.queued_messages = [] self.primed = False -
                                [docs] def gather(self): +
                                +[docs] + def gather(self): """ from sr_post.py/run @@ -869,7 +897,9 @@

                                Source code for sarracenia.flowcb.gather.file

                                messages = messages[0:self.o.batch] self.primed = True - return messages
                                + return messages
                                +
                                +
                                diff --git a/_modules/sarracenia/flowcb/gather/message.html b/_modules/sarracenia/flowcb/gather/message.html index f51ef5b7a..23641d20b 100644 --- a/_modules/sarracenia/flowcb/gather/message.html +++ b/_modules/sarracenia/flowcb/gather/message.html @@ -7,9 +7,9 @@ - + - + @@ -87,11 +87,15 @@

                                Source code for sarracenia.flowcb.gather.message

                                logger = logging.getLogger(__name__) -
                                [docs]class Message(FlowCB): +
                                +[docs] +class Message(FlowCB): """ gather messages from a sarracenia.moth message queuing protocol source. """ -
                                [docs] def __init__(self, options) -> None: +
                                +[docs] + def __init__(self, options) -> None: super().__init__(options,logger) @@ -102,7 +106,10 @@

                                Source code for sarracenia.flowcb.gather.message

                                else: logger.critical('missing required broker specification')
                                -
                                [docs] def gather(self) -> list: + +
                                +[docs] + def gather(self) -> list: """ return a current list of messages. """ @@ -113,6 +120,7 @@

                                Source code for sarracenia.flowcb.gather.message

                                self.consumer = sarracenia.moth.Moth.subFactory(self.od) return []
                                + def ack(self, mlist) -> None: for m in mlist: # messages being re-downloaded should not be re-acked, but they won't have an ack_id (see issue #466) @@ -139,6 +147,7 @@

                                Source code for sarracenia.flowcb.gather.message

                                if hasattr(self.consumer, 'close'): self.consumer.close() logger.info('closing')
                                +
                                diff --git a/_modules/sarracenia/flowcb/housekeeping/resources.html b/_modules/sarracenia/flowcb/housekeeping/resources.html index 01dc8f9c1..8ee17d91b 100644 --- a/_modules/sarracenia/flowcb/housekeeping/resources.html +++ b/_modules/sarracenia/flowcb/housekeeping/resources.html @@ -7,9 +7,9 @@ - + - + @@ -126,8 +126,12 @@

                                Source code for sarracenia.flowcb.housekeeping.resources

                                logger = logging.getLogger(__name__) -
                                [docs]class Resources(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Resources(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) # Set option to neg value to determine if user set in config self.o.add_option('MemoryMax', 'size', '0') @@ -139,6 +143,7 @@

                                Source code for sarracenia.flowcb.housekeeping.resources

                                self.transferCount = 0 self.msgCount = 0
                                + def on_housekeeping(self): if features['process']['present']: mem = psutil.Process().memory_info().vms @@ -184,7 +189,9 @@

                                Source code for sarracenia.flowcb.housekeeping.resources

                                return True -
                                [docs] def restart(self): +
                                +[docs] + def restart(self): """ Do an in-place restart of the current process (keeps pid). Gets a new memory stack/heap, keeps all file descriptors but replaces the buffers. @@ -215,6 +222,7 @@

                                Source code for sarracenia.flowcb.housekeeping.resources

                                ) exit(1)
                                + def after_work(self, worklist): self.transferCount += len(worklist.ok) # if self.threshold is not None: @@ -222,6 +230,7 @@

                                Source code for sarracenia.flowcb.housekeeping.resources

                                def after_accept(self, worklist): self.msgCount += len(worklist.incoming)
                                + # if self.threshold is not None: # TODO: Remove this callback when issue #444 is implemented
                                diff --git a/_modules/sarracenia/flowcb/log.html b/_modules/sarracenia/flowcb/log.html index 06c7b8416..b9078b3e2 100644 --- a/_modules/sarracenia/flowcb/log.html +++ b/_modules/sarracenia/flowcb/log.html @@ -7,9 +7,9 @@ - + - + @@ -82,7 +82,9 @@

                                Source code for sarracenia.flowcb.log

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Log(FlowCB): +
                                +[docs] +class Log(FlowCB): """ The logging flow callback class. logs message at the indicated time. Controlled by: @@ -98,7 +100,9 @@

                                Source code for sarracenia.flowcb.log

                                        * lag: some information about how old the messages are when processed 
                                 
                                     """
                                -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option('logEvents', 'set', @@ -119,6 +123,7 @@

                                Source code for sarracenia.flowcb.log

                                 
                                         self.__reset()
                                + def __reset(self): self.last_housekeeping = nowflt() self.fileBytes = 0 @@ -261,6 +266,7 @@

                                Source code for sarracenia.flowcb.log

                                             self.stats()
                                             logger.info("housekeeping")
                                         self.__reset()
                                +
                                diff --git a/_modules/sarracenia/flowcb/mdelaylatest.html b/_modules/sarracenia/flowcb/mdelaylatest.html index d2f1da2e9..e54a676d5 100644 --- a/_modules/sarracenia/flowcb/mdelaylatest.html +++ b/_modules/sarracenia/flowcb/mdelaylatest.html @@ -7,9 +7,9 @@ - + - + @@ -82,7 +82,9 @@

                                Source code for sarracenia.flowcb.mdelaylatest

                                logger = logging.getLogger(__name__) -

                                [docs]class MDelayLatest(FlowCB): +
                                +[docs] +class MDelayLatest(FlowCB): """ This plugin delays processing of messages by *message_delay* seconds If multiple versions of a file are published within the interval, only the latest one @@ -96,7 +98,9 @@

                                Source code for sarracenia.flowcb.mdelaylatest

                                In the meantime, the message is placed on the retry queue by marking it as failed. """ -

                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.stop_requested = False @@ -109,6 +113,7 @@

                                Source code for sarracenia.flowcb.mdelaylatest

                                logger.info(f'mdelay set to {self.o.mdelay}')

                                + def after_accept(self, worklist): # Check message in ok list @@ -176,6 +181,7 @@

                                Source code for sarracenia.flowcb.mdelaylatest

                                ) self.suppressions = 0

                                +
                                diff --git a/_modules/sarracenia/flowcb/nodupe.html b/_modules/sarracenia/flowcb/nodupe.html index a45a24ff5..8e1211d08 100644 --- a/_modules/sarracenia/flowcb/nodupe.html +++ b/_modules/sarracenia/flowcb/nodupe.html @@ -7,9 +7,9 @@ - + - + @@ -82,7 +82,9 @@

                                Source code for sarracenia.flowcb.nodupe

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class NoDupe(FlowCB): +
                                +[docs] +class NoDupe(FlowCB): """ duplicate suppression family of modules. @@ -129,6 +131,7 @@

                                Source code for sarracenia.flowcb.nodupe

                                         return key
                                +
                                diff --git a/_modules/sarracenia/flowcb/nodupe/data.html b/_modules/sarracenia/flowcb/nodupe/data.html index 52f747674..6c498cf8c 100644 --- a/_modules/sarracenia/flowcb/nodupe/data.html +++ b/_modules/sarracenia/flowcb/nodupe/data.html @@ -7,9 +7,9 @@ - + - + @@ -80,7 +80,9 @@

                                Source code for sarracenia.flowcb.nodupe.data

                                logger = logging.getLogger(__name__) -
                                [docs]class Data(FlowCB): +
                                +[docs] +class Data(FlowCB): """ duplicate suppression based on data alone. Overrides the path used for lookups in the cache so that all files have the same name, and so if the checksum @@ -92,6 +94,7 @@

                                Source code for sarracenia.flowcb.nodupe.data

                                m['_deleteOnPost'] |= set(['nodupe_override']) m['nodupe_override'] = {} m['nodupe_override']['path'] = 'data'
                                +
                                diff --git a/_modules/sarracenia/flowcb/nodupe/name.html b/_modules/sarracenia/flowcb/nodupe/name.html index 00c294e2b..f2842979a 100644 --- a/_modules/sarracenia/flowcb/nodupe/name.html +++ b/_modules/sarracenia/flowcb/nodupe/name.html @@ -7,9 +7,9 @@ - + - + @@ -80,7 +80,9 @@

                                Source code for sarracenia.flowcb.nodupe.name

                                logger = logging.getLogger(__name__) -
                                [docs]class Name(FlowCB): +
                                +[docs] +class Name(FlowCB): """ Override the the comparison so that files with the same name, regardless of what directory they are in, are considered the same. @@ -95,6 +97,7 @@

                                Source code for sarracenia.flowcb.nodupe.name

                                m['nodupe_override']['path'] = m['relPath'].split('/')[-1] m['nodupe_override']['key'] = m['relPath'].split('/')[-1]
                                +
                                diff --git a/_modules/sarracenia/flowcb/pclean.html b/_modules/sarracenia/flowcb/pclean.html index 513f705fc..b3766d387 100644 --- a/_modules/sarracenia/flowcb/pclean.html +++ b/_modules/sarracenia/flowcb/pclean.html @@ -7,9 +7,9 @@ - + - + @@ -85,7 +85,9 @@

                                Source code for sarracenia.flowcb.pclean

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class PClean(FlowCB): +
                                +[docs] +class PClean(FlowCB): """ Base plugin class that is used in shovel pclean_f9x: - it checks if the propagation was ok. @@ -97,7 +99,9 @@

                                Source code for sarracenia.flowcb.pclean

                                 
                                     The posted message contains a tag in the header for the test performed which is the extension used for the test
                                     """
                                -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.test_extension_list = ['.slink', '.hlink', '.moved'] self.ext_key = 'pclean_ext' @@ -115,7 +119,10 @@

                                Source code for sarracenia.flowcb.pclean

                                             'recd_by_srpoll_test1'
                                         ]  # subscribe q_f71
                                -
                                [docs] def build_path_dict(self, fxx_dirs, relpath, ext=''): + +
                                +[docs] + def build_path_dict(self, fxx_dirs, relpath, ext=''): """ This build paths necessary to pclean tests It is a subset of all flow test path based on fxx download directory provided. @@ -132,7 +139,10 @@

                                Source code for sarracenia.flowcb.pclean

                                                 self.all_fxx_dirs[1], fxx_dir)
                                         return results
                                -
                                [docs] def get_extension(self, relpath): + +
                                +[docs] + def get_extension(self, relpath): """ Check whether the extension is in the header :param msg: the msg used for the test @@ -140,7 +150,9 @@

                                Source code for sarracenia.flowcb.pclean

                                         """
                                         from pathlib import Path
                                 
                                -        return Path(relpath).suffix
                                + return Path(relpath).suffix
                                +
                                +
                                diff --git a/_modules/sarracenia/flowcb/poll.html b/_modules/sarracenia/flowcb/poll.html index fd1fde55c..697add696 100644 --- a/_modules/sarracenia/flowcb/poll.html +++ b/_modules/sarracenia/flowcb/poll.html @@ -7,9 +7,9 @@ - + - + @@ -161,7 +161,9 @@

                                Source code for sarracenia.flowcb.poll

                                         return None
                                 
                                 
                                -
                                [docs]class Poll(FlowCB): +
                                +[docs] +class Poll(FlowCB): """ The Poll flow callback class implements the main logic for polling remote resources. the *poll* routine returns a list of messages for new files to be filtered. @@ -232,7 +234,9 @@

                                Source code for sarracenia.flowcb.poll

                                                 if c == "href":
                                                     self.myfname = n.strip().strip('\t')
                                 
                                -
                                [docs] def handle_data(self, data): +
                                +[docs] + def handle_data(self, data): """ routine called from html.parser to deal with a single line. if the line is about a file, then create a new entry for it @@ -304,7 +308,10 @@

                                Source code for sarracenia.flowcb.poll

                                         self.entries[self.myfname] = entry
                                         self.myfname = None
                                -
                                [docs] def on_html_page(self, data) -> dict: + +
                                +[docs] + def on_html_page(self, data) -> dict: """ called once per directory or page of HTML, invokes html.parser, returns a dictionary of file entries. @@ -319,6 +326,7 @@

                                Source code for sarracenia.flowcb.poll

                                         
                                         return self.entries
                                + def on_html_parser_init(self): # HTML Parsing stuff. self.parser = html.parser.HTMLParser() @@ -330,7 +338,9 @@

                                Source code for sarracenia.flowcb.poll

                                 
                                     """
                                 
                                -
                                [docs] def __init__(self, options,class_logger=None): +
                                +[docs] + def __init__(self, options,class_logger=None): super().__init__(options,class_logger) @@ -376,6 +386,7 @@

                                Source code for sarracenia.flowcb.poll

                                         self.metricsReset()
                                         self.on_html_parser_init()
                                + def metricsReset(self) -> None: self.metrics = { 'transferRxBytes': 0 } @@ -416,7 +427,9 @@

                                Source code for sarracenia.flowcb.poll

                                         timestamp = datetime.datetime.timestamp(standard_date_format)
                                         return timestamp
                                 
                                -
                                [docs] def on_line(self, line) -> paramiko.SFTPAttributes: +
                                +[docs] + def on_line(self, line) -> paramiko.SFTPAttributes: """ default line processing, converts a file listing into an SFTPAttributes. does nothing if input is already an SFTPAttributes item, returning it unchanged. @@ -461,6 +474,7 @@

                                Source code for sarracenia.flowcb.poll

                                         else:
                                             return None
                                + def lsdir(self): try: @@ -698,6 +712,7 @@

                                Source code for sarracenia.flowcb.poll

                                             pass
                                 
                                         return msgs
                                +
                                diff --git a/_modules/sarracenia/flowcb/poll/airnow.html b/_modules/sarracenia/flowcb/poll/airnow.html index bfc32ecd7..a998caec1 100644 --- a/_modules/sarracenia/flowcb/poll/airnow.html +++ b/_modules/sarracenia/flowcb/poll/airnow.html @@ -7,9 +7,9 @@ - + - + @@ -99,7 +99,9 @@

                                Source code for sarracenia.flowcb.poll.airnow

                                logger = logging.getLogger(__name__) -
                                [docs]class Airnow(FlowCB): +
                                +[docs] +class Airnow(FlowCB): def poll(self): @@ -138,6 +140,7 @@

                                Source code for sarracenia.flowcb.poll.airnow

                                logger.info('mtime: %s last_pollL %s' % (mtime, last_poll)) return gathered_messages
                                +
                                diff --git a/_modules/sarracenia/flowcb/poll/mail.html b/_modules/sarracenia/flowcb/poll/mail.html index 1eb1dc631..adf3b79be 100644 --- a/_modules/sarracenia/flowcb/poll/mail.html +++ b/_modules/sarracenia/flowcb/poll/mail.html @@ -7,9 +7,9 @@ - + - + @@ -117,12 +117,17 @@

                                Source code for sarracenia.flowcb.poll.mail

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Mail(Poll): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Mail(Poll): +
                                +[docs] + def __init__(self, options): self.o = options logger.info("poll_email_ingest init")
                                + def poll(self): logger.debug("start") @@ -234,6 +239,7 @@

                                Source code for sarracenia.flowcb.poll.mail

                                                 "poll_email_ingest pollUrl protocol must be one of 'imap/imaps' or 'pop/pops'."
                                             )
                                         return gathered_messages
                                +
                                diff --git a/_modules/sarracenia/flowcb/poll/nasa_mls_nrt.html b/_modules/sarracenia/flowcb/poll/nasa_mls_nrt.html index 1bdedb519..f737481a7 100644 --- a/_modules/sarracenia/flowcb/poll/nasa_mls_nrt.html +++ b/_modules/sarracenia/flowcb/poll/nasa_mls_nrt.html @@ -7,9 +7,9 @@ - + - + @@ -83,8 +83,12 @@

                                Source code for sarracenia.flowcb.poll.nasa_mls_nrt

                                logger = logging.getLogger(__name__) -
                                [docs]class Nasa_mls_nrt(Poll): -
                                [docs] def handle_data(self, data): +
                                +[docs] +class Nasa_mls_nrt(Poll): +
                                +[docs] + def handle_data(self, data): """ decode some HTML into an SFTPAttributes record for a file. """ @@ -100,7 +104,9 @@

                                Source code for sarracenia.flowcb.poll.nasa_mls_nrt

                                logger.info("(%s) = %s" % (self.myfname, st)) if self.myfname == None: return - if self.myfname == data: return
                                + if self.myfname == data: return
                                +
                                +
                                diff --git a/_modules/sarracenia/flowcb/poll/noaa_hydrometric.html b/_modules/sarracenia/flowcb/poll/noaa_hydrometric.html index f2a812845..df81679dc 100644 --- a/_modules/sarracenia/flowcb/poll/noaa_hydrometric.html +++ b/_modules/sarracenia/flowcb/poll/noaa_hydrometric.html @@ -7,9 +7,9 @@ - + - + @@ -119,8 +119,12 @@

                                Source code for sarracenia.flowcb.poll.noaa_hydrometric

                                logger = logging.getLogger(__name__) -
                                [docs]class Noaa_hydrometric(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Noaa_hydrometric(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) @@ -133,6 +137,7 @@

                                Source code for sarracenia.flowcb.poll.noaa_hydrometric

                                m, v = self.o.identity_method.split(',') self.identity = {'method': m, 'value': v}
                                + def poll(self) -> list: # Make list of site codes to pass to http get request @@ -195,6 +200,7 @@

                                Source code for sarracenia.flowcb.poll.noaa_hydrometric

                                incoming_message_list.append(m) return incoming_message_list
                                +
                                diff --git a/_modules/sarracenia/flowcb/poll/usgs.html b/_modules/sarracenia/flowcb/poll/usgs.html index 84b58f11e..2a99b9899 100644 --- a/_modules/sarracenia/flowcb/poll/usgs.html +++ b/_modules/sarracenia/flowcb/poll/usgs.html @@ -7,9 +7,9 @@ - + - + @@ -127,8 +127,12 @@

                                Source code for sarracenia.flowcb.poll.usgs

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Usgs(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Usgs(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option('poll_usgs_station', 'list') @@ -152,6 +156,7 @@

                                Source code for sarracenia.flowcb.poll.usgs

                                             mult = True
                                             chunk_size = int(self.o.batch)
                                + def poll(self): run_time = datetime.datetime.utcnow().strftime('%Y%m%d_%H%M') @@ -208,6 +213,7 @@

                                Source code for sarracenia.flowcb.poll.usgs

                                                     logger.debug("poll_usgs file not found: %s" %
                                                                  self.o.pollUrl.format(site))
                                         return gathered_messages
                                +
                                diff --git a/_modules/sarracenia/flowcb/post/message.html b/_modules/sarracenia/flowcb/post/message.html index ccaff798d..528e95ab2 100644 --- a/_modules/sarracenia/flowcb/post/message.html +++ b/_modules/sarracenia/flowcb/post/message.html @@ -7,9 +7,9 @@ - + - + @@ -86,11 +86,15 @@

                                Source code for sarracenia.flowcb.post.message

                                logger = logging.getLogger(__name__) -

                                [docs]class Message(FlowCB): +
                                +[docs] +class Message(FlowCB): """ post messages to sarracenia.moth message queuing protocol destination. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) @@ -110,6 +114,7 @@

                                Source code for sarracenia.flowcb.post.message

                                self.poster = sarracenia.moth.Moth.pubFactory(props)

                                + def post(self, worklist): still_ok = [] @@ -142,6 +147,7 @@

                                Source code for sarracenia.flowcb.post.message

                                if hasattr(self,'poster') and self.poster: self.poster.close() logger.info('closing')

                                +
                                diff --git a/_modules/sarracenia/flowcb/retry.html b/_modules/sarracenia/flowcb/retry.html index 3ad4d76db..cb446fecb 100644 --- a/_modules/sarracenia/flowcb/retry.html +++ b/_modules/sarracenia/flowcb/retry.html @@ -7,9 +7,9 @@ - + - + @@ -96,7 +96,9 @@

                                Source code for sarracenia.flowcb.retry

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Retry(FlowCB): +
                                +[docs] +class Retry(FlowCB): """ overall goal: @@ -118,7 +120,9 @@

                                Source code for sarracenia.flowcb.retry

                                       expiry on each housekeeping event.
                                 
                                     """
                                -
                                [docs] def __init__(self, options) -> None: +
                                +[docs] + def __init__(self, options) -> None: logger.debug("sr_retry __init__") @@ -144,7 +148,10 @@

                                Source code for sarracenia.flowcb.retry

                                 
                                         logger.debug('logLevel=%s' % self.o.logLevel)
                                -
                                [docs] def after_accept(self, worklist) -> None: + +
                                +[docs] + def after_accept(self, worklist) -> None: """ If there are only a few new messages, get some from the download retry queue and put them into `worklist.incoming`. @@ -163,7 +170,10 @@

                                Source code for sarracenia.flowcb.retry

                                         if len(mlist) > 0:
                                             worklist.incoming.extend(mlist)
                                -
                                [docs] def after_work(self, worklist) -> None: + +
                                +[docs] + def after_work(self, worklist) -> None: """ Messages in `worklist.failed` should be put in the download retry queue. If there are only a few new messages, get some from the post retry queue and put them into `worklist.ok`. @@ -186,7 +196,10 @@

                                Source code for sarracenia.flowcb.retry

                                         if len(mlist) > 0:
                                             worklist.ok.extend(mlist)
                                -
                                [docs] def after_post(self, worklist) -> None: + +
                                +[docs] + def after_post(self, worklist) -> None: """ Messages in `worklist.failed` should be put in the post retry queue. """ @@ -196,7 +209,10 @@

                                Source code for sarracenia.flowcb.retry

                                         self.post_retry.put(worklist.failed)
                                         worklist.failed=[]
                                -
                                [docs] def metricsReport(self) -> dict: + +
                                +[docs] + def metricsReport(self) -> dict: """Returns the number of messages in the download_retry and post_retry queues. Returns: @@ -204,6 +220,7 @@

                                Source code for sarracenia.flowcb.retry

                                         """
                                         return {'msgs_in_download_retry': len(self.download_retry), 'msgs_in_post_retry': len(self.post_retry)}
                                + def on_cleanup(self) -> None: logger.debug('starting retry cleanup') self.download_retry.cleanup() @@ -218,6 +235,7 @@

                                Source code for sarracenia.flowcb.retry

                                     def on_stop(self) -> None:
                                         self.download_retry.close()
                                         self.post_retry.close()
                                +
                                diff --git a/_modules/sarracenia/flowcb/sample.html b/_modules/sarracenia/flowcb/sample.html index 21a597832..171abb6cc 100644 --- a/_modules/sarracenia/flowcb/sample.html +++ b/_modules/sarracenia/flowcb/sample.html @@ -7,9 +7,9 @@ - + - + @@ -79,17 +79,23 @@

                                Source code for sarracenia.flowcb.sample

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Sample(sarracenia.flowcb.FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Sample(sarracenia.flowcb.FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) # declare a module specific setting. options.add_option('announce_list', 'list')
                                + def on_start(self): logger.info('announce_list: %s' % self.o.announce_list)
                                +
                                diff --git a/_modules/sarracenia/flowcb/scheduled.html b/_modules/sarracenia/flowcb/scheduled.html index 0e2f9da6c..5782bfaed 100644 --- a/_modules/sarracenia/flowcb/scheduled.html +++ b/_modules/sarracenia/flowcb/scheduled.html @@ -7,9 +7,9 @@ - + - + @@ -86,7 +86,9 @@

                                Source code for sarracenia.flowcb.scheduled

                                 
                                 logger = logging.getLogger(__name__)
                                 
                                -
                                [docs]class Scheduled(FlowCB): +
                                +[docs] +class Scheduled(FlowCB): """ Scheduled flow callback plugin arranges to post url's @@ -134,12 +136,15 @@

                                Source code for sarracenia.flowcb.scheduled

                                     """
                                 
                                 
                                -
                                [docs] def __init__(self,options): +
                                +[docs] + def __init__(self,options): super().__init__(options,logger) self.o.add_option( 'scheduled_interval', 'duration', 0 ) self.o.add_option( 'scheduled_hour', 'list', [] ) self.o.add_option( 'scheduled_minute', 'list', [] )
                                + def gather(self): # for next expected post @@ -160,7 +165,9 @@

                                Source code for sarracenia.flowcb.scheduled

                                 
                                         return gathered_messages
                                 
                                -
                                [docs] def wait_seconds(self,sleepfor): +
                                +[docs] + def wait_seconds(self,sleepfor): """ sleep for the given number of seconds, like time.sleep() but broken into shorter naps to be able to honour stop_requested. @@ -177,6 +184,7 @@

                                Source code for sarracenia.flowcb.scheduled

                                                 break
                                             sleepfor -= nap
                                + def wait_until_hour(self): now = time.gmtime() # make a flat list from values where comma separated on a single or multiple lines. @@ -224,6 +232,7 @@

                                Source code for sarracenia.flowcb.scheduled

                                             self.wait_within_hour()
                                + if __name__ == '__main__': import sarracenia.config diff --git a/_modules/sarracenia/flowcb/send/email.html b/_modules/sarracenia/flowcb/send/email.html index e25862ebb..ecb91a9c3 100644 --- a/_modules/sarracenia/flowcb/send/email.html +++ b/_modules/sarracenia/flowcb/send/email.html @@ -7,9 +7,9 @@ - + - + @@ -105,8 +105,12 @@

                                Source code for sarracenia.flowcb.send.email

                                logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Email(FlowCB): -
                                [docs] def __init__(self, options): +
                                +[docs] +class Email(FlowCB): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option('file_email_command', 'str', '/usr/bin/mail') @@ -114,6 +118,7 @@

                                Source code for sarracenia.flowcb.send.email

                                self.o.add_option('file_email_from', 'str')
                                         self.o.add_option('file_email_relay', 'str')
                                + def send(self, msg): # have a list of email destinations... @@ -165,6 +170,7 @@

                                Source code for sarracenia.flowcb.send.email

                                logger.info('sent file %s to %s' % (ipath, recipient))
                                 
                                         return True
                                +
                                diff --git a/_modules/sarracenia/flowcb/shiftdir2baseurl.html b/_modules/sarracenia/flowcb/shiftdir2baseurl.html index adfd6ecdd..da29a0215 100644 --- a/_modules/sarracenia/flowcb/shiftdir2baseurl.html +++ b/_modules/sarracenia/flowcb/shiftdir2baseurl.html @@ -7,9 +7,9 @@ - + - + @@ -84,7 +84,9 @@

                                Source code for sarracenia.flowcb.shiftdir2baseurl

                                logger = logging.getLogger(__name__) -
                                [docs]class ShiftDir2baseUrl(FlowCB): +
                                +[docs] +class ShiftDir2baseUrl(FlowCB): """ modify message to shift directories from relPath to baseUrl: @@ -92,11 +94,14 @@

                                Source code for sarracenia.flowcb.shiftdir2baseurl

                                baseDir=https://a relPath=b/c/d/e subtopic=b/c/d --> baseDir=https://a/b/c relPath=d/e subtopic=d """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option('shiftDir2baseUrl', 'count', 1)
                                + def after_work(self, worklist): for m in worklist.ok: logger.debug("before: base_url=%s, subtopic=%s relPath=%s" % @@ -112,6 +117,7 @@

                                Source code for sarracenia.flowcb.shiftdir2baseurl

                                "shifted %d done: base_url=%s, subtopic=%s relPath=%s" % (self.o.shiftDir2baseUrl, m['baseUrl'], m['subtopic'], m['relPath']))
                                +
                                diff --git a/_modules/sarracenia/flowcb/v2wrapper.html b/_modules/sarracenia/flowcb/v2wrapper.html index 648b06ca7..1086de21d 100644 --- a/_modules/sarracenia/flowcb/v2wrapper.html +++ b/_modules/sarracenia/flowcb/v2wrapper.html @@ -7,9 +7,9 @@ - + - + @@ -106,7 +106,9 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                 
                                 sum_algo_v2tov3 = { v: k for k,v in sum_algo_v3tov2.items() }
                                 
                                -
                                [docs]def sumstrFromMessage( msg ) -> str: +
                                +[docs] +def sumstrFromMessage( msg ) -> str: """ accepts a v3 message as argument msg. returns the corresponding sum string for a v2 'sum' header. """ @@ -157,6 +159,7 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                             logger.error('unknown fileOp: %s' % msg['fileOp'] )
                                     return sumstr
                                + class Message: def __init__(self, h): """ @@ -241,8 +244,12 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                         pass
                                 
                                 
                                -
                                [docs]class V2Wrapper(FlowCB): -
                                [docs] def __init__(self, o): +
                                +[docs] +class V2Wrapper(FlowCB): +
                                +[docs] + def __init__(self, o): """ A wrapper class to run v02 plugins. us run_entry(entry_point,module) @@ -315,6 +322,7 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                         if hasattr(self.o, 'post_baseDir'):
                                             self.o.post_base_dir = self.o.post_baseDir
                                + #logger.info('v2wrapper init done') def declare_option(self, option): @@ -448,7 +456,9 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                         # set incoming for future steps.
                                         worklist.incoming = outgoing
                                 
                                -
                                [docs] def on_time(self, time): +
                                +[docs] + def on_time(self, time): """ run plugins for a given entry point. """ @@ -456,6 +466,7 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                         for plugin in self.v2plugins[time]:
                                             plugin(self.o)
                                + def on_housekeeping(self): self.on_time('on_heartbeat') @@ -498,7 +509,9 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                                 'post_base_dir') and (v2msg.post_base_dir != m['new_baseDir']):
                                             m['post_baseDir'] = v2msg.post_base_dir
                                 
                                -
                                [docs] def run_entry(self, ep, m): +
                                +[docs] + def run_entry(self, ep, m): """ run plugins for a given entry point. """ @@ -528,7 +541,9 @@

                                Source code for sarracenia.flowcb.v2wrapper

                                         if len(diff) > 0:
                                             self.state_vars.extend(diff)
                                 
                                -        return ok
                                + return ok
                                +
                                +
                                diff --git a/_modules/sarracenia/flowcb/work/age.html b/_modules/sarracenia/flowcb/work/age.html index d54ea80a6..1a04b8bf6 100644 --- a/_modules/sarracenia/flowcb/work/age.html +++ b/_modules/sarracenia/flowcb/work/age.html @@ -7,9 +7,9 @@ - + - + @@ -91,7 +91,9 @@

                                Source code for sarracenia.flowcb.work.age

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Age(FlowCB): +
                                +[docs] +class Age(FlowCB): def reset_metrics(self) -> None: self.metrics={} @@ -143,6 +145,7 @@

                                Source code for sarracenia.flowcb.work.age

                                 
                                             logger.info( f"file {m['new_dir']+os.sep+m['new_file']} took {copy} seconds to copy and is {age} seconds old"  )
                                +
                                diff --git a/_modules/sarracenia/flowcb/work/rxpipe.html b/_modules/sarracenia/flowcb/work/rxpipe.html index 9f1aa0d6e..a402acf0f 100644 --- a/_modules/sarracenia/flowcb/work/rxpipe.html +++ b/_modules/sarracenia/flowcb/work/rxpipe.html @@ -7,9 +7,9 @@ - + - + @@ -80,18 +80,23 @@

                                Source code for sarracenia.flowcb.work.rxpipe

                                logger = logging.getLogger(__name__) -
                                [docs]class Rxpipe(FlowCB): +
                                +[docs] +class Rxpipe(FlowCB): """ After each file is transferred, write it's name to a named_pipe. parameter: rxpipe_name -- the path for the named pipe to write the file names to. """ -
                                [docs] def __init__(self, options): +
                                +[docs] + def __init__(self, options): super().__init__(options,logger) self.o.add_option(option='rxpipe_name', kind='str')
                                + def on_start(self): if not hasattr(self.o, 'rxpipe_name') and self.o.file_rxpipe_name: logger.error("Missing rxpipe_name parameter") @@ -106,6 +111,7 @@

                                Source code for sarracenia.flowcb.work.rxpipe

                                self.rxpipe.write(fname + '\n') self.rxpipe.flush() return None
                                +
                                diff --git a/_modules/sarracenia/identity.html b/_modules/sarracenia/identity.html index 1ddd22cea..6cd35a585 100644 --- a/_modules/sarracenia/identity.html +++ b/_modules/sarracenia/identity.html @@ -7,9 +7,9 @@ - + - + @@ -106,7 +106,9 @@

                                Source code for sarracenia.identity

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Identity: +
                                +[docs] +class Identity: """ A class for algorithms to get a fingerprint for a file being announced. Appropriate fingerprinting algorithms vary according to file type. @@ -134,7 +136,9 @@

                                Source code for sarracenia.identity

                                     def get_method(self):
                                         return type(self).__name__.lower()
                                 
                                -
                                [docs] def update_file(self, path): +
                                +[docs] + def update_file(self, path): """ read the entire file, check sum it. this is kind of last resort as it cost an extra file read. @@ -145,6 +149,7 @@

                                Source code for sarracenia.identity

                                             for data in iter(functools.partial(f.read, 1024 * 1024), b''):
                                                 self.update(data)
                                + @property def value(self): """ @@ -153,6 +158,7 @@

                                Source code for sarracenia.identity

                                         return b64encode(self.filehash.digest()).decode('utf-8')
                                + import sarracenia.identity.arbitrary import sarracenia.identity.md5 import sarracenia.identity.random diff --git a/_modules/sarracenia/identity/arbitrary.html b/_modules/sarracenia/identity/arbitrary.html index 0cd66b229..167de8a27 100644 --- a/_modules/sarracenia/identity/arbitrary.html +++ b/_modules/sarracenia/identity/arbitrary.html @@ -7,9 +7,9 @@ - + - + @@ -82,17 +82,22 @@

                                Source code for sarracenia.identity.arbitrary

                                global default_value default_value = value -
                                [docs]class Arbitrary(Identity): +
                                +[docs] +class Arbitrary(Identity): """ For applications where there is no known way of determining equivalence, allow them to supply an arbitrary tag, that can be used to compare products for duplicate suppression purposes. use setter to set the value... some sort of external checksum algorithm that cannot be reproduced. """ -
                                [docs] def __init__(self): +
                                +[docs] + def __init__(self): global default_value self._value = default_value
                                + @property def value(self): return self._value @@ -110,6 +115,7 @@

                                Source code for sarracenia.identity.arbitrary

                                def update(self, chunk): pass
                                +
                                diff --git a/_modules/sarracenia/identity/md5.html b/_modules/sarracenia/identity/md5.html index 446dcbdd9..81ded9c8b 100644 --- a/_modules/sarracenia/identity/md5.html +++ b/_modules/sarracenia/identity/md5.html @@ -7,9 +7,9 @@ - + - + @@ -78,25 +78,31 @@

                                Source code for sarracenia.identity.md5

                                 from sarracenia.identity import Identity
                                 
                                 
                                -
                                [docs]class Md5(Identity): +
                                +[docs] +class Md5(Identity): """ use the (obsolete) Message Digest 5 (MD5) algorithm, applied on the content of a file, to generate an identity signature. """ -
                                [docs] @staticmethod +
                                +[docs] + @staticmethod def registered_as(): """ v2name. """ return 'd'
                                + def set_path(self, path): self.filehash = md5() def update(self, chunk): if type(chunk) == bytes: self.filehash.update(chunk) else: self.filehash.update(bytes(chunk, 'utf-8'))
                                +
                                diff --git a/_modules/sarracenia/identity/random.html b/_modules/sarracenia/identity/random.html index 35862fa26..dae4b095f 100644 --- a/_modules/sarracenia/identity/random.html +++ b/_modules/sarracenia/identity/random.html @@ -7,9 +7,9 @@ - + - + @@ -78,7 +78,9 @@

                                Source code for sarracenia.identity.random

                                 from sarracenia.identity import Identity
                                 
                                 
                                -
                                [docs]class Random(Identity): +
                                +[docs] +class Random(Identity): """ Trivial minimalist checksumming algorithm, returns random number for any file. """ @@ -92,6 +94,7 @@

                                Source code for sarracenia.identity.random

                                     @staticmethod
                                     def registered_as():
                                         return '0'
                                +
                                diff --git a/_modules/sarracenia/identity/sha512.html b/_modules/sarracenia/identity/sha512.html index 6507aabd4..279209399 100644 --- a/_modules/sarracenia/identity/sha512.html +++ b/_modules/sarracenia/identity/sha512.html @@ -7,9 +7,9 @@ - + - + @@ -82,7 +82,9 @@

                                Source code for sarracenia.identity.sha512

                                 # ===================================
                                 
                                 
                                -
                                [docs]class Sha512(Identity): +
                                +[docs] +class Sha512(Identity): """ The SHA512 algorithm to checksum the entire file, which is called 's'. """ @@ -97,6 +99,7 @@

                                Source code for sarracenia.identity.sha512

                                     def update(self, chunk):
                                         if type(chunk) == bytes: self.filehash.update(chunk)
                                         else: self.filehash.update(bytes(chunk, 'utf-8'))
                                +
                                diff --git a/_modules/sarracenia/instance.html b/_modules/sarracenia/instance.html index 5f4cc4d0a..5b64c2861 100644 --- a/_modules/sarracenia/instance.html +++ b/_modules/sarracenia/instance.html @@ -7,9 +7,9 @@ - + - + @@ -100,27 +100,38 @@

                                Source code for sarracenia.instance

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class RedirectedTimedRotatingFileHandler( +
                                +[docs] +class RedirectedTimedRotatingFileHandler( logging.handlers.TimedRotatingFileHandler): -
                                [docs] def doRollover(self): +
                                +[docs] + def doRollover(self): super().doRollover() if sys.platform != 'win32': os.dup2(self.stream.fileno(), 1) - os.dup2(self.stream.fileno(), 2)
                                + os.dup2(self.stream.fileno(), 2)
                                +
                                + -
                                [docs]class instance: +
                                +[docs] +class instance: """ Process management for a single flow instance. start and stop instances. this is the main entry point launched from the sr3 cli, with arguments for it to turn into a specific configuration. """ -
                                [docs] def __init__(self): +
                                +[docs] + def __init__(self): self.running_instance = None original_sigint = signal.getsignal(signal.SIGINT)
                                + def stop_signal(self, signum, stack): logging.info('signal %d received' % signum) @@ -138,7 +149,9 @@

                                Source code for sarracenia.instance

                                             logging.debug('\n'.join(code))
                                         self.running_instance.please_stop()
                                 
                                -
                                [docs] def start(self): +
                                +[docs] + def start(self): """ Main element to run a single flow instance. It parses the command line arguments twice. the first pass, is to initialize the log file and debug level, and select the configuration file to parse. @@ -308,7 +321,9 @@

                                Source code for sarracenia.instance

                                 
                                         if os.path.isfile(pidfilename):
                                             os.unlink(pidfilename)
                                -        sys.exit(0)
                                + sys.exit(0)
                                +
                                + if __name__ == '__main__': diff --git a/_modules/sarracenia/moth.html b/_modules/sarracenia/moth.html index 7a5b8a076..85b81657e 100644 --- a/_modules/sarracenia/moth.html +++ b/_modules/sarracenia/moth.html @@ -7,9 +7,9 @@ - + - + @@ -122,7 +122,9 @@

                                Source code for sarracenia.moth

                                     return False
                                 
                                 
                                -
                                [docs]class Moth(): +
                                +[docs] +class Moth(): """ Moth ... Messages Organized by Topic Headers (en français: Messages organisés par thème hierarchique. ) @@ -329,7 +331,9 @@

                                Source code for sarracenia.moth

                                         logger.error('broker intialization failure')
                                         return None
                                 
                                -
                                [docs] def __init__(self, props=None, is_subscriber=True) -> None: +
                                +[docs] + def __init__(self, props=None, is_subscriber=True) -> None: """ If is_subscriber=True, then this is a consuming instance. expect calls to get* routines. @@ -367,7 +371,10 @@

                                Source code for sarracenia.moth

                                         logging.basicConfig(format=self.o['logFormat'],
                                                             level=getattr(logging, self.o['logLevel'].upper()))
                                -
                                [docs] def ack(self, message) -> None: + +
                                +[docs] + def ack(self, message) -> None: """ tell broker that a given message has been received. @@ -375,6 +382,7 @@

                                Source code for sarracenia.moth

                                         """
                                         logger.error("ack unimplemented")
                                + @property def default_options(self) -> dict: """ @@ -383,7 +391,9 @@

                                Source code for sarracenia.moth

                                         """
                                         return Moth.__default_options
                                 
                                -
                                [docs] def getNewMessage(self) -> sarracenia.Message: +
                                +[docs] + def getNewMessage(self) -> sarracenia.Message: """ If there is one new message available, return it. Otherwise return None. Do not block. @@ -396,7 +406,10 @@

                                Source code for sarracenia.moth

                                         logger.error("getNewMessage unimplemented")
                                         return None
                                -
                                [docs] def newMessages(self) -> list: + +
                                +[docs] + def newMessages(self) -> list: """ If there are new messages available from the broker, return them, otherwise return None. @@ -408,7 +421,10 @@

                                Source code for sarracenia.moth

                                         logger.error("NewMessages unimplemented")
                                         return []
                                -
                                [docs] def putNewMessage(self, message, content_type='application/json') -> bool: + +
                                +[docs] + def putNewMessage(self, message, content_type='application/json') -> bool: """ publish a message as set up to the given topic. @@ -422,6 +438,7 @@

                                Source code for sarracenia.moth

                                         logger.error("implementation missing!")
                                         return False
                                + def metricsReset(self) -> None: self.metrics['disconnectLast'] = 0 self.metrics['disconnectTime'] = 0 @@ -446,7 +463,9 @@

                                Source code for sarracenia.moth

                                             down_time = time.time() - self.metrics['disconnectLast']
                                             self.metrics['disconnectTime'] += down_time
                                 
                                -
                                [docs] def metricsDisconnect(self) -> None: +
                                +[docs] + def metricsDisconnect(self) -> None: """ tear down an existing connection. """ @@ -454,17 +473,22 @@

                                Source code for sarracenia.moth

                                         self.metrics['disconnectCount'] += 1
                                         self.metrics['disconnectLast'] = time.time()
                                + def close(self) -> None: logger.error("implementation missing!") -
                                [docs] def cleanup(self) -> None: +
                                +[docs] + def cleanup(self) -> None: """ get rid of server-side resources associated with a client. (queues/id's, etc...) """ if self.is_subscriber: self.getCleanUp() else: - self.putCleanUp()
                                + self.putCleanUp()
                                +
                                + if features['amqp']['present']: import sarracenia.moth.amqp diff --git a/_modules/sarracenia/moth/amq1.html b/_modules/sarracenia/moth/amq1.html index 2ff8d1741..5ee88aed2 100644 --- a/_modules/sarracenia/moth/amq1.html +++ b/_modules/sarracenia/moth/amq1.html @@ -7,9 +7,9 @@ - + - + @@ -80,8 +80,12 @@

                                Source code for sarracenia.moth.amq1

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class AMQ1(Moth): -
                                [docs] def __init__(self, broker, props, is_subscriber): +
                                +[docs] +class AMQ1(Moth): +
                                +[docs] + def __init__(self, broker, props, is_subscriber): """ AMQP 1.0 library to be built with libqpid-proton (the only free amqp 1.0 library around.) @@ -91,7 +95,9 @@

                                Source code for sarracenia.moth.amq1

                                 
                                         logger.error(
                                             "__init__ AMQP 1.0 Moth using qpid-proton library: not implemented"
                                -        )
                                + )
                                +
                                +
                                diff --git a/_modules/sarracenia/moth/amqp.html b/_modules/sarracenia/moth/amqp.html index 1dc619e89..0c75ab12a 100644 --- a/_modules/sarracenia/moth/amqp.html +++ b/_modules/sarracenia/moth/amqp.html @@ -7,9 +7,9 @@ - + - + @@ -140,7 +140,9 @@

                                Source code for sarracenia.moth.amqp

                                 }
                                 
                                 
                                -
                                [docs]class AMQP(Moth): +
                                +[docs] +class AMQP(Moth): """ implementation of the Moth API for the amqp library, which is built to talk to rabbitmq brokers in 0.8 and 0.9 AMQP dialects. @@ -222,7 +224,9 @@

                                Source code for sarracenia.moth.amqp

                                     # length of an AMQP short string (used for headers and many properties)
                                     amqp_ss_maxlen = 255
                                 
                                -
                                [docs] def __init__(self, props, is_subscriber) -> None: +
                                +[docs] + def __init__(self, props, is_subscriber) -> None: """ connect to broker, depending on message_strategy stubborness, remain connected. @@ -251,6 +255,7 @@

                                Source code for sarracenia.moth.amqp

                                 
                                         self.connection = None
                                + def __connect(self, broker) -> bool: """ connect to broker. @@ -297,7 +302,9 @@

                                Source code for sarracenia.moth.amqp

                                         logger.info("ok, asked to stop")
                                         self.please_stop=True
                                 
                                -
                                [docs] def getSetup(self) -> None: +
                                +[docs] + def getSetup(self) -> None: """ Setup so we can get messages. @@ -403,6 +410,7 @@

                                Source code for sarracenia.moth.amqp

                                         if self.please_stop:
                                             signal.raise_signal(signal.SIGINT)
                                + def putSetup(self) -> None: ebo = 1 @@ -509,7 +517,9 @@

                                Source code for sarracenia.moth.amqp

                                                 self.o['broker'].url.hostname, err))
                                             logger.debug('Exception details: ', exc_info=True)
                                 
                                -
                                [docs] def newMessages(self) -> list: +
                                +[docs] + def newMessages(self) -> list: if not self.is_subscriber: #build_consumer logger.error("getting from a publisher") @@ -529,7 +539,10 @@

                                Source code for sarracenia.moth.amqp

                                 
                                         return ml
                                -
                                [docs] def getNewMessage(self) -> sarracenia.Message: + +
                                +[docs] + def getNewMessage(self) -> sarracenia.Message: if not self.is_subscriber: #build_consumer logger.error("getting from a publisher") @@ -574,7 +587,10 @@

                                Source code for sarracenia.moth.amqp

                                         time.sleep(1)
                                         return None
                                -
                                [docs] def ack(self, m) -> None: + +
                                +[docs] + def ack(self, m) -> None: """ do what you need to acknowledge that processing of a message is done. """ @@ -612,7 +628,10 @@

                                Source code for sarracenia.moth.amqp

                                                 "Sleeping {} seconds before re-trying ack...".format(ebo))
                                             time.sleep(ebo)
                                -
                                [docs] def putNewMessage(self, + +
                                +[docs] + def putNewMessage(self, body, content_type='application/json', exchange=None) -> bool: @@ -737,6 +756,7 @@

                                Source code for sarracenia.moth.amqp

                                             self.close()
                                             return False # instead of looping
                                + def close(self) -> None: try: if self.connection: @@ -749,6 +769,7 @@

                                Source code for sarracenia.moth.amqp

                                         # FIXME toclose not useful as we don't close channels anymore
                                         self.metricsDisconnect()
                                         self.connection = None
                                +
                                diff --git a/_modules/sarracenia/moth/pika.html b/_modules/sarracenia/moth/pika.html index a185ff433..19492acee 100644 --- a/_modules/sarracenia/moth/pika.html +++ b/_modules/sarracenia/moth/pika.html @@ -7,9 +7,9 @@ - + - + @@ -80,18 +80,24 @@

                                Source code for sarracenia.moth.pika

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class PIKA(Moth): +
                                +[docs] +class PIKA(Moth): """ moth subclass based on the pika AMQP/rabbitmq client library. stub: not implemented. """ -
                                [docs] def __init__(self, broker): +
                                +[docs] + def __init__(self, broker): super().__init__(broker, props, is_subscriber) #FIXME unresolved reference to props and is_subscriber logger.error( - "__init__ AMQP 0.x (rabbitmq) using pika: not implemented ")
                                + "__init__ AMQP 0.x (rabbitmq) using pika: not implemented ")
                                +
                                +
                                diff --git a/_modules/sarracenia/rabbitmq_admin.html b/_modules/sarracenia/rabbitmq_admin.html index f8b1c491b..d54b9b0b7 100644 --- a/_modules/sarracenia/rabbitmq_admin.html +++ b/_modules/sarracenia/rabbitmq_admin.html @@ -7,9 +7,9 @@ - + - + @@ -98,7 +98,9 @@

                                Source code for sarracenia.rabbitmq_admin

                                 #===========================
                                 
                                 
                                -
                                [docs]def exec_rabbitmqadmin(url, options, simulate=False): +
                                +[docs] +def exec_rabbitmqadmin(url, options, simulate=False): """ invoke rabbitmqadmin using a sub-process, with the given options. """ @@ -152,7 +154,10 @@

                                Source code for sarracenia.rabbitmq_admin

                                     return 0, None
                                -
                                [docs]def add_user(url, role, user, passwd, simulate): + +
                                +[docs] +def add_user(url, role, user, passwd, simulate): """ add the given user with the given credentials. """ @@ -201,7 +206,10 @@

                                Source code for sarracenia.rabbitmq_admin

                                         dummy = run_rabbitmqadmin(url, declare, simulate)
                                -
                                [docs]def del_user(url, user, simulate): + +
                                +[docs] +def del_user(url, user, simulate): """ delete user from the given broker. """ @@ -210,7 +218,10 @@

                                Source code for sarracenia.rabbitmq_admin

                                     dummy = run_rabbitmqadmin(url, delete, simulate)
                                -
                                [docs]def get_exchanges(url): + +
                                +[docs] +def get_exchanges(url): """ get the list of existing exchanges. """ @@ -219,7 +230,10 @@

                                Source code for sarracenia.rabbitmq_admin

                                     return run_rabbitmqadmin(url, cmd)
                                -
                                [docs]def get_queues(url): + +
                                +[docs] +def get_queues(url): """ get the list of existing queues. """ @@ -228,7 +242,10 @@

                                Source code for sarracenia.rabbitmq_admin

                                     return run_rabbitmqadmin(url, cmd)
                                -
                                [docs]def get_users(url): + +
                                +[docs] +def get_users(url): """ get the list of existing users. """ @@ -237,13 +254,16 @@

                                Source code for sarracenia.rabbitmq_admin

                                     return run_rabbitmqadmin(url, cmd)
                                + #=========================== # direct access to rabbitmq management plugin # this is what rabbitmqadmin does under the cover #=========================== -
                                [docs]def broker_get_exchanges(url, ssl_key_file=None, ssl_cert_file=None): +
                                +[docs] +def broker_get_exchanges(url, ssl_key_file=None, ssl_cert_file=None): """ get the list of existing exchanges using a url query. """ @@ -284,7 +304,10 @@

                                Source code for sarracenia.rabbitmq_admin

                                     return exchanges
                                -
                                [docs]def user_access(url, user): + +
                                +[docs] +def user_access(url, user): """ Given an administrative URL, return a list of exchanges and queues the user can access. @@ -368,6 +391,7 @@

                                Source code for sarracenia.rabbitmq_admin

                                                'bindings':  b } )
                                + if __name__ == "__main__": url = urllib.parse.urlparse(sys.argv[1]) print(exec_rabbitmqadmin(url, "list queue names")[1]) @@ -386,7 +410,9 @@

                                Source code for sarracenia.rabbitmq_admin

                                     #print( "\n\nbindings: %s" % json.loads(exec_rabbitmqadmin(url,"list bindings")[1]) )
                                 
                                 
                                -
                                [docs]def run_rabbitmqadmin(url, options, simulate=False): +
                                +[docs] +def run_rabbitmqadmin(url, options, simulate=False): """ spawn a subprocess to run rabbitmqadmin with the given options. capture result. @@ -418,6 +444,7 @@

                                Source code for sarracenia.rabbitmq_admin

                                                      options)
                                         logger.debug('Exception details: ', exc_info=True)
                                     return []
                                +
                                diff --git a/_modules/sarracenia/transfer.html b/_modules/sarracenia/transfer.html index e8ea64225..4c2cf34cc 100644 --- a/_modules/sarracenia/transfer.html +++ b/_modules/sarracenia/transfer.html @@ -7,9 +7,9 @@ - + - + @@ -119,11 +119,14 @@

                                Source code for sarracenia.transfer

                                 #============================================================
                                 
                                 
                                -
                                [docs]class TimeoutException(Exception): +
                                +[docs] +class TimeoutException(Exception): """timeout exception""" pass
                                + # alarm_cancel def alarm_cancel(): if sys.platform != 'win32': @@ -136,7 +139,9 @@

                                Source code for sarracenia.transfer

                                 
                                 
                                 # alarm_set
                                -
                                [docs]def alarm_set(time): +
                                +[docs] +def alarm_set(time): """ FIXME: replace with set itimer for > 1 second resolution... currently rouding to nearest second. """ @@ -146,12 +151,15 @@

                                Source code for sarracenia.transfer

                                         signal.alarm(int(time + 0.5))
                                + # ========================================= # sr_proto : one place for throttle, onfly checksum, buffer io timeout # ========================================= -
                                [docs]class Transfer(): +
                                +[docs] +class Transfer(): """ This is a sort of abstract base classe for implementing transfer protocols. Implemented subclasses include support for: local files, https, sftp, and ftp. @@ -199,7 +207,9 @@

                                Source code for sarracenia.transfer

                                                 return sc(proto, options)
                                         return None
                                 
                                -
                                [docs] def __init__(self, proto, options): +
                                +[docs] + def __init__(self, proto, options): self.o = options if 'sarracenia.transfer.Transfer' in self.o.settings and 'logLevel' in self.o.settings: @@ -213,6 +223,7 @@

                                Source code for sarracenia.transfer

                                                      (type(self).__name__, Transfer.__subclasses__()))
                                         self.init()
                                + def init(self): self.sumalgo = None self.checksum = None @@ -292,7 +303,9 @@

                                Source code for sarracenia.transfer

                                 
                                         return dst
                                 
                                -
                                [docs] def on_data(self, chunk) -> bytes: +
                                +[docs] + def on_data(self, chunk) -> bytes: """ transform data as it is being read. Given a buffer, return the transformed buffer. @@ -302,6 +315,7 @@

                                Source code for sarracenia.transfer

                                 
                                         return chunk
                                + #FIXME ... need to re-enable on_data plugins... not sure how they should work. # sub-classing of transfer class? @@ -499,6 +513,7 @@

                                Source code for sarracenia.transfer

                                         self.rw_length = 0
                                         if self.o.timeout: alarm_set(self.o.timeout)
                                + # batteries included. import sarracenia.transfer.file import sarracenia.transfer.ftp diff --git a/_modules/sarracenia/transfer/file.html b/_modules/sarracenia/transfer/file.html index cd2230946..691449f2b 100644 --- a/_modules/sarracenia/transfer/file.html +++ b/_modules/sarracenia/transfer/file.html @@ -7,9 +7,9 @@ - + - + @@ -127,23 +127,30 @@

                                Source code for sarracenia.transfer.file

                                 #     opt   options.bufsize
                                 
                                 
                                -
                                [docs]class File(Transfer): +
                                +[docs] +class File(Transfer): """ Transfer sub-class for local file i/o. """ -
                                [docs] def __init__(self, proto, options): +
                                +[docs] + def __init__(self, proto, options): super().__init__(proto, options) self.o.add_option("accelCpCommand", "str", "/usr/bin/cp %s %d") logger.debug("sr_file __init__") self.cwd = None
                                + def registered_as(): return ['file'] # cd -
                                [docs] def cd(self, path): +
                                +[docs] + def cd(self, path): """ proto classes are used for remote sessions, so this cd is for REMOTE directory... when file remote as a protocol it is for the source. @@ -154,6 +161,7 @@

                                Source code for sarracenia.transfer.file

                                         self.cwd = path
                                         self.path = path
                                + def check_is_connected(self): return True @@ -256,6 +264,7 @@

                                Source code for sarracenia.transfer.file

                                             self.entries[relpath] = sarracenia.stat(dst)
                                + # file_insert # called by file_process (general file:// processing) diff --git a/_modules/sarracenia/transfer/ftp.html b/_modules/sarracenia/transfer/ftp.html index a2c5eaa9b..45fb20cc7 100644 --- a/_modules/sarracenia/transfer/ftp.html +++ b/_modules/sarracenia/transfer/ftp.html @@ -7,9 +7,9 @@ - + - + @@ -104,7 +104,9 @@

                                Source code for sarracenia.transfer.ftp

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Ftp(Transfer): +
                                +[docs] +class Ftp(Transfer): """ File Transfer Protocol (FTP) ( https://datatracker.ietf.org/doc/html/rfc959 ) sarracenia transfer protocol subclass supports/uses additional custom options: @@ -114,7 +116,9 @@

                                Source code for sarracenia.transfer.ftp

                                 
                                     built using: ftplib ( https://docs.python.org/3/library/ftplib.html )
                                     """
                                -
                                [docs] def __init__(self, proto, options): +
                                +[docs] + def __init__(self, proto, options): super().__init__(proto, options) @@ -129,6 +133,7 @@

                                Source code for sarracenia.transfer.ftp

                                         self.details = None
                                         self.batch = 0
                                + def registered_as(): return ['ftp'] @@ -518,6 +523,7 @@

                                Source code for sarracenia.transfer.ftp

                                         alarm_set(self.o.timeout)
                                         self.ftp.voidcmd('SITE UMASK 777')
                                         alarm_cancel()
                                +
                                diff --git a/_modules/sarracenia/transfer/https.html b/_modules/sarracenia/transfer/https.html index 60c8e3b7f..1695b12f4 100644 --- a/_modules/sarracenia/transfer/https.html +++ b/_modules/sarracenia/transfer/https.html @@ -7,9 +7,9 @@ - + - + @@ -112,7 +112,9 @@

                                Source code for sarracenia.transfer.https

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Https(Transfer): +
                                +[docs] +class Https(Transfer): """ HyperText Transfer Protocol (HTTP) ( https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol ) sarracenia transfer protocol subclass supports/uses additional custom options: @@ -122,7 +124,9 @@

                                Source code for sarracenia.transfer.https

                                     built with: 
                                          urllib.request ( https://docs.python.org/3/library/urllib.request.html )
                                     """
                                -
                                [docs] def __init__(self, proto, options): +
                                +[docs] + def __init__(self, proto, options): super().__init__(proto, options) @@ -156,6 +160,7 @@

                                Source code for sarracenia.transfer.https

                                 
                                         self.init()
                                + def registered_as(): return ['http', 'https'] @@ -434,6 +439,7 @@

                                Source code for sarracenia.transfer.https

                                 
                                         alarm_cancel()
                                         return False
                                +
                                diff --git a/_modules/sarracenia/transfer/sftp.html b/_modules/sarracenia/transfer/sftp.html index 2eb8c867c..204d3725a 100644 --- a/_modules/sarracenia/transfer/sftp.html +++ b/_modules/sarracenia/transfer/sftp.html @@ -7,9 +7,9 @@ - + - + @@ -109,7 +109,9 @@

                                Source code for sarracenia.transfer.sftp

                                 logger = logging.getLogger(__name__)
                                 
                                 
                                -
                                [docs]class Sftp(Transfer): +
                                +[docs] +class Sftp(Transfer): """ SecSH File Transfer Protocol (SFTP) ( https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt ) Sarracenia transfer protocol subclass supports/uses additional custom options: @@ -118,7 +120,9 @@

                                Source code for sarracenia.transfer.sftp

                                 
                                     The module uses the paramiko library for python SecSH support ( https://www.paramiko.org/ )
                                     """
                                -
                                [docs] def __init__(self, proto, options): +
                                +[docs] + def __init__(self, proto, options): super().__init__(proto, options) @@ -149,6 +153,7 @@

                                Source code for sarracenia.transfer.sftp

                                                          ssh_config)
                                             logger.debug('Exception details: ', exc_info=True)
                                + def registered_as(): return ['sftp', 'scp', 'ssh', 'fish'] @@ -608,6 +613,7 @@

                                Source code for sarracenia.transfer.sftp

                                         alarm_set(self.o.timeout)
                                         self.sftp.utime(path, tup)
                                         alarm_cancel()
                                +
                                diff --git a/_static/basic.css b/_static/basic.css index cfc60b86c..30fee9d0f 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -237,6 +237,10 @@ a.headerlink { visibility: hidden; } +a:visited { + color: #551A8B; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 78123fb4c..d615a2e51 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,4 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), +const DOCUMENTATION_OPTIONS = { VERSION: 'UNKNOWN', LANGUAGE: 'en', COLLAPSE_INDEX: false, diff --git a/_static/searchtools.js b/_static/searchtools.js index 97d56a74d..7918c3fab 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -57,12 +57,12 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, searchTerms) => { +const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; const [docName, title, anchor, descr, score, _filename] = item; @@ -75,20 +75,24 @@ const _displayItem = (item, searchTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; + requestUrl = contentRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; + requestUrl = contentRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } let linkEl = listItem.appendChild(document.createElement("a")); linkEl.href = linkUrl + anchor; linkEl.dataset.score = score; linkEl.innerHTML = title; - if (descr) + if (descr) { listItem.appendChild(document.createElement("span")).innerHTML = " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) @@ -97,6 +101,9 @@ const _displayItem = (item, searchTerms) => { listItem.appendChild( Search.makeSearchSummary(data, searchTerms) ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); }); Search.output.appendChild(listItem); }; @@ -115,14 +122,15 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - searchTerms + searchTerms, + highlightTerms, ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), searchTerms); + _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( - () => _displayNextItem(results, resultCount, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), 5 ); } @@ -360,7 +368,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, searchTerms); + _displayNextItem(results, results.length, searchTerms, highlightTerms); }, /** diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js index aae669d7e..8a96c69a1 100644 --- a/_static/sphinx_highlight.js +++ b/_static/sphinx_highlight.js @@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => { } span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); parent.insertBefore( span, parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), + rest, node.nextSibling ) ); node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); if (isInSVG) { const rect = document.createElementNS( @@ -140,5 +145,10 @@ const SphinxHighlight = { }, }; -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/api-documentation.html b/api-documentation.html index 37031665f..9b0324920 100644 --- a/api-documentation.html +++ b/api-documentation.html @@ -8,9 +8,9 @@ - + - + @@ -104,9 +104,9 @@ }
                                -

                                API Documentation

                                +

                                API Documentation

                                -

                                Config

                                +

                                Config

                                Second version configuration parser

                                @@ -362,7 +362,7 @@

                                Config
                                -

                                Sarracenia

                                +

                                Sarracenia

                                class sarracenia.Message[source]
                                @@ -590,7 +590,7 @@

                                Sarracenia -

                                Sarracenia.FlowCB

                                +

                                Sarracenia.FlowCB

                                Callbacks from running Sarracenia.Flows

                                @@ -797,7 +797,7 @@

                                Sarracenia.FlowCB -

                                Sarracenia.Moth

                                +

                                Sarracenia.Moth

                                class sarracenia.moth.Moth(props=None, is_subscriber=True)[source]
                                diff --git a/fr/CommentFaire/Addenda_Admin_Rabbit.html b/fr/CommentFaire/Addenda_Admin_Rabbit.html index eb690fe96..6827008c9 100644 --- a/fr/CommentFaire/Addenda_Admin_Rabbit.html +++ b/fr/CommentFaire/Addenda_Admin_Rabbit.html @@ -8,9 +8,9 @@ - + - + @@ -128,16 +128,16 @@ }
                                -

                                Administration de Rabbitmq Adddendum

                                +

                                Administration de Rabbitmq Adddendum

                                Les anciennes modifications que les gens voulaient garder?

                                -

                                Introduction

                                +

                                Introduction

                                AMQP signifie Advanced Message Queuing Protocol. C’est la définition d’un protocole qui vient de la nécessité de standardiser un système de changement de message asynchrone. Dans le jargon de l’AMQP, nous parlerons des producteurs de messages, des consommateurs de messages et des courtiers.

                                -

                                installation RABBITMQ-SERVER

                                +

                                installation RABBITMQ-SERVER

                                Sur nos machines qui doivent traiter les messages AMQP, nous installons le broker, en installant le paquet rabbitmq-server_3.3.5-1_all.deb. L’installation de base se fait comme suit sur toutes nos machines

                                @@ -186,7 +186,7 @@

                                installation RABBITMQ-SERVER -

                                Installation d’un RABBITMQ-SERVER

                                +

                                Installation d’un RABBITMQ-SERVER

                                Sur le bunny, nous avons opté pour une installation en cluster. Pour ce faire, nous suivons les instructions suivantes:

                                Stop rabbitmq-server on all nodes....
                                @@ -211,7 +211,7 @@ 

                                Installation d’un RABBITMQ-SERVER -

                                installation ldap RABBITMQ-SERVER

                                +

                                installation ldap RABBITMQ-SERVER

                                Sur les serveurs où nous voulons avoir une authentification en utilisant les instructions suivantes:

                                rabbitmq-plugins enable rabbitmq_auth_backend_ldap
                                 
                                @@ -256,7 +256,7 @@ 

                                installation ldap RABBITMQ-SERVER -

                                Utilisation de l’AMQP sur DD (DDI, DD.BETA)

                                +

                                Utilisation de l’AMQP sur DD (DDI, DD.BETA)

                                Nous (Peter) voulions faire une implémentation d’AMQP dans METPX. Pour ce faire, nous utilisons la bibliothèque python-amqplib qui implémente les fonctionnalités nécessaires d’AMQP en python. @@ -273,7 +273,7 @@

                                Utilisation de l’AMQP sur DD (DDI, DD.BETA) -

                                Notifications pour DD

                                +

                                Notifications pour DD

                                Nous avons trouvé dans AMQP une opportunité d’annoncer des produits lorsqu’ils arrivent sur DD. Donc un utilisateur, au lieu de vérifier constamment si un produit est présent sur DD. Pour le modifier, il pouvait s’abonner (topic AMQP) pour recevoir un message (l’url du produit) @@ -350,7 +350,7 @@

                                Notifications pour DD

                                -

                                Utilitaires installés sur les serveurs DD

                                +

                                Utilitaires installés sur les serveurs DD

                                Lorsqu’un client se connecte au broker (rabbitmq-server), il doit créer une file d’attente et l’attacher à un échange. Nous pouvons donner à cette fil d’attente l’option qu’elle s’autodétruit lorsqu’elle n’est plus utilisée ou qu’elle est @@ -380,13 +380,13 @@

                                Utilitaires installés sur les serveurs DD -

                                Utilisation d’AMQP avec URP, BUNNY, PDS-OP

                                +

                                Utilisation d’AMQP avec URP, BUNNY, PDS-OP

                                Note

                                s’applique également au développement…

                                -

                                De URP-1/2 annoncer à BUNNY-OP qu’un produit est prêt

                                +

                                De URP-1/2 annoncer à BUNNY-OP qu’un produit est prêt

                                Sur urp-1/2 un metpx roule l’expéditeur amqp_expose_db.conf qui annonce qu’un produit vient d’arriver dans la db de metpx avec un message de la forme

                                Md5sum of product name           file-size  url                        dbname
                                @@ -402,7 +402,7 @@ 

                                De URP-1/2 annoncer à BUNNY-OP qu’un produit est prêt -

                                BUNNY-OP et dd_dispatcher.py

                                +

                                BUNNY-OP et dd_dispatcher.py

                                bunny-op est un vip qui vit sur bunny1-op ou bunny2-op. C’est avec keepalived que nous nous assurons que ce vip réside sur l’un des bunny-op. Nous testons également que rabbitmq-server fonctionne sur le même serveur. @@ -452,7 +452,7 @@

                                BUNNY-OP et dd_dispatcher.py -

                                Réceptions PDS-OP de messages de notification de répartition, wget de produits radar

                                +

                                Réceptions PDS-OP de messages de notification de répartition, wget de produits radar

                                Sur pds-op, un récepteur pull_urp, exécutez le fx_script pull_amqp_wget.py. Dans ce script, la commande suivante

                                # shared queue : each pull receive 1 message (prefetch_count=1)
                                @@ -469,7 +469,7 @@ 

                                Réceptions PDS-OP de messages de notification de répartition, wget de prod et placé dans la fil d’attente du récepteur qui est ensuite ignoré / acheminé de manière ordinaire.

                                -

                                Vérification / Dépannage

                                +

                                Vérification / Dépannage

                                Dans l’ordre de production

                                1. diff --git a/fr/CommentFaire/Admin.html b/fr/CommentFaire/Admin.html index 455ff17ac..b16351b73 100644 --- a/fr/CommentFaire/Admin.html +++ b/fr/CommentFaire/Admin.html @@ -8,9 +8,9 @@ - + - + @@ -130,27 +130,27 @@ }
                                  -

                                  Administration des pompes de données AMQP

                                  +

                                  Administration des pompes de données AMQP

                                  Note

                                  FIXME: Les sections manquantes sont mises en évidence par FIXME. Ce qui est ici est exact.

                                  -

                                  Aperçu

                                  +

                                  Aperçu

                                  Décrit la configuration et le fonctionnement d’une pompe de données MetPX-Sarracenia à l’aide de Rabbitmq en tant que courtier de protocole de mise en fil d’attente de messages. Pour l’administration, la plupart des tâches sont différentes, selon le courtier utilisé. Si vous utilisez un autre courtier, il doit y avoir un autre guide d’administration.

                                  -

                                  Pré-requis

                                  +

                                  Pré-requis

                                  Idéalement, il faut être familier avec l’accès au niveau de l’utilisateur aux pompes existantes comme un subscriber or a source avant de passer à l’administration. Ce manuel se veut prescriptif plutôt qu’explicatif. Pour les raisons pour lesquelles les choses sont construites comme elles sont vues Concepts.rst

                                  -

                                  Exigences minimales

                                  +

                                  Exigences minimales

                                  Le courtier AMQP est extrêmement léger sur les serveurs d’aujourd’hui. Les exemples dans ce manuel a été implémenté sur un serveur privé virtuel commercial (VPS) avec 256 Mo de RAM, et 700 Mo de swap à partir d’un disque @@ -179,7 +179,7 @@

                                  Exigences minimales -

                                  Opérations

                                  +

                                  Opérations

                                  Pour faire fonctionner une pompe, un utilisateur doit être désigné comme administrateur. L’administrateur est différent des autres usagers, surtout en ce qui concerne l’autorisation accordée de créer des échanges arbitraires, et @@ -233,7 +233,7 @@

                                  Opérations -

                                  Entretien ménager - sr_audit

                                  +

                                  Entretien ménager - sr_audit

                                  Lorsqu’un client se connecte à un courtier, il crée une fil d’attente qui est ensuite liée à une bourse. L’utilisateur peut choisir d’avoir l’autodestruction du client lorsqu’il est déconnecté (auto-delete), ou il @@ -249,7 +249,7 @@

                                  Entretien ménager - sr_audit -

                                  Excès de fil d’attente/performance

                                  +

                                  Excès de fil d’attente/performance

                                  Lorsque rabbitmq a des centaines de milliers de messages en fil d’attente, la performance du courtier peut en souffrir. Un tel accumulation peuvent se produire lorsque la destination d’un expéditeur est en panne pour une période @@ -286,7 +286,7 @@

                                  Excès de fil d’attente/performance -

                                  Routage

                                  +

                                  Routage

                                  L’interconnexion de plusieurs pompes se fait, côté données, par chaînage en guirlande. sr_sarra et/ou sr_sender d’une pompe à l’autre.

                                  les en-têtes to_clusters et source sont utilisés pour les décisions de routage. @@ -304,7 +304,7 @@

                                  RoutageRapports pour plus de détails.

                                  -

                                  Que se passe-t-il ?

                                  +

                                  Que se passe-t-il ?

                                  La commande sr_report peut être invoquée pour lier à ‘xreport’ au lieu de l’échange d’utilisateurs par défaut pour obtenir des informations de rapport pour l’ensemble d’un courtier.

                                  @@ -320,7 +320,7 @@

                                  Que se passe-t-il ? -

                                  Intégration Init

                                  +

                                  Intégration Init

                                  Par défaut, lorsque sarracenia est installé, il s’agit d’un outil utilisateur et non d’une ressource à l’échelle du système. Le répertoire tools/sous-répertoire permet l’intégration avec des outils pour différents @@ -355,13 +355,13 @@

                                  Intégration Init -

                                  Installation Rabbitmq

                                  +

                                  Installation Rabbitmq

                                  Exemple d’information sur l´implantation d’un courtier rabbitmq pour Sarracenia. Le courtier n’est pas tenu de être sur le même hôte que n’importe quoi d’autre, mais il doit y être accessible à partir d’au moins l’un de ces hôtes moteurs de transport.

                                  -

                                  Installation

                                  +

                                  Installation

                                  D’une manière générale, nous voulons rester au-dessus de la version 3.x.

                                  https://www.rabbitmq.com/install-debian.html

                                  Brièvement:

                                  @@ -373,7 +373,7 @@

                                  Installation -

                                  WebUI

                                  +

                                  WebUI

                                  Fondamentalement, à partir d’un shell administrative, il faut:

                                  rabbitmq-plugins enable rabbitmq_management
                                   
                                  @@ -384,7 +384,7 @@

                                  WebUI la gestion ui est suggérée.

                                  -

                                  TLS

                                  +

                                  TLS

                                  Il faut crypter le trafic des courtiers. L’obtention de certificats n’entre pas dans le champ d’application de ces instructions, de sorte qu’il n’est pas discuté en détail. Aux fins de l’exemple, @@ -471,7 +471,7 @@

                                  TLS

                                  -

                                  Modifier les valeurs par défaut

                                  +

                                  Modifier les valeurs par défaut

                                  Afin d’effectuer des changements de configuration, le courtier doit être en cours d’exécution. Il faut démarrer le courtier rabbitmq. Sur les systèmes ubuntu plus anciens, cela serait fait par:

                                  @@ -564,7 +564,7 @@

                                  Modifier les valeurs par défaut -

                                  Gestion des utilisateurs d’une pompe à l’aide de Sr_audit

                                  +

                                  Gestion des utilisateurs d’une pompe à l’aide de Sr_audit

                                  Pour configurer une pompe, on a besoin d’un utilisateur administratif courtier (dans les exemples : sarra.). et un utilisateur de feeder (dans les exemples: feeder.) La gestion des autres utilisateurs se fait à l’aide de le programme @@ -710,7 +710,7 @@

                                  Gestion des utilisateurs d’une pompe à l’aide de Sr_audit -

                                  Premier abonnement

                                  +

                                  Premier abonnement

                                  Lors de la configuration d’une pompe, le but est normalement de la connecter à une autre pompe. Pour régler le paramétrage d’un abonnement nous aide à paramétrer les paramètres pour sarra plus tard. Donc d’abord essayer un abonnement à une pompe amont:

                                  @@ -771,7 +771,7 @@

                                  Premier abonnement -

                                  Sarra d’une autre pompe

                                  +

                                  Sarra d’une autre pompe

                                  Sarra est utilisé pour permettre à une pompe en aval de ré-annoncer des produits à partir d’une pompe en amont. Sarra a besoin de toute la configuration d’un abonnement, mais a aussi besoin de la configuration pour @@ -861,7 +861,7 @@

                                  Sarra d’une autre pompe -

                                  Rapports

                                  +

                                  Rapports

                                  Maintenant que les données circulent, nous devons jeter un coup d’oeil au flux des messages de rapport, qui sont essentiellement utilisés par chaque pompe pour indiquer en amont que les données ont été téléchargées. Sr_audit @@ -969,7 +969,7 @@

                                  Rapports -

                                  Sarra D’une source

                                  +

                                  Sarra D’une source

                                  Lorsque l’on lit les messages directement depuis une source, il faut activer la validation. FIXME : exemple de la façon dont les messages des utilisateurs sont traités.

                                  @@ -983,7 +983,7 @@

                                  Sarra D’une source -

                                  Nettoyage

                                  +

                                  Nettoyage

                                  Ce sont des exemples, la mise en œuvre du nettoyage n’est pas couverte par Sarracenia. Étant donné qu’un arbre raisonnablement petit comme donné ci-dessus, il peut être pratique de scanner l’arbre et d’élaguer les anciens @@ -1023,7 +1023,7 @@

                                  Nettoyage -

                                  S’assurer que les choses sont en place

                                  +

                                  S’assurer que les choses sont en place

                                  Les processus peuvent planter. On peut avoir un redémarrage automatisé en exécutant sr3 sanity périodiquement:

                                  root@boule:/etc/cron.d# more sanity
                                  @@ -1035,25 +1035,25 @@ 

                                  S’assurer que les choses sont en place -

                                  Démarrage

                                  +

                                  Démarrage

                                  Le paquet Debian installe une unité systemd, mais l’installation de python3 ne s’en occupe pas.

                                  -

                                  Sr_Poll

                                  +

                                  Sr_Poll

                                  FIXME: alimenter la sarra à partir de la source configurée avec un sr_poll. configuré.

                                  -

                                  Sr_winnow

                                  +

                                  Sr_winnow

                                  FIXME: exemple de configuration sr_winnow expliqué, avec quelques pelles aussi.

                                  -

                                  Sr_sender

                                  +

                                  Sr_sender

                                  Lorsque les pare-feu empêchent l’utilisation de sarra pour tirer d’une pompe comme le ferait un abonné, on peut inverser l’alimentation en ayant la commande la pompe amont alimente explicitement la pompe aval.

                                  FIXME : configuration élaborée de l’échantillon sr_sender.

                                  -

                                  Ajout manuel d’utilisateurs

                                  +

                                  Ajout manuel d’utilisateurs

                                  Pour éviter l’utilisation de sr_admin, ou pour contourner les problèmes, on peut ajuster les paramètres utilisateur manuellement:

                                  cd /usr/local/bin
                                  @@ -1082,7 +1082,7 @@ 

                                  Ajout manuel d’utilisateurs -

                                  Installations avancées

                                  +

                                  Installations avancées

                                  Sur certaines configurations (nous les appelons généralement bunny), nous utilisons un rabbitmq clustered, comme ceci:

                                  /var/lib/rabbitmq/.erlang.cookie  same on all nodes
                                  @@ -1104,7 +1104,7 @@ 

                                  Installations avancées

                                  -

                                  Configuration keepalived d’un courtier Clustered

                                  +

                                  Configuration keepalived d’un courtier Clustered

                                  Dans cet exemple, bunny-op est un vip qui migre entre bunny1-op et bunny2-op. Keepalived déplace le vip entre les deux:

                                  #=============================================
                                  @@ -1142,7 +1142,7 @@ 

                                  Configuration keepalived d’un courtier Clustered

                                  -

                                  Intégration LDAP

                                  +

                                  Intégration LDAP

                                  Pour activer l’authentification LDAP pour rabbitmq:

                                  rabbitmq-plugins enable rabbitmq_auth_backend_ldap
                                   
                                  @@ -1185,7 +1185,7 @@ 

                                  Intégration LDAP -

                                  Nécessite RABBITMQ > 3.3.3.x

                                  +

                                  Nécessite RABBITMQ > 3.3.3.x

                                  Cherchait à savoir comment utiliser LDAP strictement pour l’authentification par mot de passe. La réponse que j’ai eue des gourous de Rabbitmq:

                                  On 07/08/14 20:51, michel.grenier@ec.gc.ca wrote:
                                  @@ -1217,7 +1217,7 @@ 

                                  Nécessite RABBITMQ > 3.3.3.x -

                                  Support

                                  +

                                  Support

                                  Il est maintenant possible d’activer MQTT dans Sarracenia via le plugin RabbitMQ MQTT. Voici un guide pratique minimal pour notre support RabbitMQTT:

                                    @@ -1293,7 +1293,7 @@

                                    Support -

                                    Crochets de Sundew

                                    +

                                    Crochets de Sundew

                                    Cette information n’est très probablement pas pertinente pour presque tous les utilisateurs. Sundew est un autre module de MetPX qui est essentiellement en cours de développement. remplacé par Sarracénie. Cette information n’est utile qu’à ceux qui ont une base installée de Sundew souhaitant faire le pont à la sarracénie. Les premiers travaux sur la sarracénie n’ont utilisé que le client d’abonnement comme téléchargeur, et le module de commutation de l’OMM existant. @@ -1302,7 +1302,7 @@

                                    Crochets de Sundew -

                                    Notifications sur DD

                                    +

                                    Notifications sur DD

                                    En remplacement des flux Atom/RSS qui indiquent aux abonnés quand de nouvelles données sont disponibles, nous mettons un courtier en ligne sur notre serveur de diffusion de données (dd.weather.gc.ca.) Les clients peuvent s’y abonner. Pour créer les notifications, nous avons un Sundew Sender (nommé wxo-b1-oper-dd.conf) avec un script d’envoi:

                                    diff --git a/fr/CommentFaire/Docker.html b/fr/CommentFaire/Docker.html index 1d208f174..fca07d1fb 100644 --- a/fr/CommentFaire/Docker.html +++ b/fr/CommentFaire/Docker.html @@ -8,9 +8,9 @@ - + - + @@ -124,9 +124,9 @@ }
                                    -

                                    Exécution de MetPX via Docker

                                    +

                                    Exécution de MetPX via Docker

                                    -

                                    Introduction

                                    +

                                    Introduction

                                    Alors que Sarracenia peut être installé via pip, debian / Ubuntu, une capacité Docker est également fourni à l’appui de la conteneurisation et du cloud « run anywhere » d’environnements natifs.

                                    @@ -150,7 +150,7 @@

                                    Introduction -

                                    Journalisation

                                    +

                                    Journalisation

                                    Les normes dans le monde docker sont d’envoyer des messages à la sortie standard, donc l’option logStdout doit être utilisée dans toutes les configurations d’un conteneur docker. Cela permettra aux journaux docker de fonctionner comme prévu dans un environnement docker, en imprimant diff --git a/fr/CommentFaire/Exemples_Hydro.html b/fr/CommentFaire/Exemples_Hydro.html index 71348631c..76693d49c 100644 --- a/fr/CommentFaire/Exemples_Hydro.html +++ b/fr/CommentFaire/Exemples_Hydro.html @@ -8,9 +8,9 @@ - + - + @@ -125,12 +125,12 @@ }

                                    -

                                    Utilisation de plugins pour récupérer des données hydrométriques

                                    +

                                    Utilisation de plugins pour récupérer des données hydrométriques

                                    Plusieurs sites Web de données environnementales utilisent des API pour communiquer des données. Afin de faire de la publicité pour la disponibilité de nouveaux fichiers et les intégrer de manière transparente dans la pile Sarracenia, quelques plugins sont nécessaire pour étendre la fonctionnalité de polling.

                                    -

                                    Protocoles de polling pris en charge en mode natif

                                    +

                                    Protocoles de polling pris en charge en mode natif

                                    Prêt à l’emploi, Sarracenia prend en charge l’interrogation des sources HTTP / HTTPS et SFTP / FTP où le nom de fichier est ajouté à la fin de l’URL de base. Par exemple, si vous essayez d’accéder les données de niveau de l’eau du réservoir du lac Ghost près de Cochrane en Alberta, auxquelles on peut accéder en naviguant jusqu’à @@ -145,7 +145,7 @@

                                    Protocoles de polling pris en charge en mode natifnew_file réglé sur la seconde, et une instance sr_subscribe saurait assembler pour localiser le fichier et le télécharger.

                                    -

                                    Extension des protocoles de poll

                                    +

                                    Extension des protocoles de poll

                                    Si la source de données ne respecte pas cette convention (voir API NOAA CO-OPS et Service Web de valeurs instantanées USGS pour des exemples de deux sources de données qui ne le font pas), un module registered_as peut être inclus en bas d’un fichier plugin pour définir la liste des protocoles en cours @@ -158,9 +158,9 @@

                                    Extension des protocoles de poll -

                                    Exemples d’intégration d’API dans des plugins

                                    +

                                    Exemples d’intégration d’API dans des plugins

                                    -

                                    API NOAA CO-OPS

                                    +

                                    API NOAA CO-OPS

                                    Le département des marées et des courants de National Oceanic and Atmospheric Administration publie son programme coopératif données d’observations et de prédictions de stations via un service Web GET RESTful, disponible à l’adresse the NOAA Tides et le site Web de Currents. @@ -267,7 +267,7 @@

                                    API NOAA CO-OPS -

                                    Service Web SHC SOAP

                                    +

                                    Service Web SHC SOAP

                                    Un service Web SOAP (Simple Object Access Protocol) utilise un système de messagerie XML pour fournir les données demandées données sur un réseau. Le client peut spécifier des paramètres pour une opération prise en charge (par exemple une recherche) sur le service Web, noté avec une extension de fichier wdsl, et le serveur renverra une réponse SOAP au format XML. @@ -294,7 +294,7 @@

                                    Service Web SHC SOAPsubsoapshc.conf.

                                    -

                                    Service Web de valeurs instantanées USGS

                                    +

                                    Service Web de valeurs instantanées USGS

                                    Le United States Geological Survey publie ses données sur l’eau par son Service Web des valeurs instantanées RESTful , qui utilise des requêtes HTTP GET pour filtrer leurs données. Il renvoie les données dans les fichiers XML une fois demandé, et peut prendre en charge plus d’un argument d’ID de station à la fois (téléchargement de données en bloc). Plus d’infos sur @@ -331,7 +331,7 @@

                                    Service Web de valeurs instantanées USGS -

                                    Cas d’utilisation

                                    +

                                    Cas d’utilisation

                                    Les plug-ins hydrométriques ont été développés pour le cas d’utilisation canhys d’Environnement Canada, où les fichiers contenant les métadonnées de la station seraient utilisées comme données d’entrée pour recueillir les données hydrométriques. Chaque plugin fonctionne également en générant tous les identifiants de station valides de l’autorité diff --git a/fr/CommentFaire/FlowCallbacks.html b/fr/CommentFaire/FlowCallbacks.html index 001180179..53c9eb7b1 100644 --- a/fr/CommentFaire/FlowCallbacks.html +++ b/fr/CommentFaire/FlowCallbacks.html @@ -8,9 +8,9 @@ - + - + @@ -131,7 +131,7 @@ }

                                    -

                                    Écriture de plugins FlowCallback

                                    +

                                    Écriture de plugins FlowCallback

                                    Tous les composants de Sarracenia implémentent l’algorithme Flow. La classe principale de Sarracenia est sarracenia.flow et la fonctionnalité de base est implémentée à l’aide de la classe créée pour ajouter un @@ -163,7 +163,7 @@

                                    Écriture de plugins FlowCallback -

                                    Entrées de fichier de configuration pour utiliser Flow_Callbacks

                                    +

                                    Entrées de fichier de configuration pour utiliser Flow_Callbacks

                                    Pour ajouter un callback à un flux, une ligne est ajoutée au fichier de configuration

                                    flowcb sarracenia.flowcb.log.Log
                                     
                                    @@ -192,7 +192,7 @@

                                    Entrées de fichier de configuration pour utiliser Flow_Callbacks -

                                    Worklists

                                    +

                                    Worklists

                                    Outre l’option, l’autre argument principal pour les routines de callbacks after_accept et after_work est worklist. Worklist est donnée aux points d’entrée qui se produisent pendant le traitement de message de notification, et est un certain nombre de worklist de messages de notification:

                                    @@ -216,7 +216,7 @@

                                    Worklists -

                                    Journalisation

                                    +

                                    Journalisation

                                    Python a une excellente journalisation intégrée, et il faut simplement utiliser le module d’une manière normale, pythonique, avec:

                                    import logging
                                    @@ -250,7 +250,7 @@ 

                                    Journalisation -

                                    Initialisation et paramètres

                                    +

                                    Initialisation et paramètres

                                    L’étape suivante consiste à déclarer une classe

                                    class Myclass(FlowCB):
                                     
                                    @@ -289,7 +289,7 @@

                                    Initialisation et paramètres -

                                    Points d’entrée

                                    +

                                    Points d’entrée

                                    Autres entry_points, extraits de sarracenia/flowcb/__init__.py

                                    def name(self):
                                         Task: return the name of a plugin for reference purposes. (automatically there)
                                    @@ -349,7 +349,7 @@ 

                                    Points d’entrée -

                                    Exemple de sous-classe Flowcb

                                    +

                                    Exemple de sous-classe Flowcb

                                    Il s’agit d’un exemple de fichier de classe de callback (gts2wis2.py) qui accepte les fichiers dont les noms commencent par ceux d’AHL et renomme l’arborescence des répertoires selon une norme différente, celui en évolution pour le WIS 2.0 de WMO (pour plus d’informations sur ce module : @@ -439,7 +439,7 @@

                                    Exemple de sous-classe Flowcb -

                                    Autres exemples

                                    +

                                    Autres exemples

                                    La sous-classification de Sarracenia.flowcb est utilisée en interne pour effectuer beaucoup de travail de base. C’est une bonne idée de regarder le code source de sarracenia lui-même. Par exemple:

                                      @@ -461,7 +461,7 @@

                                      Autres exemples -

                                      Modification de fichiers en transit

                                      +

                                      Modification de fichiers en transit

                                      La classe sarracenia.transfer inclu un point d’entrée on_data qui permet de transformer des données durant un transfer:

                                       def on_data(self, chunk) -> bytes:
                                      @@ -502,7 +502,7 @@ 

                                      Modification de fichiers en transit -

                                      flots modifiés

                                      +

                                      flots modifiés

                                      Si aucun des composants intégrés ( poll, post, sarra, shovel, subscribe, watch, winnow ) n’a le comportement souhaité, on peut créer un composant personnalisé pour faire ce qu’il faut en sous-classant le flux.

                                      Copiez l’une des sous-classes de sarracenia.flow à partir du code source et modifiez-la à votre goût. Dans la configuration diff --git a/fr/CommentFaire/Ingestion_de_email_avec_Sarracenia.html b/fr/CommentFaire/Ingestion_de_email_avec_Sarracenia.html index b4e55621b..bfc1d2da4 100644 --- a/fr/CommentFaire/Ingestion_de_email_avec_Sarracenia.html +++ b/fr/CommentFaire/Ingestion_de_email_avec_Sarracenia.html @@ -8,9 +8,9 @@ - + - + @@ -125,14 +125,14 @@ }

                                      -

                                      Ingestion par e-mail avec Sarracenia

                                      +

                                      Ingestion par e-mail avec Sarracenia

                                      Le courrier électronique est un moyen facile d’acheminer les données entre les serveurs. Utilisation du protocole POP3 (Post Office Protocol) et Protocole IMAP (Internet Message Access Protocol), les fichiers e-mail peuvent être diffusés via Sarracenia en étendant les fonctions du poll et de téléchargement.

                                      -

                                      Polling

                                      +

                                      Polling

                                      -

                                      Extending Polling Protocols

                                      +

                                      Extending Polling Protocols

                                      De série, Sarracenia support les pollUrl pour sonder des serveurs avec les protocoles HTTP/HTTPS et SFTP/FTP. D’autres protocoles peuvent être pris en charge en sous-classant la classe sarracenia.flowcb.poll.Poll. Heureusement, il existe un plugin de poll par courrier, qui invoque un plugin. @@ -181,7 +181,7 @@

                                      Extending Polling Protocols -

                                      Mise en œuvre de POP/IMAP

                                      +

                                      Mise en œuvre de POP/IMAP

                                      Avec les modules poplib et imaplib de Python, la pollUrl peut être analysée et le serveur de messagerie peut être connecté selon le schéma spécifié. Sarracenia peut extraire les informations d’identification de la pollUrl grâce à ses classes intégrées, aucun mot de passe n’a donc besoin d’être stocké dans le fichier de configuration pour se connecter. Pop3 @@ -241,7 +241,7 @@

                                      Mise en œuvre de POP/IMAP -

                                      Téléchargement

                                      +

                                      Téléchargement

                                      Les messages électroniques, une fois récupérés, sont formatés au format MIME (Multipurpose Internet Mail Extensions) 1.0 brut, comme indiqué dans le premier en-tête du fichier. Les métadonnées de l’e-mail sont transmises dans une série d’en-têtes, dont une par ligne, dans le format nom:valeur. Cela peut être analysé pour les pièces jointes, les corps de message, les méthodes de codage, etc. Un @@ -252,7 +252,7 @@

                                      Téléchargementdownload_email_ingest.py.

                                      -

                                      Décodage du contenu

                                      +

                                      Décodage du contenu

                                      Une fois le message électronique téléchargé, un plug-in on_file peut analyser le fichier au format MIME et extraire la pièce jointe, généralement indiquée par l’en-tête Content-Disposition ou les champs corps/objet/adresse du message, à enregistrer en tant que nouveau fichier pour affiner davantage les données. Un exemple de plugin qui fait cela peut être trouvé sous plugins comme @@ -304,7 +304,7 @@

                                      Décodage du contenu

                                      -

                                      Cas d’utilisation

                                      +

                                      Cas d’utilisation

                                      Les plugins d’ingestion d’e-mails ont été développés pour le cas d’utilisation des données en rafale courte, où l’information arrive dans les pièces jointes des messages. Auparavant, les e-mails étaient téléchargés avec un script fetchmail et un cronjob s’exécuterait de temps en temps pour détecter et décoder les nouveaux fichiers et leurs pièces jointes, diff --git a/fr/CommentFaire/MiseANiveau.html b/fr/CommentFaire/MiseANiveau.html index 57ea7201f..694c1a583 100644 --- a/fr/CommentFaire/MiseANiveau.html +++ b/fr/CommentFaire/MiseANiveau.html @@ -8,9 +8,9 @@ - + - + @@ -132,7 +132,7 @@ }

                                      -

                                      GUIDE DE MISE A NIVEAU

                                      +

                                      GUIDE DE MISE A NIVEAU

                                      Ce dossier documente les changements de comportement afin de fournir des conseils aux personnes qui effectuent la mise à niveau à partir d’une version précédente. Les sections sont intitulées pour indiquer les changements nécessaires lorsqu’il y a une mise à niveau vers cette version. Pour effectuer une mise à niveau sur plusieurs versions, il faut démarrer @@ -156,11 +156,11 @@

                                      GUIDE DE MISE A NIVEAU

                                      Les sections sont intitulées par les changements intervenus au niveau en question.

                                      -

                                      Instructions d’installation

                                      +

                                      Instructions d’installation

                                      Installation Guide

                                      -

                                      git

                                      +

                                      git

                                      CHANGE: v03 postformat field renamded: “integrity” is now “identity”

                                        @@ -171,7 +171,7 @@

                                        git

                                      -

                                      3.0.40

                                      +

                                      3.0.40

                                      CHANGEMENT: l’interface de programmation (API) python a subit un changement de rupture

                                      pour la classe sarracenia.moth, il faut maintenant specifier l’options[‘broker’] au lieu @@ -198,7 +198,7 @@

                                      3.0.40

                                      -

                                      3.0.26

                                      +

                                      3.0.26

                                      CHANGEMENTles options d’événement (logEvents et fileEvents) remplacent désormais la valeur précédente.

                                      Avant ils etaient être uni (ou’d) avec la valeur précédente. Peut maintenant préfacer les éléments set avec + pour obtenir le comportement précédent. @@ -210,7 +210,7 @@

                                      3.0.26

                                      -

                                      3.0.25

                                      +

                                      3.0.25

                                      CHANGEMENTla valeur par défaut pour acceptUnmatched est maintenant True pour tous les composants.

                                      avant cette version, la valeur par défaut était False dans le composant subscribe mais Vrai pour tous les autres.

                                      @@ -218,14 +218,14 @@

                                      3.0.25

                                      -

                                      3.0.22

                                      +

                                      3.0.22

                                      CHANGEMENTMENT: option destination dans une configuration de poll est remplacé par pollUrl

                                      CHANGEMENTMENT: option destination dans une configuration de sender est remplacé par sendTo

                                      ACTION: remplacer les destination dans les configurations affectés (traité automatiquement dans le cas de conversion à partir de v2.)

                                      -

                                      3.0.17

                                      +

                                      3.0.17

                                      CHANGEMENT: La chaine de charactères “Vendor” est changé de “science.gc.ca” à “MetPX”.

                                      Ce changement modifie le placement des fichiers sur la platteforme Windows.

                                      @@ -239,7 +239,7 @@

                                      3.0.17

                                      -

                                      3.0.15

                                      +

                                      3.0.15

                                      NOTICE: rétablir les paquets Debian et Windows en supprimant les exigences matérielles pour les modules python

                                      qui sont difficiles à satisfaire. À partir de la version 3.0.15, les dépendances sont modulaires.

                                      @@ -275,7 +275,7 @@

                                      3.0.15

                                      -

                                      3.0.14

                                      +

                                      3.0.14

                                      bêta initiale.

                                      NOTICEseuls les paquets pip fonctionnent actuellement. Pas de paquets Debian sur launchpad.net

                                      ni aucun package Windows.

                                      @@ -283,7 +283,7 @@

                                      3.0.14

                                      -

                                      V2 to Sr3

                                      +

                                      V2 to Sr3

                                      NOTICE: Sr3 est un refacteur très profond de Sarracenia. Pour plus de détails sur la nature

                                      des changements, allez ici Brièvement, où v2 est une application écrite en python qui avait une petite installation d’extension, diff --git a/fr/CommentFaire/index.html b/fr/CommentFaire/index.html index e10d4396f..60e1c2cee 100644 --- a/fr/CommentFaire/index.html +++ b/fr/CommentFaire/index.html @@ -8,9 +8,9 @@ - + - + @@ -119,7 +119,7 @@ }

                                      -

                                      Comment Faire

                                      +

                                      Comment Faire

                                      Contents:

                                        diff --git a/fr/CommentFaire/source.html b/fr/CommentFaire/source.html index 88274bdd0..08036b585 100644 --- a/fr/CommentFaire/source.html +++ b/fr/CommentFaire/source.html @@ -8,9 +8,9 @@ - + - + @@ -123,9 +123,9 @@ }
                                        -

                                        Sources de données

                                        +

                                        Sources de données

                                        -

                                        Injection de données dans un réseau de pompes MetPX-Sarracenia

                                        +

                                        Injection de données dans un réseau de pompes MetPX-Sarracenia

                                        Warning

                                        FIXME : Les sections manquantes sont mises en surbrillance par FIXME. @@ -138,13 +138,13 @@

                                        Injection de données dans un réseau de pompes MetPX-Sarracenia -

                                        Enregistrement de révision

                                        +

                                        Enregistrement de révision

                                        version:

                                        UNKNOWN

                                        date:
                                        -

                                        Aug 16, 2023

                                        +

                                        Aug 18, 2023

                                        Une pompe de données Sarracenia est un serveur Web (ou sftp) avec des notifications pour que les @@ -197,7 +197,7 @@

                                        Enregistrement de révision -

                                        Injection SFTP

                                        +

                                        Injection SFTP

                                        L’utilisation directe de la commande sr_post(1) est le moyen le plus simple d’injecter des données dans le réseau de pompes. Pour utiliser sr_post, vous devez savoir:

                                          @@ -293,7 +293,7 @@

                                          Injection SFTP -

                                          Injection HTTP

                                          +

                                          Injection HTTP

                                          Si nous prenons un cas similaire, mais dans ce cas, il y a un espace accessible http, les étapes sont les mêmes ou même plus simples si aucune authentification n’est requise pour la pompe pour acquérir les données. Il faut installer un serveur Web d’une sorte ou d’une autre.

                                          @@ -340,7 +340,7 @@

                                          Injection HTTP -

                                          Interrogation de sources externes

                                          +

                                          Interrogation de sources externes

                                          Certaines sources sont intrinsèquement éloignées, et nous sommes incapables de les intéresser ou de les affecter. On peut configurer sr_poll pour extraire des données de sources externes, généralement des sites Web. La commande sr_poll s’exécute généralement comme un singleton qui suit les nouveautés dans une arborescence de source @@ -356,7 +356,7 @@

                                          Interrogation de sources externes -

                                          Messages de rapport

                                          +

                                          Messages de rapport

                                          Si le sr_post a fonctionné, cela signifie que la pompe a accepté de jeter un coup d’œil sur votre dossier. Pour savoir où vont vos données par la suite, il faut examiner le fichiers de journalisation de la source. Il est également important de noter que la pompe initiale, ou toute autre pompe @@ -377,7 +377,7 @@

                                          Messages de rapport -

                                          Fichiers volumineux

                                          +

                                          Fichiers volumineux

                                          Les fichiers plus volumineux ne sont pas envoyés en tant que bloc unique. Ils sont envoyés en pièces et chaque pièce a une empreinte digitale, de sorte que lorsque les fichiers sont mis à jour, les parties inchangées ne pas pas envoyé à nouveau. Il existe un seuil par défaut intégré dans les commandes sr_, @@ -392,7 +392,7 @@

                                          Fichiers volumineux -

                                          Fiabilité et sommes de contrôle

                                          +

                                          Fiabilité et sommes de contrôle

                                          Chaque donnée injectée dans le réseau de pompage doit avoir une empreinte digitale unique (ou somme de contrôle). Les données circuleront si elles sont nouvelles, et déterminer si les données sont nouvelles est basé sur l’empreinte digitale. Pour obtenir de la fiabilité dans un réseau sarracenia, plusieurs sources indépendantes sont provisionnées. @@ -444,7 +444,7 @@

                                          Fiabilité et sommes de contrôle -

                                          En-têtes d’utilisateur

                                          +

                                          En-têtes d’utilisateur

                                          Que se passe-t-il s’il y a un élément de métadonnées qu’une source de données a choisi pour une raison quelconque de ne pas inclure dans la hiérarchie des noms de fichiers ? Comment les consommateurs de données peuvent-ils connaître ces informations sans avoir à télécharger le fichier afin de déterminer qu’il n’est pas intéressant. Un exemple serait les @@ -470,7 +470,7 @@

                                          En-têtes d’utilisateur -

                                          Considérations relatives à l’efficacité

                                          +

                                          Considérations relatives à l’efficacité

                                          Il n’est pas recommandé de mettre une logique trop complexe dans les scripts du plugin, car ils s’exécutent de manière synchrone avec les opérations post et receive. Notez que l’utilisation des installations intégrées d’AMQP (en-têtes) est faite pour être explicitement aussi efficace que possible. À titre d’exemple extrême, inclure du code XML codé dans les messages de notification @@ -493,7 +493,7 @@

                                          Considérations relatives à l’efficacité -

                                          Quickly Announcing Very Large Trees On Linux

                                          +

                                          Quickly Announcing Very Large Trees On Linux

                                          Pour mettre en miroir de très grands arbres (millions de fichiers) en temps réel, il faut trop de temps pour des outils comme rsync ou trouvez pour parcourir et générer des listes de fichiers à copier. Sous Linux, on peut intercepter les appels pour des opérations de fichiers en utilisant la technique bien connue de la bibliothèque de shim. Cette technique fournit virtuellement des diff --git a/fr/CommentFaire/subscriber.html b/fr/CommentFaire/subscriber.html index 84c5a23b2..d914f4e57 100644 --- a/fr/CommentFaire/subscriber.html +++ b/fr/CommentFaire/subscriber.html @@ -8,9 +8,9 @@ - + - + @@ -123,22 +123,22 @@ }

                                          -

                                          Guide de l’abonné

                                          +

                                          Guide de l’abonné

                                          -

                                          Réception de données à partir d’une pompe de données MetPX-Sarracenia

                                          +

                                          Réception de données à partir d’une pompe de données MetPX-Sarracenia

                                          -

                                          Enregistrement de révision

                                          +

                                          Enregistrement de révision

                                          version:

                                          UNKNOWN

                                          date:
                                          -

                                          Aug 16, 2023

                                          +

                                          Aug 18, 2023

                                          -

                                          Introduction

                                          +

                                          Introduction

                                          Une pompe de données Sarracenia est un serveur Web avec des notifications pour que les abonnés sachent rapidement, quand de nouvelles données sont arrivées. Pour savoir quelles données sont déjà disponibles sur une pompe, il faut @@ -298,7 +298,7 @@

                                          Introduction -

                                          Ressources côté serveur allouées aux abonnés

                                          +

                                          Ressources côté serveur allouées aux abonnés

                                          Chaque configuration entraîne la déclaration des ressources correspondantes sur le broker, dont la durée de vie est contrôlée par le paramètre expire. La valeur par défaut expire est définie à 300 secondes pour éviter d’encombrer les serveurs avec de petites expér @@ -333,7 +333,7 @@

                                          Ressources côté serveur allouées aux abonnés -

                                          Utilisation de plusieurs configurations

                                          +

                                          Utilisation de plusieurs configurations

                                          Placez tous les fichiers de configuration, avec le suffixe .conf, dans un répertoire standard : ~/.config/sr3/subscribe/. Par exemple, s’il y a deux fichiers dans ce répertoire : dd_amis.conf et hpfx_amis.conf, on pourrait alors exécuter

                                          @@ -381,7 +381,7 @@

                                          Utilisation de plusieurs configurations -

                                          Livraison hautement prioritaire

                                          +

                                          Livraison hautement prioritaire

                                          Bien que le protocole Sarracenia ne fournisse pas de hiérarchisation explicite, l’utilisation de plusieurs files d’attentes offre des avantages similaires. Résultats de chaque configuration dans une déclaration de fil d’attente côté serveur. Regroupez les produits à la même priorité dans @@ -437,7 +437,7 @@

                                          Livraison hautement prioritaire -

                                          Affiner la sélection

                                          +

                                          Affiner la sélection

                                          Choisissez subtopics (qui sont appliquées sur le broker sans téléchargement de message de notification) pour affiner le nombre de messages de notification qui traversent le réseau pour accéder aux processus clients sarracenia. Les options reject et accept sont évaluées par les processus sr3 subscribe eux-mêmes, @@ -516,16 +516,16 @@

                                          Affiner la sélection

                                          -

                                          Perte de données

                                          +

                                          Perte de données

                                          -

                                          Panne trop longue

                                          +

                                          Panne trop longue

                                          L’expire détermine combien de temps la pompe de données conservera votre abonnement et file d’attente après une déconnexion. Le réglage doit être défini plus longtemps que la plus longue panne de votre flux doit survivre sans perte de données.

                                          -

                                          File d´attente trop important

                                          +

                                          File d´attente trop important

                                          Les performances d’un flux est important, car, au service d’Internet, le téléchargement lent d’un client affecte tous les autres, et quelques clients lents peuvent submerger une pompe de données. Il existe souvent des politiques de serveur en place @@ -587,7 +587,7 @@

                                          File d´attente trop important -

                                          Performance

                                          +

                                          Performance

                                          Il y a de nombreux aspects de la performance que nous n’aborderons pas ici.

                                          plus :

                                            @@ -604,7 +604,7 @@

                                            Performance -

                                            Optimiser la sélection des fichiers par processus

                                            +

                                            Optimiser la sélection des fichiers par processus

                                            • Souvent, les utilisateurs spécifient # comme subtopic, ce qui signifie que les accept/reject font tout le travail. Dans de nombreux cas, les utilisateurs ne sont intéressés que par une petite fraction des @@ -650,7 +650,7 @@

                                              Optimiser la sélection des fichiers par processus

                                          -

                                          Utiliser des instances

                                          +

                                          Utiliser des instances

                                          Une fois que vous avez optimisé ce qu’un seul abonné peut faire, si ce n’est pas assez rapide, utilisez l’option instances pour que davantage de processus participent au traitement. Avoir 10 ou 20 instances n’est pas un problème du tout. Le maximum @@ -670,7 +670,7 @@

                                          Utiliser des instancesNous n’avons pas encore eu besoin de faire évoluer le courtier lui-même.

                                          -

                                          Suppression des doublons haute performance

                                          +

                                          Suppression des doublons haute performance

                                          Une mise en garde à l’utilisation de instances est que suppress_duplicates est inefficace car les différentes occurrences d’un même fichier ne seront pas reçues par les même instances, et donc avec n instances, environ n-1/n doublons passeront à travers.

                                          @@ -698,7 +698,7 @@

                                          Suppression des doublons haute performance -

                                          Plugins

                                          +

                                          Plugins

                                          Le traitement des fichiers par défaut est souvent correct, mais il existe également des personnalisations prédéfinies qui peuvent être utilisé pour modifier le traitement effectué par les composants. La liste des plugins prédéfinis est dans un répertoire ‘plugins’ où que le paquet soit installé (consultable avec sr3 list) @@ -790,7 +790,7 @@

                                          Plugins -

                                          file_rxpipe

                                          +

                                          file_rxpipe

                                          Le plugin file_rxpipe pour sr3 permet à toutes les instances d’écrire les noms des fichiers téléchargés sur un canal nommé (¨named pipe¨ ). La configuration de cette configuration nécessite deux lignes dans un fichier de configuration sr3

                                          @@ -815,7 +815,7 @@

                                          file_rxpipe -

                                          Analyse d’antivirus

                                          +

                                          Analyse d’antivirus

                                          Un autre exemple d’utilisation facile d’un plugin est de réaliser une analyse antivirus. En supposant que ClamAV-daemon est installé, ainsi que le python3-pyclamd package, alors on peut ajouter ce qui suit à un @@ -873,7 +873,7 @@

                                          Analyse d’antivirus

                                          -

                                          Journalisation et débogage

                                          +

                                          Journalisation et débogage

                                          Comme les composants sr3 s’exécutent généralement en tant que démon (sauf s’ils sont appelés en mode foreground) on examine normalement son fichier journal pour savoir comment se déroule le traitement. Lorsque seulement une seule instance est en cours d’exécution, on peut afficher le journal du processus en cours d’exécution comme suit:

                                          @@ -950,7 +950,7 @@

                                          Journalisation et débogage -

                                          Réglage du débogage flowcb/log.py

                                          +

                                          Réglage du débogage flowcb/log.py

                                          En plus des options d’application, il existe un flowcb qui est utilisé par défaut pour la journalisation, qui a des options supplémentaires:

                                            @@ -970,7 +970,7 @@

                                            Réglage du débogage flowcb/log.py -

                                            Réglage du débogage moth

                                            +

                                            Réglage du débogage moth

                                            L’activation de logLevel pour déboguer l’ensemble de l’application entraîne souvent des fichiers journaux excessivement volumineux. Par défaut, la classe parent Messages Organized into Topic Hierarchies (Moth) pour les protocoles de messagerie, ignore l’option de débogage à l’échelle de l’application. Pour activer le débogage de la sortie de ces classes, il y a @@ -993,7 +993,7 @@

                                            Réglage du débogage moth -

                                            Métrique Housekeeping

                                            +

                                            Métrique Housekeeping

                                            Les rappels de flux peuvent implémenter un point d’entrée on_housekeeping. Ce point d’entrée est généralement une possibilité pour les rappels d’imprimer périodiquement des métriques. Le journal intégré et les rappels de surveillance des ressources, par exemple, donnent des lignes dans le journal comme suit

                                            @@ -1012,7 +1012,7 @@

                                            Métrique Housekeeping

                                          -

                                          Réception de fichiers redondants

                                          +

                                          Réception de fichiers redondants

                                          Dans les environnements où une grande fiabilité est requise, plusieurs serveurs sont souvent configurés pour fournir des services. L’approche Sarracenia pour la haute disponibilité est ´Active-Active´ en ce sens que toutes les sources sont en ligne @@ -1024,7 +1024,7 @@

                                          Réception de fichiers redondants -

                                          Proxys Web

                                          +

                                          Proxys Web

                                          La meilleure méthode pour travailler avec des proxys Web est de mettre ce qui suit dans le fichier default.conf:

                                          declare env HTTP_PROXY http://yourproxy.com
                                          @@ -1035,7 +1035,7 @@ 

                                          Proxys Web -

                                          Accès au niveau de l’API

                                          +

                                          Accès au niveau de l’API

                                          Sarracenia version 3 propose également des modules python qui peuvent être appelés à partir d’applications Python existantes.

                                          diff --git a/fr/CommentFaire/v2ASr3.html b/fr/CommentFaire/v2ASr3.html index ffd92d47f..727a5462e 100644 --- a/fr/CommentFaire/v2ASr3.html +++ b/fr/CommentFaire/v2ASr3.html @@ -8,9 +8,9 @@ - + - + @@ -137,7 +137,7 @@ }
                                          -

                                          Portage des plugins V2 vers Sr3

                                          +

                                          Portage des plugins V2 vers Sr3

                                          Ceci est un guide pour porter des plugins de Sarracenia version 2.X (metpx-sarracenia) vers Sarracenia version 3.x (metpx-sr3)

                                          @@ -189,14 +189,14 @@

                                          Portage des plugins V2 vers Sr3 -

                                          Placement de Fichier

                                          +

                                          Placement de Fichier

                                          v2 place les fichier de configuration sous ~/.config/sarra, et les fichiers d’état sous ~/.cache/sarra

                                          v3 place les fichier de configuration sous ~/.config/sr3, et les fichiers d’état sous ~/.cache/sr3

                                          v2 a une implémentation C de sarra appelée sarrac. L’implémentation C pour v3, est appelée sr3c, et est identique à celui de la v2, sauf qu’il utilise les emplacements de fichiers v3.

                                          -

                                          Différence de ligne de commande

                                          +

                                          Différence de ligne de commande

                                          En bref, le point d’entrée sr3 est utilisé pour démarrer / arrêter / évaluer les choses:

                                          v2:  sr_*component* start config
                                           
                                          @@ -212,7 +212,7 @@ 

                                          Différence de ligne de commande -

                                          Ce qui fonctionnera sans changement

                                          +

                                          Ce qui fonctionnera sans changement

                                          La première étape du portage d’une configuration subscribe/X vers v3, consiste simplement à copier le fichier de configuration de ~/.config/sarra à l’emplacement correspondant dans ~/.config/sr3 et essayez:

                                          sr3 show subscribe/X
                                          @@ -274,7 +274,7 @@ 

                                          Ce qui fonctionnera sans changement -

                                          Ce qui ne fonctionnera pas sans changement

                                          +

                                          Ce qui ne fonctionnera pas sans changement

                                          • do_* ils sont juste fondamentalement différents dans la v3.

                                          @@ -304,7 +304,7 @@

                                          Ce qui ne fonctionnera pas sans changement -

                                          Différences de codage entre les plugins dans v2 vs Sr3

                                          +

                                          Différences de codage entre les plugins dans v2 vs Sr3

                                          L’API pour ajouter ou personnaliser des fonctionnalités dans sr3 est très différente de la v2. En général, les plugins v3:

                                            @@ -651,7 +651,7 @@

                                            Différences de codage entre les plugins dans v2 vs Sr3

                                          -

                                          Fichiers de configuration

                                          +

                                          Fichiers de configuration

                                          Dans la v2, l’option de configuration principale pour déclarer un plugin est

                                          plugin X
                                           
                                          @@ -684,7 +684,7 @@

                                          Fichiers de configuration -

                                          Mise à niveau de la configuration

                                          +

                                          Mise à niveau de la configuration

                                          Une fois qu’un plugin est porté, on peut également faire en sorte que l’analyseur d’options v3 reconnaisse une invocation de plugin de v2 et la remplace par une invocation v3. En regardant dans /sarracenia/config.py#L144, il existe une structure de données convert_to_v3. Voici un exemple d’entrée

                                          @@ -704,7 +704,7 @@

                                          Mise à niveau de la configuration -

                                          Options

                                          +

                                          Options

                                          Dans la v2, on déclarerait les paramètres à utiliser par un plugin dans la routine __init__, avec le declare_option.:

                                          parent.declare_option('poll_usgs_stn_file')
                                          @@ -725,12 +725,12 @@ 

                                          Options -

                                          Mappage des points d’entrée v2 aux Callbacks v3

                                          +

                                          Mappage des points d’entrée v2 aux Callbacks v3

                                          Pour un aperçu complet des points d’entrée v3, jetez un coup d’œil : https://github.com/MetPX/sarracenia/blob/v03_wip/sarracenia/flowcb/__init__.py

                                          pour plus de détails.

                                          -

                                          on_message, on_post –> after_accept

                                          +

                                          on_message, on_post –> after_accept

                                          v2 : reçoit un message de notification, renvoie True/False

                                          v3: reçoit worklist

                                          modifie worklist.incoming @@ -760,7 +760,7 @@

                                          on_message, on_post –> after_accept -

                                          on_file –> after_work

                                          +

                                          on_file –> after_work

                                          v2 : reçoit un message de notification, renvoie True/False

                                          v3: reçoit worklist

                                          modifie worklist.ok (transfer has already happenned.) @@ -776,7 +776,7 @@

                                          on_file –> after_work

                                          -

                                          on_heartbeat -> on_housekeeping

                                          +

                                          on_heartbeat -> on_housekeeping

                                          v2: reçoit le parent comme argument.

                                          fonctionnera inchangé.

                                          @@ -791,7 +791,7 @@

                                          on_heartbeat -> on_housekeeping -

                                          do_poll -> poll

                                          +

                                          do_poll -> poll

                                          v2: appelez do_poll à partir du plugin.

                                            @@ -859,7 +859,7 @@

                                            do_poll -> poll -

                                            Traitement IP virtuel dans le poll

                                            +

                                            Traitement IP virtuel dans le poll

                                            Dans la v2, si vous avez une séléction de vIP, tous les nœuds participants pollent le serveur en amont et maintiennent la liste des fichiers actuels, ils ne publient tout simplement pas le résultat. Donc, si vous avez 8 serveurs partageant un vIP, les huit sont des poll, un peu triste. @@ -876,7 +876,7 @@

                                            Traitement IP virtuel dans le poll -

                                            on_html_page -> sous-classement de flowcb/poll

                                            +

                                            on_html_page -> sous-classement de flowcb/poll

                                            Voici un plugin v2 nsa_mls_nrt.py:

                                            #!/usr/bin/env python3
                                             
                                            @@ -1008,7 +1008,7 @@ 

                                            on_html_page -> sous-classement de flowcb/poll

                                          -

                                          on_line -> sous-classement de poll

                                          +

                                          on_line -> sous-classement de poll

                                          Comme on_html_page ci-dessus, toutes les utilisations de on_line dans la version précédente concernaient le reformatage des lignes pour qu’elles puissent être analysées. La routine on_line peut être sous-classé de la même manière pour le remplacer. Il fallait modifier la chaîne parent.line @@ -1019,7 +1019,7 @@

                                          on_line -> sous-classement de poll -

                                          do_send -> send:

                                          +

                                          do_send -> send:

                                          v2 : do_send peut être une routine autonome ou associée à un type de protocole

                                          • basé sur registered_as() afin que la destination détermine si elle est utilisée ou non.

                                          • @@ -1043,7 +1043,7 @@

                                            do_send -> send: -

                                            do_download -> download:

                                            +

                                            do_download -> download:

                                            créer une classe flowCallback avec un point d’entrée download.

                                            • accepte un seul message de notification comme argument.

                                            • @@ -1078,7 +1078,7 @@

                                              do_download -> download: -

                                              DESTFNSCRIPT

                                              +

                                              DESTFNSCRIPT

                                              DESTFNSCRIPT est refondu en tant que point d’entrée flowcb, où la directive est maintenant formatée d’une manière similaire au flowcallback dans la configuration

                                              configuration V2:

                                              @@ -1155,7 +1155,7 @@

                                              DESTFNSCRIPT -

                                              v3 seulement: post,gather

                                              +

                                              v3 seulement: post,gather

                                              Le polling/posting est en fait effectuée dans des classes de rappel de flux (flowcb). Le statut de sortie n’a pas d’importance, toutes ces routines seront appelées dans l’ordre.

                                              Le retour d’un gather est une liste de messages de notification à ajouter à worklist.incoming

                                              @@ -1173,9 +1173,9 @@

                                              v3 seulement: post,gather -

                                              v3 Exemples complexes

                                              +

                                              v3 Exemples complexes

                                              -

                                              flowcb/nodupe

                                              +

                                              flowcb/nodupe

                                              suppression des doublons dans la v3, a:

                                              • @@ -1186,7 +1186,7 @@

                                                flowcb/nodupe -

                                                flowcb/retry

                                                +

                                                flowcb/retry

                                                • dispose d’une fonction after_accept pour ajouter des messages de notification à la @@ -1199,7 +1199,7 @@

                                                  flowcb/retry -

                                                  Table of v2 and sr3 Equivalents

                                                  +

                                                  Table of v2 and sr3 Equivalents

                                                  Voici un aperçu des plugins inclus dans Sarracenia, On peut parcourir les deux arbres, et à l’aide du tableau ci-dessous, peut examiner, comparer et contraster les implémentations.

                                                  diff --git a/fr/Contribution/AMQPprimer.html b/fr/Contribution/AMQPprimer.html index 77fde2ea6..dd8d81552 100644 --- a/fr/Contribution/AMQPprimer.html +++ b/fr/Contribution/AMQPprimer.html @@ -8,9 +8,9 @@ - + - + @@ -127,7 +127,7 @@ }
                                                  -

                                                  AMQP - Introduction à sarracénia

                                                  +

                                                  AMQP - Introduction à sarracénia

                                                  Il s’agit d’un briefing court mais plutôt dense pour expliquer la motivation de l’utilisation de l’AMQP par la pompe de données MetPX-Sarracenia. Sarracenia est essentiellement une application AMQP, @@ -170,14 +170,14 @@

                                                  AMQP - Introduction

                                                -

                                                Sélection des fonctionnalités AMQP

                                                +

                                                Sélection des fonctionnalités AMQP

                                                AMQP est un protocole universel de transmission de messages avec de nombreuses options pour prendre en charge de nombreux modèles de messagerie différents. MetPX-sarracenia spécifie et utilise un petit sous-ensemble de modèles AMQP. Un élément important du développement de Sarracenia a été de choisir parmi les nombreuses possibilités un petit sous-ensemble de méthodes qui sont générales et facile à comprendre, afin de maximiser le potentiel d’interopérabilité.

                                                -

                                                Analogie FTP

                                                +

                                                Analogie FTP

                                                Spécifier l’utilisation d’un protocole seul peut être insuffisant pour fournir suffisamment d’informations pour l’échange de données et l’interopérabilité. Par exemple, lors de l’échange de données via FTP, un certain nombre de choix doivent être fait au-delà du protocole.

                                                @@ -196,7 +196,7 @@

                                                Analogie FTP

                                                -

                                                AMQP: pas 1.0, mais 0.8 or 0.9

                                                +

                                                AMQP: pas 1.0, mais 0.8 or 0.9

                                                AMQP 1.0 standardise le protocole sur le fil, mais supprime toute normalisation des courtiers. Étant donné que l’utilisation de courtiers est essentielle à l’utilisation de Sarracenia, était un élément fondamental des normes antérieures, @@ -205,7 +205,7 @@

                                                AMQP: pas 1.0, mais 0 mais les courtiers de 0,9 et de post-0,9 pourraient bien interagir.

                                                -

                                                Échanges et files d’attente nommés

                                                +

                                                Échanges et files d’attente nommés

                                                Dans AMQP avant la version 1.0, de nombreux acteurs différents peuvent définir des paramètres de communication, tels que les échanges auquels publier, les files d’attente où les messages de notification s’accumulent et les liaisons entre les deux. Les applications et les utilisateurs déclarent et utilisent leurs échanges, files d’attente et liaisons. Tout cela a été abandonné @@ -228,7 +228,7 @@

                                                Échanges et files d

                                              -

                                              Échanges thématiques

                                              +

                                              Échanges thématiques

                                              Les échanges thématiques sont utilisés exclusivement. AMQP prend en charge de nombreux autres types d’échanges, mais la rubrique de sr_post est envoyée afin de prendre en charge le filtrage côté serveur à l’aide du filtrage par rubrique. À l’AMQP 1.0, les échanges thématiques @@ -244,7 +244,7 @@

                                              Échanges thématique Au moment de la rédaction de cet article : v02.post est le préfixe de rubrique pour les messages de notification actuels.

                                              -

                                              Peu de données

                                              +

                                              Peu de données

                                              Les messages AMQP contiennent des messages de notification, pas de données de fichier réelles. AMQP est optimisé pour et suppose de petits messages. Garder les messages petits permet un maximum de transmission de messages et permet aux clients d’utiliser des mécanismes de priorité basés sur le transfert de données, plutôt que sur les messages de notification. @@ -277,7 +277,7 @@

                                              Peu de données

                                              -

                                              Autres paramètres

                                              +

                                              Autres paramètres

                                              AMQP a de nombreux autres paramètres et une fiabilité pour un cas d’utilisation particulier est assuré en faisant les bons choix.

                                              -

                                              Mappage des concepts AMQP à Sarracenia

                                              +

                                              Mappage des concepts AMQP à Sarracenia

                                              ../../_images/AMQP4Sarra.svg

                                              Un serveur AMQP est appelé Broker. Broker est parfois utilisé pour désigner le logiciel, d’autres fois le serveur exécutant le logiciel broker (même confusion que serveur web.) Dans le diagramme ci-dessus, @@ -354,7 +354,7 @@

                                              Mappage des concepts

                                          -

                                          Sarracenia est une application MQP

                                          +

                                          Sarracenia est une application MQP

                                          Dans la version 2, MetPX-Sarracenia n’est qu’un léger wrapper/revêtement autour de l’AMQP. Dans la version 3, cela a été retravaillé et un pilote MQTT a été ajouté pour le rendre moins spécifique à l’AMQP.

                                          @@ -399,7 +399,7 @@

                                          Sarracenia est une a

                                        -

                                        Révision

                                        +

                                        Révision

                                        Si vous avez compris le reste du document, cela devrait avoir du sens pour vous :

                                        Un courtier AMQP est un processus de serveur qui héberge les échanges et les files d’attente utilisés pour acheminer les messages de notification @@ -410,9 +410,9 @@

                                        Révision

                                        -

                                        Annexe A : Contexte

                                        +

                                        Annexe A : Contexte

                                        -

                                        Pourquoi utiliser AMQP?

                                        +

                                        Pourquoi utiliser AMQP?

                                        • standard ouvert, multiples implémentations libres.

                                        • transmission de messages à faible latence.

                                        • @@ -423,7 +423,7 @@

                                          Pourquoi utiliser AM

                                        -

                                        D’où vient l’AMQP?

                                        +

                                        D’où vient l’AMQP?

                                        • Norme ouvertes international du monde financier.

                                        • De nombreux systèmes propriétaires similaires existent, AMQP construit pour échapper au verrouillage. @@ -434,17 +434,17 @@

                                          D’où vient l’AM

                                        -

                                        Pile Intel/Cray HPC

                                        +

                                        Pile Intel/Cray HPC

                                        Intel/Cray HPC stack

                                        ../../_images/IntelHPCStack.png
                                        -

                                        OpenStack

                                        +

                                        OpenStack

                                        AMQP is the messaging technology chosen by the OpenStack cloud.

                                        ../../_images/OpenStackArch.png
                                        -

                                        Comment adopter l’AMQP

                                        +

                                        Comment adopter l’AMQP

                                        Adopter AMQP ressemble plus à l’adoption de XML qu’à l’adoption de FTP. l’Interopérabilité FTP est facile car les choix sont limités. Avec XML, cependant, vous obtenez plus de palette que de peinture. Beaucoup de dialectes différents, méthodes de schéma, etc… XML sera valide et analysé, mais sans diff --git a/fr/Contribution/Design.html b/fr/Contribution/Design.html index 87c30699f..4af228189 100644 --- a/fr/Contribution/Design.html +++ b/fr/Contribution/Design.html @@ -8,9 +8,9 @@ - + - + @@ -130,7 +130,7 @@

                                        Status: Draft

                                        -

                                        1 Conception Strawman

                                        +

                                        1 Conception Strawman

                                        Ce document reflète la conception actuelle résultant de discussions et de réflexions à un niveau plus détaillé que le document d’esquisse. Voir Aperçu pour une vue d’ensemble des exigences de conception. Voir ‘cas d’utilisation use-cases.html.html pour @@ -179,7 +179,7 @@

                                        -

                                        1.1 Hypothèses/contraintes

                                        +

                                        1.1 Hypothèses/contraintes

                                        • Existe-t-il des systèmes de fichiers en cluster disponibles partout ? Non.

                                        • @@ -215,7 +215,7 @@

                                        -

                                        1.2 Nombre de commutateurs

                                        +

                                        1.2 Nombre de commutateurs

                                        L’application est censée prendre en charge n’importe quel nombre de topologies, c’est-à-dire n’importe quel nombre de pompes S = 0,1,2,3 peut exister entre l’origine et la livraison finale, et faire ce qu’il faut.

                                        @@ -247,7 +247,7 @@

                                        -

                                        1.3 Sélection des fonctionnalités AMQP

                                        +

                                        1.3 Sélection des fonctionnalités AMQP

                                        AMQP est un protocole universel de transmission de messages avec de nombreuses options différentes pour prendre en charge de nombreuses différents modèles de messagerie. MetPX-sarracenia spécifie et utilise un petit sous-ensemble de modèles AMQP. En effet, un élément important du développement de la sarracenia a été de choisir parmi les @@ -314,7 +314,7 @@

                                        -

                                        1.4 Application

                                        +

                                        1.4 Application

                                        Description de la logique d’application pertinente pour la discussion. Il existe un “plan de contrôle” où les messages de notification concernant les nouvelles données disponibles sont mises en place et les messages de journal signalant l’état des transferts des mêmes données sont acheminés entre @@ -377,7 +377,7 @@

                                        -

                                        1.5 Routage

                                        +

                                        1.5 Routage

                                        Il existe deux flux distincts à acheminer : les messages de notification et les journaux. L’en-tête suivant dans les messages concerne le routage, qui est défini dans tous les messages.

                                        @@ -397,7 +397,7 @@

                                        -

                                        1.5.1 Routage des publications

                                        +

                                        1.5.1 Routage des publications

                                        Le routage des publications est le routage des messages de notification annoncés par les données sources. Les données correspondant à la source qui suivent la même séquence de pompes que les messages de notification elles-mêmes. Lorsqu’un message de notification est traité sur une pompe, il est téléchargé, puis le @@ -433,7 +433,7 @@

                                        -

                                        1.5.2 Journaux de routage

                                        +

                                        1.5.2 Journaux de routage

                                        Les messages de journal sont définis dans la page de manuel sr_log(7). Ils sont émis par les consommateurs à la fin, ainsi que des feeders lorsque les messages traversent les pompes. Les messages de journal sont publiés sur l’échange xl_<user> et après validation du journal mis en fil d’attente pour l’échange XLOG.

                                        @@ -452,9 +452,9 @@

                                        -

                                        1.6 Modèle de sécurité

                                        +

                                        1.6 Modèle de sécurité

                                        -

                                        1.6.1 Utilisateurs, files d’attente et échanges

                                        +

                                        1.6.1 Utilisateurs, files d’attente et échanges

                                        Chaque utilisateur Alice, sur un courtier auquel elle a accès :
                                        • a un xs_Alice d’échange, où elle écrit ses messages de notification et lit ses journaux.

                                        • @@ -479,7 +479,7 @@

                                          -

                                          1.6.2 Pré-validation

                                          +

                                          1.6.2 Pré-validation

                                          La pré-validation fait référence aux contrôles de sécurité et d’exactitude effectués sur les informations fournies par le message de notification avant le téléchargement des données elles-mêmes. Certains outils peuvent appeler cela validation des messages

                                          @@ -528,7 +528,7 @@

                                          -

                                          1.6.3 Post-Validation

                                          +

                                          1.6.3 Post-Validation

                                          Lorsqu’un fichier est téléchargé, avant de l’annoncer à nouveau pour des sauts ultérieurs, il passe par une analyse. Les outils peuvent appeler ceci validation de fichier:

                                          @@ -544,7 +544,7 @@

                                          -

                                          1.6.4 Validation du journal

                                          +

                                          1.6.4 Validation du journal

                                          Lorsqu’un client comme sarra ou subscribe termine une opération, il crée un message de journal correspondant au résultat de l’opération. (C’est une granularité beaucoup plus faible qu’un fichier journal local.) Il est important qu’un client ne puisse pas usurper l’identité d’un autre @@ -578,7 +578,7 @@

                                          -

                                          1.6.5 Transfert de données privé vs public

                                          +

                                          1.6.5 Transfert de données privé vs public

                                          Dans le passé, les transferts ont été publics, il s’agissait simplement de partager des informations publiques. Une exigence cruciale du paquet est de prendre en charge les copies de données privées, lorsque les fins du transfert ne sont pas partagées avec d’autres personnes arbitraires.

                                          @@ -617,7 +617,7 @@

                                          -

                                          1.6.6 Accès privé HTTPS

                                          +

                                          1.6.6 Accès privé HTTPS

                                          Note

                                          FIXME: Pas encore conçu. @@ -632,7 +632,7 @@

                                          -

                                          1.7 Topologies

                                          +

                                          1.7 Topologies

                                          Questions… Il existe de nombreux choix pour la disposition des clusters. On peut faire H/A simple sur une paire de nœuds, simple actif/passif ? On peut aller à des conceptions évolutives sur un tableau de nœuds, ce qui nécessite une charge d’équilibreur avant les nœuds de traitement. @@ -676,7 +676,7 @@

                                          -

                                          1.7.1 Autonome

                                          +

                                          1.7.1 Autonome

                                          Dans une configuration autonome, il n’y a qu’un seul nœud dans la configuration. J’exécute tous les composants et n’en partage aucun avec d’autres nœuds. Cela signifie que le courtier et les services de données tels que sftp et Apache sont sur un nœud.

                                          @@ -684,7 +684,7 @@

                                          -

                                          1.7.2 DDSR : Configuration de commutation/routage

                                          +

                                          1.7.2 DDSR : Configuration de commutation/routage

                                          Il s’agit d’une configuration plus évolutive impliquant plusieurs nœuds de Data Mover et potentiellement plusieurs brokers. Ces clusters ne sont pas des destinations de transferts de données, mais des intermédiaires. Les données circulent à travers eux, mais les interroger @@ -699,7 +699,7 @@

                                          -

                                          1.7.3 DDSR indépendant

                                          +

                                          1.7.3 DDSR indépendant

                                          Dans Independent DDSR, il existe un équilibreur de charge qui distribue chaque connexion entrante à un courtier individuel exécuté sur un seul nœud.

                                          DDSR - courtier

                                          @@ -719,7 +719,7 @@

                                          -

                                          1.7.4 Courtier partagé DDSR

                                          +

                                          1.7.4 Courtier partagé DDSR

                                          Bien que l’espace disque des nœuds de données reste indépendant, les courtiers sont regroupés pour former une entité logique unique.

                                          Sur tous les nœuds, les processus de déplacement utilisent des échanges et des files d’attente communs.

                                          @@ -744,7 +744,7 @@

                                          -

                                          1.7.5 DD : Configuration de la diffusion des données (AKA : Data Mart)

                                          +

                                          1.7.5 DD : Configuration de la diffusion des données (AKA : Data Mart)

                                          La configuration de déploiement sr est davantage une configuration de point de terminaison. Chaque nœud est censé : Avoir une copie complète de toutes les données téléchargées par tous les nœuds. Donner une vue unifiée rend ca beaucoup plus compatible avec une variété de méthodes d’accès, telles qu’un navigateur de fichiers (sur HTTP, @@ -771,7 +771,7 @@

                                          -

                                          1.7.6 DD indépendant

                                          +

                                          1.7.6 DD indépendant

                                          • L’équilibreur de charge transmet les demandes entrantes à plusieurs configurations Standalone_.

                                          • @@ -797,7 +797,7 @@

                                            -

                                            1.7.7 Shared-Broker DD

                                            +

                                            1.7.7 Shared-Broker DD

                                            • Un seul broker en cluster est partagé par tous les nœuds.

                                            • @@ -828,7 +828,7 @@

                                              -

                                              1.7.8 DD de données partagées

                                              +

                                              1.7.8 DD de données partagées

                                              • L’équilibreur de charge transmet la requête entrante à plusieurs nœuds.

                                              • @@ -842,7 +842,7 @@

                                                -

                                                1.7.9 SEP: Shared End-Point Configuration

                                                +

                                                1.7.9 SEP: Shared End-Point Configuration

                                                La configuration SEP, tous les nœuds de déplacement sont directement accessibles aux utilisateurs. Le courtier ne fournit pas de service de données, juste un pur courtier de messages. Peut être appelé sans données, ou un bunny.

                                                diff --git a/fr/Contribution/Documentation.html b/fr/Contribution/Documentation.html index f6153ea67..9aeb1f6f8 100644 --- a/fr/Contribution/Documentation.html +++ b/fr/Contribution/Documentation.html @@ -8,9 +8,9 @@ - + - + @@ -126,9 +126,9 @@ }
                                                -

                                                Normes de documentation

                                                +

                                                Normes de documentation

                                                -

                                                Structure des dossiers

                                                +

                                                Structure des dossiers

                                                Avant de commencer à travailler avec la documentation, lire l’intégralité de l’article de documentation Divo (et les liens sur la barre latérale gauche). Cela ne prendra pas plus de 30 minutes et vous obtiendrez une compréhension complète de la structure, du style et du contenu attendus de la documentation ici.

                                                @@ -140,7 +140,7 @@

                                                Structure des dossiersTODO:Ajoutez des exemples de liens vers chacune des sections ci-dessous:

                                              -

                                              Traitement

                                              +

                                              Traitement

                                              Toute la documentation se trouve sous l’arborescence docs/source. Il est traité à l’aide de sphinx, invoqué à l’aide du Makefil dans docs/. On peut installer sphinx localement, et exécuter make pour construire localement et déboguer. Le résultat est produit dans docs/build/html:

                                              @@ -166,7 +166,7 @@

                                              Traitement -

                                              Tutoriels

                                              +

                                              Tutoriels

                                              • Orienté vers l’apprentissage, en particulier apprendre comment plutôt que d’apprendre cela.

                                              • Permettez à l’utilisateur d’apprendre en faisant pour le faire démarrer, assurez-vous que votre @@ -178,7 +178,7 @@

                                                Tutoriels -

                                                How2Guides (Comment Faire)

                                                +

                                                How2Guides (Comment Faire)

                                                • Axé sur le problème et l’objectif : “Je veux… Comment puis-je…” Différent des tutoriels parce que les tutoriels sont pour les débutants, et how2guides (comment faire) suppose une certaine connaissance @@ -191,7 +191,7 @@

                                                  How2Guides (Comment Faire) -

                                                  Explication

                                                  +

                                                  Explication

                                                  • Axé sur la compréhension: peut également être considéré comme des discussions. Version beaucoup plus détendue de la documentation où les concepts sont explorés à partir d’un niveau supérieur @@ -201,7 +201,7 @@

                                                    Explication -

                                                    Référence

                                                    +

                                                    Référence

                                                    • Style dictionnaire.

                                                    • Orienté vers l’information: descriptions des fonctionnalités déterminées par le code.

                                                    • @@ -209,7 +209,7 @@

                                                      Référence -

                                                      Contribution

                                                      +

                                                      Contribution

                                                      • Informations essentielles à l’amélioration et à la progression du projet Sarracenia, c’est-à-dire: pour ceux qui cherchent à développer Sarracenia.

                                                      • @@ -219,7 +219,7 @@

                                                        Contribution -

                                                        Processus

                                                        +

                                                        Processus

                                                        Le processus de développement consiste à écrire ce que l’on a l’intention de faire ou ce que l’on a fait dans un fichier reStructuredText dans /docs/Explanation/Design/. Idéalement, la discussion de l’information y agit @@ -234,7 +234,7 @@

                                                        Processus -

                                                        Guide de Style

                                                        +

                                                        Guide de Style

                                                        L’exécution sur la ligne de commande doit être écrite dans le style suivant:

                                                        Un commentaire initial décrivant les étapes ou processus suivants

                                                        $ command 1
                                                        @@ -260,7 +260,7 @@ 

                                                        Guide de Style -

                                                        Style de Code

                                                        +

                                                        Style de Code

                                                        Nous suivons généralement les standards PEP 8 pour la mise en forme du code, et on utilise YAPF pour reformater automatiquement le code. Une exception au PEP 8 est que nous utilisons une longueur de ligne de 119 caractères.

                                                        @@ -315,7 +315,7 @@

                                                        Style de Code -

                                                        Why rST?

                                                        +

                                                        Why rST?

                                                        reStructuredText a été choisi principalement parce qu’il prend en charge la création automatique d’une table des matières avec la directive ‘.. Table des matières::’. Comme beaucoup d’autres langages de Markup, il prend également en charge le style en ligne, @@ -324,7 +324,7 @@

                                                        Why rST? -

                                                        Localisation

                                                        +

                                                        Localisation

                                                        Ce projet est destiné à être traduit en Français et en anglais à un minimum tel qu’il est utilisé dans l’ensemble du gouvernement du Canada, qui possède ces deux langues officielles.

                                                        La documentation Française a la même structure de fichiers et les mêmes noms que la documentation anglaise, mais diff --git "a/fr/Contribution/D\303\251veloppement.html" "b/fr/Contribution/D\303\251veloppement.html" index 3be4367f8..e6aec792b 100644 --- "a/fr/Contribution/D\303\251veloppement.html" +++ "b/fr/Contribution/D\303\251veloppement.html" @@ -8,9 +8,9 @@ - + - + @@ -136,17 +136,17 @@ }

                                                        -

                                                        Guide du développeur MetPX-Sarracenia

                                                        +

                                                        Guide du développeur MetPX-Sarracenia

                                                        version:

                                                        UNKNOWN

                                                        date:
                                                        -

                                                        Aug 16, 2023

                                                        +

                                                        Aug 18, 2023

                                                        -

                                                        Outillage

                                                        +

                                                        Outillage

                                                        Pour pirater la source Sarracenia, vous avez besoin de:

                                                        • Un environnement de développement Linux, soit un poste de travail, soit une machine virtuelle quelconque. @@ -178,18 +178,18 @@

                                                          Outillage -

                                                          Documentation

                                                          +

                                                          Documentation

                                                          Normes de documentation existent dans /docs/Contribution/Documentation.rst. Le processus pour la construction locale des documents sont là, ainsi que les méthodes de maintenance du site Web en direct.

                                                          -

                                                          Où documenter les options

                                                          +

                                                          Où documenter les options

                                                          Les options sont documentées dans le style de dictionnaire sr3_options(7) par ordre alphabétique. Si cela en valait la peine, des exemples d’utilisation pourraient être ajoutés à d’autres guides.

                                                        -

                                                        Développement

                                                        +

                                                        Développement

                                                        En général, le flux de travail de développement consiste à obtenir un ordinateur portable ou une machine virtuelle où l’on peut exécuter les flow_tests (disponible auprès de http://github.com/MetPX/sr_insects ). La première étape lors de la configuration d’un environnement de développement s’agit de s’assurer que les @@ -197,7 +197,7 @@

                                                        Développement -

                                                        Flux de travail v2

                                                        +

                                                        Flux de travail v2

                                                        Le travail de développement terminé pour la version 2 est engagé sur la branche v2_dev, qui est utilisée pour produire des instantanés quotidiens. On ne devrait normalement pas engager de changements dans la direction v2_dev, mais plutôt les fusionner à partir d’une branche de travail.

                                                        @@ -220,7 +220,7 @@

                                                        Flux de travail v2 -

                                                        Flux de travail v3

                                                        +

                                                        Flux de travail v3

                                                        La prochaine version de Sarracenia est développée dans la branche v03_wip (travail en cours). Comme la refactorisation majeure est pratiquement terminée, le travail restant est maintenant entièrement constructif et tout le développement est coordonné par des issues exactement comme l’est la V2. Les problèmes propres à la v3 @@ -239,14 +239,14 @@

                                                        Flux de travail v3 -

                                                        sr_insects

                                                        +

                                                        sr_insects

                                                        Le référentiel sr_insects a sa propre base de données de problèmes, et le travail sur sr_insects est encouragé. Les versions 2 et 3 sont prises en charge sur la branche principale de sr_insects. Cette branche devrait être utilisé pour prendre en charge tout le développement dans les deux versions….

                                                        -

                                                        Installation locale

                                                        +

                                                        Installation locale

                                                        Il existe de nombreuses façons d’installer des paquets python sur un ordinateur. Différents développeurs préféreront différentes méthodes, et toutes les méthodes doivent être testées avant chaque version. Avant d´installer le paquet il faut généralement une librarie pour communiquer avec le courtier @@ -279,7 +279,7 @@

                                                        Installation locale -

                                                        Préparer une machine virtuelle Vanilla

                                                        +

                                                        Préparer une machine virtuelle Vanilla

                                                        Cette section décrit la création d’un environnement de test à utiliser dans un ordinateur virtuel. Une façon de construire une machine virtuelle est d’utiliser Multipass (https://multipass.run) En supposant que ce soit installé, on peut crée une machine virtuelle avec

                                                        @@ -389,7 +389,7 @@

                                                        Préparer une machine virtuelle Vanilla -

                                                        Python Wheel

                                                        +

                                                        Python Wheel

                                                        Si vous n’avez pas utilisé add_sr3.sh (qui construit un paquet debian), alors on peut utiliser cette procédure Pour une installation locale sur un ordinateur avec un Python Wheel pour les tests et le développement:

                                                        python3 setup.py bdist_wheel
                                                        @@ -406,7 +406,7 @@ 

                                                        Python Wheel -

                                                        Pip install locale

                                                        +

                                                        Pip install locale

                                                        Pour une installation locale sur un ordinateur, à l’aide d’un pip. Pour les tests et le développement:

                                                        pip3 install -e .
                                                        @@ -418,7 +418,7 @@ 

                                                        Pip install locale -

                                                        Debian/Ubuntu

                                                        +

                                                        Debian/Ubuntu

                                                        Pour une installation locale sur un ordinateur, en utilisant un paquet debian. Ce processus construit un .deb local dans le répertoire parent en utilisant les mécanismes Debian standard.

                                                          @@ -437,7 +437,7 @@

                                                          Debian/Ubuntu -

                                                          Commit de Code

                                                          +

                                                          Commit de Code

                                                          Que faut-il faire avant de s’engager dans la branche principale? Liste de contrôle:

                                                            @@ -457,7 +457,7 @@

                                                            Commit de Code -

                                                            Description des Tests sr_insects

                                                            +

                                                            Description des Tests sr_insects

                                                            Avant de valider du code dans la branche principale, en tant que mesure d’assurance qualité, il faut exécuter tous les autotests disponibles. On suppose que les modifications spécifiques apportées au code ont déjà passé les tests unitaires. Veuillez ajouter des autotests appropriés à ce processus pour refléter les nouveaux. @@ -494,13 +494,13 @@

                                                            Description des Tests sr_insects -

                                                            Unit

                                                            +

                                                            Unit

                                                            Le test unitaire dans sr_insects est le plus court qui prend environ une minute et ne nécessite pas beaucoup de configuration. Ce sont des tests de santé mentale du comportement du code. Prend généralement une minute ou deux sur un ordinateur portable.

                                                        -

                                                        Static Flow

                                                        +

                                                        Static Flow

                                                        Les tests static_flow sont un peu plus compliqués, testant plus de composants, utilisant un seul composants monothread de manière linéaire (toutes les données avancent uniformément.) Il devrait être plus simple pour identifier les problèmes car il n’y a pas de suppression et donc cela se prête bien @@ -508,7 +508,7 @@

                                                        Static Flow -

                                                        Flakey Broker

                                                        +

                                                        Flakey Broker

                                                        Les tests flakey_broker sont les mêmes que les static_flow, mais ralentis de sorte qu’ils durent quelques minutes de plus, et le courtier est arrêté et redémarré pendant que la publication se produit. Notez que post_log imprime avant qu’un message de notification ne soit publié (parce que post_log est @@ -516,7 +516,7 @@

                                                        Flakey Broker -

                                                        Dynamic Flow

                                                        +

                                                        Dynamic Flow

                                                        Le test dynamic_flow ajoute des fonctionnalités avancées : multi-instances, le composant winnow, les tests logiques de nouvelle tentative, et inclut également les suppressions de fichiers. La majeure partie de la documentation ici fait référence à l’exécution du dynamic_flow test, car c’est le plus @@ -709,7 +709,7 @@

                                                        Dynamic Flow

                                              -

                                              Exécution de tests de Flux

                                              +

                                              Exécution de tests de Flux

                                              Cette section documente ces étapes de manière beaucoup plus détaillée. Avant de pouvoir effectuer les tests sr_insects, certaines conditions préalables doivent être prises en compte. Notez qu’il existe une intégration Github Actions pour au moins la branche principale @@ -725,7 +725,7 @@

                                              Exécution de tests de Flux -

                                              Installer des serveurs sur un poste de travail

                                              +

                                              Installer des serveurs sur un poste de travail

                                              Pour préparer un ordinateur à exécuter le test de flux, il faut installer des logiciels et des configurations serveur. Ce même travail est effectué par travis/flow_autoconfig.sh qui est exécuté dans Préparer une machine virtuelle Vanilla mais si vous devez le configurer @@ -794,7 +794,7 @@

                                              Installer des serveurs sur un poste de travail -

                                              Configurer l’environnement de test de flux

                                              +

                                              Configurer l’environnement de test de flux

                                              Une fois l’environnement serveur établi, les tests de flux utilisent des transferts sftp vers localhost.

                                              Il est également nécessaire que l’accès ssh sans mot de passe soit configuré sur l’hôte de test pour l’utilisateur de système qui exécutera le test de flux. Cela peut être fait en créant une @@ -913,7 +913,7 @@

                                              Configurer l’environnement de test de flux -

                                              Exécuter un test de Flux

                                              +

                                              Exécuter un test de Flux

                                              Le script flow_check.sh lit les fichiers journaux de tous les composants démarrés et compare le nombre de messages de notification, à la recherche d’une correspondance dans les +- 10%. Il faut quelques minutes pour que la configuration s’exécute avant qu’il y ait suffisamment @@ -986,7 +986,7 @@

                                              Exécuter un test de Flux -

                                              Flow Cleanup

                                              +

                                              Flow Cleanup

                                              Une fois le test terminé, exécutez le script ./flow_cleanup.sh, qui tuera les serveurs et les démons en cours d’exécution et supprimera tous les fichiers de configuration installés pour le test de flux, toutes les files d’attente, les échanges et les journaux. Cela doit également être fait entre chaque exécution du test de flux:

                                              @@ -1101,7 +1101,7 @@

                                              Flow Cleanup -

                                              Longueur du test Dynamic Flow

                                              +

                                              Longueur du test Dynamic Flow

                                              Alors que la plupart des tests ont une durée fixe, le test de flux dynamique interroge une serveur distant et peut fonctionner pour n’importe quelle longueur souhaitée. La longueur du flow_test dynamique par défaut est de 1000 fichiers circulant dans les cas de test. En cas de développement rapide, @@ -1194,12 +1194,12 @@

                                              Longueur du test Dynamic Flow -

                                              Échantillon à volume élevé

                                              +

                                              Échantillon à volume élevé

                                              Essayer le test de flux avec un volume plus élevé de messages de notification (c’est-à-dire 100 000) est un pas de plus vers l’objectif d’avoir un test de flux exécuté en continu. Ceci est motivé par nos objectifs de test.

                                              -

                                              Limitation

                                              +

                                              Limitation

                                              Ubuntu a une limitation qui surpasse les montres inotify et que nous avons rencontrée dans #204 . Nous pouvons surmonter cela en définissant la variable sysctl associée. Tout d’abord, vérifiez quelle est la limite de votre système:

                                              @@ -1218,7 +1218,7 @@

                                              Limitationsysctl -p Et le système devrait maintenant prendre en charge un volume élevé d’événements iNotify.

                                              -

                                              Flow Test Coincé

                                              +

                                              Flow Test Coincé

                                              Parfois, les tests de flux (en particulier pour les grands nombres) sont bloqués en raison de problèmes avec le flux de données (où plusieurs fichiers obtiennent le même nom) et donc les versions antérieures suppriment les versions ultérieures et les nouvelles tentatives échouent toujours. Finalement, nous réussirons à nettoyer @@ -1312,7 +1312,7 @@

                                              Flow Test Coincé -

                                              Flow tests avec MQTT

                                              +

                                              Flow tests avec MQTT

                                              Les tests de flux peuvent être exécutés lorsque certains composants utilisent le protocole MQTT, au lieu d’AMQP.

                                              FIXME: étapes manquantes, plus de clarté requise.

                                                @@ -1325,7 +1325,7 @@

                                                Flow tests avec MQTT

                                              -

                                              Commits vers la branche principale

                                              +

                                              Commits vers la branche principale

                                              A part les fautes de frappe, les corrections de langue dans la documentation et l’incrémentation de la version, les développeurs ne sont pas censés s’engager sur Main (branche principale). Tous les travaux se produisent sur les branches de développement, et tous les tests doivent réussir avant @@ -1353,7 +1353,7 @@

                                              Commits vers la branche principale -

                                              Branches Principales

                                              +

                                              Branches Principales

                                              Il y a une longue discussion sur Quelle version est stable La configuration actuelle est qu’il y a quatre branches principales:

                                                @@ -1373,7 +1373,7 @@

                                                Branches Principales

                                              -

                                              Référentiels

                                              +

                                              Référentiels

                                              Pour les systèmes d’exploitation Ubuntu, le site launchpad.net est le meilleur moyen de fournir des packages entièrement intégrés (construit par rapport aux niveaux de correctifs actuels de toutes les dépendances (composants logiciels sur lesquels Sarracenia s’appuie) pour fournir toutes les fonctionnalités.)) Idéalement, @@ -1393,7 +1393,7 @@

                                              RéférentielsQuelle version est stable

                                              -

                                              Création d’une version

                                              +

                                              Création d’une version

                                              MetPX-Sarracenia est distribué de différentes manières, et chacun a son propre processus de construction. Les versions packagées sont toujours préférables aux versions uniques, car elles sont reproductibles.

                                              Lorsque le développement nécessite des tests sur une large gamme de serveurs, il est préférable de faire @@ -1410,7 +1410,7 @@

                                              Création d’une version

                                              incrémenter la version pour les futurs engagements à v2_dev ou v03_wip.

                                            -

                                            Schéma de contrôle de version

                                            +

                                            Schéma de contrôle de version

                                            Chaque version sera versionnée en tant que <protocol version>.<YY>.<MM> <segment>

                                            Où:

                                            -

                                            Définir la version

                                            +

                                            Définir la version

                                            Ceci est fait pour démarrer le développement d’une version.

                                            • git checkout v03_wip

                                            • @@ -1491,7 +1491,7 @@

                                              Définir la version -

                                              Releasing

                                              +

                                              Releasing

                                              Lorsque le développement d’une version est terminé. Les événements suivants doivent se produire :

                                              Une balise doit être créée pour identifier la fin du cycle

                                              git checkout v03_wip
                                              @@ -1513,7 +1513,7 @@ 

                                              Releasing -

                                              PyPi

                                              +

                                              PyPi

                                              Pypi Credentials vont dans ~/.pypirc. Exemple de contenu:

                                              [pypi]
                                               username: SupercomputingGCCA
                                              @@ -1546,9 +1546,9 @@ 

                                              PyPi

                                            -

                                            Launchpad

                                            +

                                            Launchpad

                                            -

                                            Build Automatisée

                                            +

                                            Build Automatisée

                                            • Assurez-vous que le miroir de code est mis à jour en vérifiant les Détails de l’importation en vérifiant Cette page pour Sarracenia

                                            • @@ -1563,7 +1563,7 @@

                                              Build Automatisée -

                                              Ubuntu 18.04

                                              +

                                              Ubuntu 18.04

                                              Pour ubuntu 18.04 (bionique), il y a quelques problèmes. La recette s’appelle: metpx-sr3-daily-bionic, et il prend la source à partir d’une branche différente : v03_launchpad. Pour chaque version, cette branche doit être rebasée à partir de v03_wip

                                              @@ -1588,7 +1588,7 @@

                                              Ubuntu 18.04 -

                                              Création d’un programme d’installation Windows

                                              +

                                              Création d’un programme d’installation Windows

                                              On peut également construire un programme d’installation Windows avec cela script. Il doit être exécuté à partir d’un système d’exploitation Linux (de préférence Ubuntu 18) @@ -1614,7 +1614,7 @@

                                              Création d’un programme d’installation WindowsLe paquet final doit être placé dans le répertoire build/nsis.

                                            -

                                            Builds quotidiennes

                                            +

                                            Builds quotidiennes

                                            Les builds quotidiennes sont configurées à l’aide de cette recette Python et cette recette pour C et @@ -1623,7 +1623,7 @@

                                            Builds quotidiennes -

                                            Processus manuel

                                            +

                                            Processus manuel

                                            Le processus de publication manuelle des packages sur Launchpad ( https://launchpad.net/~ssc-hpc-chp-spc ) implique un ensemble d’étapes plus complexes, et donc le script pratique publish-to-launchpad.sh sera le moyen le plus simple de le faire. Actuellement, les seules versions prises en charge sont trusty et xenial. @@ -1654,14 +1654,14 @@

                                            Processus manuel -

                                            Rétroportage d’une dépendance

                                            +

                                            Rétroportage d’une dépendance

                                            Exemple:

                                            backportpackage -k<key id> -s bionic -d xenial -u ppa:ssc-hpc-chp-spc/ubuntu/metpx-daily librabbitmq
                                             
                                            -

                                            Création d’un RPM

                                            +

                                            Création d’un RPM

                                            Ce processus est actuellement un peu maladroit, mais il peut fournir des packages RPM utilisables. Exemple de création d’une image multipasse pour fedora à construire avec:

                                            fractal% multipass launch -m 8g --name fed34 https://mirror.csclub.uwaterloo.ca/fedora/linux/releases/34/Cloud/x86_64/images/Fedora-Cloud-Base-34-1.2.x86_64.raw.xz
                                            @@ -1740,7 +1740,7 @@ 

                                            Création d’un RPM -

                                            github

                                            +

                                            github

                                            Cliquez sur Releases, modifiez la release :

                                            • Devrions-nous avoir des noms de sortie?

                                            • @@ -1753,9 +1753,9 @@

                                              github

                                            -

                                            Environnement de développement

                                            +

                                            Environnement de développement

                                            -

                                            Local Python

                                            +

                                            Local Python

                                            Utilisation d’une version non packagée :

                                            Note

                                            @@ -1764,17 +1764,17 @@

                                            Local Python -

                                            Windows

                                            +

                                            Windows

                                            Installez winpython à partir de github.io version 3.4 ou supérieure. Utilisez ensuite pip pour installer à partir de PyPI.

                                            -

                                            Conventions

                                            +

                                            Conventions

                                            Vous trouverez ci-dessous quelques pratiques de codage destinées à guider les développeurs lorsqu’il contribuent à Sarracenia. Ce ne sont pas des règles strictes, juste des conseils.

                                            -

                                            Quand signaler

                                            +

                                            Quand signaler

                                            sr_report(7) Les messages de notification doivent être émis pour indiquer la disposition finale des données elles-mêmes, et non des notifications ou des messages de rapport (ne signalez pas les messages de rapport, cela devient une boucle infinie!) Pour le débogage et d’autres informations, le fichier @@ -1783,7 +1783,7 @@

                                            Quand signaler -

                                            Adding a New Dependency

                                            +

                                            Adding a New Dependency

                                            Dependency Management is a complicated topic, because python has many different installation methods into disparate environments, and Sarracenia is multi-platform. Standard python practice for dependencies is to make them required by listing them in requirements.txt or setup.py, and require all users to install them. In most python applications, if a dependency is missing, it just crashes with a import failure message diff --git "a/fr/Contribution/Id\303\251eDeBase.html" "b/fr/Contribution/Id\303\251eDeBase.html" index 5d5b6da69..24f573e4c 100644 --- "a/fr/Contribution/Id\303\251eDeBase.html" +++ "b/fr/Contribution/Id\303\251eDeBase.html" @@ -8,9 +8,9 @@ - + - + @@ -121,7 +121,7 @@

                                            Status: Approved-Draft1-20150608

                                            -

                                            Idée de Base

                                            +

                                            Idée de Base

                                            MetPX-Sarracenia est un moteur de duplication ou de distribution de données qui exploite des technologies standard existantes (serveurs sftp et Web et courtiers AMQP) pour obtenir des livraison de messages en temps réel et une transparence de bout en bout dans les transferts de fichiers. Alors qu’à Sundew, chaque diff --git a/fr/Contribution/assemblage_on_part.html b/fr/Contribution/assemblage_on_part.html index 3f1b9aa79..1d37c0b0b 100644 --- a/fr/Contribution/assemblage_on_part.html +++ b/fr/Contribution/assemblage_on_part.html @@ -8,9 +8,9 @@ - + - + @@ -124,9 +124,9 @@ }

                                            -

                                            Réassemblage de fichiers

                                            +

                                            Réassemblage de fichiers

                                            -

                                            Composants

                                            +

                                            Composants

                                            sr_watch: Vous pouvez utiliser sr_watch pour surveiller un répertoire pour les fichiers de partition entrants (.Part) de sr_subscribe ou sr_sender, les deux ont la possibilité d’envoyer un fichier dans des partitions. Dans le fichier de configuration pour sr_watch les paramètres @@ -146,7 +146,7 @@

                                            Composants -

                                            Algorithme

                                            +

                                            Algorithme

                                            Après avoir été déclenché par un fichier de pièce téléchargé :

                                              @@ -190,7 +190,7 @@

                                              Algorithme -

                                              Test

                                              +

                                              Test

                                              Créer un fichier de configuration sr_watch selon le modèle ci-dessus. Démarrez le processus en tapant la commande suivante : `sr_watch foreground path/to/config_file.cfg`

                                              Ensuite, créez un fichier de configuration d’abonné et incluez `inplace off` afin que le fichier diff --git a/fr/Contribution/deltas.html b/fr/Contribution/deltas.html index af582a10f..a47fbd31f 100644 --- a/fr/Contribution/deltas.html +++ b/fr/Contribution/deltas.html @@ -8,9 +8,9 @@ - + - + @@ -129,7 +129,7 @@

                                              Status: Pre-Draft

                                              -

                                              Discussion sur la propagation de la modification de fichiers

                                              +

                                              Discussion sur la propagation de la modification de fichiers

                                              C’était une réflexion précoce sur la façon de gérer les mises à jour de fichiers. Les premières versions du protocole ne concernaient que des fichiers entiers. Lorsque les ensembles de fichiers sont suffisamment volumineux, des mises @@ -151,7 +151,7 @@

                                              Discussion sur la propagation de la modification de fichiers -

                                              Que se passe-t-il si chaque notification concerne un bloc, pas un fichier ?

                                              +

                                              Que se passe-t-il si chaque notification concerne un bloc, pas un fichier ?

                                              Expérience de Gedanken… par messages de blocage, plutôt que par fichiers entiers ? Que se passe-t-il si les messages que nous envoyons sont tous par bloc?

                                              Pourquoi est-ce vraiment cool?

                                              @@ -201,7 +201,7 @@

                                              Que se passe-t-il si chaque notification concerne un bloc, pas un fichier ?< les données du fichier .sr§. Sinon, il crée un .sr§ <blocknum>séparé

                                              -

                                              suffixe .sr§

                                              +

                                              suffixe .sr§

                                              Mais cela signifie qu’ils annoncent les pièces… Hmm… Les noms signifient maintenant quelque chose, Nous utilisons le caractère de section au lieu de partie. Pour éviter cela, choisissez un nom qui est plus inhabituel que .part quelque chose comme .sr§partnum (en utilisant utf-8, intéressant @@ -219,7 +219,7 @@

                                              suffixe .sr§ -

                                              Comment sélectionner Chunksize

                                              +

                                              Comment sélectionner Chunksize

                                              • Choix de la source?

                                              • @@ -253,7 +253,7 @@

                                                Comment sélectionner Chunksize -

                                                Si nous faisons des cksums par blocs, chemin à partir de v00

                                                +

                                                Si nous faisons des cksums par blocs, chemin à partir de v00

                                                compatibilité… amélioration… Les alertes v00.notify se résument à :

                                                v01.post pourrait être:

                                                @@ -279,7 +279,7 @@

                                                Si nous faisons des cksums par blocs, chemin à partir de v00 -

                                                Digression sur ZSync

                                                +

                                                Digression sur ZSync

                                                zsync est disponible dans les référentiels et zsync(1) est le client de téléchargement existant. zsyncmake(1) construit les signatures, avec une taille de bloc programmable.

                                                Il semble que zsync est utilisable tel quel?

                                                @@ -312,7 +312,7 @@

                                                Digression sur ZSync

                                              -

                                              Considérations relatives au serveur/protocole

                                              +

                                              Considérations relatives au serveur/protocole

                                              HTTP :

                                              – utilise la fonction de plage d’octets de HTTP. – FIXME: trouver des échantillons à partir d’autres e-mails.

                                              diff --git a/fr/Contribution/index.html b/fr/Contribution/index.html index f97bbde73..0706bc677 100644 --- a/fr/Contribution/index.html +++ b/fr/Contribution/index.html @@ -8,9 +8,9 @@ - + - + @@ -119,7 +119,7 @@ }
                                              -

                                              Contribuer à Sarracenia

                                              +

                                              Contribuer à Sarracenia

                                              Contenus:

                                                diff --git "a/fr/Contribution/mod\303\250le_de_page_man.html" "b/fr/Contribution/mod\303\250le_de_page_man.html" index a8cf12e91..453a71683 100644 --- "a/fr/Contribution/mod\303\250le_de_page_man.html" +++ "b/fr/Contribution/mod\303\250le_de_page_man.html" @@ -8,9 +8,9 @@ - + - + @@ -123,15 +123,15 @@ }
                                                -

                                                SR3_TITRE

                                                +

                                                SR3_TITRE

                                                -

                                                sr_titre

                                                +

                                                sr_titre

                                                Manual section:

                                                1

                                                Date:
                                                -

                                                Aug 16, 2023

                                                +

                                                Aug 18, 2023

                                                Version:

                                                UNKNOWN

                                                @@ -141,12 +141,12 @@

                                                sr_titre -

                                                SYNOPSIS

                                                +

                                                SYNOPSIS

                                                sr_titre foreground|start|stop|restart|reload|status configfile sr_titre cleanup|declare|setup configfile

                                                -

                                                DESCRIPTION

                                                +

                                                DESCRIPTION

                                                sr_title Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea @@ -184,7 +184,7 @@

                                                DESCRIPTION -

                                                CONFIGURATION

                                                +

                                                CONFIGURATION

                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim @@ -199,7 +199,7 @@

                                                CONFIGURATION -

                                                VARIABLES D’ENVIRONMENT

                                                +

                                                VARIABLES D’ENVIRONMENT

                                                Si la variable SR_CONFIG_EXAMPLES est définie, la directive add peut être utilisée pour copier des exemples dans le répertoire de l’utilisateur à des fins d’utilisation et/ou de personnalisation.

                                                Une entrée dans le fichier ~/.config/sarra/default.conf (créée via sr_subscribe edit default.conf ) @@ -210,7 +210,7 @@

                                                VARIABLES D’ENVIRONMENT -

                                                VOIR AUSSI

                                                +

                                                VOIR AUSSI

                                                sr3_report(7) - Format des messages de rapport.

                                                sr3_report(1) - Traiter les messages de rapport.

                                                sr3_post(1) - Publier des messages de notification de fichiers spécifiques.

                                                diff --git "a/fr/Contribution/probl\303\250mes_mqtt.html" "b/fr/Contribution/probl\303\250mes_mqtt.html" index 2b6355f4b..f97e7c126 100644 --- "a/fr/Contribution/probl\303\250mes_mqtt.html" +++ "b/fr/Contribution/probl\303\250mes_mqtt.html" @@ -8,9 +8,9 @@ - + - + @@ -125,9 +125,9 @@ }
                                                -

                                                Notes de mise en œuvre MQTT

                                                +

                                                Notes de mise en œuvre MQTT

                                                -

                                                v3 vs. v5

                                                +

                                                v3 vs. v5

                                                • La version 3 a des renvois envoyés sur une base chronométrée, toutes les quelques secondes (peut-être jusqu’à 20 secondes.) @@ -137,14 +137,14 @@

                                                  v3 vs. v5 -

                                                  Abonnements partagés

                                                  +

                                                  Abonnements partagés

                                                  • une fois que vous avez rejoint un groupe, vous y êtes jusqu’à ce que la session soit morte, même si vous vous déconnectez, Il empilera 1/n messages dans votre fil d’attente.

                                                -

                                                Contre-pression

                                                +

                                                Contre-pression

                                                1. Le client paho est asynchrone

                                                2. La meilleure pratique consiste à avoir des handlers de on_message très légers.

                                                3. diff --git a/fr/Contribution/v03.html b/fr/Contribution/v03.html index 50b85ee5a..ea5b9fdf3 100644 --- a/fr/Contribution/v03.html +++ b/fr/Contribution/v03.html @@ -8,9 +8,9 @@ - + - + @@ -137,9 +137,9 @@ }
                                                  -

                                                  Refactorisation de la version 3

                                                  +

                                                  Refactorisation de la version 3

                                                  -

                                                  Résumé

                                                  +

                                                  Résumé

                                                  Ce document s’adresse aux développeurs qui ont besoin de travailler à la fois avec du code v2 et le refactor qui s’appelait à l’origine v3, mais qui s’appelait finalement sr3. Pour les développeurs familiers avec la v2, le document peut servir un peu de carte @@ -162,7 +162,7 @@

                                                  Résumé -

                                                  objectifs d’opportunité

                                                  +

                                                  objectifs d’opportunité

                                                  • ajouter des choses pour le faire fonctionner comme une API?

                                                  • @@ -177,7 +177,7 @@

                                                    objectifs d’opportunité -

                                                    État du Code

                                                    +

                                                    État du Code

                                                    À partir du 24/08/2021, le code sr3 réussit tous les mêmes tests de flux que la v2 sur un ordinateur portable (sauf dynamique dans sr3 #407). Il exécute ces mêmes tests en utilisant les mêmes configurations, donc la compatibilité objectif est atteint. Sr3 accepte les URL du courtier mqtt et un problème est créé #389 pour amqp v1. @@ -291,7 +291,7 @@

                                                    État du Code -

                                                    V02 Plugin Points douloureux

                                                    +

                                                    V02 Plugin Points douloureux

                                                    L’écriture de plugins devrait être une activité simple pour les personnes ayant une connaissance rudimentaire de Python et compréhension de la tâche à accomplir. Dans la version 2, écrire des plugins est beaucoup plus difficile qu’il ne devrait l’être.

                                                    @@ -318,7 +318,7 @@

                                                    V02 Plugin Points douloureux -

                                                    Modifications apportées pour résoudre les problèmes

                                                    +

                                                    Modifications apportées pour résoudre les problèmes

                                                    • utilisez importlib à partir de python, moyen beaucoup plus standard d’enregistrer des plugins. maintenant les erreurs de syntaxe seront détectées comme n’importe quel autre module python importé, @@ -362,7 +362,7 @@

                                                      Modifications apportées pour résoudre les problèmes

                                                  -

                                                  Incompatibilités

                                                  +

                                                  Incompatibilités

                                                  Il n’est pas censé y en avoir. Il s’agit d’une liste en cours d’exécution de choses à corriger ou à documenter. gros changements:

                                                    @@ -792,7 +792,7 @@

                                                    Incompatibilités -

                                                    Fonctionnalités

                                                    +

                                                    Fonctionnalités

                                                    • Tous les composants sont maintenant dérivés de la classe flow et exécutent déjà l’algorithme général conçu comme la base de la v2, mais jamais implémenté en tant que tel.

                                                    • diff --git "a/fr/Contribution/\303\211volution.html" "b/fr/Contribution/\303\211volution.html" index 034f61088..055270639 100644 --- "a/fr/Contribution/\303\211volution.html" +++ "b/fr/Contribution/\303\211volution.html" @@ -8,9 +8,9 @@ - + - + @@ -120,7 +120,7 @@ }
                                                      -

                                                      Changements de conception depuis l’original (2015)

                                                      +

                                                      Changements de conception depuis l’original (2015)

                                                      Depuis 2022/03, la conception n’a pas beaucoup changé, mais la mise en œuvre de SR3 est totalement différent de la v2. Modifications de conception :

                                                        diff --git "a/fr/Explication/Aper\303\247u.html" "b/fr/Explication/Aper\303\247u.html" index 29325fb25..da8489846 100644 --- "a/fr/Explication/Aper\303\247u.html" +++ "b/fr/Explication/Aper\303\247u.html" @@ -8,9 +8,9 @@ - + - + @@ -124,7 +124,7 @@ }
                                                        -

                                                        Aperçu

                                                        +

                                                        Aperçu

                                                        MetPX-Sarracenia est une boîte à outils de gestion des publications/abonnements pour la publication de données en temps réel.

                                                        Sarracenia ajoute une couche de protocole de mise en fil d’attente de messages d’annonce de disponibilité de fichiers aux serveurs de fichiers et Web pour piloter des flux de travail qui transfèrent et transforment les données en continu @@ -141,7 +141,7 @@

                                                        AperçuSarracenia in 10 Minutes Video

                                                        -

                                                        Aperçu Détaillé

                                                        +

                                                        Aperçu Détaillé

                                                        MetPX-Sarracenia est un fichier de configuration et un service piloté par ligne de commande pour télécharger les fichiers au fur et à mesure qu’ils sont mis à disposition. On peut s’abonner à un serveur Web Sarracenia activé (appelé pompe de données) et sélectionner les données à diffuser à partir de celui-ci, @@ -226,7 +226,7 @@

                                                        Aperçu Détaillé -

                                                        Implémentations

                                                        +

                                                        Implémentations

                                                        Une partie de Sarracénia définit un message d’annonce avec AMQP comme transport. Il y a des implémentations multiples qui acceptent ses messages d’annonce:

                                                          @@ -252,7 +252,7 @@

                                                          Implémentations -

                                                          Pourquoi ne pas simplement utiliser Rsync ?

                                                          +

                                                          Pourquoi ne pas simplement utiliser Rsync ?

                                                          Il existe un certain nombre d’outils de réplication d’arbres qui sont largement utilisés, pourquoi en inventer un autre ? RSync, par exemple, est un outil fabuleux, et nous avons Il est fortement recommandé @@ -298,7 +298,7 @@

                                                          Pourquoi ne pas simplement utiliser Rsync ? -

                                                          Pas de FTP ?

                                                          +

                                                          Pas de FTP ?

                                                          Les protocoles de transport entièrement pris en charge par Sarracenia sont http(s) et SFTP (SSH File Transfer Protocol). Dans de nombreux cas, lorsque des données publiques sont échangées, FTP @@ -315,7 +315,7 @@

                                                          Pas de FTP ? -

                                                          Références et liens

                                                          +

                                                          Références et liens

                                                          D’autres logiciels, quelque peu similaires, aucun endossement ou jugement ne devrait être tiré de ces liens :

                                                          • diff --git a/fr/Explication/AssurerLaLivraison.html b/fr/Explication/AssurerLaLivraison.html index 736f4fe7b..8be1f3fcb 100644 --- a/fr/Explication/AssurerLaLivraison.html +++ b/fr/Explication/AssurerLaLivraison.html @@ -8,9 +8,9 @@ - + - + @@ -124,7 +124,7 @@ }
                                                            -

                                                            Assurer la livraison (inflight)

                                                            +

                                                            Assurer la livraison (inflight)

                                                            Le fait de ne pas établir correctement les protocoles de complétion de fichiers est une source commune d’incohérences intermittentes, difficile de diagnostiquer. Pour des transferts de fichiers fiables, Il est essentiel que l’expéditeur et @@ -132,7 +132,7 @@

                                                            Assurer la livraison (inflight) -

                                                            Tableau de Inflight

                                                            +

                                                            Tableau de Inflight

                                                            @@ -244,7 +244,7 @@

                                                            Tableau de Inflight -

                                                            Erreurs de configuration fréquentes

                                                            +

                                                            Erreurs de configuration fréquentes

                                                            Réglage de NONE lors de l’envoi à Sundew.

                                                            Le réglage correct ici est ‘.tmp’. Sans cela, presque tous les fichiers passeront correctement, diff --git a/fr/Explication/Concepts.html b/fr/Explication/Concepts.html index b8e65f437..828c5a821 100644 --- a/fr/Explication/Concepts.html +++ b/fr/Explication/Concepts.html @@ -8,9 +8,9 @@ - + - + @@ -127,7 +127,7 @@ }

                                                            -

                                                            Concepts généraux de Sarracenia

                                                            +

                                                            Concepts généraux de Sarracenia

                                                            Les pompes Sarracenia forment un réseau. Le réseau utilise des courtiers amqp ( broker ) Message Queueing Protocol (MQP) pour modéré les transferts de fichiers entre les pompes. On @@ -168,7 +168,7 @@

                                                            Concepts généraux de Sarracenia -

                                                            L’algorithme de Flux

                                                            +

                                                            L’algorithme de Flux

                                                            Tous les composants qui s’abonnent (subscribe, sarra, sarra, sender, shovel, winnow) partagent un code substantiel et ne diffèrent que par leur reglages de défaut. Chaque composant suit le même algorithme général, l’algorithme de Flux. @@ -181,7 +181,7 @@

                                                            L’algorithme de Flux

                                                            En plus de detail:

                                                            Protocoles d’assurance de la livraison (par ordre de préférence)

                                                            - + @@ -221,7 +221,7 @@

                                                            L’algorithme de Flux

                                                            Les composants ont juste des paramètres par défaut différents:

                                                            Tableau 1 : Algorithme pour tous les composantsTableau 1 : Algorithme pour tous les composants

                                                            PHASE

                                                            DESCRIPTION

                                                            - + @@ -359,7 +359,7 @@

                                                            L’algorithme de FluxHoare )

                                                            -

                                                            Multiple processes: Instances, Singletons and VIP

                                                            +

                                                            Multiple processes: Instances, Singletons and VIP

                                                            L’algorithme de flux ne se limite pas à un seul processus. De nombreux processus peuvent exécuter la même configuration de flux. Pour les composants sarra, sender, shovel et subscribe, on définit le paramètre instance au nombre de processus à exécuter @@ -391,7 +391,7 @@

                                                            Multiple processes: Instances, Singletons and VIP

                                                            -

                                                            Corréspondance des concepts AMQP avec Sarracenia

                                                            +

                                                            Corréspondance des concepts AMQP avec Sarracenia

                                                            Une chose que l’on peut dire sans risque est qu’il faut comprendre un peu l’AMQP pour travailler avec Sarracenia. L’AMQP est un sujet vaste et intéressant en soi. On ne tente pas de toute expliquer ici. Cette section fournit juste @@ -444,7 +444,7 @@

                                                            Corréspondance des concepts AMQP avec Sarracenia
                                                            -

                                                            AMQP v09 (Rabbitmq) Settings

                                                            +

                                                            AMQP v09 (Rabbitmq) Settings

                                                            MetPX-Sarracenia n’est qu’un léger revêtement autour des protocoles de fil d’attente des messages. Pour ceux qui sont familiers avec les protocoles sous-jacents, voici les mappages:

                                                            @@ -489,7 +489,7 @@

                                                            AMQP v09 (Rabbitmq) Settings -

                                                            MQTT (version =5) Paramètres

                                                            +

                                                            MQTT (version =5) Paramètres

                                                            MQTT est en fait un meilleur match à Sarracenia que AMQP, car il est entièrement basé sur des thèmes hiérarchiques. Alors que les sujets ne sont qu’un parmi une variété de choix pour les méthodes de routage dans AMQP.

                                                            @@ -516,7 +516,7 @@

                                                            MQTT (version =5) Paramètres -

                                                            Le flux à travers des Pompes

                                                            +

                                                            Le flux à travers des Pompes

                                                            ../../_images/sr3_exemple_de_flux.svg

                                                            Une description du flux conventionnel de messages par le biais d’échanges sur une pompe :

                                                              @@ -540,7 +540,7 @@

                                                              Le flux à travers des Pompes -

                                                              Utilisateurs et rôles

                                                              +

                                                              Utilisateurs et rôles

                                                              Les noms d’utilisateur pour l’authentification des pompes sont significatifs dans la mesure où ils sont visibles par tous. Ils sont utilisés dans le chemin du répertoire sur les arbres publics, ainsi que pour authentifier le courtier. diff --git a/fr/Explication/ConsiderationsDeployments.html b/fr/Explication/ConsiderationsDeployments.html index 8cb3f588d..ee6f13173 100644 --- a/fr/Explication/ConsiderationsDeployments.html +++ b/fr/Explication/ConsiderationsDeployments.html @@ -8,9 +8,9 @@ - + - + @@ -126,7 +126,7 @@ }

                                                              -

                                                              Considérations relatives au déploiement

                                                              +

                                                              Considérations relatives au déploiement

                                                              Les pompes de données Sarracenia sont souvent placées dans des réseaux de conceptions près des points de démarcation, pour fournir un point de démarcation au niveau de l’application pour permettre l’analyse de sécurité et limiter la visibilité dans différentes zones. Les pompes peuvent avoir tous les services incorporés sur un seul serveur, @@ -134,7 +134,7 @@

                                                              Considérations relatives au déploiement -

                                                              Engins de transport

                                                              +

                                                              Engins de transport

                                                              Les engins de transport sont les serveurs de données interrogés par les abonnés, par les utilisateurs finaux ou d’autres pompes. Les abonnés lisent les avis et récupèrent les données correspondantes, en utilisant le protocole indiqué. @@ -144,7 +144,7 @@

                                                              Engins de transport -

                                                              IPv6

                                                              +

                                                              IPv6

                                                              Une pompe d’échantillonnage a été implémentée sur un petit VPS avec IPv6 activé. Un client lointain connecté au courtier rabbitmq en utilisant IPv6, et l’abonnement au httpd apache httpd a travaillé sans problèmes. It just works. @@ -157,7 +157,7 @@

                                                              IPv6

                                                            -

                                                            Plans de Pompes

                                                            +

                                                            Plans de Pompes

                                                            Il existe de nombreux arrangements différents dans lesquels la Sarracenia peut être utilisée.

                                                            @@ -185,7 +185,7 @@

                                                            Plans de Pompes -

                                                            Dataless ou S=0

                                                            +

                                                            Dataless ou S=0

                                                            Une configuration qui n’inclut que le courtier AMQP. Cette configuration peut être utilisée lorsque les utilisateurs ont accès à de l’espace disque aux deux extrémités et n’ont besoin que d’un médiateur. Voici la configuration @@ -203,7 +203,7 @@

                                                            Dataless ou S=0 -

                                                            Dataless vannée

                                                            +

                                                            Dataless vannée

                                                            Un autre exemple de pompe sans données serait de fournir une sélection de produits à partir de deux pompes en amont en utilisant sr_winnow. Le sr_winnow est alimenté par des pelles provenant de sources en amont. les clients locaux @@ -217,7 +217,7 @@

                                                            Dataless vannée -

                                                            Dataless Avec Sr_poll

                                                            +

                                                            Dataless Avec Sr_poll

                                                            Le programme sr_poll peut sonder (vérifier si les produits sur un serveur distant sont prêts ou modifiés.) Pour chaque produit, il émet une avis sur la pompe locale. On pourrait utiliser sr_subscribe n’importe où, écoutez les @@ -225,7 +225,7 @@

                                                            Dataless Avec Sr_poll

                                                            -

                                                            Autonome

                                                            +

                                                            Autonome

                                                            Dans une configuration autonome, il n’y a qu’un seul nœud dans la configuration. Il exécute tous les composants et n’en partage aucun avec d’autres nœuds. Cela signifie le courtier et les services de données tels que sftp et sftp. @@ -239,7 +239,7 @@

                                                            Autonome -

                                                            Commutateurs/Routage

                                                            +

                                                            Commutateurs/Routage

                                                            Dans la configuration de commutation/routage, il y a une paire de machines qui font tourner un seul courtier pour un pool de moteurs de transfert. Ainsi, chaque transfert engine´s vue de l’espace fichier est local, mais les files @@ -260,16 +260,16 @@

                                                            Commutateurs/Routage

                                                            -

                                                            Considérations de sécurité

                                                            +

                                                            Considérations de sécurité

                                                            Cette section a pour but de donner un aperçu à ceux qui ont besoin d’effectuer un examen de sécurité. de l’application avant la mise en œuvre.

                                                            -

                                                            Client

                                                            +

                                                            Client

                                                            Toutes les informations d’identification utilisées par l’application sont stockées. dans le fichier ~/.config/sr3/credentials.conf, et ce fichier est forcé à 600 permissions.

                                                            -

                                                            Serveur/courtier

                                                            +

                                                            Serveur/courtier

                                                            L’authentification utilisée par les moteurs de transport est indépendante de celle utilisée pour les courtiers. Une sécurité l’évaluation des courtiers rabbitmq et des différents moteurs de transfert en service est nécessaire pour évaluer la sécurité globale d’un déploiement donné.

                                                            @@ -301,7 +301,7 @@

                                                            Serveur/courtier -

                                                            Validation des entrées

                                                            +

                                                            Validation des entrées

                                                            Les utilisateurs tels qu’Alice publient leurs messages sur leur propre échange (xs_Alice). Les processus qui lisent à partir de les échanges d’utilisateurs ont une responsabilité en matière de validation. Le processus qui lit xs_Alice @@ -344,7 +344,7 @@

                                                            Validation des entrées

                                                            -

                                                            Accès au système privilégié

                                                            +

                                                            Accès au système privilégié

                                                            Les utilisateurs ordinaires (sources et abonnés) exploitent sarra dans le cadre de leurs propres permissions sur le système, comme une commande scp. Le compte administrateur de la pompe fonctionne également sous un compte utilisateur linux @@ -360,7 +360,7 @@

                                                            Accès au système privilégié -

                                                            Glossaire

                                                            +

                                                            Glossaire

                                                            La documentation sur la Sarracenia utilise un certain nombre de mots d’une manière particulière. Ce glossaire devrait faciliter la compréhension du reste de la documentation.

                                                            diff --git a/fr/Explication/Glossaire.html b/fr/Explication/Glossaire.html index 45b2971b2..1c66ada9d 100644 --- a/fr/Explication/Glossaire.html +++ b/fr/Explication/Glossaire.html @@ -8,9 +8,9 @@ - + - + @@ -137,11 +137,11 @@ }
                                                            -

                                                            Glossaire

                                                            +

                                                            Glossaire

                                                            La documentation de Sarracenia utilise un certain nombre de mots d’une manière particulière. Ce glossaire devrait faciliter la compréhension du reste de la documentation.

                                                            -

                                                            AMQP

                                                            +

                                                            AMQP

                                                            AMQP est le Advanced Message Queuing Protocol, qui a émergé dans l’industrie du trading financier et a progressivement mûri. Les implémentations sont apparues pour la première fois en 2007, et il existe maintenant plusieurs implémentations open source. L’implémentation AMQP n’est pas la plomberie JMS. JMS standardise l’API utilisée par les programmeurs, mais pas le protocole on-the-wire. Ainsi @@ -162,7 +162,7 @@

                                                            AMQP cette fois-là, l’application s’appuiera sur des agents de messages standard antérieurs à la version 1.0, tels que rabbitmq.

                                                            -

                                                            Contre-Pression (anglais: Back Pressure)

                                                            +

                                                            Contre-Pression (anglais: Back Pressure)

                                                            Lorsqu’un nœud de pompage de données connaît une latence élevée, il est préférable de ne pas importer plus de données à un rythme élevé et aggraver la surcharge. Au lieu de cela, il faut s’abstenir d’accepter des messages à partir du nœud afin que ceux en amont maintiennent des files d’attente, et d’autres nœuds moins occupés peuvent prendre @@ -177,23 +177,23 @@

                                                            Contre-Pression (anglais: Back Pressure) -

                                                            Pompes sans Données (anglais: Dataless Pumps)

                                                            +

                                                            Pompes sans Données (anglais: Dataless Pumps)

                                                            Il y a des pompes qui n’ont pas de moteur de transport, elles ne font que servir de médiateur entre transferts pour d’autres serveurs, en mettant les messages à la disposition des clients et de serveurs dans leur zone de réseau.

                                                            -

                                                            Transferts sans Données (Dataless Transfers)

                                                            +

                                                            Transferts sans Données (Dataless Transfers)

                                                            Parfois, les transferts à travers les pompes se font sans utiliser d’espace local sur la pompe.

                                                            -

                                                            Latence (anglais: Latency)

                                                            +

                                                            Latence (anglais: Latency)

                                                            Temps écoulé entre l’insertion des données dans un réseau (l’heure à laquelle le message relatif à un fichier est publié pour la première fois) au moment où il est mis à disposition sur un point final. Nous voulons minimiser la latence dans les transferts, et une latence élevée peut indiquer des problèmes de configuration ou de capacité.

                                                            -

                                                            MQTT

                                                            +

                                                            MQTT

                                                            Le Message Queue Telemetry Transport (MQTT) version 5 est un deuxième protocole de fil d’attente de messages avec toutes les fonctionnalités nécessaire pour soutenir les modèles d’échange de données de sarracenia.

                                                              @@ -203,12 +203,12 @@

                                                              MQTT

                                                            -

                                                            Cartes Réseau (anglais: Network Maps)

                                                            +

                                                            Cartes Réseau (anglais: Network Maps)

                                                            Chaque pompe doit fournir une carte du réseau pour informer les utilisateurs de la destination connue qu’ils devraient faire de la publicité pour envoyer à. FIXME non défini jusqu’à présent.

                                                            -

                                                            Poste, Notice, Notification, Avis, Annonce

                                                            +

                                                            Poste, Notice, Notification, Avis, Annonce

                                                            Il s’agit de messages AMQP créés par post, poll ou watch pour permettre aux utilisateurs de savoir qu’un fichier particulier est prêt. Le format de ces messages AMQP est décrit par la page de manuel sr_post(7). Tous ces @@ -217,7 +217,7 @@

                                                            Poste, Notice, Notification, Avis, Annonce -

                                                            Pompe

                                                            +

                                                            Pompe

                                                            Une pompe est un hôte exécutant Sarracenia, soit un serveur AMQP rabbitmq, soit un MQTT comme mosquitto. Le middleware de mise en fil d’attente des messages s’appelle un broker. La pompe a des utilisateurs administratifs et gère le courtier MQP @@ -229,13 +229,13 @@

                                                            Pompe obtenir les données de cette pompe.

                                                            -

                                                            Réseau de Pompage (anglais: Pumping Network)

                                                            +

                                                            Réseau de Pompage (anglais: Pumping Network)

                                                            Un certain nombre de serveurs d’interconnexion exécutant la stack sarracenia. Chaque stack détermine la façon dont il achemine les éléments vers le suivant, de sorte que la taille ou l’étendue entière du réseau peut ne pas être connu à ceux qui y mettent des données.

                                                            -

                                                            Messages de Rapport (anglais: Report messages)

                                                            +

                                                            Messages de Rapport (anglais: Report messages)

                                                            Il s’agit de messages AMQP (dans le format sr_post(7)), avec le champ _report_ inclus) construit par les consommateurs de messages, pour indiquer ce qu’une pompe de données ou l’abonné a décidé de faire avec un message. Ils s’écoulent conceptuellement dans le @@ -244,7 +244,7 @@

                                                            Messages de Rapport (anglais: Report messages) -

                                                            Source

                                                            +

                                                            Source

                                                            Quelqu’un qui veut envoyer des données à quelqu’un d’autre. Ils le font en annonçant un arborescences de fichiers copiés du point de départ vers une ou plusieurs pompes dans le réseau. Les sources publicitaires produites indiquent aux autres exactement où @@ -256,13 +256,13 @@

                                                            Source

                                                            -

                                                            Abonnés (anglais: Subscribers)

                                                            +

                                                            Abonnés (anglais: Subscribers)

                                                            sont ceux qui examinent les publicités sur les fichiers disponibles, et téléchargent les fichiers qui les intéressent.

                                                            Les abonnés utilisent subscribe(1)

                                                            -

                                                            Sundew

                                                            +

                                                            Sundew

                                                            MetPX Sundew est l’ancêtre de Sarracenia. Il s’agit d’une pompe de données orientée TCP/IP WMO 386 pure. Les fichiers de configuration se ressemblent, mais les algorithmes et les concepts de routage sont très différents. MetPX est une push-only @@ -271,7 +271,7 @@

                                                            Sundewhere

                                                            -

                                                            WMO

                                                            +

                                                            WMO

                                                            L’Organisation météorologique mondiale, est une partie des Nations Unies qui fait de la surveillance, prévision et alerte environnementale et de temps de chaque pays en tant que membres. Depuis de nombreuses décennies, il y a un échange en temps réel de données météorologiques entre les pays, souvent même en temps de guerre. Les normes diff --git a/fr/Explication/GuideLigneDeCommande.html b/fr/Explication/GuideLigneDeCommande.html index f8d399a3c..10f42019e 100644 --- a/fr/Explication/GuideLigneDeCommande.html +++ b/fr/Explication/GuideLigneDeCommande.html @@ -8,9 +8,9 @@ - + - + @@ -132,9 +132,9 @@ }

                                                            -

                                                            Guide De Ligne De Commande

                                                            +

                                                            Guide De Ligne De Commande

                                                            -

                                                            SR3 - Tout

                                                            +

                                                            SR3 - Tout

                                                            sr3 est un outil de ligne de commande pour gérer les configurations Sarracenia individuellement ou en groupe. Pour l’utilisateur actuel, il lit sur tous les fichiers de configuration, des fichiers d’état et consulte la table de processus pour déterminer @@ -237,9 +237,9 @@

                                                            SR3 - Tout -

                                                            ACTIONS

                                                            +

                                                            ACTIONS

                                                            -

                                                            declare|setup

                                                            +

                                                            declare|setup

                                                            Appeler la fonction correspondante pour chacune des configurations:

                                                            $ sr3 declare
                                                               declare: 2020-09-06 23:22:18,043 [INFO] root declare looking at cpost/pelle_dd1_f04
                                                            @@ -267,7 +267,7 @@ 

                                                            declare|setup -

                                                            dump

                                                            +

                                                            dump

                                                            imprimer les trois structures de données utilisées par sr. Il existe trois listes :

                                                            • processus considérés comme liés à sr.

                                                            • @@ -313,7 +313,7 @@

                                                              dump

                                                            -

                                                            foreground

                                                            +

                                                            foreground

                                                            exécuter une seule instance d’une configuration unique en tant que processus interactif de journalisation à la sortie stderr/terminal actuelle. pour le débogage.

                                                            list

                                                            @@ -366,7 +366,7 @@

                                                            foreground -

                                                            show

                                                            +

                                                            show

                                                            Afficher tous les paramètres de configuration (le résultat de toutes les analyses… ce que les composants du flux voient réellement)

                                                            % sr3 show subscribe/q_f71
                                                             2022-03-20 15:30:32,507 1084652 [INFO] sarracenia.config parse_fil download_f20.conf:35 obsolete v2:"on_message msg_log" converted to sr3:"logEvents after_accept"
                                                            @@ -496,7 +496,7 @@ 

                                                            show

                                                            -

                                                            convert

                                                            +

                                                            convert

                                                            Conversion d’une configuration : les deux formats sont acceptés, ainsi que les fichiers d’inclusion (.inc)

                                                            $ sr3 convert poll/sftp_f62
                                                               2022-06-14 15:00:00,762 1093345 [INFO] root convert converting poll/sftp_f62 from v2 to v3
                                                            @@ -510,7 +510,7 @@ 

                                                            convert -

                                                            start

                                                            +

                                                            start

                                                            lancer tous les composants configurés:

                                                            $ sr3 start
                                                               gathering global state: procs, configs, state files, logs, analysis - Done.
                                                            @@ -519,7 +519,7 @@ 

                                                            start

                                                            -

                                                            stop

                                                            +

                                                            stop

                                                            arrêter tous les processus:

                                                            $ sr3 stop
                                                               gathering global state: procs, configs, state files, logs, analysis - Done.
                                                            @@ -530,7 +530,7 @@ 

                                                            stop

                                                            -

                                                            status

                                                            +

                                                            status

                                                            Exemple d’état OK (sr3 est en cours d’exécution)

                                                            fractal% sr3 status
                                                             status:
                                                            @@ -732,7 +732,7 @@ 

                                                            status

                                                            -

                                                            La ceuillette de messages

                                                            +

                                                            La ceuillette de messages

                                                            La plupart des composants Metpx Sarracenia boucle sur la ceuillette et/ou réception de messages AMQP. Habituellement, les messages d’intérêt sont dans le format d´une avis sr_post(7), annonçant la disponibilité @@ -755,7 +755,7 @@

                                                            La ceuillette de messages -

                                                            Réglage de Broker

                                                            +

                                                            Réglage de Broker

                                                            broker [amqp|mqtt]{s}://<user>:<password>@<brokerhost>[:port]/<vhost>

                                                            Un URI AMQP est utilisé pour configurer une connexion à une pompe à messages (AMQP broker). Certains composants de Sarracenia définissent une valeur par @@ -776,7 +776,7 @@

                                                            Réglage de Broker -

                                                            Configuration de fil d´attente

                                                            +

                                                            Configuration de fil d´attente

                                                            Une fois connecté à un courtier AMQP, l’utilisateur doit créer une fil d’attente.

                                                            Mise en fil d’attente sur broker :

                                                              @@ -791,7 +791,7 @@

                                                              Configuration de fil d´attente -

                                                              [ queue|queue_name|qn <name>]

                                                              +

                                                              [ queue|queue_name|qn <name>]

                                                              Par défaut, les composants créent un nom de fil d’attente qui doit être unique. Le queue_name par défaut créé par les composants et suit la convention suivante :

                                                              @@ -818,7 +818,7 @@

                                                              [ queue|queue_name|qn <name>] -

                                                              AMQP QUEUE BINDINGS

                                                              +

                                                              AMQP QUEUE BINDINGS

                                                              Une fois qu’on a une fil d’attente, elle doit être liée à un échange (exchange.) Les utilisateurs ont presque toujours besoin de définir ces options. Une fois qu’une fil d’attente existe sur le courtier, il doit être lié (bound) à @@ -837,7 +837,7 @@

                                                              AMQP QUEUE BINDINGS -

                                                              subtopic <amqp pattern> (default: #)

                                                              +

                                                              subtopic <amqp pattern> (default: #)

                                                              Dans les publications d’un échange, le paramètre de sous-thème restreint la sélection de produits. Pour donner une valeur correcte au sous-thème, on a le choix de filtrer en utilisant subtopic avec seulement le wildcard limité d’AMQP et à longueur limitée à 255 octets codés, ou l’expression @@ -889,14 +889,14 @@

                                                              subtopic <amqp pattern> (default: #) -

                                                              Client-side Filtering

                                                              +

                                                              Client-side Filtering

                                                              Nous avons sélectionné nos messages via exchange, subtopic et subtopic. Le courtier met les messages correspondants dans notre fil d’attente (queue). Le composant télécharge ces messages.

                                                              Les clients Sarracenia implémentent un filtrage plus flexible côté client en utilisant les expressions régulières.

                                                              -

                                                              Brief Introduction to Regular Expressions

                                                              +

                                                              Brief Introduction to Regular Expressions

                                                              Les expressions régulières sont un moyen très puissant d’exprimer les correspondances de motifs. Ils offrent une flexibilité extrême, mais dans ces exemples, nous utiliserons seulement un petit sous-ensemble : Le point (.) est un joker qui correspond à n’importe quel caractère @@ -926,7 +926,7 @@

                                                              Brief Introduction to Regular Expressions -

                                                              accept, reject and accept_unmatch

                                                              +

                                                              accept, reject and accept_unmatch

                                                              • accept <expression régulière (regexp)> (facultatif)

                                                              • reject <expression régulière (regexp)> (facultatif)

                                                              • @@ -973,7 +973,7 @@

                                                                accept, reject and accept_unmatch -

                                                                Convention d´appellation de files d´attente

                                                                +

                                                                Convention d´appellation de files d´attente

                                                                Alors que dans la plupart des cas, une bonne valeur de nom de fil d´attente (en anglais: queue) est générée par l’application, dans certains cas, c´est nécessaire de remplacer ces choix par une spécification utilisateur explicite. Pour ce faire, il faut connaître les règles de nommage des files d’attente :

                                                                @@ -987,7 +987,7 @@

                                                                Convention d´appellation de files d´attente -

                                                                PUBLICATION (POST)

                                                                +

                                                                PUBLICATION (POST)

                                                                Comme de nombreux composants consomment un flux de messages, de nombreux composants (souvent les mêmes) produisent également un flux de sortie de messages. Pour créer des fichiers disponible pour les abonnés, une affiche publie les annonces à un AMQP ou @@ -1005,7 +1005,7 @@

                                                                PUBLICATION (POST) -

                                                                Convention d´appellation des EXCHANGES

                                                                +

                                                                Convention d´appellation des EXCHANGES

                                                                1. Les noms d’échange commencent par x

                                                                2. Les échanges qui se terminent par public sont accessibles (pour lecture) par tout utilisateur authentifié.

                                                                3. @@ -1032,7 +1032,7 @@

                                                                  Convention d´appellation des EXCHANGES -

                                                                  SONDAGE (POLLING)

                                                                  +

                                                                  SONDAGE (POLLING)

                                                                  On peut faire le même travail que post, sauf que les fichiers sont sur un serveur distant. Dans le cas d’un sondage (en anglais: poll), l’URL de la publication sera générée à partir de l´option pollUrl, avec le chemin d’accès du produit (directory/« fichier correspondant »). Il y en a une publication @@ -1113,7 +1113,7 @@

                                                                  SONDAGE (POLLING) -

                                                                  Sondage avancé (Advanced Polling)

                                                                  +

                                                                  Sondage avancé (Advanced Polling)

                                                                  Le poll intégré liste les répertoires distants et analyse les lignes renvoyées par les structures paramiko.SFTPAttributes (similaires à os.stat) pour chaque fichier répertorié. Il existe une grande variété de personnalisations disponibles car les ressources à poller @@ -1138,14 +1138,14 @@

                                                                  Sondage avancé (Advanced Polling) -

                                                                  COMPOSANTS

                                                                  +

                                                                  COMPOSANTS

                                                                  Tous les composants effectuent une combinaison de poll, de consommation et de publication. avec des variations qui permettent soit la transmission d’annonces, ou soit aux transferts de données. Les composants appliquent tous le seul même algorithme, il suffit de commencer à partir de différents paramètres par défaut pour correspondre à un cas d’utilisation commun.

                                                                  -

                                                                  CPUMP

                                                                  +

                                                                  CPUMP

                                                                  cpump* est une implémentation du composant shovel en C. Sur une base individuelle, il devrait être plus rapide qu’un seul téléchargeur python, avec certaines limitations.

                                                                  @@ -1171,14 +1171,14 @@

                                                                  CPUMP le fichier est nouveau, et la sum est ajoutée à la cache et la notification est publiée.

                                                                  -

                                                                  FLOW

                                                                  +

                                                                  FLOW

                                                                  Flow est la classe parent à partir de laquelle tous les autres composants, à l’exception de cpost et cpump, sont construits. Flow n’a pas de comportement intégré. Les paramètres peuvent le faire agir comme n’importe quel autre composant python, ou il peut être utilisé pour créer des composants définis par l’utilisateur. Généralement utilisé avec l’option flowMain pour exécuter une sous-classe de flux définie par l’utilisateur.

                                                                  -

                                                                  POLL

                                                                  +

                                                                  POLL

                                                                  poll est un composant qui se connecte à un serveur distant pour vérifier divers répertoires pour certains fichiers. Lorsqu’un fichier est présent, modifié, ou créé dans le répertoire distant, le programme @@ -1210,7 +1210,7 @@

                                                                  POLL La méthode gather intégrée utilise les protocoles sarracenia.transfer. Actuellement sftp, ftp et http sont implémentés.

                                                                  -

                                                                  Scans répétés et VIP

                                                                  +

                                                                  Scans répétés et VIP

                                                                  Lorsque plusieurs serveurs coopèrent pour polller un serveur distant, le paramètre vip est utilisé pour décider quel serveur il faut réellement poller. Tous les serveurs participants s’abonnent à l’endroit où poll est publié, @@ -1220,7 +1220,7 @@

                                                                  Scans répétés et VIP

                                                                  -

                                                                  POST or WATCH

                                                                  +

                                                                  POST or WATCH

                                                                  sr3_post affiche la disponibilité d’un fichier en créant une annonce. Contrairement à la plupart des autres composants de sarracenia qui agissent comme des démons, sr3_post est une invocation qui poste et se termine en une seul fois. @@ -1301,13 +1301,13 @@

                                                                  POST or WATCHhttp://dd.weather.gc.ca/bulletins/alphanumeric/SACN32_CWAO_123456 à l’aide de http sans authentification sur dd.weather.gc.ca.

                                                                  -

                                                                  Partitionnement de fichiers

                                                                  +

                                                                  Partitionnement de fichiers

                                                                  l’utilisation de l’option blocksize n’a aucun effet dans sr3. Il est utilisé pour faire le partitionnement de fichiers, et il redeviendra efficace à l’avenir, avec la même sémantique.

                                                                  -

                                                                  SARRA

                                                                  +

                                                                  SARRA

                                                                  sarra est un programme qui s’abonne aux notifications de fichiers, acquiert les fichiers, et les réannonce à leurs nouveaux emplacements. Le protocole de notification est défini ici sr3_post(7)

                                                                  @@ -1323,7 +1323,7 @@

                                                                  SARRA
                                                                  -

                                                                  Exigences spécifiques de consommation

                                                                  +

                                                                  Exigences spécifiques de consommation

                                                                  Si les messages sont postés directement à partir d’une source l’échange utilisé est ‘xs_<brokerSourceUsername>’. Pour se protéger contre les utilisateurs malveillants, les administrateurs doivent définir sourceFromExchange à True. Ces messages ne peuvent pas contenir un champ cluster ou source d’origine @@ -1341,7 +1341,7 @@

                                                                  Exigences spécifiques de consommation -

                                                                  SENDER

                                                                  +

                                                                  SENDER

                                                                  sender est un composant dérivé de subscribe utilisé pour envoyer des fichiers locaux à un serveur distant à l’aide d’un protocole de transfert de fichiers, principalement SFTP. sender est un consommateur standard, utilisant tous les paramètres AMQP normaux pour les courtiers, les échanges, @@ -1360,7 +1360,7 @@

                                                                  SENDERto si elle se trouve dans l’un des clusters de destination du message. Si ce n’est pas le cas, le message est ignoré.

                                                                  -

                                                                  CONFIGURATION 1 : RÉPLICATION POMPE À POMPE

                                                                  +

                                                                  CONFIGURATION 1 : RÉPLICATION POMPE À POMPE

                                                                  Pour la réplication de la pompe, mirror est défini sur True (valeur par défaut).

                                                                  baseDir fournit le chemin d’accès au répertoire qui, lorsqu’il est combiné avec le chemin relatif dans la notification sélectionnée, donne le chemin absolu du fichier à envoyer. @@ -1400,7 +1400,7 @@

                                                                  CONFIGURATION 1 : RÉPLICATION POMPE À POMPE -

                                                                  CONFIGURATION DE DESTINATION 2 : DIFFUSION DE TYPE METPX-SUNDEW

                                                                  +

                                                                  CONFIGURATION DE DESTINATION 2 : DIFFUSION DE TYPE METPX-SUNDEW

                                                                  Dans ce type d’utilisation, nous n’aurions généralement pas reposté… mais si le post_broker et post_exchange (url,**on_post**) sont définis, le produit sera annoncé (avec son éventuel nouvel emplacement et son nouveau nom). @@ -1439,7 +1439,7 @@

                                                                  CONFIGURATION DE DESTINATION 2 : DIFFUSION DE TYPE METPX-SUNDEW -

                                                                  SHOVEL

                                                                  +

                                                                  SHOVEL

                                                                  shovel copie les messages sur un courtier (donné par l’option broker) à un autre (donné par l’option post_broker) soumis au filtrage par (exchange, subtopic, et éventuellement, accept/reject.)

                                                                  @@ -1456,12 +1456,12 @@

                                                                  SHOVEL

                                                            -

                                                            SUBSCRIBE

                                                            +

                                                            SUBSCRIBE

                                                            Subscribe est le composant de flux de téléchargement normal, qui se connectera à un courtier, télécharger les fichiers configurés, puis transférer les messages avec une baseUrl modifiée.

                                                            -

                                                            WATCH

                                                            +

                                                            WATCH

                                                            Surveille un répertoire et publie des messages lorsque les fichiers dans le répertoire changent. Ses arguments sont très similaires à sr_post <sr_post. Dans la suite MetPX-Sarracenia, l’objectif principal est d’afficher la disponibilité et modifications @@ -1538,7 +1538,7 @@

                                                            WATCH sans authentification sur dd.weather.gc.ca.

                                                            -

                                                            WINNOW

                                                            +

                                                            WINNOW

                                                            winnow est un programme qui s’abonne aux notifications de fichiers, et réenregistre les notifications, en supprimant les notifications redondantes.

                                                            La méthode de décider quels messages d´annonce sont redondants varient selon le cas d´usage. @@ -1571,7 +1571,7 @@

                                                            WINNOW

                                                            -

                                                            Configurations

                                                            +

                                                            Configurations

                                                            Si on a une configuration prête à l’emploi appelée q_f71.conf, elle peut être ajoutée à la liste des noms connus avec

                                                            subscribe add q_f71.conf
                                                            @@ -1691,7 +1691,7 @@ 

                                                            Configurations -

                                                            flowCallbacks

                                                            +

                                                            flowCallbacks

                                                            Sarracenia utilise largement de petits extraits de code python qui personnalisent le traitement appelé flowCallback. Flow_callbacks définit et utiliser des paramètres supplémentaires

                                                            flowCallback sarracenia.flowcb.log.Log
                                                            @@ -1726,7 +1726,7 @@ 

                                                            flowCallbacks -

                                                            Options callback

                                                            +

                                                            Options callback

                                                            les rappels livrés avec metpx-sr3 suivent la convention suivante :

                                                            • ils sont placés dans l’arborescence du répertoire sarracenia/flowcb.

                                                            • @@ -1739,7 +1739,7 @@

                                                              Options callback -

                                                              Importation d’extensions

                                                              +

                                                              Importation d’extensions

                                                              L’option import fonctionne d’une manière familière aux développeurs Python, qui les rends disponibles pour une utilisation par le noyau Sarracenia, ou flowCallback. Les développeurs peuvent ajouter des protocoles supplémentaires pour les messages ou @@ -1766,7 +1766,7 @@

                                                              Importation d’extensionsProgrammer’s Guide

                                                            -

                                                            Plugins v2 Obsolètes

                                                            +

                                                            Plugins v2 Obsolètes

                                                            Il existe également un style de plugins plus ancien (v2). Qui sont généralement précédé du nom du plugin

                                                            msg_to_clusters DDI
                                                            @@ -1797,7 +1797,7 @@ 

                                                            Plugins v2 Obsolètes

                                                            -

                                                            Environment Variables

                                                            +

                                                            Environment Variables

                                                            On peut aussi utiliser des variables d´environnement avec la syntax ${ENV} ou ENV est le nom d´une variable d´environnement. S´il faut définir une variable d´environnement pour une utilisation par Sarracenia, @@ -1807,7 +1807,7 @@

                                                            Environment Variables

                                                            -

                                                            Fichiers journal et Suivi

                                                            +

                                                            Fichiers journal et Suivi

                                                            • debug

                                                              L’option de déboggage debug est identique à l’utilisation de loglevel debug.

                                                              @@ -1882,7 +1882,7 @@

                                                              Fichiers journal et Suivi -

                                                              IDENTIFICATION (CREDENTIALS)

                                                              +

                                                              IDENTIFICATION (CREDENTIALS)

                                                              Normalement, on ne spécifie pas de mots de passe dans les fichiers de configuration. Ils sont plutôt placés dans le fichier d´information d´identifcation:

                                                              edit ~/.config/sr3/credentials.conf
                                                              @@ -1917,7 +1917,7 @@ 

                                                              IDENTIFICATION (CREDENTIALS) -

                                                              Details d’Identifiants

                                                              +

                                                              Details d’Identifiants

                                                              Vous devrez peut-être spécifier des options supplémentaires pour des entrées d’informations d’identification spécifiques. Ces détails peuvent être ajoutés après la fin de l’URL, avec plusieurs détails séparés par des virgules (voir les exemples ci-dessus).

                                                              Détails pris en charge

                                                              @@ -1946,7 +1946,7 @@

                                                              Details d’Identifiants

                                                            -

                                                            TRAITEMENT PÉRIODIQUE

                                                            +

                                                            TRAITEMENT PÉRIODIQUE

                                                            La plupart des traitements ont lieu à la réception d’un message, mais il y a une maintenance périodique qui se produit à chaque intervalle housekeeping (la valeur par défaut est de 5 minutes.) À chaque housekeeping tous les les plugins on_housekeeping configurés sont exécutés. Par défaut, trois sont présents :

                                                            @@ -1959,17 +1959,17 @@

                                                            TRAITEMENT PÉRIODIQUEon_housekeeping.

                                                            -

                                                            sanity_log_dead <interval> (défaut: 1.5*housekeeping)

                                                            +

                                                            sanity_log_dead <interval> (défaut: 1.5*housekeeping)

                                                            L’option sanity_log_dead définit la durée à prendre en compte avant de redémarrer un composant.

                                                            -

                                                            nodup_ttl <off|on|999> (défaut: off)

                                                            +

                                                            nodup_ttl <off|on|999> (défaut: off)

                                                            Le nettoyage des éléments expirés dans la store de suppression des doublons se produit à chaque housekeeping.

                                                            -

                                                            RÉCUPÉRATION D’ERREUR

                                                            +

                                                            RÉCUPÉRATION D’ERREUR

                                                            Les outils sont conçus pour fonctionner bien sans surveillance, et donc lorsque des erreurs transitoires se produisent, ils essayent de récupérer élégamment. Il y a des délais d’attente sur toutes les opérations, et en cas de défaillance détectée, le problème est noté pour une nouvelle tentative. Des erreurs peuvent se produire à plusieurs reprises :

                                                            @@ -1999,7 +1999,7 @@

                                                            RÉCUPÉRATION D’ERREUR

                                                            -

                                                            EXEMPLES

                                                            +

                                                            EXEMPLES

                                                            Voici un court exemple complet de fichier de configuration

                                                            broker amqps://dd.weather.gc.ca/
                                                             
                                                            @@ -2018,7 +2018,7 @@ 

                                                            EXEMPLEShttps://github.com/MetPX/sarracenia/tree/main/sarra/examples

                                                            -

                                                            QUEUES and MULTIPLE STREAMS

                                                            +

                                                            QUEUES and MULTIPLE STREAMS

                                                            Lorsqu’il est exécuté, subscribe choisit un nom de fil d’attente, ou il écrit à un fichier nommé d’après le fichier de configuration donné comme argument pour subscribe avec un suffixe .queue ( .”configfile”.queue). @@ -2043,7 +2043,7 @@

                                                            QUEUES and MULTIPLE STREAMS -

                                                            report et report_exchange

                                                            +

                                                            report et report_exchange

                                                            Pour chaque téléchargement, par défaut, un message de rapport amqp est renvoyé au broker. Cela se fait avec l’option :

                                                              @@ -2057,7 +2057,7 @@

                                                              report et report_exchange -

                                                              INSTANCES

                                                              +

                                                              INSTANCES

                                                              Parfois, une instance d’un composant et d’une configuration ne suffit pas pour traiter et envoyer toutes les notifications disponibles.

                                                              instances <integer> (défaut:1)

                                                              L’option d’instance permet de lancer plusieurs instances d’un composant et d’une configuration. @@ -2091,7 +2091,7 @@

                                                              INSTANCES -

                                                              vip - ACTIVE/PASSIVE OPTIONS

                                                              +

                                                              vip - ACTIVE/PASSIVE OPTIONS

                                                              sr3 peut être utilisé sur un seul nœud de serveur ou sur plusieurs nœuds. pourrait partager la responsabilité. D’autres, configurés séparément, haute disponibilité présente un vip (ip virtuel) sur le serveur actif. Si @@ -2112,7 +2112,7 @@

                                                              vip - ACTIVE/PASSIVE OPTIONS -

                                                              [–blocksize <value>] (default: 0 (auto))

                                                              +

                                                              [–blocksize <value>] (default: 0 (auto))

                                                              This blocksize option controls the partitioning strategy used to post files. The value should be one of:

                                                              0 - calcul automatique d'une stratégie de partitionnement appropriée (par défaut)
                                                              @@ -2129,7 +2129,7 @@ 

                                                              [–blocksize <value>] (default: 0 (auto))sr3_cpump(1) pour plus de détails.

                                                            -

                                                            [-pbd|–post_baseDir <path>] (facultatif)

                                                            +

                                                            [-pbd|–post_baseDir <path>] (facultatif)

                                                            L’option post_baseDir fournit le chemin du répertoire qui, lorsqu’il est combiné (ou trouvé) dans le chemin d’accès donné, donne le chemin absolu local vers le fichier de données à enregistrer. La post_baseDir du chemin sera @@ -2141,13 +2141,13 @@

                                                            [-pbd|–post_baseDir <path>] (facultatif) -

                                                            post_baseUrl <url> (OBLIGATOIRE)

                                                            +

                                                            post_baseUrl <url> (OBLIGATOIRE)

                                                            L’option post_baseUrl définit comment obtenir le fichier…. il définit le protocole, hôte, port, et optionnellement, l’utilisateur. C’est une bonne pratique de ne pas inclure les mots de passe dans l´URL.

                                                            -

                                                            post_exchange <name> (default: xpublic)

                                                            +

                                                            post_exchange <name> (default: xpublic)

                                                            L’option post_exchange, qui permet d’échanger la nouvelle notification. sera publié. Dans la plupart des cas, il s’agit d’un’xpublic’.

                                                            Chaque fois qu’une avis se produit pour un produit, un utilisateur peut @@ -2155,7 +2155,7 @@

                                                            post_exchange <name> (default: xpublic) -

                                                            post_exchangeSplit <number> (défaut: 0)

                                                            +

                                                            post_exchangeSplit <number> (défaut: 0)

                                                            L’option post_exchangeSplit ajoute un suffixe à deux chiffres résultant d’une division entière du dernier digit de la somme de contrôle, afin de répartir les avis entre un certain nombre d’échanges, selon la valeur de leur somme de contrôle. @@ -2172,7 +2172,7 @@

                                                            post_exchangeSplit <number> (défaut: 0)

                                                            -

                                                            Remote Configurations

                                                            +

                                                            Remote Configurations

                                                            On peut spécifier des URI comme fichiers de configuration, plutôt que des fichiers locaux. Exemple :

                                                              @@ -2195,7 +2195,7 @@

                                                              Remote Configurations

                                                            -

                                                            Extensions

                                                            +

                                                            Extensions

                                                            On peut remplacer ou ajouter des fonctionnalités avec des scripts python.

                                                            Sarracenia est livré avec une variété d’exemples de plugins, et en utilise certains pour implémenter des fonctionnalités de base, tels que la journalisation (implémentée par défaut en utilisant des plugins msg_log, file_log post_log):

                                                            @@ -2212,7 +2212,7 @@

                                                            Extensions -

                                                            flowCallback et flowCallbackPrepend <class>

                                                            +

                                                            flowCallback et flowCallbackPrepend <class>

                                                            La directive flowCallback prend une classe à charger et peut analyser les points d’entrée comme argument

                                                            flowCallback sarracenia.flowcb.log.Log
                                                             
                                                            @@ -2290,12 +2290,12 @@

                                                            flowCallback et flowCallbackPrepend <class>

                                                            -

                                                            Identity

                                                            +

                                                            Identity

                                                            On peut utiliser la directive import pour ajouter de nouveaux algorithmes de somme de contrôle en sous-classant sarracenia.identity.Identity.

                                                            -

                                                            Transfer

                                                            +

                                                            Transfer

                                                            On peut ajouter la prise en charge de méthodes supplémentaires de téléchargement de données par sous-classification sarracenia.transfer.Transfer.

                                                            Les scripts de protocole de transfert doivent être déclarés à l’aide de l’option import. @@ -2308,7 +2308,7 @@

                                                            TransferProgramming Guide pour plus d’informations sur le développement d’extensions.

                                                            -

                                                            ROLES - feeder/admin/declare

                                                            +

                                                            ROLES - feeder/admin/declare

                                                            d’intérêt que pour les administrateurs

                                                            Les options d’administration sont définies à l’aide de:

                                                            edit ~/.config/sr3/admin.conf
                                                            @@ -2325,7 +2325,7 @@ 

                                                            ROLES - feeder/admin/declare -

                                                            subscriber

                                                            +

                                                            subscriber

                                                            Un subscriber (abonné) est un utilisateur qui ne peut s’abonner qu’aux données et renvoyer des messages de rapport. Les abonnés ne sont pas autorisés à injecter des données. @@ -2337,7 +2337,7 @@

                                                            subscriber -

                                                            source

                                                            +

                                                            source

                                                            Un utilisateur autorisé à s’abonner ou à générer des données. Une source ne représente pas nécessairement une personne ou un type de données, mais plutôt une organisation responsable des données produites. @@ -2351,7 +2351,7 @@

                                                            source

                                                            -

                                                            feeder

                                                            +

                                                            feeder

                                                            Un utilisateur autorisé à écrire à n’importe quel échange. Une sorte d’utilisateur de flux administratif, destiné à pomper des messages lorsque aucune source ou abonné ordinaire n’est approprié pour le faire. Doit être utilisé de @@ -2363,7 +2363,7 @@

                                                            feeder

                                                            -

                                                            FICHIERS DE CONFIGURATION

                                                            +

                                                            FICHIERS DE CONFIGURATION

                                                            Alors qu’on peut gérer les fichiers de configuration à l’aide de la fonction add, remove, list, edit, disable, et enable actions, on peut aussi tout faire. des mêmes activités manuellement en manipulant les fichiers dans les paramètres. @@ -2403,17 +2403,17 @@

                                                            FICHIERS DE CONFIGURATION -

                                                            OPTIONS DE COMPATIBILITÉ SUNDEW

                                                            +

                                                            OPTIONS DE COMPATIBILITÉ SUNDEW

                                                            Pour la compatibilité avec Sundew, il existe des options de livraison supplémentaires qui peuvent être spécifiées.

                                                            -

                                                            destfn_script <script> (défaut:None)

                                                            +

                                                            destfn_script <script> (défaut:None)

                                                            Cette option définit un script à exécuter lorsque tout est prêt pour la livraison du produit. Le script reçoit une instance de la classe sender. Le script prends le parent comme argument, et par exemple, une modification de parent.msg.new_file changera le nom du fichier écrit localement.

                                                            -

                                                            filename <mots-clé> (défaut:WHATFN)

                                                            +

                                                            filename <mots-clé> (défaut:WHATFN)

                                                            De MetPX Sundew, le support de cette option donne toutes sortes de possibilités pour définir le nom de fichier distant. Certains keywords sont basés sur le fait que les noms de fichiers MetPX Sundew ont cinq (à six) champs de chaîne de caractères séparés par des deux-points.

                                                            @@ -2493,7 +2493,7 @@

                                                            filename <mots-clé> (défaut:WHATFN) -

                                                            Field Replacements

                                                            +

                                                            Field Replacements

                                                            Dans MetPX Sundew, le format de la nomination de fichier est beaucoup plus stricte, et est spécialisée pour une utilisation aves les données du World Meteorological Organization (WMO). Notez que la convention du format des fichiers est antérieure, et n’a aucun rapport avec la convention de diff --git a/fr/Explication/Histoire/Annoncements_v03.html b/fr/Explication/Histoire/Annoncements_v03.html index da61e3f19..c7001cb0c 100644 --- a/fr/Explication/Histoire/Annoncements_v03.html +++ b/fr/Explication/Histoire/Annoncements_v03.html @@ -8,9 +8,9 @@ - + - + @@ -131,7 +131,7 @@ }

                                                            -

                                                            Annonce de Sr3

                                                            +

                                                            Annonce de Sr3

                                                            Après deux ans de développement, le 11/04/2022, nous sommes heureux d’annoncer la disponibilité de la première version bêta de Sarracenia version 3: Sr3. Pour célébrer la sortie, il y a un nouveau site Web avec des informations détaillées:

                                                            diff --git a/fr/Explication/Histoire/Evolution.html b/fr/Explication/Histoire/Evolution.html index 0b8b2d3c1..1ef553525 100644 --- a/fr/Explication/Histoire/Evolution.html +++ b/fr/Explication/Histoire/Evolution.html @@ -8,9 +8,9 @@ - + - + @@ -131,7 +131,7 @@ }
                                                            -

                                                            Histoire/Contexte de Sarracenia

                                                            +

                                                            Histoire/Contexte de Sarracenia

                                                            MetPX-Sarracenia est un produit du projet d’échange de produits météorologiques, provient d’Environnement Canada, mais est maintenant géré par Services partagés Canada sur son nom. Le projet a débuté en 2004, dans le but de fournir une pile gratuite qui @@ -156,7 +156,7 @@

                                                            Histoire/Contexte de Sarracenia -

                                                            Renommage dd_subscribe

                                                            +

                                                            Renommage dd_subscribe

                                                            Le nouveau projet (MetPX-Sarracenia) a de nombreux composants, est utilisé pour plus de distribution, et plus d’un site Web, et cause de la confusion pour les administrateurs de système pensant qu’il est associé à la commande dd(1) (pour convertir et copier des fichiers). Ainsi, les composants ont été commutés pour utiliser @@ -199,7 +199,7 @@

                                                            Renommage dd_subscribe

                                                            -

                                                            Moins de Klocs, de meilleurs Klocs

                                                            +

                                                            Moins de Klocs, de meilleurs Klocs

                                                            Tableau 2 : Utilisation de l’algorithme de flux par chaque composantTableau 2 : Utilisation de l’algorithme de flux par chaque composant

                                                            Composant

                                                            Utilisation de l’algorithme

                                                            @@ -233,12 +233,12 @@

                                                            Moins de Klocs, de meilleurs Klocs -

                                                            Déploiements/cas d’utilisation

                                                            +

                                                            Déploiements/cas d’utilisation

                                                            État du déploiement en 2015: Sarracenia in 10 Minutes Video (5:26 in)

                                                            État du déploiement en 2018: Deployments as of January 2018

                                                            -

                                                            Site web du projet

                                                            +

                                                            Site web du projet

                                                            Avant mars 2018, le site Web principal du projet était metpx.sf.net. Ce site Web MetPX a été construit à partir de la documentation dans les différents modules dans le projet. Il se construit en utilisant tous les fichiers .rst trouvés dans @@ -258,7 +258,7 @@

                                                            Site web du projethttps://metpx.github.io/sarracenia ) est mis à jour par un workflow GitHub à chaque commit.

                                                            -

                                                            Mise à jour du site Web sf.net

                                                            +

                                                            Mise à jour du site Web sf.net

                                                            Seules les pages index-e.html et index-f.html sont utilisées sur le site Web de sf.net Aujourd’hui. À moins que vous ne souhaitiez modifier ces pages, cette opération est inutile. Pour toutes les autres pages, les liens vont directement dans les différents fichiers .rst sur diff --git a/fr/Explication/Histoire/HPC_mirroring_cas_dutilisation.html b/fr/Explication/Histoire/HPC_mirroring_cas_dutilisation.html index 12d8fbeb5..d3f359bb0 100644 --- a/fr/Explication/Histoire/HPC_mirroring_cas_dutilisation.html +++ b/fr/Explication/Histoire/HPC_mirroring_cas_dutilisation.html @@ -8,9 +8,9 @@ - + - + @@ -131,11 +131,11 @@ }

                                                            -

                                                            Étude de cas : Mise en miroir HPC

                                                            +

                                                            Étude de cas : Mise en miroir HPC

                                                            -

                                                            Mise en miroir continue de 27 millions d’arborescence de fichiers très rapidement

                                                            +

                                                            Mise en miroir continue de 27 millions d’arborescence de fichiers très rapidement

                                                            -

                                                            Résumé

                                                            +

                                                            Résumé

                                                            Ce projet a pris plus de temps que prévu, soit plus de trois ans, car l’espace problématique a été exploré avec le l’aide d’un client très patient alors que l’outil pour concevoir et mettre en œuvre la solution efficace était finalement réglé. Le client a demandé une solution pour rendre les fichiers disponibles sur le cluster de sauvegarde dans @@ -161,7 +161,7 @@

                                                            Résumé -

                                                            Énoncé du problème

                                                            +

                                                            Énoncé du problème

                                                            En novembre 2016, le Service météorologique du Canada (MSC) d’Environnement et Changement climatique Canada (ECCC) dans le cadre du projet High Performance Computing Replacement (HPCR) a demandé un très grand répertoire d’arbres à refléter en temps réel. Services partagés Canada (SPC) était le principal responsable du déploiement @@ -180,7 +180,7 @@

                                                            Énoncé du problème

                                                            -

                                                            Présentation de la solution HPCR

                                                            +

                                                            Présentation de la solution HPCR

                                                            ../../../_images/HPC-XC_High_Availability.png

                                                            Dans le diagramme ci-dessus, si les opérations se trouvent dans le hall de données 1 (à gauche du centre) et qu’elles échouent, l’objectif est de reprendre les opérations rapidement à partir du Data Hall 2 @@ -191,7 +191,7 @@

                                                            Présentation de la solution HPCR -

                                                            Mise en miroir continue

                                                            +

                                                            Mise en miroir continue

                                                            Il y a deux clusters qui exécutent ces simulations, l’un d’eux travaillant normalement principalement sur les opérations, et l’autre en tant que rechange (exécutant uniquement des charges de recherche et développement). Lorsque la primaire échoue, l’intention est d’exécuter des opérations sur l’autre @@ -233,7 +233,7 @@

                                                            Mise en miroir continue

                                                            -

                                                            La lecture de l’arbre prend trop de temps

                                                            +

                                                            La lecture de l’arbre prend trop de temps

                                                            On pourrait simplement analyser à un niveau supérieur afin d’analyser un seul répertoire parent, mais la demi-douzaine des sous-arbres des arbres ont été choisis afin d’en avoir des plus petits qui fonctionnaient plus rapidement, indépendamment de la méthode utilisée pour obtenir des listes de nouveaux fichiers. Que voulons-nous dire quand @@ -259,7 +259,7 @@

                                                            La lecture de l’arbre prend trop de temps -

                                                            Méthodes de détection : Inotify, Policy, SHIM

                                                            +

                                                            Méthodes de détection : Inotify, Policy, SHIM

                                                            Il existe une fonctionnalité du noyau Linux appelée INOTIFY, qui peut déclencher un événement lorsqu’un fichier est modifié. En définissant un déclencheur INOTIFY sur chaque répertoire de l’arborescence, nous pouvons être avertis lorsqu’un fichier est modifié dans l’arbre. C’était @@ -310,7 +310,7 @@

                                                            Méthodes de détection : Inotify, Policy, SHIM -

                                                            Bibliothèque Shim

                                                            +

                                                            Bibliothèque Shim

                                                            La méthode choisie pour la notification est une bibliothèque Shim Lorsqu’une application en cours d’exécution effectue des appels aux points d’entrée d’API fournis par les bibliothèques ou le noyau, il existe un processus de recherche (résolu au @@ -327,7 +327,7 @@

                                                            Bibliothèque Shim -

                                                            Copie de fichiers

                                                            +

                                                            Copie de fichiers

                                                            Il est important de noter que pendant que tout ce travail progressait sur la partie “obtenir la liste des fichiers à copier” du problème, nous travaillions également sur la partie “copier les fichiers de l’autre côté” du problème. Au cours de l’été, les résultats des tests de @@ -369,7 +369,7 @@

                                                            Copie de fichiers -

                                                            Bibliothèque Shim nécessaire

                                                            +

                                                            Bibliothèque Shim nécessaire

                                                            Malheureusement, la mise en miroir entre les sites fonctionnait avec un décalage d’environ 10 minutes sur le système de fichiers source (environ 30 fois plus rapide qu’une approche rsync naïve), et ne fonctionnait qu’en principe, avec de nombreux fichiers manquants dans la pratique, elle n’était pas @@ -398,7 +398,7 @@

                                                            Bibliothèque Shim nécessaire -

                                                            Est-ce que ça marche?

                                                            +

                                                            Est-ce que ça marche?

                                                            En décembre 2017, le logiciel pour l’approche libsrshim semblait prêt, il a été déployé en quelques petites exécutions parallèles (non opérationnelles). Les essais en parallèle ont commencé en janvier 2018. Il y a eu de nombreux cas limites, et les tests se sont poursuivis pendant deux ans, jusqu’à ce qu’ils @@ -434,7 +434,7 @@

                                                            Est-ce que ça marche?

                                                            -

                                                            Est-ce rapide?

                                                            +

                                                            Est-ce rapide?

                                                            Les exécutions de la politique GPFS sont toujours la méthode utilisée sur le plan opérationnel au moment de la rédaction de cet article (2018/01). Les chiffres de performances indiqués dans le résumé sont extraits des journaux d’une journée d’exécution de stratégie GPFS.

                                                            @@ -571,7 +571,7 @@

                                                            Est-ce rapide? -

                                                            Frais généraux

                                                            +

                                                            Frais généraux

                                                            Quel est l’effet de la mise en service de la bibliothèque de Shim sur les tâches des utilisateurs? Lorsqu’il est utilisé dans de grands modèles avec de bons modèles d’i/o nécessaires pour des performances élevées, la surcharge ajoutée par la bibliothèque de Shim peut être négligeable. Cependant, une surcharge @@ -588,7 +588,7 @@

                                                            Frais généraux -

                                                            Contributions

                                                            +

                                                            Contributions

                                                            Dominic Racette - ECCC CMC Operations Implementation

                                                            Responsable client sur le projet de mise en miroir. Beaucoup d’audit et d’exécution de tests. diff --git a/fr/Explication/Histoire/deploiement_2018.html b/fr/Explication/Histoire/deploiement_2018.html index 86d962127..c633ea753 100644 --- a/fr/Explication/Histoire/deploiement_2018.html +++ b/fr/Explication/Histoire/deploiement_2018.html @@ -8,9 +8,9 @@ - + - + @@ -131,7 +131,7 @@ }

                                                            -

                                                            Sarracenia Janvier 2018

                                                            +

                                                            Sarracenia Janvier 2018

                                                            Sarracenia est une petite application développée de façon itérative en s’adressant à une seule cas d´usage à la fois de sorte que le développement et le déploiement sont inextricablement liés jusqu’ici. @@ -162,7 +162,7 @@

                                                            Sarracenia Janvier 20
                                                            -

                                                            Comparison to 2015 Video

                                                            +

                                                            Comparison to 2015 Video

                                                            La vidéo de novembre 2015 ( `Sarracenia in 10 Minutes <https://www.youtube.com/watch?v=G47DRwzwckk>`https://www.youtube.com/watch?v=G47DRwzwckk>`_ ) a tracé les grandes lignes d’une vision. La première phase des travaux de développement s’est déroulée en 2015 et au début de l’année 2016, suivie de @@ -199,7 +199,7 @@

                                                            Comparison to 2015 Vi

                                                            Les détails suivront.

                                                            -

                                                            Flots Centrales

                                                            +

                                                            Flots Centrales

                                                            La diagramme ci-dessous correspond aux flux de données quotidiennes déployées à l’appui du programme Environnement Canada, surtout pour les prévisions météorologiques opérationnelles, en place depuis le début des @@ -223,7 +223,7 @@

                                                            Flots Centrales

                                                            -

                                                            Applications Météorologiques

                                                            +

                                                            Applications Météorologiques

                                                            FIXME : image ?

                                                            Il y a un certain nombre (peut-être une douzaine ?) d’applications plus anciennes (les plus importantes). BULLPREP et Scribe) utilisés depuis des décennies dans les centres de prévision des intempéries. @@ -238,14 +238,14 @@

                                                            Applications Météor de travail d’application nécessaire.

                                                            -

                                                            Acquisition de GOES-R

                                                            +

                                                            Acquisition de GOES-R

                                                            Acquisition de produits GOES-R simulés et réels auprès du PDA de la NOAA, ainsi que des produits GOES-R. via des liaisons descendantes locales à un endroit (pour finalement en devenir deux) était entièrement par Sarracénie. Le déploiement opérationnel de GOES-R s’est déroulé dans la région de l première semaine de janvier 2018.

                                                            -

                                                            acquisition HPC

                                                            +

                                                            acquisition HPC

                                                            FIXME : image ?

                                                            L’environnement de supercalculateur a été entièrement remplacé en 2017. Dans ce contexte, la suite d’acquisition de données environnementales du client (acronyme ADE) était @@ -255,7 +255,7 @@

                                                            acquisition HPC

                                                            -

                                                            RADAR

                                                            +

                                                            RADAR

                                                            Si nous commençons par l’acquisition de données RADAR, les différents systèmes RADAR utiliser FTP et/ou SFTP pour envoyer des fichiers aux centres de communication de l’est et de l’ouest. Ces hubs exécutent le composant de surveillance d’annuaire (sr_watch) et déterminent @@ -284,7 +284,7 @@

                                                            RADAR -

                                                            HPC Mirroring

                                                            +

                                                            HPC Mirroring

                                                            Tout au long de l’année 2017, les travaux se poursuivaient pour mettre en place un miroir à grande vitesse entre les magasins du site du superordinateur pour permettre le basculement. Ces travaux sont maintenant dans une phase finale de @@ -292,7 +292,7 @@

                                                            HPC MirroringCas d´utilisation de miroitage CHP

                                                            -

                                                            Modifications d’application en 2017

                                                            +

                                                            Modifications d’application en 2017

                                                            Le développement de Sarracenia avait été exploratoire pendant un certain nombre d’années. Les cas d’utilisation initialement attaqués étaient ceux qui avaient un degré élevé de participation d’experts. Elle s’est déroulée en @@ -369,7 +369,7 @@

                                                            Modifications d’app l’intervention dans les opérations.

                                                            -

                                                            À venir en 2018

                                                            +

                                                            À venir en 2018

                                                            A partir de la version 2.18.01a5, tous les cas d’utilisation ciblés ont été explorés et des solutions raisonnables sont disponibles, de sorte qu’il ne devrait pas y avoir d’autres modifications à la la langue ou les options de diff --git a/fr/Explication/Histoire/index.html b/fr/Explication/Histoire/index.html index 30f81b9ce..7c0b714ed 100644 --- a/fr/Explication/Histoire/index.html +++ b/fr/Explication/Histoire/index.html @@ -8,9 +8,9 @@ - + - + @@ -130,7 +130,7 @@ }

                                                            -

                                                            Histoire

                                                            +

                                                            Histoire

                                                            Contenu:

                                                            -

                                                            Résumé

                                                            +

                                                            Résumé

                                                            Au cours de la dernière décennie, le Service d’information de l’Organisation météorologique mondiale (WMO), partie 1, a mis en place des catalogues de métadonnées pour certains ensembles de données météorologiques mondiales. Dans WIS-DAR, @@ -219,7 +219,7 @@

                                                            Résumé

                                                            -

                                                            GTS a été conçu il y a longtemps

                                                            +

                                                            GTS a été conçu il y a longtemps

                                                            ../../../_images/gtsstructureL.png

                                                            Le Système mondial de télécommunications (GTS) du Service météorologique mondial (WIS) de l’Organisation météorologique mondiale (WMO) est la méthode acceptée par WMO pour diffuser @@ -248,7 +248,7 @@

                                                            GTS a été conçu il leurs propres normes.

                                                            -

                                                            GTS est limité et inflexible

                                                            +

                                                            GTS est limité et inflexible

                                                            ../../../_images/GTS_Routing.jpg

                                                            Dans le VTM traditionnel, lorsque de nouvelles données sont mises à disposition par un centre météorologique national (NMC), celui-ci doit émettre des avis et probablement discuter avec son @@ -309,7 +309,7 @@

                                                            GTS est limité et in

                                                            -

                                                            Les bases de données sont optimales pour les enregistrements de taille fixe. Personne ne les utilise de cette façon

                                                            +

                                                            Les bases de données sont optimales pour les enregistrements de taille fixe. Personne ne les utilise de cette façon

                                                            image de deux arbres, l’un invisible et calculé (la BD) d’une part sélectionné, visible, inspectable (système de fichiers.) les performances de récupération doivent être les mêmes, ils font la même chose.

                                                            @@ -339,7 +339,7 @@

                                                            Les bases de données stockage des métadonnées et des index qui pointent vers les éléments de données stockés dans les fichiers.

                                                            -

                                                            Internet Push est un mauvais ajustement pour les gros flux

                                                            +

                                                            Internet Push est un mauvais ajustement pour les gros flux

                                                            Les technologies dites Push sont en fait Pull. Un client demande à un serveur s’il dispose de nouvelles données. Le serveur répond avec la liste des nouvelles données disponibles, puis le client extrait les données. Cela signifie qu’une entité stockant des données doit récupérer @@ -363,7 +363,7 @@

                                                            Internet Push est un inspectées par quiconque sauf l’administrateur de la base de données.

                                                            -

                                                            Store And Forward est souvent meilleur dans la pratique

                                                            +

                                                            Store And Forward est souvent meilleur dans la pratique

                                                            “Store and Forward (Stocker et transférer)” est un terme que nous utiliserons ici pour désigner les technologies qui traitent des données à la réception, par opposition au simple stockage des données et à l’attente des sondages des clients. Les systèmes en temps réel tels que le GTS @@ -437,7 +437,7 @@

                                                            Store And Forward es du nœud.

                                                            -

                                                            Avec les avis AMQP sur un serveur de fichiers standard

                                                            +

                                                            Avec les avis AMQP sur un serveur de fichiers standard

                                                            Plusieurs protocoles et piles logicielles robustes et matures sont disponibles pour de nombreux protocoles de transport de données : FTP, HTTP, HTTP(S), SFTP. Un serveur de fichiers, en tant que moyen de transport de données est un problème résolu avec de nombreuses solutions disponibles @@ -486,7 +486,7 @@

                                                            Avec les avis AMQP s

                                                            -

                                                            Et une arborescence de répertoires convenue

                                                            +

                                                            Et une arborescence de répertoires convenue

                                                            Similaire au choix des indices dans les bases de données, l’efficacité de l’échange dans les serveurs de fichiers dépend essentiellement de l’équilibre de la hiérarchie en termes de nombre de fichiers par répertoire. Une hiérarchie qui garantit que moins de 10 000 @@ -589,7 +589,7 @@

                                                            Et une arborescence de nœuds de l’autre.

                                                            -

                                                            Configurations homologues simples/évolutives pour les nations

                                                            +

                                                            Configurations homologues simples/évolutives pour les nations

                                                            ../../../_images/WMO_mesh.png

                                                            Supposons un maillage de nœuds nationaux avec une connectivité arbitraire entre eux. Les nœuds téléchargent à partir du premier voisin pour annoncer des données, les @@ -639,7 +639,7 @@

                                                            Configurations homol recourir à des normes spécifiques de WMO.

                                                            -

                                                            Utilisation d’une pile (stack)de référence ouverte

                                                            +

                                                            Utilisation d’une pile (stack)de référence ouverte

                                                            ../../../_images/A2B_oldtech.png

                                                            Un exemple de configuration de nœud maillé national (Linux/UNIX très probablement) comprendrait les éléments suivants:

                                                            @@ -670,7 +670,7 @@

                                                            Utilisation d’une car ils sont tous légèrement chargés).

                                                            -

                                                            Maturité

                                                            +

                                                            Maturité

                                                            Pour le Canada, il ne s’agit pas d’un projet expérimental à côté d’autres initiatives. Sarracenia est au centre d’une décennie de travail et le cœur du pompage de données actuellement opérationnel. Il est utilisé en mode opérationnel pour transférer des @@ -794,7 +794,7 @@

                                                            MaturitéPour plus d”informations: Deployments as of January 2018

                                                            -

                                                            Apatridie/Crawlable

                                                            +

                                                            Apatridie/Crawlable

                                                            Comme les serveurs de fichiers en question présentent des fichiers statiques, les transactions avec la pile Pile préférée sont complètement sans état. Les moteurs de recherche explorent facilement ces arbres et, compte tenu @@ -805,7 +805,7 @@

                                                            Apatridie/Crawlable< proposées.

                                                            -

                                                            Programmabilité/interopérabilité

                                                            +

                                                            Programmabilité/interopérabilité

                                                            Une nouvelle application pour traiter sr_post messages peut être réimplémentée s’il y a un désir de le faire, car en plus de la documentation complète, le code source d’une poignée `d’implémentations<../Aperçu.html#implémentations>`_ @@ -816,7 +816,7 @@

                                                            Programmabilité/int Apache NiFi a été démontrée par certains clients, mais ils ont refusé de publier le travail.

                                                            -

                                                            Priorités

                                                            +

                                                            Priorités

                                                            FIXME: Faire une image, avec des files d’attente séparées pour des types de données distincts?

                                                            Dans le GTS de WMO, les données sont séparées en données alphanumériques et binaires et, au sein d’un flux unique, un mécanisme de priorité était disponible, dont la mise en œuvre n’était pas @@ -837,7 +837,7 @@

                                                            Priorités
                                                            -

                                                            Contenu en ligne dans les messages

                                                            +

                                                            Contenu en ligne dans les messages

                                                            Il est tentant d’intégrer (ou d’inclure) des données dans les messages AMQP pour les petits types de données. L’espoir est que nous évitions une initiation de connexion et un aller-retour supplémentaire. L’exemple typique serait les avertissements météorologiques. Pouvons-nous améliorer @@ -930,7 +930,7 @@

                                                            Contenu en ligne dan

                                                            -

                                                            Mise en garde: Solution à ce problème, pas tous les problèmes

                                                            +

                                                            Mise en garde: Solution à ce problème, pas tous les problèmes

                                                            Les courtiers AMQP fonctionnent bien, avec les implémentations sarracenia du service météorologique canadien, ils sont utilisés pour des dizaines de millions de transferts de fichiers pour un total de 30 téraoctets par jour. L’adoption est encore limitée car elle est plus compliquée à comprendre diff --git a/fr/Explication/Histoire/messages_v01.html b/fr/Explication/Histoire/messages_v01.html index 7d82aee32..db1917371 100644 --- a/fr/Explication/Histoire/messages_v01.html +++ b/fr/Explication/Histoire/messages_v01.html @@ -8,9 +8,9 @@ - + - + @@ -131,7 +131,7 @@ }

                                                            -

                                                            Message v01 Format

                                                            +

                                                            Message v01 Format

                                                            Status: Approved-Draft1-20150805

                                                            Description du protocole / format du message.

                                                            Ce dossier documente les conclusions/propositions finales, les raisonnements/débats vont ailleurs.

                                                            @@ -316,7 +316,7 @@

                                                            Message v01 Format -

                                                            Journaux des messages

                                                            +

                                                            Journaux des messages

                                                            Le message du journal contient :

                                                            n’est émis qu’une fois le traitement terminé, pour indiquer un état final.

                                                            Le sujet correspond au message de notification sauf…

                                                            @@ -326,7 +326,7 @@

                                                            Journaux des messages<date> blksz blckcnt rest blocknum flags <flow> baseurl relativeurl <status> <host> <client> <duration>

                                                            -

                                                            Messages du CFG

                                                            +

                                                            Messages du CFG

                                                            juste un espace réservé.

                                                            vraiment pas encore fini. La pensée est en configuration.txt

                                                            v01.cfg

                                                            diff --git a/fr/Explication/Histoire/messages_v02.html b/fr/Explication/Histoire/messages_v02.html index eaf3a9505..c4028b85f 100644 --- a/fr/Explication/Histoire/messages_v02.html +++ b/fr/Explication/Histoire/messages_v02.html @@ -8,9 +8,9 @@ - + - + @@ -132,7 +132,7 @@

                                                            Status: Approved-Draft2-20150825

                                                            -

                                                            Description du protocole / format du message v02

                                                            +

                                                            Description du protocole / format du message v02

                                                            Ce fichier a été utilisé lors de la phase de conception, mais après la mise en œuvre, elle est remplacée par la page de manuel sr_post(7).

                                                            Ce dossier documente les conclusions/propositions finales, les raisonnements/débats diff --git a/fr/Explication/Histoire/messages_v03.html b/fr/Explication/Histoire/messages_v03.html index b826004fc..1b809730b 100644 --- a/fr/Explication/Histoire/messages_v03.html +++ b/fr/Explication/Histoire/messages_v03.html @@ -8,9 +8,9 @@ - + - + @@ -131,11 +131,11 @@ }

                                                            -

                                                            Modifications apportées pour créer la v03

                                                            +

                                                            Modifications apportées pour créer la v03

                                                            Le format réel est défini ici Une explication de la motivation des changements est ci-dessous:

                                                            -

                                                            Différences par rapport à v02

                                                            +

                                                            Différences par rapport à v02

                                                            La version 03 est un changement d’encodage, mais la sémantique des champs sont inchangés par rapport à la version 02. Les modifications sont limitées à la façon dont les champs sont placés dans les messages. Dans v02, les en-têtes AMQP étaient utilisés pour stocker la valeur des diff --git a/fr/Explication/SarraPluginDev.html b/fr/Explication/SarraPluginDev.html index 012cab121..5e1083cc0 100644 --- a/fr/Explication/SarraPluginDev.html +++ b/fr/Explication/SarraPluginDev.html @@ -8,9 +8,9 @@ - + - + @@ -127,19 +127,19 @@ }

                                                            -

                                                            Guide de programmation Sarracenia

                                                            +

                                                            Guide de programmation Sarracenia

                                                            -

                                                            Travailler avec des plugins

                                                            +

                                                            Travailler avec des plugins

                                                            version:

                                                            UNKNOWN

                                                            date:
                                                            -

                                                            Aug 16, 2023

                                                            +

                                                            Aug 18, 2023

                                                            -

                                                            Audience

                                                            +

                                                            Audience

                                                            Les lecteurs de ce manuel doivent être à l’aise avec les scripts légers dans Python version 3. Alors qu’une grande partie de la compatibilité v2 est incluse dans Sarracenia version 3, le remplacement des interfaces de programmation est une grande partie de ce qui se trouve dans la version 3. @@ -147,7 +147,7 @@

                                                            Audience -

                                                            Introduction

                                                            +

                                                            Introduction

                                                            Sarracenia v3 comprend un certain nombre de points où le traitement peut être personnalisé par de petits extraits de code fourni par l’utilisateur, appelés flowCallbacks. Les flowCallbacks eux-mêmes sont censés être concis, et une connaissance élémentaire de Python devrait suffire à @@ -185,7 +185,7 @@

                                                            Introduction -

                                                            Listes de travail (Worklist)

                                                            +

                                                            Listes de travail (Worklist)

                                                            La structure de données de liste de travail est un ensemble de listes de messages. Il y en a quatre :

                                                              @@ -211,7 +211,7 @@

                                                              Listes de travail (Worklist) -

                                                              Rappels de Flux (Flow Callbacks)

                                                              +

                                                              Rappels de Flux (Flow Callbacks)

                                                              Avec les nombreuses façons d’étendre les fonctionnalités, la plus courante est l’ajout de rappels pour faire circuler les composants. Tous les composants de Sarracenia sont implémentés à l’aide de la classe sarra.flow. Il existe une classe parent sarra.flowcb pour les implémenter. @@ -261,7 +261,7 @@

                                                              Rappels de Flux (Flow Callbacks) -

                                                              Paramètres

                                                              +

                                                              Paramètres

                                                              Souvent, lors de l’écriture d’extensions via la sous-classification, des options supplémentaires doivent être définies. La classe sarracenia.config effectue analyse d’options a partir de la ligne de commande et de fichier de configuration. Il y a une routine qui peut être appelée à partir du nouveau code @@ -299,7 +299,7 @@

                                                              Paramètreshttps://metpx.github.io/sarracenia/Reference/code.html#sarracenia.config.Config

                                                              -

                                                              Paramètres hiérarchiques

                                                              +

                                                              Paramètres hiérarchiques

                                                              On peut également créer des paramètres spécifiques pour les classes de rappel individuelles à l’aide du _set_ et en identifiant la classe exacte à laquelle le paramètre s’applique. Par exemple parfois, tourner le logLevel en débogage peut entraîner des fichiers journaux très volumineux, et on pourrait @@ -310,7 +310,7 @@

                                                              Paramètres hiérarchiques -

                                                              Affichage de tous les paramètres

                                                              +

                                                              Affichage de tous les paramètres

                                                              Utilisez la commande _sr3_ _show_ pour afficher tous les paramètres actifs résultant d’un fichier de configuration

                                                              fractal% sr3 show sarra/download_f20.conf
                                                               
                                                              @@ -340,11 +340,11 @@ 

                                                              Affichage de tous les paramètres -

                                                              Contrôle de la journalisation

                                                              +

                                                              Contrôle de la journalisation

                                                              La méthode de compréhension de l’activité de flux sr3 consiste à examiner ses journaux. La journalisation peut être assez lourde dans sr3, il existe donc de nombreuses façons de l’affiner.

                                                              -

                                                              logLevel

                                                              +

                                                              logLevel

                                                              le logLevel normal est utilisé dans les classes Log de python intégrées. Il a les niveaux : debug, info, warning, error, et critical, où level indique le message de priorité la plus basse à imprimer. La valeur par défaut est info.

                                                              @@ -355,46 +355,46 @@

                                                              logLevel -

                                                              set sarracenia.transfer.Transfer.logLevel debug

                                                              +

                                                              set sarracenia.transfer.Transfer.logLevel debug

                                                              Peut contrôler le logLevel utilisé dans les classes de transfert, pour le définir plus bas ou plus haut que le reste de sr3.

                                                              -

                                                              set sarracenia.moth.amqp.AMQP.logLevel debug

                                                              +

                                                              set sarracenia.moth.amqp.AMQP.logLevel debug

                                                              Imprimez les messages de débogage spécifiques à la fil d’attente de messages AMQP (classe sarracenia.moth.amqp.AMQP). utilisé uniquement lors du débogage avec le MQP lui-même, pour traiter les problèmes de connectivité du courtier par exemple. diagnostic et test d’interopérabilité.

                                                              -

                                                              set sarracenia.moth.mqtt.MQTT.logLevel debug

                                                              +

                                                              set sarracenia.moth.mqtt.MQTT.logLevel debug

                                                              Imprimez les messages de débogage spécifiques à la fil d’attente de messages MQTT (classe sarracenia.moth.mqtt.MQTT). utilisé uniquement lors du débogage avec le MQP lui-même, pour traiter les problèmes de connectivité du courtier par exemple. diagnostic et test d’interopérabilité.

                                                              -

                                                              logEvents

                                                              +

                                                              logEvents

                                                              valeur par défaut : after_accept, after_work, on_housekeeping disponible: after_accept, after_work, all, gather, on_housekeeping, on_start, on_stop, post

                                                              implémenté par la classe sarracenia.flowcb.log.Log, on peut sélectionner les événements qui génèrent le journal Messages. caractère générique : all génère des messages de journal pour chaque événement connu de la classe Log.

                                                              -

                                                              logMessageDump

                                                              +

                                                              logMessageDump

                                                              mis en œuvre par sarracenia.flowcb.log, à chaque événement de journalisation, imprimer le contenu actuel du message en cours de traitement.

                                                              -

                                                              logReject

                                                              +

                                                              logReject

                                                              imprimer un message de journal pour chaque message rejeté (normalement ignoré silencieusement).

                                                              -

                                                              messageDebugDump

                                                              +

                                                              messageDebugDump

                                                              Implémenté dans des sous-classes de moth, imprime les octets réellement reçus ou envoyés pour le protocole MQP utilisé.

                                                              -

                                                              Extension des classes

                                                              +

                                                              Extension des classes

                                                              On peut ajouter des fonctionnalités supplémentaires à Sarracenia en créant des sous-classes.

                                                              • sarra.moth - Messages organisés en hiérarchies de thèmes. (existants : rabbitmq-amqp)

                                                              • @@ -410,10 +410,10 @@

                                                                Extension des classes

                                                              -

                                                              The Simplest Flow_Callback

                                                              +

                                                              The Simplest Flow_Callback

                                                              -

                                                              Sample Extensions

                                                              +

                                                              Sample Extensions

                                                              Vous trouverez ci-dessous une classe d’exemple flowCallback minimale, qui se trouverait dans un sample.py. Le fichier est placé dans n’importe quel répertoire du PYTHONPATH:

                                                              import logging
                                                              @@ -461,7 +461,7 @@ 

                                                              Sample Extensions -

                                                              Champs dans les Messages

                                                              +

                                                              Champs dans les Messages

                                                              les rappels reçoivent le paramètre sarracenia.options déjà analysé. self est le message en cours de traitement. variables les plus utilisées :

                                                              @@ -529,7 +529,7 @@

                                                              Champs dans les Messages -

                                                              Accès aux options

                                                              +

                                                              Accès aux options

                                                              Les paramètres résultant de l’analyse des fichiers de configuration sont également facilement disponibles. Les plugins peuvent définir leurs propres options en appelant:

                                                              FIXME: api incomplete.
                                                              @@ -556,7 +556,7 @@ 

                                                              Accès aux options -

                                                              Points de rappel de flux

                                                              +

                                                              Points de rappel de flux

                                                              Sarracenia interprétera les noms des fonctions comme des heures d’indication dans le de traitement lorsque une routine donnée devrait être appelée.

                                                              Voir le FlowCB source @@ -662,7 +662,7 @@

                                                              Points de rappel de flux -

                                                              Personnalisation du Callback de Flux de Poll

                                                              +

                                                              Personnalisation du Callback de Flux de Poll

                                                              Une sous-classe intégrée de flowcb, sarracenia.flowcb.poll.Poll implémente la majorité du sondage (poll) sr3. Il existe de nombreux types de ressources à interroger, et tant d’options pour les personnaliser sont nécessaires. La personnalisation est accomplie @@ -728,7 +728,7 @@

                                                              Personnalisation du Callback de Flux de Poll -

                                                              Meilleure réception des fichiers

                                                              +

                                                              Meilleure réception des fichiers

                                                              Par exemple, plutôt que d’utiliser le système de fichiers, sr_subscribe pourrait indiquer quand chaque fichier est prêt en écrivant dans un canal nommé

                                                              blacklab% sr_subscribe edit dd_swob.conf
                                                              @@ -764,7 +764,7 @@ 

                                                              Meilleure réception des fichiers -

                                                              Réception avancée des fichiers

                                                              +

                                                              Réception avancée des fichiers

                                                              Le point d’entrée after_work dans une classe sarracenia.flowcb est une action à effectuer après réception d’un fichier (ou après l’envoi, dans un sender.) Le module RxPipe en est un exemple fourni avec sarracenia:

                                                              @@ -820,7 +820,7 @@

                                                              Réception avancée des fichiers -

                                                              Utilisation des Identifiants dans les Plugins

                                                              +

                                                              Utilisation des Identifiants dans les Plugins

                                                              Pour mettre en œuvre la prise en charge de protocoles supplémentaires, il faut souvent des informations d’identification dans le script avec le code :

                                                                @@ -843,7 +843,7 @@

                                                                Utilisation des Identifiants dans les Plugins -

                                                                Pourquoi l’API v3 doit être utilisée dans la mesure du possible

                                                                +

                                                                Pourquoi l’API v3 doit être utilisée dans la mesure du possible

                                                                • utilise importlib de python, un moyen beaucoup plus standard d’enregistrer des plugins. maintenant les erreurs de syntaxe seront détectées comme n’importe quel autre module python importé, @@ -878,7 +878,7 @@

                                                                  Pourquoi l’API v3 doit être utilisée dans la mesure du possible

                                                              -

                                                              Notification de fichier sans téléchargement

                                                              +

                                                              Notification de fichier sans téléchargement

                                                              Si la pompe de données existe dans un environnement partagé de grande taille, tel qu’un centre de supercalcul avec un système de fichiers de site, le fichier peut être disponible sans téléchargement. Donc, juste @@ -907,7 +907,7 @@

                                                              Notification de fichier sans téléchargement -

                                                              Ajout de Dépendance Python dans les Callbacks

                                                              +

                                                              Ajout de Dépendance Python dans les Callbacks

                                                              Certains callback doivent utiliser d’autres modules Python. Alors que les importations normales sont bien, on peut mieux les intégrer pour les utilisateurs sr3 en prenant en se servant du mécanisme features

                                                              @@ -958,7 +958,7 @@

                                                              Ajout de Dépendance Python dans les Callbacks -

                                                              Idées d’extension

                                                              +

                                                              Idées d’extension

                                                              Exemples de choses qui seraient amusantes à faire avec les plugins:

                                                              • Common Alerting Protocol (CAP), est un format XML qui fournit des avertissements @@ -983,7 +983,7 @@

                                                                Idées d’extension -

                                                                Polling

                                                                +

                                                                Polling

                                                                Pour implémenter un sondage personnalisé, déclarez-le en tant que sous-classe de Sondage (sarracenia.flowcb.poll.Poll), et seulement la routine nécessaire (dans ce cas l’analyse html « handle_data ») doit être écrite pour remplacer le comportement fourni @@ -1029,7 +1029,7 @@

                                                                Pollinghttps://github.com/MetPX/sarracenia/blob/v03_wip/sarracenia/examples/poll/nasa-mls-nrt.conf )

                                                              -

                                                              Accès aux messages à partir de Python

                                                              +

                                                              Accès aux messages à partir de Python

                                                              Jusqu’à présent, nous avons présenté des méthodes d’écriture de personnalisations de traitement Sarracenia, où l’on écrit des extensions, via des rappels ou une extension pour modifier ce que font les instances de flux de sarracénia.

                                                              diff --git a/fr/Explication/StrategieDetectionFichiers.html b/fr/Explication/StrategieDetectionFichiers.html index fca9a321a..253a9677b 100644 --- a/fr/Explication/StrategieDetectionFichiers.html +++ b/fr/Explication/StrategieDetectionFichiers.html @@ -8,9 +8,9 @@ - + - + @@ -124,7 +124,7 @@ }
                                                              -

                                                              File Detection Strategies

                                                              +

                                                              File Detection Strategies

                                                              Le travail fondamental de sr_watch est de remarquer quand les fichiers sont disponibles pour être transférés. La stratégie appropriée varie en fonction de:

                                                              @@ -145,7 +145,7 @@

                                                              File Detection Strategies -

                                                              Tableau de stratégie de détection de fichiers

                                                              +

                                                              Tableau de stratégie de détection de fichiers

                                                            Historique des applications de pompage de données pour Environnement Canada

                                                            Stratégies de détection de fichiers (ordre : de la plus rapide à la plus lente) @@ -435,7 +435,7 @@

                                                            Tableau de stratégie de détection de fichiers -

                                                            SHIM LIBRARY USAGE

                                                            +

                                                            SHIM LIBRARY USAGE

                                                            Rather than invoking a sr3_post to post each file to publish, one can have processes automatically post the files they right by having them use a shim library intercepting certain file i/o calls to libc and the kernel. To activate the shim library, in the shell environment add:

                                                            @@ -464,7 +464,7 @@

                                                            SHIM LIBRARY USAGE -

                                                            Shim Usage Notes

                                                            +

                                                            Shim Usage Notes

                                                            Cette méthode de notification nécessite une certaine configuration de l’environnement de l’utilisateur. L’environnement de l’utilisateur doit être défini sur les variables d’environnement LD_PRELOAD avant le lancement du processus. Il restent encore des complications qui restent qui ont été @@ -499,7 +499,7 @@

                                                            Shim Usage Notes -

                                                            Processus de Renommage

                                                            +

                                                            Processus de Renommage

                                                            C’est à noter que le changement de nom de fichier n’est pas aussi simple dans le cas de mise en miroir que dans le cas sous-jacent du système d’exploitation. Alors que l’opération est une seule opération atomique dans un système d’exploitation, avec l’aide de notifications, il existe des cas d’acceptation/rejet qui créent quatre effets possibles.

                                                            diff --git a/fr/Explication/SupprimerLesDoublons.html b/fr/Explication/SupprimerLesDoublons.html index 31ce272c1..8f3a0398e 100644 --- a/fr/Explication/SupprimerLesDoublons.html +++ b/fr/Explication/SupprimerLesDoublons.html @@ -8,9 +8,9 @@ - + - + @@ -128,7 +128,7 @@ }
                                                            -

                                                            Suppression de Doublons

                                                            +

                                                            Suppression de Doublons

                                                            Lors qu’on achemine les données à travers de réseaux, il faut se préoccuper des “orages” de données causé par des boucles de transfert (un serveur A envoit à B, qui renvoit à C, qui renvoit à A. Si A ne sait pas qu´il l´a déjà vu, on a un boucle infini, qui peut etre décrit comme un orage le volume @@ -160,13 +160,13 @@

                                                            Suppression de Doublons
                                                            -

                                                            Standard (basé sur le chemin et contenu)

                                                            +

                                                            Standard (basé sur le chemin et contenu)

                                                            méthode: Quand les produits on le même clé et chemin, ils sont des doublons.

                                                            Deux serveur peuvent envoyer le même produit, aven le même relPath à un serveur plus loin.

                                                            -

                                                            Data (basé uniquement sur le contenu)

                                                            +

                                                            Data (basé uniquement sur le contenu)

                                                            method: Quand les produits on le même clé, ils sont des doublons.

                                                            dans le ficher de configuration on devrait voir:

                                                            nodupe_basis data
                                                            @@ -184,7 +184,7 @@ 

                                                            Data (basé uniquement sur le contenu) -

                                                            Name (basé uniquement sur le nom)

                                                            +

                                                            Name (basé uniquement sur le nom)

                                                            method: Quand les fichiers ont le même nom, ils sont identiques.

                                                            dans le fichier de configuration, soit:

                                                            nodupe_basis data
                                                            @@ -199,7 +199,7 @@ 

                                                            Name (basé uniquement sur le nom) -

                                                            URP

                                                            +

                                                            URP

                                                            Dans le cas des systèmes de traitement de données RADAR, il y 6 serveurs qui génèrent les mêmes produits (bien qu´il ne soient pas exactement le même séquence d´octets.) Les produit sont les même parce qu´ils sont dérivé de les même données en amont, @@ -211,7 +211,7 @@

                                                            URP

                                                            -

                                                            Le fichiers trop changeant (mdelaylatest)

                                                            +

                                                            Le fichiers trop changeant (mdelaylatest)

                                                            method: retard les fichiers x secondes pour assurer qu´il n´y a pas de nouvelle version.

                                                            NB: Il s’agit d’un filtre supplémentaire à la suppression des doublons, et ce qui précède @@ -226,7 +226,7 @@

                                                            Le fichiers trop changeant (mdelaylatest) -

                                                            cas d´usage

                                                            +

                                                            cas d´usage

                                                            Dans certains cas, certaines sources de données re-écrivent très souvent les fichiers. Si les fichiers sont volumineux (la copie prend beaucoup de temps) ou s’il y a une fil d’attente (l’abonné a un certain temps de retard sur le producteur.), un algorithme pourrait écraser un fichier, ou @@ -237,7 +237,7 @@

                                                            cas d´usage -

                                                            les citypages du site météo.gc.ca

                                                            +

                                                            les citypages du site météo.gc.ca

                                                            ( https://hpfx.collab.science.gc.ca/YYYYMMDD/WXO-DD/citypage_weather/ )

                                                            là, les citypages sont un produit composé (dérivé de nombreux produits en amont distincts.) le script qui crée les produits citypage semble écrire un en-tête, puis un enregistrement, @@ -246,7 +246,7 @@

                                                            les citypages du site météo.gc.ca -

                                                            Miroitage CHP

                                                            +

                                                            Miroitage CHP

                                                            Dans la miroitage à grande vitesse des données entre des grappes de calcul haute performance, les programmes passent souvent du temps à ajouter des enregistrements aux fichiers, peut-être des centaines de fois par seconde. Une fois le script terminé, le fichier devient en lecture seule pour les consommateurs. Ce n’est pas utile @@ -257,7 +257,7 @@

                                                            Miroitage CHP -

                                                            Fichiers trop vieux

                                                            +

                                                            Fichiers trop vieux

                                                            method: les messages à propos des fichiers trop vieux sont supprimés.

                                                            dans les fichiers de configuration:

                                                            nodupe_fileAgeMax 600
                                                            @@ -270,7 +270,7 @@ 

                                                            Fichiers trop vieux -

                                                            A votre gout!

                                                            +

                                                            A votre gout!

                                                            Dans le fichier de configuration:

                                                            vos_parametres
                                                             flowcb_prepend votre_class.VotreClass
                                                            diff --git a/fr/Explication/index.html b/fr/Explication/index.html
                                                            index 702cd191d..e2e808699 100644
                                                            --- a/fr/Explication/index.html
                                                            +++ b/fr/Explication/index.html
                                                            @@ -8,9 +8,9 @@
                                                                   
                                                                   
                                                               
                                                            -        
                                                            +        
                                                                     
                                                            -        
                                                            +        
                                                                     
                                                                 
                                                                 
                                                            @@ -119,7 +119,7 @@
                                                             }
                                                             
                                                             
                                                            -

                                                            Explication

                                                            +

                                                            Explication

                                                            Contenu:

                                                              diff --git a/fr/Explication/sftps.html b/fr/Explication/sftps.html index 274ca64eb..8ae514bcc 100644 --- a/fr/Explication/sftps.html +++ b/fr/Explication/sftps.html @@ -8,9 +8,9 @@ - + - + @@ -130,7 +130,7 @@ }
                                                              -

                                                              Pourquoi SFTP est plus souvent choisi que FTPS

                                                              +

                                                              Pourquoi SFTP est plus souvent choisi que FTPS

                                                              Il y a eu des discussions sur l’endroit où placer un S afin de transferts de fichiers sécurisés. Parmi une variété de technologies concurrentes, il y en a deux qui peuvent sembler assez équivalents : SFTP et FTPS. Les deux @@ -145,7 +145,7 @@

                                                              Pourquoi SFTP est plus souvent choisi que FTPS -

                                                              FTP

                                                              +

                                                              FTP

                                                              Dans les premiers jours d’Internet, avant même l’avènement du World Wide Web, l’une des premières applications était un transfert de fichiers, tel que défini pour la première fois par Internet Engineering Task @@ -167,7 +167,7 @@

                                                              FTP

                                                              -

                                                              Échangeurs de produits : prise en charge d’un grand nombre de transferts

                                                              +

                                                              Échangeurs de produits : prise en charge d’un grand nombre de transferts

                                                              Dans les temps modernes, si l’on transfère des centaines de milliers ou des millions de fichiers, il y aura probablement un grand nombre d’appareils de réseau entre les serveurs d’Alice et bob. Le diagramme suivant est un diagramme typique @@ -237,7 +237,7 @@

                                                              Échangeurs de produits : prise en charge d’un grand nombre de transferts< mis en œuvre sur les périphériques réseau pour couvrir ce cas particulier.

                                                              -

                                                              FTPS

                                                              +

                                                              FTPS

                                                              FTPS - est FTP avec la sécurité de niveau de transport ajoutée. Le chemin de contrôle est maintenant chiffré et n’est donc pas disponible aux proxys sur chacun des firewall et équilibreurs de charge (tels que @@ -286,7 +286,7 @@

                                                              FTPS et auront du mal à le déployer. Il est rare de trouver une pair qui préfère FTPS.

                                                              -

                                                              Coût

                                                              +

                                                              Coût

                                                              Si l’on suppose que le chemin de contrôle seul peut être intercepté, en laissant le chemin des données, alors du point de vue de la complexité computationnelle, le chemin de contrôle, plutôt que de simplement passer des paquets à travers chaque périphérique NAT/PAT @@ -316,7 +316,7 @@

                                                              Coût mises à jour, besoin de maintenir des cartes statiques supplémentaires, plus de surveillance de firewall).

                                                              -

                                                              Fonctionnalité: Plages d’octets

                                                              +

                                                              Fonctionnalité: Plages d’octets

                                                              En plus de la complexité beaucoup plus grande de la prise en charge du firewall pour FTPS, et la charge supplémentaire sur les firewall coûteux, il y a également uen fonctionnalité réduite disponible par rapport aux protocoles plus récents, @@ -328,7 +328,7 @@

                                                              Fonctionnalité: Plages d’octets -

                                                              Sécurité/Vulnérabilité

                                                              +

                                                              Sécurité/Vulnérabilité

                                                              FTPS, comme FTP, est généralement authentifié à l’aide de mots de passe secrets. Si la pair dans un échange subit une intrusion, le hachage du mot de passe peut être utilisé pour obtenir le mot de passe lui-même en utilisant ce que l’on appelle la méthode brute @@ -392,7 +392,7 @@

                                                              Sécurité/Vulnérabilité -

                                                              Fiabilité/Complexité

                                                              +

                                                              Fiabilité/Complexité

                                                              Il existe plusieurs modes de FTP: ascii / binaire, actif / passif, qui créent plus de cas. FTPS ajoute plus de cas: explicite / implicite au nombre à autoriser. Le cryptage peut être activé et désactivé à différents points de chemins de contrôle et de données.

                                                              @@ -416,7 +416,7 @@

                                                              Fiabilité/Complexité

                                                              -

                                                              Résumé

                                                              +

                                                              Résumé

                                                              Soit le proxy FTPS est effectué de manière entièrement générale :

                                                              • les dispositifs intervenants doivent effectuer un décryptage de l’homme du milieu diff --git a/fr/Reference/glossary.html b/fr/Reference/glossary.html index d062e29de..c2a3f663d 100644 --- a/fr/Reference/glossary.html +++ b/fr/Reference/glossary.html @@ -8,9 +8,9 @@ - + - + @@ -116,7 +116,7 @@ }

                                                                -

                                                                Traduction de terminologie

                                                                +

                                                                Traduction de terminologie

                                                                diff --git a/fr/Reference/index.html b/fr/Reference/index.html index c04a11158..b06af02e3 100644 --- a/fr/Reference/index.html +++ b/fr/Reference/index.html @@ -8,9 +8,9 @@ - + - + @@ -115,7 +115,7 @@ }
                                                                -

                                                                Référence

                                                                +

                                                                Référence

                                                                Contents:

                                                                  diff --git a/fr/Reference/sr3.1.html b/fr/Reference/sr3.1.html index 82ea3b451..4c622455e 100644 --- a/fr/Reference/sr3.1.html +++ b/fr/Reference/sr3.1.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                                                                  -

                                                                  SR3

                                                                  +

                                                                  SR3

                                                                  -

                                                                  sr3 Sarracenia CLI

                                                                  +

                                                                  sr3 Sarracenia CLI

                                                                  Manual section:

                                                                  1

                                                                  Date:
                                                                  -

                                                                  Aug 16, 2023

                                                                  +

                                                                  Aug 18, 2023

                                                                  Version:

                                                                  UNKNOWN

                                                                  @@ -137,11 +137,11 @@

                                                                  sr3 Sarracenia CLI -

                                                                  SYNOPSIS

                                                                  +

                                                                  SYNOPSIS

                                                                  sr3 options action [ composant/config … ]

                                                                  -

                                                                  DESCRIPTION

                                                                  +

                                                                  DESCRIPTION

                                                                  Sr3 est un outil pour gérer une flotte de démons, ou les résultats/sortie du programme est principalement dans les fichiers logs. Sr3 permet à l’utilisateur de commencer, arrêter, et se renseigner sur le statut d’un flux de sarracenia déjà configuré. C’est le point d’entrée principal de la ligne de commande pour @@ -162,7 +162,7 @@

                                                                  DESCRIPTION -

                                                                  OPTIONS

                                                                  +

                                                                  OPTIONS

                                                                  La majorité des options son stockés dans des fichiers de configuration. Ceci est dénoté par compsant/config indiqué par le nom du fichier, mais de temps en temps, on peut utiliser la ligne de commande pour remplacer une valeur dans le fichier de configuration. Les options sont défini @@ -176,7 +176,7 @@

                                                                  OPTIONS -

                                                                  ACTIONS

                                                                  +

                                                                  ACTIONS

                                                                  Les types d’actions disponible. Une seule parmi:

                                                                    @@ -204,7 +204,7 @@

                                                                    ACTIONS -

                                                                    COMPOSANTS

                                                                    +

                                                                    COMPOSANTS

                                                                    The Flow Algorithme est ce qui est exécuté par tout les processus de sr3. Le comportement de l’algorithme du flux est adaptable aves les options, dont certaines contrôlent des modules optionnels (flowcallbacks). Chaque composant possède de @@ -222,7 +222,7 @@

                                                                    COMPOSANTS -

                                                                    CONFIGURATIONS

                                                                    +

                                                                    CONFIGURATIONS

                                                                    Quand une paire de composant/configuration et spécifiée sur la ligne de commande, la configuration se fait construire a partir de:

                                                                    @@ -272,7 +272,7 @@

                                                                    CONFIGURATIONS -

                                                                    Configurations a Distance

                                                                    +

                                                                    Configurations a Distance

                                                                    Il est possible de spécifier des URI en tant que fichiers de configuration, plutôt que des fichiers locaux. Exemple:

                                                                      @@ -295,7 +295,7 @@

                                                                      Configurations a Distance -

                                                                      Logs

                                                                      +

                                                                      Logs

                                                                      Pour les fichiers de logs, il faut regarder dans ~/.cache/sr3/logs (pour linux. Cela va varier sur d’autres plateformes.) Pour les trouver sur n’importe quel plateforme:

                                                                      fractal% sr3 list
                                                                      @@ -308,7 +308,7 @@ 

                                                                      Logs

                                                                  -

                                                                  EXEMPLES

                                                                  +

                                                                  EXEMPLES

                                                                  Voici un exemple complet de fichier de configuration:

                                                                  broker amqps://dd.weather.gc.ca/
                                                                   
                                                                  @@ -328,7 +328,7 @@ 

                                                                  EXEMPLES -

                                                                  VOIR AUSSI

                                                                  +

                                                                  VOIR AUSSI

                                                                  Commande de l’utilisateur:

                                                                  sr3_post(1) - poste des annoncements de fichiers (implémentation en Python.)

                                                                  sr3_cpost(1) - poste des annoncements de fichiers (implémentation en C.)

                                                                  diff --git a/fr/Reference/sr3_cpump.1.html b/fr/Reference/sr3_cpump.1.html index 72c914295..3f797007e 100644 --- a/fr/Reference/sr3_cpump.1.html +++ b/fr/Reference/sr3_cpump.1.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                                                                  -

                                                                  SR_CPUMP

                                                                  +

                                                                  SR_CPUMP

                                                                  -

                                                                  sr_shovel en C

                                                                  +

                                                                  sr_shovel en C

                                                                  Manual section:

                                                                  1

                                                                  Date:
                                                                  -

                                                                  Aug 16, 2023

                                                                  +

                                                                  Aug 18, 2023

                                                                  Version:

                                                                  UNKNOWN

                                                                  @@ -137,12 +137,12 @@

                                                                  sr_shovel en C -

                                                                  SYNOPSIS

                                                                  +

                                                                  SYNOPSIS

                                                                  sr_cpump foreground|start|stop|restart|reload|status configfile sr_cpump cleanup|declare|setup configfile

                                                                  -

                                                                  DESCRIPTION

                                                                  +

                                                                  DESCRIPTION

                                                                  sr_cpump est une implémentation alternative du composant shovel de sr3(1) avec quelques limites.

                                                                  @@ -190,7 +190,7 @@

                                                                  DESCRIPTION -

                                                                  CONFIGURATION

                                                                  +

                                                                  CONFIGURATION

                                                                  En général, les options de ce composant sont décrites par la page sr3_options(7) qui doit être lue en premier. Elle explique en détail la langue de configuration des options et comment trouver @@ -200,7 +200,7 @@

                                                                  CONFIGURATION -

                                                                  VARIABLES ENVIRONNEMENTALES

                                                                  +

                                                                  VARIABLES ENVIRONNEMENTALES

                                                                  Si la variable SR_CONFIG_EXAMPLES est définie, la directive add peut être utilisée pour copier des exemples dans le répertoire de l’utilisateur à des fins d’utilisation et/ou de personnalisation.

                                                                  Une entrée dans ~/.config/sarra/default.conf (créé via sr_subscribe edit default.conf ) @@ -212,7 +212,7 @@

                                                                  VARIABLES ENVIRONNEMENTALES -

                                                                  VOIR AUSSI

                                                                  +

                                                                  VOIR AUSSI

                                                                  User Commands:

                                                                  sr3(1) - Interface de ligne de commande principale de Sarracenia.

                                                                  sr3_post(1) - publication des annonces de fichiers (implémentation Python.)

                                                                  diff --git a/fr/Reference/sr3_credentials.7.html b/fr/Reference/sr3_credentials.7.html index c983816f3..e56b63eb8 100644 --- a/fr/Reference/sr3_credentials.7.html +++ b/fr/Reference/sr3_credentials.7.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                                                                  -

                                                                  SR3 CREDENTIALS

                                                                  +

                                                                  SR3 CREDENTIALS

                                                                  -

                                                                  SR3 Credential: Format du Fichier

                                                                  +

                                                                  SR3 Credential: Format du Fichier

                                                                  manual section:

                                                                  7

                                                                  Date:
                                                                  -

                                                                  Aug 16, 2023

                                                                  +

                                                                  Aug 18, 2023

                                                                  Version:

                                                                  UNKNOWN

                                                                  @@ -137,7 +137,7 @@

                                                                  SR3 Credential: Format du Fichier -

                                                                  CONFIGURATION

                                                                  +

                                                                  CONFIGURATION

                                                                  Normalement, les mots de passe ne sont pas spécifiés dans les fichiers de configuration. Ils sont plutôt placés dans le fichier d’identification (credentials)

                                                                  edit ~/.config/sr3/credentials.conf
                                                                  @@ -170,7 +170,7 @@ 

                                                                  CONFIGURATION -

                                                                  Identifiants et Details

                                                                  +

                                                                  Identifiants et Details

                                                                  Vous devrez peut-être spécifier des options supplémentaires pour des identifiants spécifiques. Ces détails peuvent être ajoutés après la fin de l’URL, avec plusieurs détails séparés par des virgules (voir les exemples ci-dessus).

                                                                  @@ -203,7 +203,7 @@

                                                                  Identifiants et Details

                                                                  -

                                                                  VOIR AUSSI

                                                                  +

                                                                  VOIR AUSSI

                                                                  sr3(1) - Sarracenia ligne de commande principale.

                                                                  sr3_post(1) - poste des annoncements de fichiers (implémentation en Python.)

                                                                  sr3_cpost(1) - poste des annoncements de fichiers (implémentation en C.)

                                                                  diff --git a/fr/Reference/sr3_options.7.html b/fr/Reference/sr3_options.7.html index ad13f90de..cd798da17 100644 --- a/fr/Reference/sr3_options.7.html +++ b/fr/Reference/sr3_options.7.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                                                                  -

                                                                  OPTIONS SR3

                                                                  +

                                                                  OPTIONS SR3

                                                                  -

                                                                  Format de fichier de configuration SR3

                                                                  +

                                                                  Format de fichier de configuration SR3

                                                                  section de manuel:

                                                                  7

                                                                  Date:
                                                                  -

                                                                  Aug 16, 2023

                                                                  +

                                                                  Aug 18, 2023

                                                                  Version:

                                                                  UNKNOWN

                                                                  @@ -137,7 +137,7 @@

                                                                  Format de fichier de configuration SR3 -

                                                                  SYNOPSIS

                                                                  +

                                                                  SYNOPSIS

                                                                  nom valeur
                                                                   nom valeur d’utilisation
                                                                   nom valeur_${substitution}
                                                                  @@ -148,7 +148,7 @@ 

                                                                  SYNOPSIS -

                                                                  DESCRIPTION

                                                                  +

                                                                  DESCRIPTION

                                                                  Les options sont placées dans des fichiers de configuration, une par ligne, avec le format:

                                                                  option <valeur>
                                                                   
                                                                  @@ -219,7 +219,7 @@

                                                                  DESCRIPTION -

                                                                  Variables

                                                                  +

                                                                  Variables

                                                                  Il est possible de faire une substitution dans la valeur d’une option. Les valeurs sont représentées par ${name}. Le nom peut être une variable d’environnement ordinaire, ou choisi parmi un certain nombre de variables déjà intégrés:

                                                                  @@ -262,7 +262,7 @@

                                                                  Variables -

                                                                  Substitutions Compatible Sundew

                                                                  +

                                                                  Substitutions Compatible Sundew

                                                                  Dans MetPX Sundew, le format de la nomination de fichier est beaucoup plus stricte, et est spécialisée pour une utilisation aves les données du World Meteorological Organization (WMO). Notez que la convention du format des fichiers est antérieure, et n’a aucun rapport avec la convention de @@ -312,7 +312,7 @@

                                                                  Substitutions Compatible Sundew -
                                                                  SR_DEV_APPNAME
                                                                  +

                                                                  SR_DEV_APPNAME

                                                                  La variable d’environnement SR_DEV_APPNAME peut être définie pour que la configuration de l’application et les répertoires d’état soient créés sous un nom différent. Ceci est utilisé dans le développement pour pouvoir avoir de nombreuses configurations actives à la fois. Cela permet de faire plus de tests au lieu de toujours travailler avec la configuration réelle du développeur.

                                                                  @@ -323,7 +323,7 @@
                                                                  SR_DEV_APPNAME -

                                                                  TYPES D’OPTIONS

                                                                  +

                                                                  TYPES D’OPTIONS

                                                                  Les options de sr3 ont plusieurs types :

                                                                  count

                                                                  type de nombre entier.

                                                                  @@ -347,18 +347,18 @@

                                                                  TYPES D’OPTIONS -

                                                                  OPTIONS

                                                                  +

                                                                  OPTIONS

                                                                  Les options actuelles sont énumérées ci-dessous. Notez qu’elles sont sensibles aux majuscules, et seulement un extrait est disponible sur la ligne de commande. Celles qui sont disponibles sur la ligne de commande ont le même effet que lorsqu’elles sont spécifiés dans un fichier de configuration.

                                                                  Les options disponibles dans les fichiers de configuration :

                                                                  -

                                                                  accelTreshold <size> défaut: 0 (désactiver.)

                                                                  +

                                                                  accelTreshold <size> défaut: 0 (désactiver.)

                                                                  L’option accelThreshold indique la taille minimale d’un fichier transféré pour qu’un téléchargeur binaire puisse être lancé.

                                                                  -

                                                                  accelXxxCommand

                                                                  +

                                                                  accelXxxCommand

                                                                  On peut spécifier d’autres fichiers binaires pour les téléchargeurs pour des cas particuliers,

                                                                English

                                                                @@ -389,7 +389,7 @@

                                                                accelXxxCommand -

                                                                accept, reject et acceptUnmatched

                                                                +

                                                                accept, reject et acceptUnmatched

                                                                • accept <modèle regexp> (optionnel) [<mot-clés>]

                                                                • reject <modèle regexp> (optionnel)

                                                                • @@ -471,14 +471,14 @@

                                                                  accept, reject et acceptUnmatched -

                                                                  acceptSizeWrong: <booléen> (défaut: False)

                                                                  +

                                                                  acceptSizeWrong: <booléen> (défaut: False)

                                                                  Lorsqu’un fichier est téléchargé et que sa taille ne correspond pas à celle annoncée, il est normalement rejeté, comme un échec. Cette option accepte le fichier même avec la mauvaise taille. Cela est utile lorsque le fichier change fréquemment, et qu’il passe en fil d’attente, donc le fichier est modifié au moment de sa récupération.

                                                                  -

                                                                  attempts <count> (défaut: 3)

                                                                  +

                                                                  attempts <count> (défaut: 3)

                                                                  L’option attempts indique combien de fois il faut tenter le téléchargement des données avant d’abandonner. Le défaut de 3 tentatives est approprié dans la plupart des cas. Lorsque l’option retry a la valeur false, le fichier est immédiatement supprimé.

                                                                  @@ -488,7 +488,7 @@

                                                                  attempts <count> (défaut: 3) -

                                                                  baseDir <chemin> (défaut: /)

                                                                  +

                                                                  baseDir <chemin> (défaut: /)

                                                                  baseDir fournit le chemin d’accès au répertoire, et lorsqu’il est combiné avec le chemin d’accès relatif de la notification sélectionnée, baseDir donne le chemin absolu du fichier à envoyer. Le défaut est None, ce qui signifie que le chemin dans la notification est le chemin absolu.

                                                                  @@ -499,14 +499,14 @@

                                                                  baseDir <chemin> (défaut: /) -

                                                                  baseUrl_relPath <flag> (défaut: off)

                                                                  +

                                                                  baseUrl_relPath <flag> (défaut: off)

                                                                  Normalement, le chemin d’accès relatif (baseUrl_relPath est False, ajouté au répertoire de base) pour les fichiers téléchargés seront définis en fonction de l’en-tête relPath inclus dans le message d’annonce. Toutefois, si baseUrl_relPath est défini, le relPath du message d’annonce va être précédé des sous-répertoires du champ baseUrl du message d’annonce.

                                                                  -

                                                                  batch <count> (défaut: 100)

                                                                  +

                                                                  batch <count> (défaut: 100)

                                                                  L’option batch est utilisée pour indiquer le nombre de fichiers à transférer sur une connexion, avant qu’elle ne soit démolie et rétablie. Sur de très bas volume de transferts, où des délais d’attente peuvent se produire entre les transferts, cela devrait être @@ -515,7 +515,7 @@

                                                                  batch <count> (défaut: 100) -

                                                                  blocksize <size> défaut: 0 (auto)

                                                                  +

                                                                  blocksize <size> défaut: 0 (auto)

                                                                  REMARQUE: NON IMPLEMENTÉ pour sr3, devrait revenir dans la version future Cette option blocksize contrôle la stratégie de partitionnement utilisée pour publier des fichiers. La valeur doit être l’une des suivantes

                                                                  @@ -532,7 +532,7 @@

                                                                  blocksize <size> défaut: 0 (auto)sr3_cpump(1) pour plus de détails.

                                                                  -

                                                                  Broker

                                                                  +

                                                                  Broker

                                                                  broker [amqp|mqtt]{s}://<utilisateur>:<mot-de-passe>@<hoteDuCourtier>[:port]/<vhost>

                                                                  Un URI est utilisé pour configurer une connexion à une pompe de messages d’annonce, soit un courtier MQTT ou AMQP. Certains composants de Sarracenia fixent un défaut raisonnable pour @@ -553,7 +553,7 @@

                                                                  Broker

                                                                  -

                                                                  byteRateMax <size> (défaut: 0)

                                                                  +

                                                                  byteRateMax <size> (défaut: 0)

                                                                  byteRateMax est supérieur à 0, le processus tente de respecter cette vitesse de livraison

                                                                  en kilo-octets par seconde… ftp,ftps,ou sftp)

                                                                  @@ -561,7 +561,7 @@

                                                                  byteRateMax <size> (défaut: 0) -

                                                                  callback <SpéficationDeClass>

                                                                  +

                                                                  callback <SpéficationDeClass>

                                                                  La plupart des traitements personnalisables ou de la logique “plugin” sont implémentés à l’aide de la classe de flowCallback (“rappel de flux.”) À différents stades du traitement des messages de notification, les classes de flowCallback définissent points d’entrée qui correspondent à ce point de traitement. pour chaque point de ce type dans le traitement, il existe une liste de routines de rappel de flux à appeler.

                                                                  @@ -582,12 +582,12 @@

                                                                  callback <SpéficationDeClass>FlowCallback load_library

                                                                  -

                                                                  callback_prepend <SpécificationDeClass>

                                                                  +

                                                                  callback_prepend <SpécificationDeClass>

                                                                  Identique à callback mais rajoute la class au début de la liste (pour éxecuter avant les point d´entrée des autres classes FlowCB)

                                                                  -

                                                                  dangerWillRobinson (default: omis)

                                                                  +

                                                                  dangerWillRobinson (default: omis)

                                                                  Cette option n’est reconnue qu’en tant qu’option de ligne de commande. Il est spécifié quand une opération aura des effets irréversiblement destructeurs ou peut-être inattendus. par exemple:

                                                                  sr3 stop
                                                                  @@ -604,7 +604,7 @@ 

                                                                  dangerWillRobinson (default: omis) -

                                                                  declare

                                                                  +

                                                                  declare

                                                                  env NAME=Value

                                                                  On peut également référer à des variables d’environnement dans des fichiers de configuration, en utilisant la syntaxe ${ENV}. Si une routine de Sarracenia doit utiliser @@ -642,21 +642,21 @@

                                                                  declare -

                                                                  debug

                                                                  +

                                                                  debug

                                                                  Définir l’option debug est identique a utilisé logLevel debug

                                                                  -

                                                                  delete <booléen> (défaut: off)

                                                                  +

                                                                  delete <booléen> (défaut: off)

                                                                  Lorsque l’option delete est définie, une fois le téléchargement terminé avec succès, l’abonné supprimera le fichier à la source. Par défaut, l’option est false.

                                                                  -

                                                                  discard <booléen> (défaut: off)

                                                                  +

                                                                  discard <booléen> (défaut: off)

                                                                  L’option discard, si elle est définie a true, supprime le fichier une fois téléchargé. Cette option peut être utile lors du débogage ou pour tester une configuration.

                                                                  -

                                                                  directory <chemin> (défaut: .)

                                                                  +

                                                                  directory <chemin> (défaut: .)

                                                                  L’option directory définit où placer les fichiers sur votre serveur. Combiné avec les options accept / reject, l’utilisateur peut sélectionner les fichiers d’intérêt et leurs répertoires de résidence (voir le mirror @@ -677,32 +677,32 @@

                                                                  directory <chemin> (défaut: .) -

                                                                  destfn_script <script> (défaut: None)

                                                                  +

                                                                  destfn_script <script> (défaut: None)

                                                                  L’option de compatibilité Sundew définit un script à exécuter lorsque tout est prêt pour la livraison du produit. Le script reçoit une instance de la classe sender. Le script prends le parent comme argument, et par exemple, une modification de parent.msg.new_file changera le nom du fichier écrit localement.

                                                                  -

                                                                  download <flag> (défaut: True)

                                                                  +

                                                                  download <flag> (défaut: True)

                                                                  utilisé pour désactiver le téléchargement dans le composant subscribe et/ou sarra. Se définit a False par défaut dans les composants de shovel ou de winnow.

                                                                  -

                                                                  dry_run <flag> (défaut: False)

                                                                  +

                                                                  dry_run <flag> (défaut: False)

                                                                  Exécuter en mode simulation par rapport aux transferts de fichiers. Se connecte toujours à un courtier et télécharge et traite les messages d´annonce, mais les transferts de fichiers corréspondants sont désactivés, à utiliser lors du test d’un expéditeur ou d’un téléchargeur, par exemple pour s’exécuter en parallèle avec un fichier existant, et comparez les journaux pour voir si l’expéditeur est configuré pour envoyer les mêmes fichiers que l’ancien (implémenté avec un autre système.)

                                                                  -

                                                                  durable <flag> (défaut: True)

                                                                  +

                                                                  durable <flag> (défaut: True)

                                                                  L’option AMQP durable, sur les déclarations de fil d’attente. Si la valeur est True, le courtier conservera la fil d’attente lors des redémarrages du courtier. Cela signifie que la fil d’attente est sur le disque si le courtier est redémarré.

                                                                  -

                                                                  fileEvents <évènement, évènement,…>

                                                                  +

                                                                  fileEvents <évènement, évènement,…>

                                                                  ensemble séparée par des virgules de d’événements de fichiers à surveiller. Événements de fichiers disponibles : create, delete, link, modify, mkdir, rmdir Si on commence la liste avec plus (+) ca signifie un rajout à l´ensemble actuel @@ -719,7 +719,7 @@

                                                                  fileEvents <évènement, évènement,…> -

                                                                  exchange <nom> (défaut: xpublic) et exchangeSuffix

                                                                  +

                                                                  exchange <nom> (défaut: xpublic) et exchangeSuffix

                                                                  La norme pour les pompes de données est d’utiliser l’échange xpublic. Les utilisateurs peuvent établir un flux de données privées pour leur propre traitement. Les utilisateurs peuvent déclarer leurs propres échanges qui commencent toujours par xs_<nom-d’utilisatueur>. Pour éviter d’avoir à le spécifier à chaque @@ -728,14 +728,14 @@

                                                                  exchange <nom> (défaut: xpublic) et exchangeSuffix -

                                                                  exchangeDeclare <flag>

                                                                  +

                                                                  exchangeDeclare <flag>

                                                                  Au démarrage, par défaut, Sarracenia redéclare les ressources et les liaisons pour s’assurer qu’elles sont à jour. Si l’échange existe déjà, cet indicateur peut être défini a False, donc aucune tentative d’échange de la fil d’attente n’est faite, ou il s’agit de liaisons. Ces options sont utiles sur les courtiers qui ne permettent pas aux utilisateurs de déclarer leurs échanges.

                                                                  -

                                                                  expire <duration> (défaut: 5m == cinq minutes. RECOMMENDE DE REMPLACER)

                                                                  +

                                                                  expire <duration> (défaut: 5m == cinq minutes. RECOMMENDE DE REMPLACER)

                                                                  L’option expire est exprimée sous forme d’une duration… ça fixe combien de temps une fil d’attente devrait vivre sans connexions.

                                                                  Un entier brut est exprimé en secondes, et si un des suffixe m,h,d,w est utilisés, l’intervalle est en minutes, @@ -751,7 +751,7 @@

                                                                  expire <duration> (défaut: 5m == cinq minutes. RECOMMENDE DE REMPLAC étaient souvent surchargés de très longues files d’attente pour les tests restants.

                                                                  -

                                                                  filename <mots-clé> (défaut:WHATFN)

                                                                  +

                                                                  filename <mots-clé> (défaut:WHATFN)

                                                                  De MetPX Sundew, le support de cette option donne toutes sortes de possibilités pour définir le nom de fichier distant. Certains keywords sont basés sur le fait que les noms de fichiers MetPX Sundew ont cinq (à six) champs de chaîne de caractères séparés par des deux-points.

                                                                  @@ -799,7 +799,7 @@

                                                                  filename <mots-clé> (défaut:WHATFN) -

                                                                  flatten <string> (défaut: ‘/’)

                                                                  +

                                                                  flatten <string> (défaut: ‘/’)

                                                                  L’option flatten permet de définir un caractère de séparation. La valeur par défaut ( ‘/’ ) annule l’effet de cette option. Ce caractère remplace le ‘/’ dans l’url et crée un nom de fichier « flatten » à partir de son chemin d’accès dd.weather.gc.ca. @@ -817,7 +817,7 @@

                                                                  flatten <string> (défaut: ‘/’) -

                                                                  flowMain (défaut: None)

                                                                  +

                                                                  flowMain (défaut: None)

                                                                  Par défaut, un flux exécutera la classe sarracenia.flow.Flow, qui implémente l’algorithme Flow de manière générique. La version générique ne transfère pas de données, crée et manipule uniquement des messages. Cela convient pour pelle, vanner, poster et surveiller les composants, mais les composants qui transfèrent ou transforment les données ont besoin @@ -832,7 +832,7 @@

                                                                  flowMain (défaut: None)

                                                                  -

                                                                  housekeeping <intervalle> (défaut: 300 secondes)

                                                                  +

                                                                  housekeeping <intervalle> (défaut: 300 secondes)

                                                                  L’option housekeeping définit la fréquence d’exécution du traitement périodique tel que déterminé par la liste des plugins on_housekeeping. Par défaut, il imprime un message de journal à chaque intervalle de housekeeping.

                                                                  -

                                                                  include config

                                                                  +

                                                                  include config

                                                                  inclure une autre configuration dans cette configuration.

                                                                  -

                                                                  inflight <string> (défaut: .tmp ou NONE si post_broker est définit)

                                                                  +

                                                                  inflight <string> (défaut: .tmp ou NONE si post_broker est définit)

                                                                  L’option inflight définit comment ignorer les fichiers lorsqu’ils sont transférés ou (en plein vol entre deux systèmes). Un réglage incorrect de cette option provoque des transferts peu fiables, et des précautions doivent être prises. Voir @@ -920,7 +920,7 @@

                                                                  inflight <string> (défaut: .tmp ou NONE si post_broker est définit)<

                                                                  -

                                                                  inline <flag> (défaut: False)

                                                                  +

                                                                  inline <flag> (défaut: False)

                                                                  Lors de la publication de messages d’annonce, l’option inline est utilisée pour avoir le contenu du fichier inclus dans le post. Cela peut être efficace lors de l’envoi de petits fichiers sur un niveau élevé de liens de latence, un certain nombre d’allers-retours peuvent être enregistrés en évitant la récupération @@ -931,15 +931,15 @@

                                                                  inline <flag> (défaut: False) -

                                                                  inlineByteMax <taille>

                                                                  +

                                                                  inlineByteMax <taille>

                                                                  la taille maximale des fichiers dont le contenu est à inclure dans un messages d’annonce (envoyé inline.)

                                                                  -

                                                                  inlineOnly

                                                                  +

                                                                  inlineOnly

                                                                  ignorer les messages d´annonce si les données ne sont pas inline.

                                                                  -

                                                                  inplace <flag> (défaut: On)

                                                                  +

                                                                  inplace <flag> (défaut: On)

                                                                  Les fichiers volumineux peuvent être envoyés en plusieurs parties, plutôt que de tout en même temps. Lors du téléchargement, si inplace est True, ces parties seront rajoutées au fichier de manière ordonnée. Chaque partie, après avoir été insérée dans le fichier, est annoncée aux abonnés. @@ -950,7 +950,7 @@

                                                                  inplace <flag> (défaut: On) -

                                                                  Instances

                                                                  +

                                                                  Instances

                                                                  Parfois, une instance d’un composant et d’une configuration ne suffit pas pour traiter et envoyer toutes les notifications disponibles.

                                                                  instances <entier> (défaut:1)

                                                                  @@ -976,7 +976,7 @@

                                                                  Instances -

                                                                  identity <string>

                                                                  +

                                                                  identity <string>

                                                                  Tous les postes de fichiers incluent une somme de contrôle. Elle est placée dans l’en-tête du message amqp et aura comme entrée sum avec la valeur de défaut ‘d,md5_checksum_on_data’. L’option sum indique au programme comment calculer la somme de contrôle. @@ -1006,29 +1006,29 @@

                                                                  identity <string> -

                                                                  logEvents ( défaut: after_accept,after_work,on_housekeeping )

                                                                  +

                                                                  logEvents ( défaut: after_accept,after_work,on_housekeeping )

                                                                  l´ensemble des moments durant le traitement des message de notification ou on veut émettre des messages de journal. Autres valeurs : on_start, on_stop, post, gather, … etc… On peut débuter la valeur avec un plus (+) pour signifier un ajout au valeurs actuels. la valeur moins (-) signifie la soustraction des valeurs de l´ensemble actuel.

                                                                  -

                                                                  logLevel ( défaut: info )

                                                                  +

                                                                  logLevel ( défaut: info )

                                                                  Niveau de journalisation exprimé par la journalisation de python. Les valeurs possibles sont : critical, error, info, warning, debug.

                                                                  -

                                                                  LogMetrics ( default: False )

                                                                  +

                                                                  LogMetrics ( default: False )

                                                                  écrire des métriques dans un fichier de quotidien pour la collecte de statistiques. le fichier sera dans le même répertoire que les logs, et aura une suffix avec la date.

                                                                  -

                                                                  logReject ( défaut: False )

                                                                  +

                                                                  logReject ( défaut: False )

                                                                  Normalement, le rejet des messages d´annonce se fait en silence. Lorsque logReject a la valeur True, un message de journal est généré pour chaque message d´annonce rejeté et indiquant la raison du rejet.

                                                                  -

                                                                  logStdout ( défaut: False )

                                                                  +

                                                                  logStdout ( défaut: False )

                                                                  logStdout désactive la gestion des journaux. Il vaut mieux l’utiliser sur la ligne de commande, car il y a certains risques de créer des fichiers stub avant que les configurations ne soient complètement analysées

                                                                  sr3 --logStdout start
                                                                  @@ -1044,36 +1044,36 @@ 

                                                                  logStdout ( défaut: False ) -

                                                                  logRotateCount <max_logs> ( défaut: 5 )

                                                                  +

                                                                  logRotateCount <max_logs> ( défaut: 5 )

                                                                  Nombre maximal de journaux archivés.

                                                                  -

                                                                  logRotateInterval <intervalle>[<unité_de_temps>] ( défaut: 1d )

                                                                  +

                                                                  logRotateInterval <intervalle>[<unité_de_temps>] ( défaut: 1d )

                                                                  La durée de l’intervalle avec une unité de temps optionnel (soit 5m, 2h, 3d)

                                                                  -

                                                                  messageCountMax <count> (défaut: 0)

                                                                  +

                                                                  messageCountMax <count> (défaut: 0)

                                                                  Si messageCountMax est supérieur à zéro, le flux se ferme après avoir traité le nombre de messages d´annonce spécifié. Ceci est normalement utilisé pour le débogage uniquement.

                                                                  -

                                                                  messageRateMax <float> (défaut: 0)

                                                                  +

                                                                  messageRateMax <float> (défaut: 0)

                                                                  Si messageRateMax est supérieur à zéro, le flux essaye de respecter cette vitesse de livraison en termes de messages d´annonce par seconde. Notez que la limitation est sur les messages d´annonce obtenus ou générés par seconde, avant le filtrage accept/reject. Le flux va dormir pour limiter le taux de traitement.

                                                                  -

                                                                  messageRateMin <float> (défaut: 0)

                                                                  +

                                                                  messageRateMin <float> (défaut: 0)

                                                                  Si messageRateMin est supérieur à zéro et que le flux détecté est inférieur à ce taux, un message d´annonce sera produit :

                                                                  -

                                                                  message_ttl <duration> (défaut: None)

                                                                  +

                                                                  message_ttl <duration> (défaut: None)

                                                                  L’option message_ttl définit un temps pour lequel un message d´annonce peut vivre dans la fil d’attente. Après ce temps, le message d´annonce est retiré de la fil d’attente par le courtier.

                                                                  -

                                                                  mirror <flag> (défaut: off)

                                                                  +

                                                                  mirror <flag> (défaut: off)

                                                                  L’option miroir peut être utilisée pour mettre en miroir l’arborescence des fichiers de dd.weather.gc.ca. Si l’option est défini a True le répertoire donné par l’option directory sera le nom de base de l’arborescence. Les fichiers acceptés sous ce répertoire seront placé sous le sous-répertoire @@ -1091,14 +1091,14 @@

                                                                  mirror <flag> (défaut: off) -

                                                                  no <count>

                                                                  +

                                                                  no <count>

                                                                  Présent sur les instances démarrées par l’interface de gestion sr3. L’option no est seulement utilisée sur la ligne de commande et n’est pas destinée aux utilisateurs. Il s’agit d’une option à utiliser par sr3 lors de la génération (spawning) d’instances pour informer chaque processus de quelle instance il s’agit. Par exemple, l’instance 3 sera générée avec –no 3

                                                                  -

                                                                  nodupe_basis <donnes|nom|chemin> (défaut: chemin)

                                                                  +

                                                                  nodupe_basis <donnes|nom|chemin> (défaut: chemin)

                                                                  Une option sous forme de mot-clé (alternative: cache_basis ) pour identifier quels fichiers sont comparés à des fins de suppression des doublons. Normalement, la suppression des doublons utilise l’intégralité du chemin d’accès pour identifier les fichiers qui n’ont pas été modifiés. Cela permet aux fichiers avec un contenu @@ -1118,17 +1118,17 @@

                                                                  nodupe_basis <donnes|nom|chemin> (défaut: chemin)Supprimer les doublons

                                                                  -

                                                                  nodupe_fileAgeMax

                                                                  +

                                                                  nodupe_fileAgeMax

                                                                  Si les fichiers sont plus anciens que ce paramètre (défaut: 30d), ignorez-les, ils sont trop ancien pour qu’il puisse être posté.

                                                                  -

                                                                  nodupe_fileAgeMin

                                                                  +

                                                                  nodupe_fileAgeMin

                                                                  Si les fichiers sont plus neuf que ce paramètre (défaut: 0 … désactivé), ignorez-les, ils sont trop neufs pour qu’ils puissent être postés.

                                                                  -

                                                                  nodupe_ttl <off|on|999[smhdw]>

                                                                  +

                                                                  nodupe_ttl <off|on|999[smhdw]>

                                                                  Lorsque nodupe_ttl est défini à une intervalle de temps qui est différente de zéro, chaque nouveau message d´annonce est comparé à ceux reçus dans cette intervalle, pour vérifier si c’est un doublon. Les doublons ne sont pas traités ultérieurement. Qu’est-ce qu’un doublon ? Un fichier avec @@ -1154,7 +1154,7 @@

                                                                  nodupe_ttl <off|on|999[smhdw]> -

                                                                  outlet post|json|url (défaut: post)

                                                                  +

                                                                  outlet post|json|url (défaut: post)

                                                                  REMARQUE: PAS IMPLEMENTÉ dans sr3, devrait revenir dans la version future L’option outlet est utilisée pour permettre l’écriture d’un poste a un fichier au lieu de l’afficher à un courtier. Les valeurs d’argument valides sont les suivantes :

                                                                  @@ -1184,14 +1184,14 @@

                                                                  outlet post|json|url (défaut: post) -

                                                                  overwrite <flag> (défaut: off)

                                                                  +

                                                                  overwrite <flag> (défaut: off)

                                                                  L’option overwrite, si définie a false, évite les téléchargements inutiles sous ces conditions :

                                                                  1- le fichier à télécharger se trouve déjà dans le système de fichiers de l’utilisateur et est au bon endroit

                                                                  2- la somme de contrôle du message amqp correspond à celle du fichier.

                                                                  Le défaut est False.

                                                                  -

                                                                  path <chemin>

                                                                  +

                                                                  path <chemin>

                                                                  post évalue le chemin d’accès du système de fichiers à partir de l’option path et éventuellement post_baseDir si cette option est utilisée.

                                                                  Si un chemin d’accès définit un fichier, ce fichier est surveillé.

                                                                  @@ -1203,7 +1203,7 @@

                                                                  path <chemin> -

                                                                  permDefault, permDirDefault, permLog, permCopy

                                                                  +

                                                                  permDefault, permDirDefault, permLog, permCopy

                                                                  Les bits d’autorisation sur les fichiers de destination écrits sont contrôlés par les directives permCopy. permCopy appliquera les autorisations de mode publiées par la source du fichier. Si aucun mode de source est disponible, le permDefault sera appliqué aux fichiers et le @@ -1220,13 +1220,13 @@

                                                                  permDefault, permDirDefault, permLog, permCopy -

                                                                  pollUrl

                                                                  +

                                                                  pollUrl

                                                                  Spécification de ressources d´une serveur à sonder Voir Guide de ligne de commande pour plus d´informations.

                                                                  -

                                                                  post_baseDir <chemin>

                                                                  +

                                                                  post_baseDir <chemin>

                                                                  L’option post_baseDir fournit le chemin d’accès au répertoire qui, lorsqu’il est combiné (ou trouvé) dans le path donné, donne le chemin absolu local au fichier de données à publier. La partie post_baseDir du chemin d’accès sera supprimée de l’annonce publiée. @@ -1236,17 +1236,17 @@

                                                                  post_baseDir <chemin>

                                                                  -

                                                                  post_baseUrl <url>

                                                                  +

                                                                  post_baseUrl <url>

                                                                  L’option post_baseUrl définit comment obtenir le fichier… il définit le protocole, l’hôte, le port et, l’utilisateur (facultatif). Il est recommandé de ne pas inclure de mots de passe dans les URLs.

                                                                  -

                                                                  post_broker <url>

                                                                  +

                                                                  post_broker <url>

                                                                  l’URL du courtier pour publier des messages d’annonce. Voir broker pour plus de détails.

                                                                  -

                                                                  post_exchange <name> (défaut: xpublic)

                                                                  +

                                                                  post_exchange <name> (défaut: xpublic)

                                                                  FIXME: L’option post_exchange est définie sous quelle échange la nouvelle notification sera affiché. Lors de la publication sur une pompe en tant qu’administrateur, un choix commun pour post_exchange est ‘xpublic’.

                                                                  @@ -1255,7 +1255,7 @@

                                                                  post_exchange <name> (défaut: xpublic) -

                                                                  post_exchangeSplit <compte> (défaut: 0)

                                                                  +

                                                                  post_exchangeSplit <compte> (défaut: 0)

                                                                  L’option post_exchangeSplit ajoute un suffixe à deux chiffres qui est crée en hachant le dernier caractère de la somme de contrôle avec le nom de post_exchange, afin de répartir la production entre un certain nombre d’échanges. Ceci est actuellement utilisé dans les pompes à trafic élevé pour avoir plusieurs instances de winnow, @@ -1269,7 +1269,7 @@

                                                                  post_exchangeSplit <compte> (défaut: 0) -

                                                                  post_format <name> (défaut: v03)

                                                                  +

                                                                  post_format <name> (défaut: v03)

                                                                  Définit le format de message pour les messages publiés. les valeurs actuellement incluses sont :

                                                                  • v02 … utilisé par toutes les pompes de données existantes dans la plupart des cas.

                                                                  • @@ -1279,26 +1279,26 @@

                                                                    post_format <name> (défaut: v03) -

                                                                    post_on_start

                                                                    +

                                                                    post_on_start

                                                                    Lors du démarrage de watch, on peut soit demander au programme de publier tous les fichiers dans les répertoires surveillés, ou pas. (pas implanté en sr3_cpost)

                                                                  -

                                                                  post_topic <chaine>

                                                                  +

                                                                  post_topic <chaine>

                                                                  Définissez explicitement une chaîne de sujet de publication, en remplaçant l’habituel groupe de paramètres. Pour les pompes de données Sarracenia, cela ne devrait jamais être nécessaire, car l’utilisation de post_exchange, post_topicPrefix et le relPath construit normalement le bon valeur pour les sujets à la fois pour la publication et la liaison.

                                                                  -

                                                                  post_topicPrefix (défaut: topicPrefix)

                                                                  +

                                                                  post_topicPrefix (défaut: topicPrefix)

                                                                  Rajouter au subtopic pour former une hiérarchie complète des sujets. Cette option s’applique à la publication. Elle indique la version des messages d’annonce publiés dans les subtopics. (v03 fait référence à sr3_post.7.html) Cette valeur par défaut est défini par tout ce qui a été reçue.

                                                                  -

                                                                  prefetch <N> (défaut: 1)

                                                                  +

                                                                  prefetch <N> (défaut: 1)

                                                                  L’option prefetch définit le nombre de messages d’annonce à récupérer en même temps. Lorsque plusieurs instances sont en cours d’exécution et que prefetch est égale à 4, chaque instance obtient jusqu’à quatre messages d’annonce à la fois. Pour réduire le nombre de messages d’annonce perdus si une instance meurt et qu’elle a le @@ -1306,7 +1306,7 @@

                                                                  prefetch <N> (défaut: 1) -

                                                                  queueName|queue|queue_name|qn

                                                                  +

                                                                  queueName|queue|queue_name|qn

                                                                  • queueName <nom>

                                                                  @@ -1335,34 +1335,34 @@

                                                                  queueName|queue|queue_name|qn -

                                                                  queueBind

                                                                  +

                                                                  queueBind

                                                                  Au démarrage, par défaut, Sarracenia redéclare les ressources et les liaisons pour s’assurer qu’elles sont à jour. Si la fil d’attente existe déjà, ces indicateurs peuvent être défini a False, afin qu’aucune tentative de déclaration ne soit effectuée pour fil d’attente ou pour ses liaisons. Ces options sont utiles sur les courtiers qui ne permettent pas aux utilisateurs de déclarer leurs files d’attente.

                                                                  -

                                                                  queueDeclare <flag> (défaut: True)

                                                                  +

                                                                  queueDeclare <flag> (défaut: True)

                                                                  Avec l´option queueDeclare à True, un composant déclare un fil d´attente pour accumuler des messages d’annonce lors de chaque démarrage. Des fois les permissions sont restrictifs sur les courtiers, alors on ne peut pas faire de tels déclarations de ressources. Dans ce cas, il faut supprimer cette déclaration.

                                                                  -

                                                                  randomize <flag>

                                                                  +

                                                                  randomize <flag>

                                                                  Actif si -r|–randomize apparaît dans la ligne de commande… ou randomize est défini à True dans le fichier de configuration utilisé. S’il y a plusieurs postes parce que le fichier est publié par bloc (l’option blocksize a été définie), les messages d’annonce de bloc sont randomisés, ce qui signifie qu’ils ne seront pas affichés.

                                                                  -

                                                                  realpathAdjust <compte> (Experimental) (défaut: 0)

                                                                  +

                                                                  realpathAdjust <compte> (Experimental) (défaut: 0)

                                                                  L’option realpathAdjust ajuste le nombre d’éléments de chemin de fichier résolus avec la routine realpath provenant du bibliotech standard C. Le nombre indique combien d’éléments de chemin doivent être ignorés, en comptant depuis le début du chemin avec des nombres positifs, ou la fin avec des nombres négatifs. Le défaut est zéro indiquant que le chemin au complet est résolu.

                                                                  -

                                                                  realpathFilter <flag> (Expérimentale)

                                                                  +

                                                                  realpathFilter <flag> (Expérimentale)

                                                                  l’option realpathFilter résout les chemins à l’aide de la routine de bibliothèque realpath standard C, mais uniquement dans le but d’appliquer des filtres d’acceptation de rejet. Ceci est utilisé uniquement pendant affectation.

                                                                  @@ -1370,7 +1370,7 @@

                                                                  realpathFilter <flag> (Expérimentale) -

                                                                  realpathPost <flag> (Expérimentale)

                                                                  +

                                                                  realpathPost <flag> (Expérimentale)

                                                                  L’option realpathPost résout les chemins donnés à leurs chemins canoniques, éliminant ainsi toute indirection via des liens symboliques. Le comportement améliore la capacité de watch à surveiller l’arborescence, mais l’arborescence peut avoir des chemins complètement différents de ceux des arguments @@ -1378,17 +1378,17 @@

                                                                  realpathPost <flag> (Expérimentale) -

                                                                  sendTo <url>

                                                                  +

                                                                  sendTo <url>

                                                                  Specification du serveur auquel on veut livrer des données (dans un sender)

                                                                  -

                                                                  rename <chemin>

                                                                  +

                                                                  rename <chemin>

                                                                  Avec l’option renommer, l’utilisateur peut suggérer un chemin de destination pour ses fichiers. Si le chemin se termine par ‘/’ il suggère un chemin de répertoire… Si ce n’est pas le cas, l’option spécifie un changement de nom de fichier.

                                                                  -

                                                                  report et report_exchange

                                                                  +

                                                                  report et report_exchange

                                                                  REMARQUE: PAS IMPLEMENTÉ dans sr3, devrait revenir dans la version future Pour chaque téléchargement, par défaut, un message de rapport amqp est renvoyé au courtier. Cela se fait avec l’option :

                                                                  @@ -1403,7 +1403,7 @@

                                                                  report et report_exchange -

                                                                  reset <flag> (défaut: False)

                                                                  +

                                                                  reset <flag> (défaut: False)

                                                                  Lorsque reset est défini et qu’un composant est (re)démarré, sa fil d’attente est supprimé (si elle existe déjà) et recréé en fonction des options de fil d’attente. C’est à ce moment-là qu’une option de courtier est modifiée, car le courtier refusera @@ -1415,7 +1415,7 @@

                                                                  reset <flag> (défaut: False) -

                                                                  retryEmptyBeforeExit: <booléen> (défaut: False)

                                                                  +

                                                                  retryEmptyBeforeExit: <booléen> (défaut: False)

                                                                  Utilisé pour les tests de flux de sr_insects. Empêche Sarracenia de quitter lorsqu’il reste des messages d’annonce dans la file d’attente de nouvelles tentatives (retry queue). Par défaut, une publication quitte proprement une fois qu’elle a créé et tenté de publier des messages d’annonce pour tous les fichiers du répertoire spécifié. Si des messages d’annonce ne sont pas @@ -1424,24 +1424,24 @@

                                                                  retryEmptyBeforeExit: <booléen> (défaut: False)

                                                                  -

                                                                  retry_ttl <duration> (défaut: identique à expire)

                                                                  +

                                                                  retry_ttl <duration> (défaut: identique à expire)

                                                                  L’option retry_ttl (nouvelle tentative de durée de vie) indique combien de temps il faut continuer à essayer d’envoyer un fichier avant qu’il ne soit rejeté de la fil d’attente. Le défaut est de deux jours. Si un fichier n’a pas été transféré après deux jours de tentatives, il est jeté.

                                                                  -

                                                                  sanity_log_dead <interva;le> (défaut: 1.5*housekeeping)

                                                                  +

                                                                  sanity_log_dead <interva;le> (défaut: 1.5*housekeeping)

                                                                  L’option sanity_log_dead définit la durée à prendre en compte avant de redémarrer un composant.

                                                                  -

                                                                  shim_defer_posting_to_exit (EXPERIMENTAL)

                                                                  +

                                                                  shim_defer_posting_to_exit (EXPERIMENTAL)

                                                                  (option spécifique à libsrshim) Reporte la publication des fichiers jusqu’à ce que le processus se ferme. Dans les cas où le même fichier est ouvert et modifiée à plusieurs reprises, ceci peut éviter les publications redondantes. (défaut: False)

                                                                  -

                                                                  shim_post_minterval interval (EXPERIMENTAL)

                                                                  +

                                                                  shim_post_minterval interval (EXPERIMENTAL)

                                                                  (option spécifique à libsrshim) Si un fichier est ouvert pour écriture et fermé plusieurs fois dans l’intervalle, il ne sera affiché qu’une seule fois. Lorsqu’on écrit dans un fichier plusieurs fois, en particulier @@ -1454,27 +1454,27 @@

                                                                  shim_post_minterval interval (EXPERIMENTAL)

                                                                  -

                                                                  shim_skip_parent_open_files (EXPERIMENTAL)

                                                                  +

                                                                  shim_skip_parent_open_files (EXPERIMENTAL)

                                                                  (option spécifique à libsrshim) L’option shim_skip_ppid_open_files signifie qu’un processus vérifie si le processus parent a le même fichier ouvert et ne poste pas si c’est le cas. (défaut: Vrai)

                                                                  -

                                                                  sleep <temps>

                                                                  +

                                                                  sleep <temps>

                                                                  Temps d’attente entre la génération d’événements. Lorsqu’on écrit fréquemment à des fichiers, c’est inutile de produire un poste pour chaque changement, car il peut produire un flux continu de changements où les transferts ne peut pas être fait assez rapidement pour suivre le rythme. Dans de telles circonstances, on peut regrouper toutes les modifications apportées à un fichier pendant le temps de sleep, et produire un seul poste.

                                                                  -

                                                                  statehost <booléen> ( défaut: False )

                                                                  +

                                                                  statehost <booléen> ( défaut: False )

                                                                  Dans les grands centres de données, le répertoire de base peut être partagé entre des milliers de nœuds. Statehost ajoute le nom du nœud après le répertoire de cache pour le rendre unique à chaque nœud. Ainsi, chaque nœud a ses propres fichiers d’état et journaux. Par exemple, sur un nœud nommé goofy, ~/.cache/sarra/log/ devient ~/.cache/sarra/goofy/log/.

                                                                  -

                                                                  strip <count|regexp> (défaut: 0)

                                                                  +

                                                                  strip <count|regexp> (défaut: 0)

                                                                  Il est possible de modifier les répertoires en miroir relatifs à l’aide de l’option strip. Si elle est défini à N (un entier), les premiers répertoires ‘N’ du chemin relatif sont supprimés. Par exemple:

                                                                  @@ -1505,7 +1505,7 @@

                                                                  strip <count|regexp> (défaut: 0) -

                                                                  sourceFromExchange <flag> (défaut: off)

                                                                  +

                                                                  sourceFromExchange <flag> (défaut: off)

                                                                  L’option sourceFromExchange est principalement destinée aux administrateurs. Si les messages d’annonce reçus sont postés directement à partir d’une source, l’échange utilisé est «xs_<nomUtilisateurSourceDuCourtier>». Ces messages d’annonce pourraient manquer les en-têtes source et from_cluster, @@ -1527,7 +1527,7 @@

                                                                  sourceFromExchange <flag> (défaut: off) -

                                                                  subtopic <modèle amqp> (défaut: #)

                                                                  +

                                                                  subtopic <modèle amqp> (défaut: #)

                                                                  Dans les publications d’un échange, le paramètre de subtopic restreint la sélection du produit. Pour donner la bonne valeur au subtopic, on a le choix de filtrer en utilisant subtopic seulement avec le wildcarding limité d’AMQP et une longueur limitée à 255 octets encodés, ou de manière plus puissante, les expressions régulière @@ -1585,7 +1585,7 @@

                                                                  subtopic <modèle amqp> (défaut: #) -

                                                                  timeCopy (défaut: on)

                                                                  +

                                                                  timeCopy (défaut: on)

                                                                  Sur les systèmes de type Unix, lorsque la commande ls ou un navigateur de fichiers affiche une modification ou un temps d’accès, il s’agit d’un affichage des éléments posix st_atime et st_ctime d’un struct renvoyé par l’appel stat(2). Lorsque timeCopy est activé, les en-têtes qui reflètent ces valeurs dans les messages d’annonce sont utilisés @@ -1595,12 +1595,12 @@

                                                                  timeCopy (défaut: on)Lorsqu’il est défini dans un composant de publication, les en-têtes atime et mtime des messages d’annonce sont éliminés.

                                                                  -

                                                                  timeout <intervalle> (défaut: 0)

                                                                  +

                                                                  timeout <intervalle> (défaut: 0)

                                                                  L’option timeout définit le nombre de secondes à attendre avant d’interrompre un transfert de connexion ou de téléchargement (appliqué pendant le transfert).

                                                                  -

                                                                  tlsRigour (défaut: medium)

                                                                  +

                                                                  tlsRigour (défaut: medium)

                                                                  tlsRigour peut être réglé a : lax, medium ou strict, et donne un indice à l’application par rapport à la configuration des connexions TLS. TLS, ou Transport Layer Security (autrefois appelée Secure Socket Layer (SSL)) est l’encapsulation de sockets TCP normales en cryptage standard. Il existe de nombreux aspects de @@ -1614,32 +1614,32 @@

                                                                  tlsRigour (défaut: medium) -

                                                                  topic <chaine>

                                                                  +

                                                                  topic <chaine>

                                                                  Définissez explicitement une chaîne de sujet d’abonnement ou de publication, en remplaçant la valeur dériver à partir de l’habituel groupe de paramètres. Pour les pompes de données Sarracenia, cela ne devrait jamais être nécessaire, car l’utilisation de l’exchange, topicPrefix et subtopic construit normalement le bon valeur.

                                                                  -

                                                                  topicPrefix (défaut: v03)

                                                                  +

                                                                  topicPrefix (défaut: v03)

                                                                  rajouté au subtopic pour former une hiérarchie complète de thèmes (topics). Cette option s’applique aux liaisons d’abonnement. Indique la version des messages d’annonce reçus dans les subtopics. (V03 fait référence à sr3_post.7.html)

                                                                  -

                                                                  users <flag> (défaut: false)

                                                                  +

                                                                  users <flag> (défaut: false)

                                                                  Utiliser comme complément lorsque l’action declare est utilisée, pour demander à sr3 de déclarer des utilisateurs sur le courtier, ainsi que les files d’attente et les échanges.

                                                                  -

                                                                  v2compatRenameDoublePost <flag> ( default: false)

                                                                  +

                                                                  v2compatRenameDoublePost <flag> ( default: false)

                                                                  la version 3 de Sarracenia propose une logique améliorée autour du renommage des fichiers, en utilisant un seul message par opération de renommage. La version 2 nécessitait deux postes. Lors de la publication, dans une situation de mise en miroir, pour la consommation par les clients v2, cet indicateur doit être réglé.

                                                                  -

                                                                  varTimeOffset (default: 0)

                                                                  +

                                                                  varTimeOffset (default: 0)

                                                                  For example:

                                                                  varTimeOffset -7m
                                                                   
                                                                  @@ -1649,7 +1649,7 @@

                                                                  varTimeOffset (default: 0) -

                                                                  vip - OPTIONS ACTIVE/PASSIVE

                                                                  +

                                                                  vip - OPTIONS ACTIVE/PASSIVE

                                                                  L’option vip indique qu’une configuration doit être active uniquement sur un seul nœud dans un cluster à la fois, un singleton. C’est typiquement requis pour un composant de poll, mais cela peut être utilisé avec un sender ou avec d’autres cas.

                                                                  @@ -1672,7 +1672,7 @@

                                                                  vip - OPTIONS ACTIVE/PASSIVE -

                                                                  SEE ALSO

                                                                  +

                                                                  SEE ALSO

                                                                  sr3(1) - Sarracenia ligne de commande principale.

                                                                  sr3_post(1) - émettre des messages d’annonce de fichiers (implémentation en Python.)

                                                                  sr3_cpost(1) - émettre des messages d´annonce de fichiers (implémentation en C.)

                                                                  diff --git a/fr/Reference/sr3_post.1.html b/fr/Reference/sr3_post.1.html index ac56af3ce..26e9fc07f 100644 --- a/fr/Reference/sr3_post.1.html +++ b/fr/Reference/sr3_post.1.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                                                                  -

                                                                  Sr3_Post

                                                                  +

                                                                  Sr3_Post

                                                                  -

                                                                  Publie la Disponibilitée d’un fichier aux abonnés.

                                                                  +

                                                                  Publie la Disponibilitée d’un fichier aux abonnés.

                                                                  Manual section:

                                                                  1

                                                                  Date:
                                                                  -

                                                                  Aug 16, 2023

                                                                  +

                                                                  Aug 18, 2023

                                                                  Version:

                                                                  UNKNOWN

                                                                  @@ -137,13 +137,13 @@

                                                                  Publie la Disponibilitée d’un fichier aux abonnés.

                                                                  -

                                                                  SYNOPSIS

                                                                  +

                                                                  SYNOPSIS

                                                                  sr3_post|sr3_cpost [ OPTIONS ][ -pb|–post_broker broker ][ -pbu|–post_baseUrl url[,url]…* ] [ -p|–path ] path1 path2…pathN ]

                                                                  ( aussi libsrshim.so )

                                                                  -

                                                                  DESCRIPTION

                                                                  +

                                                                  DESCRIPTION

                                                                  sr3_post affiche la disponibilité d’un fichier en créant une annonce. Contrairement à la plupart des autres composants de Sarracenia qui agissent comme des démons, sr3_post est une invocation unique qui publie et quitte. @@ -166,7 +166,7 @@

                                                                  DESCRIPTION -

                                                                  Options obligatoires

                                                                  +

                                                                  Options obligatoires

                                                                  L’option post_base_url url,url,… spécifie l’emplacement où les abonnés téléchargeront le fichier. Il y a généralement un article (post) par fichier. le format de l’argument des options de post_base_url

                                                                  @@ -228,11 +228,11 @@

                                                                  Options obligatoires

                                                                  -

                                                                  ARGUMENTS ET OPTIONS

                                                                  +

                                                                  ARGUMENTS ET OPTIONS

                                                                  Veuillez vous référer à la page de manuel sr3_options(7) pour une description détaillée de tous les paramètres et les méthodes pour les spécifier.

                                                                  -

                                                                  path path1 path2 … pathN

                                                                  +

                                                                  path path1 path2 … pathN

                                                                  sr3_post évalue les chemins du système de fichiers à partir de l’option path et éventuellement le baseDir si l’option est utilisée.

                                                                  @@ -242,13 +242,13 @@

                                                                  path path1 path2 … pathN -

                                                                  post_broker <broker>

                                                                  +

                                                                  post_broker <broker>

                                                                  le courtier auquel l’article est envoyé.

                                                                  -

                                                                  post_baseDir <path>

                                                                  +

                                                                  post_baseDir <path>

                                                                  L’option base_dir fournit le chemin du répertoire qui, lorsqu’ils sont combinés (ou trouvés) dans le chemin donné, @@ -261,20 +261,20 @@

                                                                  post_baseDir <path>

                                                                  -

                                                                  post_exchange <exchange>

                                                                  +

                                                                  post_exchange <exchange>

                                                                  Sr_post publie sur un échange nommé xs_”broker_username” par défaut. Utilisez l’option post_exchange pour remplacer cette valeur par défaut.

                                                                  -

                                                                  -h|–help

                                                                  +

                                                                  -h|–help

                                                                  Afficher les options du programme.

                                                                  -

                                                                  blocksize <value>

                                                                  +

                                                                  blocksize <value>

                                                                  Inutile pour le moment, sera rétabli après la version v3

                                                                  Cette option contrôle la stratégie de partitionnement utilisée pour publier les fichiers. La valeur doit être l’une des suivantes:

                                                                  @@ -305,7 +305,7 @@

                                                                  blocksize <value> -

                                                                  post_baseUrl <url>

                                                                  +

                                                                  post_baseUrl <url>

                                                                  L’option url définit le protocole, les informations d’identification, l’hôte et le port où le produit peut être récupéré.

                                                                  L’annonce AMQP est composée des trois champs, l’heure de l’annonce, @@ -315,11 +315,11 @@

                                                                  post_baseUrl <url>

                                                                  -

                                                                  reset

                                                                  +

                                                                  reset

                                                                  Quand on a utilisé –suppress_duplicates|–cache, cette option vide le cache.

                                                                  -

                                                                  rename <path>

                                                                  +

                                                                  rename <path>

                                                                  Avec l’option renommer, l’utilisateur peut suggérer un chemin de destination vers ses fichiers. Si le chemin donné se termine par ‘/’, il suggère un chemin de répertoire… Si ce n’est pas le cas, l’option spécifie un changement de nom de fichier.

                                                                  sr3_post, et sr3 watch utilisent un modèle basé sur un fichier basé sur un processus et un cache disque, @@ -329,7 +329,7 @@

                                                                  rename <path> -

                                                                  shim_defer_posting_to_exit EXPERIMENTAL

                                                                  +

                                                                  shim_defer_posting_to_exit EXPERIMENTAL

                                                                  Repousse la publication du fichier jusqu’à la fin du processus. Dans les cas où un même fichier est ouvert et ajouté à plusieurs reprises, ce @@ -337,7 +337,7 @@

                                                                  shim_defer_posting_to_exit EXPERIMENTAL -

                                                                  shim_post_minterval interval EXPERIMENTAL

                                                                  +

                                                                  shim_post_minterval interval EXPERIMENTAL

                                                                  Si un fichier est ouvert en écriture et fermé plusieurs fois dans l’intervalle, il ne sera affiché qu’une seule fois. Lorsqu’un fichier est écrit plusieurs fois, en particulier @@ -351,7 +351,7 @@

                                                                  shim_post_minterval interval EXPERIMENTAL

                                                                  -

                                                                  shim_skip_parent_open_files EXPERIMENTAL

                                                                  +

                                                                  shim_skip_parent_open_files EXPERIMENTAL

                                                                  L’option shim_skip_ppid_open_files signifie qu’un processus vérifie si le processus parent a le même fichier ouvert, et n’affiche @@ -359,7 +359,7 @@

                                                                  shim_skip_parent_open_files EXPERIMENTAL -

                                                                  sleep time

                                                                  +

                                                                  sleep time

                                                                  Cette option n’est disponible que dans l’implémentation c (sr_cpost)

                                                                  Lorsque l’option est définie, elle transforme cpost en sr3 watch, sleep étant le temps d’attente entre @@ -375,13 +375,13 @@

                                                                  sleep time -

                                                                  subtopic <key>

                                                                  +

                                                                  subtopic <key>

                                                                  Le sous-thème par défaut peut être remplacé par l’option subtopic.

                                                                  -

                                                                  nodupe_ttl on|off|999

                                                                  +

                                                                  nodupe_ttl on|off|999

                                                                  Évitez de publier des doublons en comparant chaque fichier à ceux vus lors de l’inverval suppress_duplicates. Lors de la publication de répertoires, ceci entraînera @@ -395,7 +395,7 @@

                                                                  nodupe_ttl on|off|999

                                                                  -

                                                                  identity <method>[,<value>]

                                                                  +

                                                                  identity <method>[,<value>]

                                                                  Toutes les publications de fichiers incluent une somme de contrôle. L’option sum spécifie comment la calculer. C’est une chaîne séparée par des virgules. Les méthodes d’intégrité valides sont

                                                                  cod,x - Calculer au téléchargement en appliquant x
                                                                  @@ -407,7 +407,7 @@ 

                                                                  identity <method>[,<value>] -

                                                                  topicPrefix <key>

                                                                  +

                                                                  topicPrefix <key>

                                                                  Pas habituellement utilisé Par défaut, le topic est composé du topicPrefix par défaut : version V03 @@ -420,14 +420,14 @@

                                                                  topicPrefix <key> -

                                                                  header <name>=<value>

                                                                  +

                                                                  header <name>=<value>

                                                                  Ajoutez une en-tête <name> avec la valeur donnée aux annonces. Utilisé pour transmettre des chaînes en tant que métadonnées.

                                                                  -

                                                                  UTILISATION DE LA LIBRAIRIE SHIM

                                                                  +

                                                                  UTILISATION DE LA LIBRAIRIE SHIM

                                                                  Plutôt qu’invoquer un sr_post pour poster chaque fichier à publier, on peut avoir des processus automatiquement publiez les fichiers qu’ils écrivent en leur faisant utiliser une bibliothèque de shim interceptant certains appels d’i/o de fichiers vers la libc et le noyau. Pour activer la bibliothèque shim, dans l’environnement shell, ajoutez

                                                                  @@ -456,7 +456,7 @@

                                                                  UTILISATION DE LA LIBRAIRIE SHIM -

                                                                  Trucs d’utilisation de shim

                                                                  +

                                                                  Trucs d’utilisation de shim

                                                                  Cette méthode de notification nécessite une certaine configuration de l’environnement utilisateur. L’environnement utilisateur a besoin du jeu de variables d’environnement LD_PRELOAD avant le lancement du processus. Des complications qui restent telles que nous les avons @@ -491,7 +491,7 @@

                                                                  Trucs d’utilisation de shim -

                                                                  Traitement de renommage

                                                                  +

                                                                  Traitement de renommage

                                                                  Il est à noter que renommer le fichier n’est pas aussi simple dans le cas de la mise en miroir que dans le système opérateur sous-jacent. Alors que l’opération est une opération atomique unique dans un système d’exploitation, lorsque en utilisant les notifications, il existe des cas d’acceptation/rejet qui créent quatre effets possibles.

                                                                  @@ -529,7 +529,7 @@

                                                                  Traitement de renommage

                                                                  -

                                                                  VARIABLES ENVIRONNEMENTALES

                                                                  +

                                                                  VARIABLES ENVIRONNEMENTALES

                                                                  Dans l’implémentation C (sr_cpost), si la variable SR_CONFIG_EXAMPLES est définie, alors la directive add peut être utilisée pour copier des exemples dans le répertoire de l’utilisateur à des fins d’utilisation et/ou de personnalisation.

                                                                  Une entrée dans le ~/.config/sarra/default.conf (créé via sr_subscribe edit default.conf ) @@ -541,7 +541,7 @@

                                                                  VARIABLES ENVIRONNEMENTALES -

                                                                  Voir aussi

                                                                  +

                                                                  Voir aussi

                                                                  sr3(1) - Interface de ligne de commande principale de Sarracenia.

                                                                  sr3_post(1) - publication des annonces de fichiers (implémentation python.)

                                                                  sr3_cpost(1) - publication des annonces de fichiers (implémentation c.)

                                                                  diff --git a/fr/Reference/sr_post.7.html b/fr/Reference/sr_post.7.html index 97d958c3b..f7550adac 100644 --- a/fr/Reference/sr_post.7.html +++ b/fr/Reference/sr_post.7.html @@ -8,9 +8,9 @@ - + - + @@ -119,15 +119,15 @@ }
                                                                  -

                                                                  SR_post

                                                                  +

                                                                  SR_post

                                                                  -

                                                                  Format/Protocole de messages d’annonce Sarracenia

                                                                  +

                                                                  Format/Protocole de messages d’annonce Sarracenia

                                                                  Manual section:

                                                                  7

                                                                  Date:
                                                                  -

                                                                  Aug 16, 2023

                                                                  +

                                                                  Aug 18, 2023

                                                                  Version:

                                                                  UNKNOWN

                                                                  @@ -137,7 +137,7 @@

                                                                  Format/Protocole de messages d’annonce Sarracenia

                                                                  -

                                                                  STATUS: Stable/Default

                                                                  +

                                                                  STATUS: Stable/Default

                                                                  Les messages de Sarracenia version 2 sont la format précédente, utilisée pour des transferts de téraoctets et de millions de fichiers par jour. La version 3 propose une prochaine itération du format des messages d’annonces Sarracenia.

                                                                  @@ -156,11 +156,11 @@

                                                                  STATUS: Stable/Default

                                                                  -

                                                                  SYNOPSIS

                                                                  +

                                                                  SYNOPSIS

                                                                  Version 03 du format des annonces de modification d’un fichier pour sr_post.

                                                                  Un message sr_post se compose d’un sujet et du BODY

                                                                  -

                                                                  AMQP Topic: <version>.{<dir>.}

                                                                  +

                                                                  AMQP Topic: <version>.{<dir>.}

                                                                  ::

                                                                  <version> = « v03 » la version du protocole ou du format. « post » = le type de message dans le protocole. @@ -169,7 +169,7 @@

                                                                  AMQP Topic: <version>.{<dir>.}

                                                                  -

                                                                  BODY: { <en-tête> } (JSON encoding.)

                                                                  +

                                                                  BODY: { <en-tête> } (JSON encoding.)

                                                                  Les en-têtes sont un tableau de paires nom:valeur:

                                                                  OBLIGATOIRE:
                                                                   
                                                                  @@ -257,7 +257,7 @@ 

                                                                  BODY: { <en-tête> } (JSON encoding.)

                                                                  -

                                                                  DESCRIPTION

                                                                  +

                                                                  DESCRIPTION

                                                                  Les sources créent des messages d´annonce en format sr_post pour annoncer les modifications apportées aux fichiers. Les abonnés lisent le message pour décider si un téléchargement du contenu annoncé est justifié. Cette page de manuel décrit entièrement le format de ces messages d´annonce. Les messages d´annonce sont des charges utiles @@ -314,7 +314,7 @@

                                                                  DESCRIPTION -

                                                                  THÈME (TOPIC)

                                                                  +

                                                                  THÈME (TOPIC)

                                                                  Dans les échanges basé par thèmes dans AMQP, chaque message d´annonce a un en-tête de thème. AMQP définit le caractère ‘.’ en tant que séparateur hiérarchique (comme ‘' dans un nom de chemin Windows, ou ‘/’ dans Linux), il existe également une paire de caractères génériques définis par la norme : ‘*’ correspond à un seul thème, ‘#’ correspond au reste de @@ -343,7 +343,7 @@

                                                                  THÈME (TOPIC) -

                                                                  Mappage vers MQTT

                                                                  +

                                                                  Mappage vers MQTT

                                                                  L’un des objectifs du format v03 est d’avoir un format de charge utile qui fonctionne avec plus que l’AMQP. Message Queing Telemetry Transport (MQTT v3.11) est une norme iso ( https://www.iso.org/standard/69466.html un protocole qui peut facilement prendre en charge le même modèle de messagerie publication/abonnement, avec quelques détails @@ -361,7 +361,7 @@

                                                                  Mappage vers MQTT -

                                                                  LES EN-TÊTES FIXES

                                                                  +

                                                                  LES EN-TÊTES FIXES

                                                                  Le message d´annonce est un tableau encodé en JSON unique, avec un ensemble obligatoire de champs, tout en permettant l’utilisation d’autres champs arbitraires. Les champs obligatoires doivent être présents dans chaque message:

                                                                  @@ -380,18 +380,18 @@

                                                                  LES EN-TÊTES FIXES -

                                                                  from_cluster=<nom_du_cluster>

                                                                  +

                                                                  from_cluster=<nom_du_cluster>

                                                                  L’en-tête from_cluster définit le nom du cluster source où les données ont été introduites dans le réseau. Cela est utilisé pour renvoyer les journaux au cluster chaque fois que ses produits sont utilisés.

                                                                  -

                                                                  size and blocks

                                                                  +

                                                                  size and blocks

                                                                  "size":<sz> ,
                                                                   
                                                                  @@ -460,11 +460,11 @@ 

                                                                  size and blocks -

                                                                  rename=<relpath>

                                                                  +

                                                                  rename=<relpath>

                                                                  Chemin d’accès relatif du répertoire actif dans lequel placer le fichier.

                                                                  -

                                                                  fileOp { ‘rename’:<oldpath> … }

                                                                  +

                                                                  fileOp { ‘rename’:<oldpath> … }

                                                                  lorsqu’un fichier est renommé à la source, pour l’envoyer aux abonnés, il va y avoir deux posts: un message est annoncé avec le nouveau nom comme base_url, et l’en-tête FileOp va inclure la valeur de l’ancien nom du fichier, dans un sous-champs appellé ‘rename’.

                                                                  @@ -473,7 +473,7 @@

                                                                  fileOp { ‘rename’:<oldpath> … } -

                                                                  identity

                                                                  +

                                                                  identity

                                                                  Le champ d’intégrité donne une somme de contrôle qui est utile pour identifier le contenu d’un fichier:

                                                                  "identity" : { "method" : <méthode>, "value": <valeur> }
                                                                  @@ -534,7 +534,7 @@ 

                                                                  identity -

                                                                  Report Messages

                                                                  +

                                                                  Report Messages

                                                                  Certains clients peuvent renvoyer la télémétrie à l’origine des données téléchargées à des fins de dépannage et à des fins de statistiques. Ces messages d´annonce ont le thème v03.report et ont un en-tête report qui est un object JSON avec quatre champs :

                                                                  @@ -549,7 +549,7 @@

                                                                  Report Messages -

                                                                  Report_Code

                                                                  +

                                                                  Report_Code

                                                                  Le code de rapport est un code d’état à trois chiffres, adopté à partir du protocole HTTP (w3.org/IETF RFC 2616) encodé sous forme de texte. Conformément à la RFC, tout code renvoyé doit être interprété comme suit :

                                                                  @@ -623,15 +623,15 @@

                                                                  Report_Code -

                                                                  Autres champs de rapport

                                                                  +

                                                                  Autres champs de rapport

                                                                  <report_message> une chaine de caractères.

                                                                  -

                                                                  En-têtes facultatives

                                                                  +

                                                                  En-têtes facultatives

                                                                  pour le cas d’utilisation de la mise en miroir de fichiers, des en-têtes supplémentaires seront présents :

                                                                  -

                                                                  atime,mtime,mode

                                                                  +

                                                                  atime,mtime,mode

                                                                  man 2 stat - les métadonnées du fichier standard linux/unix : temps d’accès, temps de modification et autorisation (bits de mode) @@ -658,7 +658,7 @@

                                                                  atime,mtime,mode -

                                                                  EXEMPLE

                                                                  +

                                                                  EXEMPLE

                                                                  AMQP TOPIC: v03.NRDPS.GIF
                                                                   MQTT TOPIC: exchange/v03/NRDPS/GIF/
                                                                   Body: { "pubTime": "201506011357.345", "baseUrl": "sftp://afsiext@cmcdataserver", "relPath": "/data/NRPDS/outputs/NRDPS_HiRes_000.gif",
                                                                  @@ -687,7 +687,7 @@ 

                                                                  EXEMPLE -

                                                                  Un Autre Exemple

                                                                  +

                                                                  Un Autre Exemple

                                                                  Le post résultant de la commande de sr_watch suivante, a noter la création du fichier ‘foo’:

                                                                  sr_watch -pbu sftp://stanley@mysftpserver.com/ -path /data/shared/products/foo -pb amqp://broker.com
                                                                   
                                                                  @@ -715,7 +715,7 @@

                                                                  Un Autre Exemple -

                                                                  Possibilités d’optimisation

                                                                  +

                                                                  Possibilités d’optimisation

                                                                  L’objectif d’optimisation est la lisibilité et la facilité de mise en œuvre, beaucoup plus que l’efficacité ou la performance. Il existe de nombreuses optimisations pour réduire les frais généraux de plusieur aspects, ce qui augmente la complexité de l’implémentation. @@ -728,7 +728,7 @@

                                                                  Possibilités d’optimisation -

                                                                  Standards

                                                                  +

                                                                  Standards

                                                                  • Sarracenia s’appuie sur AMQP pre 1.0 @@ -752,7 +752,7 @@

                                                                    Standards -

                                                                    VOIR AUSSI

                                                                    +

                                                                    VOIR AUSSI

                                                                    sr3(1) - rracenia ligne de commande principale.

                                                                    sr3_post(1) - poste des annoncements de fichiers (implémentation en Python.)

                                                                    sr3_cpost(1) - poste des annoncements de fichiers (implémentation en C.)

                                                                    diff --git a/fr/Tutoriel/1_CLI_introduction.html b/fr/Tutoriel/1_CLI_introduction.html index 781eef36d..ddbde8a65 100644 --- a/fr/Tutoriel/1_CLI_introduction.html +++ b/fr/Tutoriel/1_CLI_introduction.html @@ -8,9 +8,9 @@ - + - + @@ -371,7 +371,7 @@ }
                                                                    -

                                                                    Téléchargement en utilisant la console

                                                                    +

                                                                    Téléchargement en utilisant la console

                                                                    Ce bloc-notes jupyter présente l’utilisation de Sarracenia version 3 à partir de la ligne de commande (principalement avec Linux, mais devrait être similaire avec Windows et Mac, la principale différence étant des conventions différentes pour l’emplacement de stockage des préférences et des sorties d’éxécution. C’est probablement la façon la plus simple de travailler avec Sarracenia. Vous configurez un flux pour télécharger des fichiers dans un répertoire, et vous pouvez lire le répertoire pour y traiter les fichiers.

                                                                    @@ -386,12 +386,12 @@

                                                                    Téléchargement en utilisant la console -

                                                                    Prérequis

                                                                    +

                                                                    Prérequis

                                                                    Ce code qui précède n’est qu’un moyen d’obtenir des bloc-notes jupyter pour installer metpx-sr3 sur un serveur. Créer des répertoires au cas où les gens utiliseraient l’accès à l’API sans exécuter les choses via l’API. Le prérequis de base est d’avoir installé metpx-sr3 d’une manière ou d’une autre, soit en tant que package .deb, soit en utilisant pip (ou pip3) disponible pour l’environnement utilisé par jupyter.

                                                                    Le reste de ce bloc-notes suppose que metpx-sr3 est installé.

                                                                    -

                                                                    SR3

                                                                    +

                                                                    SR3

                                                                    L’interface de ligne de commande s’appelle sr3 (abréviation de Sarracenia version 3). On définit les flux à exécuter à l’aide de fichiers de configuration dans un format simple : format keyword value (mot clé, valeur). Voici des exemples de configurations pour vous aider à démarrer:

                                                                    -

                                                                    Conclusion

                                                                    +

                                                                    Conclusion

                                                                    Si tout ce que vous voulez faire est d’obtenir des données à partir d’une pompe de données en temps réel, utiliser l’interface de ligne de commande pour contrôler certains processus qui s’exécutent tout le temps, afin qu’ils vident les fichiers dans un certain répertoire est la méthode la plus simple.

                                                                    Ce n’est pas très efficace cependant. Lorsque vous avez un grand nombre de fichiers sur lesquels travailler et que vous souhaitez un traitement à grande vitesse, il est préférable, dans le sens d’une charge CPU et d’E/S (I/O) réduite et en termes de vitesse de traitement d’avoir votre propre application informée de l’arrivée des fichiers, plutôt que de scanner un répertoire.

                                                                    La façon la plus simple de le faire est d’ajouter des rappels à vos flux. Nous couvrirons cela ensuite.

                                                                    diff --git a/fr/Tutoriel/2_CLI_with_flowcb_demo.html b/fr/Tutoriel/2_CLI_with_flowcb_demo.html index f7d9258dd..b72164d2d 100644 --- a/fr/Tutoriel/2_CLI_with_flowcb_demo.html +++ b/fr/Tutoriel/2_CLI_with_flowcb_demo.html @@ -8,9 +8,9 @@ - + - + @@ -378,7 +378,7 @@ }
                                                                    -

                                                                    Personnalisez la gestion des fichiers avec les rappels.

                                                                    +

                                                                    Personnalisez la gestion des fichiers avec les rappels.

                                                                    Tous les composants de Sarracenia implémentent l’algorithme Flow, avec différents rappels, dans le langage de programmation Python. La classe principale de Sarracenia (Python) est sarracenia.flow et la grande partie de la fonctionnalité de base est mis en œuvre à l’aide de la classe créée pour ajouter un traitement personnalisé à un flux, le classe flowcb (rappel de flux).

                                                                    Pour une discussion détaillée de l’algorithme de flux lui-même, jetez un oeil dans le manuel Concepts. Pour tout flux, on peut ajouter un traitement personnalisé à divers moments pendant le traitement par sous-classement la classe sarracenia.flowcb.

                                                                    En bref, l’algorithme comporte les étapes suivantes :

                                                                    @@ -593,7 +593,7 @@

                                                                    Personnalisez la gestion des fichiers avec les rappels.

                                                                    Sans le plugin, le téléchargement mettrait tous les fichiers directement dans le répertoire de réception. avec l’ajout du retour wistree, il place le fichier dans /tmp/hpfx_amis. Avec le changement, il le place dans l’arborescence des répertoires WIS et ajoute un suffixe selon le type de fichier.

                                                                    -

                                                                    Entrées de fichier de configuration et rappels

                                                                    +

                                                                    Entrées de fichier de configuration et rappels

                                                                    flowcb.log

                                                                    Pour ajouter un retour à un flux, une ligne est ajoutée au fichier de configuration du flux:

                                                                    flowcb sarracenia.flowcb.log.Log
                                                                    @@ -620,7 +620,7 @@ 

                                                                    Entrées de fichier de configuration et rappels -

                                                                    Écrire Vos Propres Rappels

                                                                    +

                                                                    Écrire Vos Propres Rappels

                                                                    Un rappel de flux est une classe python construite avec des routines nommées pour indiquer quand le programmeur veut qu’elles soient appelées. Pour ce faire, créez une routine qui sous-classe sarracenia.flowcb.FlowCB afin que la classe ait normalement:

                                                                    from sarracenia.flowcb import FlowCB

                                                                    parmi les importations dans le haut du fichier. Dans la partie principale du fichier, il y aura les classes de rappel personnalisées:

                                                                    @@ -655,7 +655,7 @@

                                                                    Écrire Vos Propres Rappels -

                                                                    Listes De Travail

                                                                    +

                                                                    Listes De Travail

                                                                    Autre qu’ options, l’autre argument principal des routines de rappel after_accept et after_work est la liste de travail. La liste de travail est donnée aux points d’entrée se produisant pendant le traitement des messages et est un certain nombre de listes de travail de messages:

                                                                    worklist.incoming --> messages to process (either new or retries.)
                                                                     worklist.ok       --> successfully processed
                                                                    @@ -674,7 +674,7 @@ 

                                                                    Listes De Travail -

                                                                    Sortie d’Exécution

                                                                    +

                                                                    Sortie d’Exécution

                                                                    Python a une excellente journalisation intégrée et doit une fois utiliser le module de manière normale et pythonique, avec:

                                                                    import logging

                                                                    Après toutes les importations dans votre fichier source python, définissez un enregistreur pour le fichier source:

                                                                    @@ -684,7 +684,7 @@

                                                                    Sortie d’ExécutionChaque message du journal sera précédé de la classe et de la routine émettant le message de journal, ainsi que de la date/heure.

                                                                    -

                                                                    Exemple de sous-classe Flowcb

                                                                    +

                                                                    Exemple de sous-classe Flowcb

                                                                    Avec les informations ci-dessus sur la gestion des options, les listes de travail et la journalisation, nous sommes prêts à comprendre le module wistree que nous venons d’utiliser. Cette classe wistree.py accepte les fichiers dont les noms commencent par AHL et renomme l’arborescence de répertoires dans un standard différent, celui en évolution pour le WMO WIS 2.0 (pour plus d’informations sur ce module: https://github.com/wmo-im/GTStoWIS2)

                                                                    [6]:
                                                                    @@ -768,7 +768,7 @@ 

                                                                    Exemple de sous-classe Flowcb -

                                                                    Plugins qui changent la façon dont un fichier est téléchargé

                                                                    +

                                                                    Plugins qui changent la façon dont un fichier est téléchargé

                                                                    La routine after_accept est l’une des deux plus couramment utilisées. Il est utilisé pour modifier le traitement avant le téléchargement ou l’envoi d’un fichier. Pour traiter le fichier après son téléchargement, le point d’entrée after_work est utilisé pour traiter la liste worklist.ok (fichiers qui ont été téléchargés avec succès).

                                                                    La routine after_accept a une boucle externe qui parcourt toute la liste des messages entrants. Il construit une nouvelle liste de messages entrants à partir de ceux qu’il accepte, tout en ajoutant tous les messages rejetés à worklist.failed. La liste est juste une liste de messages, où chaque message est un dictionnaire python avec tous les champs stockés dans un message au format v03. Dans le message, il y a, par exemple, les champs baseURL et relPath :

                                                                      @@ -779,7 +779,7 @@

                                                                      Plugins qui changent la façon dont un fichier est téléchargé -

                                                                      Plugins qui Traitent un Fichier après son Téléchargement

                                                                      +

                                                                      Plugins qui Traitent un Fichier après son Téléchargement

                                                                      Un cas d’utilisation courant est pour les plugins avec un point d’entrée after_work pour lire le fichier après son téléchargement et le transformer en un produit dérivé avec un nom différent. Ainsi, le nouveau fichier est créé comme dans la section précédente. Le message pour le fichier téléchargé doit encore être déplacé sur une liste pour s’assurer qu’il est reconnu par le courtier. Un tel point d’entrée ressemblerait à ceci:

                                                                      [7]:
                                                                      @@ -804,14 +804,14 @@ 

                                                                      Plugins qui Traitent un Fichier après son Téléchargement -

                                                                      Plugins qui renomment les fichiers

                                                                      +

                                                                      Plugins qui renomment les fichiers

                                                                      Le plugin ci-dessus modifie la disposition des fichiers à télécharger, en fonction de la classe GTStoWIS, qui prescrit une arborescence de répertoires différente en sortie. Il y a beaucoup de champs à mettre à jour lors de la modification du placement des fichiers, il est donc préférable d’utiliser:

                                                                      msg.updatePaths( self.o, new_dir, new_file )

                                                                      pour mettre à jour correctement tous les champs nécessaires dans le message. Il mettra à jour ‘new_baseURL’, ‘new_relPath’, ‘new_subtopic’ à utiliser lors de la publication.

                                                                      La partie try/except de la routine traite du cas où, si un fichier arrive avec un nom à partir duquel une arborescence de rubriques ne peut pas être construite, une exception python peut se produire et le message est ajouté à la liste de travail ayant échoué et ne sera pas être traitées par des plugins ultérieurs.

                                                                    -

                                                                    Plugins qui Créent de Nouveaux Fichiers

                                                                    +

                                                                    Plugins qui Créent de Nouveaux Fichiers

                                                                    La routine ci-dessus est parfaite lorsqu’un fichier vient d’être renommé. Si un plugin a besoin de créer de nouveaux fichiers vaguement dérivés du fichier d’entrée, alors vous voulez créer de nouveaux messages pour ces fichiers à partir de rien:

                                                                    import sarracenia
                                                                     
                                                                    @@ -833,7 +833,7 @@ 

                                                                    Plugins qui Créent de Nouveaux Fichiers -

                                                                    Other Examples

                                                                    +

                                                                    Other Examples

                                                                    Le sous-classement de Sarracenia.flowcb est utilisé en interne pour faire beaucoup de travail de base. C’est une bonne idée de regarder le code source de Sarracenia lui-même. Par exemple:

                                                                    • sarracenia.flowcb jetez un oeil au fichier init.py là qui fournit ces informations sur un format plus programmatiquement succinct.

                                                                    • diff --git a/fr/Tutoriel/3_api_flow_demo.html b/fr/Tutoriel/3_api_flow_demo.html index 6291c79f6..22581ee28 100644 --- a/fr/Tutoriel/3_api_flow_demo.html +++ b/fr/Tutoriel/3_api_flow_demo.html @@ -8,9 +8,9 @@ - + - + @@ -375,7 +375,7 @@ }
                                                                      -

                                                                      Exemple d’API de flux

                                                                      +

                                                                      Exemple d’API de flux

                                                                      La classe sarracenia.flow fournit un filtrage d’acceptation/rejet intégré pour les messages, prend en charge le téléchargement intégré dans plusieurs protocoles, réessaye en cas d’échec et permet la création de rappels pour personnaliser le traitement.

                                                                      Vous devez fournir une configuration comme argument lors de l’instanciation d’un abonné. La sarracenia.config.no_file_config() renvoie une configuration vide sans consulter l’arborescence des fichiers de configuration sr3.

                                                                      Après avoir apporté les modifications nécessaires à la configuration, l’abonné est alors initié et exécuté.

                                                                      @@ -436,23 +436,23 @@

                                                                      Exemple d’API de flux

                                                                    -

                                                                    démareurs.

                                                                    +

                                                                    démareurs.

                                                                    les paramètres du courtier, des liaisons et du nom de la file d’attente sont expliqués dans le bloc-notes de moth.

                                                                    -

                                                                    cfg.download

                                                                    +

                                                                    cfg.download

                                                                    Si vous souhaitez que le flux télécharge les fichiers correspondant aux messages. Si vrai, il téléchargera les fichiers.

                                                                    -

                                                                    cfg.batch

                                                                    +

                                                                    cfg.batch

                                                                    Les messages sont traités par lots. Le nombre de messages à récupérer par appel à newMessages() est limité par le paramètre batch. Nous le définissons ici sur 1 afin que vous puissiez voir chaque fichier téléchargé immédiatement lorsque le message correspondant est téléchargé. vous pouvez laisser ce champ vide et la valeur par défaut est 25. Les paramètres sont une question de goût et de cas d’utilisation.

                                                                    -

                                                                    cfg.messageCountMax

                                                                    +

                                                                    cfg.messageCountMax

                                                                    Normalement, nous laissons ce paramètre à sa valeur par défaut (0) qui n’a aucun effet sur le traitement. à des fins de démonstration, nous limitons le nombre de messages que l’abonné traitera avec ce paramètre. après la réception de messageCountMax messages, arrêtez le traitement.

                                                                    -

                                                                    cfg.masks

                                                                    +

                                                                    cfg.masks

                                                                    Les masques sont une forme compilée de directives d’acceptation/rejet. un relPath est comparé à la regex dans le masque. Si l’expression régulière correspond et que accept est True, le message est accepté pour un traitement ultérieur. Si l’expression régulière correspond, mais accept vaut False, le traitement du message est arrêté (le message est rejeté.)

                                                                    les masques sont un tuple. la signification peut être recherchée dans la page de manuel sr3(1).

                                                                      @@ -468,7 +468,7 @@

                                                                      cfg.masks -

                                                                      cfg.no, cfg.pid_filename

                                                                      +

                                                                      cfg.no, cfg.pid_filename

                                                                      Ces paramètres sont nécessaires car ils seraient normalement définis par la classe sarracenia.instance qui est normalement utilisée pour lancer des flux. Ils permettent de configurer des chemins d’exécution pour retry_queues et des fichiers d’état, afin de mémoriser les paramètres si nécessaire entre les exécutions.

                                                                      [3]:
                                                                      @@ -549,7 +549,7 @@ 

                                                                      cfg.no, cfg.pid_filename -

                                                                      Conclusion:

                                                                      +

                                                                      Conclusion:

                                                                      Avec la classe sarracenia.flow, une méthode de fonctionnement asynchrone est prise en charge, elle peut être personnalisée à l’aide de la classe flowcb (rappel de flux) pour introduire un traitement spécifique à des moments spécifiques. C’est comme l’invocation d’une seule instance à partir de la ligne de commande, sauf que toute la configuration est effectuée dans python en définissant des champs cfg, plutôt qu’en utilisant le langage de configuration.

                                                                      Qu’est-ce qui est perdu par rapport à l’utilisation de l’outil de ligne de commande :

                                                                        diff --git a/fr/Tutoriel/4_api_moth_sub_demo.html b/fr/Tutoriel/4_api_moth_sub_demo.html index 2276ee7ba..9e94a5888 100644 --- a/fr/Tutoriel/4_api_moth_sub_demo.html +++ b/fr/Tutoriel/4_api_moth_sub_demo.html @@ -8,9 +8,9 @@ - + - + @@ -374,7 +374,7 @@ }
                                                                        -

                                                                        Un premier exemple utilisant l’API Sarracenia Moth

                                                                        +

                                                                        Un premier exemple utilisant l’API Sarracenia Moth

                                                                        Sarracenia est un package conçu pour annoncer la disponibilité de nouvelles données, généralement sous forme de fichiers. Nous plaçons les fichiers sur des serveurs standard, les rendons disponibles via le Web ou sftp, et informons les utilisateurs qu’ils sont arrivés à l’aide de messages.

                                                                        Sarracenia utilise des protocoles de transmission de messages standard existants, comme rabbitmq/AMQP pour transporter les messages, et dans les cercles de transmission de messages, car le serveur qui distribue les messages est appelé un courtier (broker).

                                                                        Nous appelons la combinaison d’un courtier de messages et d’un serveur de fichiers (qui peut être un serveur unique ou un grand cluster) une pompe de données (data pump).

                                                                        @@ -435,7 +435,7 @@

                                                                        Un premier exemple utilisant l’API Sarracenia Moth

                                                                        subtopic: à quel sous-ensemble de messages topic_prefix voulons-nous nous abonner.

                                                                      -

                                                                      Liaisons

                                                                      +

                                                                      Liaisons

                                                                      L’option de liaisons définit les trois valeurs ci-dessus. dans l’exemple, les liaisons sont :

                                                                      • topic_prefix: v02.post (obtenir des messages v02.)

                                                                      • @@ -445,7 +445,7 @@

                                                                        Liaisons -

                                                                        sous-thème

                                                                        +

                                                                        sous-thème

                                                                        Le sous-thème ici ( # ) correspond à tout ce qui est produit sur le serveur. Plus le sous-thème est large, plus il y a de messages à envoyer et plus le traitement est important. Il est préférable de le rendre plus étroit. En prenant l’exemple ci-dessus, si nous sommes intéressés par swob, un sous-thème comme:

                                                                        • *.WXO-DD.observations.swob-ml.#

                                                                        • @@ -454,7 +454,7 @@

                                                                          sous-thème -

                                                                          queue_name

                                                                          +

                                                                          queue_name

                                                                          Par convention, dans les courtiers administrés par Sarracenia, les utilisateurs ne peuvent créer que des files d’attente commençant par q_ suivi de leur nom d’utilisateur. nous nous sommes connectés en tant qu’anonymes, et donc q_anonymous doit être utilisé. Après cela, le reste peut être ce que vous voulez, mais il y a quelques considérations :

                                                                          • Si vous souhaitez démarrer plusieurs processus Python pour partager un flux de données, ils spécifient tous le même nom de file d’attente et ils partageront le flux de messages. Il s’adapte bien à quelques dizaines de téléchargeurs coopérants, mais ne s’adapte pas à l’infini, ne vous attendez pas à plus d’environ 99 processus pour pouvoir partager efficacement une charge à partir d’une seule file d’attente. Pour évoluer au-delà de cela avec AMQP, plusieurs sélections sont préférables.

                                                                          • @@ -462,12 +462,12 @@

                                                                            queue_name -

                                                                            Messages

                                                                            +

                                                                            Messages

                                                                            Différents protocoles de messagerie ont différentes structures et conventions de stockage. la classe MoTH renvoie les messages sous forme de dictionnaires python, quel que soit le protocole utilisé pour les obtenir ou, en cas de transfert, pour les transmettre. On peut ajouter des champs pour une utilisation programmatique aux messages simplement en ajoutant des éléments au dictionnaire. S’ils sont uniquement destinés à un usage interne, ajoutez le nom de l’élément du dictionnaire à la clé spéciale ‘_deleteOnPost’, afin que l’élément du dictionnaire soit supprimé lors du transfert du message.

                                                                      -

                                                                      Ack

                                                                      +

                                                                      Ack

                                                                      Les messages sont marqués en transit par le courtier, et si vous ne les reconnaissez pas, la pompe de données les conservera et les réexpédiera éventuellement. conserver les messages en attente en mémoire ralentira également le traitement de tous les messages. Il faut accuser réception des messages dès que possible, mais pas si tôt que vous perdrez des données si le programme est interrompu. Dans l’exemple, nous reconnaissons après avoir fait notre travail d’impression du message.

                                                                      [10]:
                                                                      @@ -660,12 +660,12 @@ 

                                                                      Ack

                                                                      -

                                                                      Télécharger des données avec Python

                                                                      +

                                                                      Télécharger des données avec Python

                                                                      Vous pouvez utiliser la bibliothèque python urllib pour télécharger des données, puis les analyser. Dans cet exemple, les données sont une structure XML par message téléchargé et lu en mémoire. Certaines données de station sont ensuite imprimées.

                                                                      Cela fonctionne bien avec urllib pour les ressources de protocole de transport hyper-test, mais d’autres ressources peuvent être annoncées à l’aide d’autres protocoles, tels que sftp ou ftp. Le code python devra être étendu pour traiter avec d’autres protocoles, ainsi que des conditions d’erreur, telles que des pannes temporaires.

                                                                      -

                                                                      Conclusion

                                                                      +

                                                                      Conclusion

                                                                      Sarracenia.moth.amqp est le moyen le plus léger d’ajouter la consommation de messages Sarracenia à votre pile python existante. Vous demandez explicitement de nouveaux messages lorsque vous êtes prêt à les utiliser.

                                                                      Ce type d’intégration ne fournit pas:

                                                                        diff --git a/fr/Tutoriel/5_api_moth_post_demo.html b/fr/Tutoriel/5_api_moth_post_demo.html index cf51598aa..4684189fb 100644 --- a/fr/Tutoriel/5_api_moth_post_demo.html +++ b/fr/Tutoriel/5_api_moth_post_demo.html @@ -8,9 +8,9 @@ - + - + @@ -366,7 +366,7 @@ }
                                                                        -

                                                                        Publication à partir du code Python

                                                                        +

                                                                        Publication à partir du code Python

                                                                        Si vous avez du code python qui crée déjà des fichiers, et vous ne souhaitez pas invoquer un programme séparé pour publier les fichiers, vous pouvez accéder facilement à la logique de publication des messages, étant donné un fichier existant.

                                                                        Cet exemple concerne la création par programme de publications pour des fichiers. Il nécessite un accès en écriture à un courtier (broker), avec un utilisateur autorisé à publier sur un échange.

                                                                        Besoin d’établir une configuration de publication, puis d’instancier un posting_engine (une instance qui peut être utilisée pour publier des messages.)

                                                                        diff --git a/fr/Tutoriel/Installer.html b/fr/Tutoriel/Installer.html index cc8b7e256..d2f823f35 100644 --- a/fr/Tutoriel/Installer.html +++ b/fr/Tutoriel/Installer.html @@ -8,9 +8,9 @@ - + - + @@ -125,20 +125,20 @@ }
                                                                        -

                                                                        Installation de MetPX Sarracenia

                                                                        +

                                                                        Installation de MetPX Sarracenia

                                                                        -

                                                                        Enregistrement de révision

                                                                        +

                                                                        Enregistrement de révision

                                                                        version:

                                                                        UNKNOWN

                                                                        date:
                                                                        -

                                                                        Aug 16, 2023

                                                                        +

                                                                        Aug 18, 2023

                                                                        -

                                                                        L’avez-vous déjà?

                                                                        +

                                                                        L’avez-vous déjà?

                                                                        Si vous êtes sur un serveur avec celui-ci déjà installé, vous pouvez l’appeler comme suit:

                                                                        fractal% sr3 status
                                                                         status:
                                                                        @@ -185,7 +185,7 @@ 

                                                                        L’avez-vous déjà? -

                                                                        Installation Client

                                                                        +

                                                                        Installation Client

                                                                        Le package est conçu pour python version 3.6 ou supérieure. Sur les systèmes où ils sont disponibles, les paquets debian sont recommandés. Ceux-ci peuvent être obtenus auprès du référentiel launchpad. Si vous ne pouvez pas utiliser les paquets Debian, envisagez les paquets pip @@ -197,7 +197,7 @@

                                                                        Installation Client -

                                                                        Ubuntu/Debian (apt/dpkg) Recommandé

                                                                        +

                                                                        Ubuntu/Debian (apt/dpkg) Recommandé

                                                                        Sur Ubuntu 22.04 et dérivés du même:

                                                                        sudo add-apt-repository ppa:ssc-hpc-chp-spc/metpx
                                                                         sudo apt update
                                                                        @@ -265,7 +265,7 @@ 

                                                                        Ubuntu/Debian (apt/dpkg) Recommandé

                                                                        -

                                                                        Distributions Redhat/Suse (basées sur rpm)

                                                                        +

                                                                        Distributions Redhat/Suse (basées sur rpm)

                                                                        Python distutils sur les distributions basées sur le gestionnaire de paquets redhat ne gère pas les dépendances avec l’emballage actuel, il faut donc les installer manuellement. Par exemple, sur fedora 28 obligatoirement:

                                                                        @@ -298,7 +298,7 @@

                                                                        Distributions Redhat/Suse (basées sur rpm) -

                                                                        PIP

                                                                        +

                                                                        PIP

                                                                        Sur les distributions Windows ou Linux où les packages de système ne sont pas disponible, ou d’autres cas particuliers, tels que l’utilisation de python dans un virtual env, où il est plus pratique d’installer le paquet en utilisant pip (python install package) @@ -331,7 +331,7 @@

                                                                        PIP

                                                                        -

                                                                        Démarrage et arrêt du système

                                                                        +

                                                                        Démarrage et arrêt du système

                                                                        Si l’intention est d’implémenter une pompe de données, il s’agit d’un serveur ayant un rôle à jouer dans la réalisation de grandes quantités de transferts de données, alors la convention est de créer une application sarra et de l’organiser pour qu’elle soit démarré au démarrage et arrêté à l’arrêt.

                                                                        @@ -359,7 +359,7 @@

                                                                        Démarrage et arrêt du système -

                                                                        Traitement périodique/Tâches Cron

                                                                        +

                                                                        Traitement périodique/Tâches Cron

                                                                        Quelle que soit la façon dont il est installé, un traitement périodique supplémentaire peut être nécessaire:

                                                                          @@ -377,7 +377,7 @@

                                                                          Traitement périodique/Tâches Cron -

                                                                          Windows

                                                                          +

                                                                          Windows

                                                                          Sous Windows, il existe 2 (autres) options possibles :

                                                                          Sans Python

                                                                          Téléchargez le fichier d’installation de Sarracenia à partir de here, @@ -394,13 +394,13 @@

                                                                          WindowsWindows user manual pour plus d’informations sur la façon d’exécuter Sarracenia sous Windows.

                                                                        -

                                                                        Paquets

                                                                        +

                                                                        Paquets

                                                                        Les paquets Debian et les roues python peuvent être téléchargés directement De: launchpad

                                                                        -

                                                                        Source

                                                                        +

                                                                        Source

                                                                        Le code source de chaque module est disponible https://github.com/MetPX:

                                                                        $ git clone https://github.com/MetPX/sarracenia sarracenia
                                                                         $ cd sarracenia
                                                                        @@ -421,7 +421,7 @@ 

                                                                        Source

                                                                        -

                                                                        Sarrac

                                                                        +

                                                                        Sarrac

                                                                        Le client C est disponible dans des binaires prédéfinis dans les launchpad référentiels aux côtés des paquets python

                                                                        $ sudo add-apt-repository ppa:ssc-hpc-chp-spc/metpx
                                                                         $ sudo apt-get update
                                                                        diff --git a/fr/Tutoriel/Mettre_en_place_un_subscriber_distant.html b/fr/Tutoriel/Mettre_en_place_un_subscriber_distant.html
                                                                        index 06709bb16..48ad0a8b6 100644
                                                                        --- a/fr/Tutoriel/Mettre_en_place_un_subscriber_distant.html
                                                                        +++ b/fr/Tutoriel/Mettre_en_place_un_subscriber_distant.html
                                                                        @@ -8,9 +8,9 @@
                                                                               
                                                                               
                                                                           
                                                                        -        
                                                                        +        
                                                                                 
                                                                        -        
                                                                        +        
                                                                                 
                                                                             
                                                                             
                                                                        @@ -123,10 +123,10 @@
                                                                         }
                                                                         
                                                                         
                                                                        -

                                                                        Comment configurer un abonné distant

                                                                        +

                                                                        Comment configurer un abonné distant

                                                                        Cet exemple explique comment s’abonner aux fichiers swob du bureau météo d’Environnement Canada.

                                                                        -

                                                                        Mise en Place

                                                                        +

                                                                        Mise en Place

                                                                        Initialiser le stockage des informations d’identification dans le fichier ~/.config/sr3/credentials.conf

                                                                        $ sr3 edit credentials.conf
                                                                           amqps://anonymous:anonymous@dd.weather.gc.ca
                                                                        @@ -168,7 +168,7 @@ 

                                                                        Mise en Place -

                                                                        Démarrage

                                                                        +

                                                                        Démarrage

                                                                        Maintenant, démarrez l’abonné nouvellement créé:

                                                                        $ sr3 start swob
                                                                           2015-12-03 06:53:35,268 [INFO] user_config = 0 ../swob.conf
                                                                        @@ -224,7 +224,7 @@ 

                                                                        Démarrage -

                                                                        Nettoyage

                                                                        +

                                                                        Nettoyage

                                                                        Pour ne pas télécharger plus de fichiers, arrêtez l’abonné

                                                                        $ sr_subscribe stop swob
                                                                           2015-12-03 17:32:22,219 [INFO] sr_subscribe swob 01 stopped
                                                                        diff --git a/fr/Tutoriel/Mettre_en_place_un_subscriber_local.html b/fr/Tutoriel/Mettre_en_place_un_subscriber_local.html
                                                                        index 698dda9c8..ec7844737 100644
                                                                        --- a/fr/Tutoriel/Mettre_en_place_un_subscriber_local.html
                                                                        +++ b/fr/Tutoriel/Mettre_en_place_un_subscriber_local.html
                                                                        @@ -8,9 +8,9 @@
                                                                               
                                                                               
                                                                           
                                                                        -        
                                                                        +        
                                                                                 
                                                                        -        
                                                                        +        
                                                                                 
                                                                             
                                                                             
                                                                        @@ -118,7 +118,7 @@
                                                                         }
                                                                         
                                                                         
                                                                        -

                                                                        Administrateur du serveur : un abonné local

                                                                        +

                                                                        Administrateur du serveur : un abonné local

                                                                        Cet exemple explique comment s’abonner aux fichiers swob du bureau météorologique d’Environnement Canada.

                                                                        $ sudo apt install rabbitmq-server
                                                                         $ sudo rabbitmqctl list_users
                                                                        diff --git a/fr/Tutoriel/Windows.html b/fr/Tutoriel/Windows.html
                                                                        index 314368d1c..deb6b9d00 100644
                                                                        --- a/fr/Tutoriel/Windows.html
                                                                        +++ b/fr/Tutoriel/Windows.html
                                                                        @@ -8,9 +8,9 @@
                                                                               
                                                                               
                                                                           
                                                                        -        
                                                                        +        
                                                                                 
                                                                        -        
                                                                        +        
                                                                                 
                                                                             
                                                                             
                                                                        @@ -122,14 +122,14 @@
                                                                         }
                                                                         
                                                                         
                                                                        -

                                                                        Manuel de l’utilisateur Windows

                                                                        +

                                                                        Manuel de l’utilisateur Windows

                                                                        Ce document enseigne aux utilisateurs novices de Python sur Windows comment ils pourraient facilement exécuter Sarracenia de différentes manières. Les captures d’écran ont été prises à partir de l’édition Windows Server 2012 R2 Standard. N’hésitez pas à créer des issues si vous croyez que ce document pourrait être enrichi d’un (ou de plusieurs) cas important(s).

                                                                        -

                                                                        Exécution de Sarracenia avec une invite de commandes

                                                                        +

                                                                        Exécution de Sarracenia avec une invite de commandes

                                                                        -

                                                                        Dans le menu Démarrer :

                                                                        +

                                                                        Dans le menu Démarrer :

                                                                        Cliquez sur Sarracenia (il exécutera sr3.exe redémarrer):

                                                                        ../../_images/start-menu-1.png

                                                                        Cela fera apparaître l’invite de commande de Sarracenia, démarrera les processus Sarracenia comme indiqué par vos configurations et affichera les informations de journalisation.

                                                                        @@ -138,7 +138,7 @@

                                                                        Dans le menu Démarrer :

                                                                        -

                                                                        À partir d’une session Windows Powershell :

                                                                        +

                                                                        À partir d’une session Windows Powershell :

                                                                        Lancez une session Powershell powershell et tapez cette commande à l’invite

                                                                        sr3 restart
                                                                         
                                                                        @@ -152,7 +152,7 @@

                                                                        À partir d’une session Windows Powershell : -

                                                                        À partir de l’invite Anaconda :

                                                                        +

                                                                        À partir de l’invite Anaconda :

                                                                        Exécutez cette commande

                                                                        activate sr3 && s3r restart
                                                                         
                                                                        @@ -160,12 +160,12 @@

                                                                        À partir de l’invite Anaconda : -

                                                                        Exécution de Sarracenia sans invite de commandes

                                                                        +

                                                                        Exécution de Sarracenia sans invite de commandes

                                                                        Voici un cas où quelqu’un (comme un administrateur de système) doit exécuter Sarracenia sans invite de commande et s’assurer que le système démarre au démarrage de Windows. La façon évidente de le faire serait à partir du Planificateur de tâches.

                                                                        -

                                                                        À partir du Planificateur de tâches :

                                                                        +

                                                                        À partir du Planificateur de tâches :

                                                                        Ouvrez le Planificateur de tâches :

                                                                        ../../_images/03_task_scheduler.png

                                                                        Sélectionnez Créer une tâche de base… dans le panneau d’action à droite :

                                                                        diff --git a/fr/Tutoriel/index.html b/fr/Tutoriel/index.html index b228d189f..1b6006a44 100644 --- a/fr/Tutoriel/index.html +++ b/fr/Tutoriel/index.html @@ -8,9 +8,9 @@ - + - + @@ -117,7 +117,7 @@ }
                                                                        -

                                                                        Tutoriel

                                                                        +

                                                                        Tutoriel

                                                                        Contents:

                                                                          diff --git a/fr/index.html b/fr/index.html index ff0dd596a..a8d7b7ee9 100644 --- a/fr/index.html +++ b/fr/index.html @@ -8,9 +8,9 @@ - + - + @@ -105,7 +105,7 @@ }
                                                                          -

                                                                          S´abonner et répliquer

                                                                          +

                                                                          S´abonner et répliquer

                                                                          S´abonner et répliquer 3 (Sr3) est la version 3 de Sarracenia : une boîte à outils de gestion de partage de données pub/sub en temps réel pour les utilisateurs en ligne de commande, python et C.

                                                                          Page d’accueil: https://metpx.github.io/sarracenia

                                                                          Discussions: https://github.com/MetPX/sarracenia/discussions diff --git a/genindex.html b/genindex.html index 0fe5ef5d8..97e36ce33 100644 --- a/genindex.html +++ b/genindex.html @@ -7,9 +7,9 @@ - + - + diff --git a/index.html b/index.html index d5985cb89..0a7173375 100644 --- a/index.html +++ b/index.html @@ -8,9 +8,9 @@ - + - + @@ -97,7 +97,7 @@ }

                                                                          -

                                                                          Subscribe and Replicate 3

                                                                          +

                                                                          Subscribe and Replicate 3

                                                                          Subscribe and Replicate 3 (Sr3) is version 3 of Sarracenia: a real-time pub/sub data sharing management toolkit for command line, python, and C users.

                                                                          @@ -133,7 +133,7 @@

                                                                          Subscribe and Replicate 3 -

                                                                          Indices and tables

                                                                          +

                                                                          Indices and tables

                                                                          • Index

                                                                          • Module Index

                                                                          • diff --git a/objects.inv b/objects.inv index ce877d8ff684708e8f4daa02116d57755046d699..4f3b9ed837d65a54ccfa05a5a238778d15161b9a 100644 GIT binary patch delta 30284 zcmV(&K;gfhwgcq11F()}f6^p5ZlnR;_g8Qy58XXhjC!d@)3v1@Qik10+Eb1RY>#*VL*E0`8xG zAVClhhof4xdmK1e+{&VU{1? z*Q;dT0yl%3!`H+4zgWS3it(={w?Vi+I+*w~{=0#spMQ!)ef^UmUA|$g-dvU!S>WyS zDU1gY(J^3+UK1A|f6uSamgfs+eZ5-DFATbgS+FhBpk5Bct;m*Kl~Aj%|9<>&`Sstc zqVntFtiJw&Nf`OKIi`xpYM&IHsj=LenF?!#sn)B0 z!bKBy28v%*J8VmG2#;UmZbST4HIx#vx?+a) zIc7c=nRLdv7qelj8zpxP*z>`IB*^Z)sQO;Kbia3ZNtp*M%Eh3LB=d0R`u6 zr6CV&Ue3P%ds*u{lX7R7XI&W3UC&pmxq-p0hr7&D=rlt08{6fpv9E$!Ln1_yOGOY# zR*zMicZUhWe<|O#jgnAaFWAV)piRto$$enk{T0gV4_BWS=SDUk>@70YUGiXH4R-&7 zi|su|4e)&Y>*LYC>}nE&+`=i9lEaF$%+JM$78hH=gC>hfg%;{v);=jUga zKN=Al_axTv;K~C|#e+5>?s-z$_9kof_3AZivai`se*@cvXYD&t>3W%&!J^FVEplb} zV`4M0ZVtI>Vz7)}@4d1$S?jMqzK4SV-Y+bSXH%^+fcmGAeRi|LEst7~f{RiXS7Tm# zN;*uD>%7ISXChl3LLV8t|3&771)uj~{q!*LVVT{Mw;JnuH9xyvK+Jvz`ut~CCueMw zV#E-AfAQ@}arMflpKh7;1YGa}zsIOyIs6?u*^b6V0|>ni7k$k?EuJsu>oxmZ&6?5~ zPnj^_x`q=34`Ccz_W*?Q=d;U8#e(fF%yHW5x!4GVE8&}=(Dbs!50&P;tI4C9iH$`N z2`PJRX7@-WVyp&5OjkOME)tcM6is3C>cz`{f27}yo+dwyriroiTQ9zcP0f&LM&JlS zzs6w(ryW4r1VTNium9#?0vwiL!)*Ig8S-$XaI5bU*fu+fpAvB1q{1Wo@oKSlR}-l2 z((R#00+e*^d{`cv5=(2z92~!cgbk&WJMNJ+g{2O6E@e6wI1ZDt4NHKFQW=H`ED{W7 zf6B&revnLIKZto;XTW9)dphq(z&Rv3@Nq4$fG}YJ>$$9l3!0DN`Y@jrT4#)WJJ^TYr{fip6^X+syM)E zelj<0ikirK?w|QrVRE}Z1Zn&M3betRf0c|D?Rd>~I>Z?OFOHF@h-%YEQaNF1o>h!0 z{@R#}4alga_}*D z2yWc`7B*U2F&}}vfP_ znk9d>tPTp8H9T^b1dpF54Rd1Ov`zg@+pw2(BfrD+CX0OybvW3Lef@Vh8wP#iS!3{q zS5@|{VR{Th-_aZAd2|!rL}60we;_KcoA1K?!I&$c-;0#5{|S=@YnF6a?(AKL0G*@J zV5SvAw$d+=6My}s%AQm@`P_i~aK&lE$_EJK6X~X5K=#x!q}+u*h7_%%mI?Jh4ART` z{Gr2fS73krcS!sCi)d;1IWN-+kQc1u4-O8jL*eedY`Z&T5me|4Oa%7{f9LCecn(kf zr$dw?^U}~iJbeKxc=M}?e4$}RZ%EdOtImPs%`$yxPb$HPp}+Ab;uZqL*Wt$xSF8^1 zDO^fX%qMY%Lj!_sQS!69A}_n)0m)+Dg;VZvhkGy zLM6yfx&`~7*d;#Sb>{~~f52m0gcyYB36>SZ?bCt3_;iyn*Mp)^R-avPSqCC(qx3Ua zcxB?xob`vZi)lBa{l>rtFpSFswlG5mI`3hX{*F|GE8W8vpcfp?7!0m$?^Xk`51&HHg8B^{Su-6Gfc{iYwf9^d5da2IS5r?7W zVpsv~aCW$RIcf>cjIAZa!E2QSH2AAY1sym!&AK?M!_}1B!q^WU>EkCZ-kRFX=kwXx{qcG&rXYWy zu{!cnkM;e1*0tVdf8Ij``_?U(Dq-eT+VkTojYogb$Z)fJPl_Nef8o<2HerG@AJ8D}Y#T24 z80s+>fwu}p_`#b{fWeJ!>JkKEs|56ls*r_Mge5#EuDY}C19XUsT&y?zU{f%AWB(sC zIRV4~4BT!P06a4@6vrci?gMi7tW$Oa_(j3q*}&=c9Kav65_T$KV(H*!dTziyy0@hp zM(z_!h?4lue_*iDF48C_JOt0drBmPw#|?&&^Tg6>83Xz-SdPLyOpmgg2}ghhkD=v< zL5qiVCx`Rx_Hfz-INvt8M8fFd95dXs%y(#tHQsx#yoYh6_vbRN9F?ke>n=<3@nfI{ ziZj95nNW3>OcjgGJ{LmOX;hmQ5>)X>C*qv|bFgVFf0tkToV8!*d$ji=x%Cd>EVv6{ zH%WaiC_k@~eeE6taO=te0S;0Gad9Rh&OhKD;9GA?UHWR@!T%pvp0k^YCR>df*mP=} z&28`4#Kw=GkIwP3NmcZ9vo(l<> zauZ2J`X*z>WdUx8yG^nORwb|rf6kKbq=alPVQ!n)D6j))niLqzBxqtD}Xz1K%;qY0UOW?2sco?j?q}x2=A*1l5 ze@%-)Mw`h1*l$HD28bjLC)yN6g3GR3v9x_Qm%5v9Amy_-m@hG`C(D4pZe zA4!B>S=FFdyat^FJQyR^Yh0)+l5N6j_H#$vCYHLd@6;z!D}PMQL?$gFpt1}`=yQ;U!hr9p5Epf! znKB&?Ca5Z1>4(ACNkdBFmEv6df1p@n4`ZL^hSSO_>w`eYn94-!k019AaV#xvq#C7;$jc9g=cyD@br8o^%S&~J zRuLRWJVAH;XZ7XCh9oBP=_kf4WM%mr6^dn6`--4Cf5`RT3nLc} z&w^BA9vY}~%o0b#LYDLGXOZ_EiDhyZ+>eF`R+6eU*{{XDG8C}dU=)mnf*7#J71@t- z_(8NL8ne;p?E^Mtb#^IQz!Oz0ceQD><8hFFV3GS5!q)g>$eXoN&XCe=ekwC81b(%J58= z%Ak2EhJcosf$Pqgfwfe%?5AWm9$rRGhU$7+U?%q@jF`qs{uXU_d=2N0aE|HUB0q8;l7)f4d?182Pi z2IZ#kCzjW>5JIL;e;9L(z^!<8U5&pzg(&#-sEX7{X}&x>3{o)dlQsgkYCdBks#0M5 zJu%oL1EjH!NJP>pT9xLhQSpj1GyO-@jSg`RgjqGf5%}9H;&&fUnMrHg4S3R zvDgKbqh8T&F^o&2fx6xW&RS$aSb>Ml@lZ%|6-PdxiXa{%xLiUbA>u-tlhj~c*Le=) zVOt~eC^TCupA1$$^QxKBu_bPX-daxJv>e=Z605Vv}<{PnQCqwQG0x5g-!Jx;#<--QNHI5U>~IHD9L4#EO_M1)%j z@4mCIf9&36uwWl2`y0Lkr;tv7rZGBl9z)-EB(RjR@_e?wxB#5jio-E9VyMtrq4*%kr) zmg_-I<=n5oykRw-F9EX~$3=Afij>TPiL#ol2g?o6^061C?%_fbdY8Z(SG$<-Hx74P znpieOJ=kkca0QZBj=BFdxOuQeCpY)LjAEK!lw@Z>d(FC~++*(fCzhdee9GCYSOj-r zQ14}{fBLTD3xJjCNu^pHNXDDoQ}B_g^PE~dHza|_c1e5fYUz9mJq_x?h_i+fw#k=# zSX>8%n8JDha#sp7OFy)Io|D*6G^Rg$m%%^fyz`;gG=ltybYQFk|^Km`@abd*~ z!PvK{m{M!tBT~Ig3iBskz&0SS#F#Oae`I^7C^dS(7o0da zxPY`TRTpX?FH`nu-v=4%l=(?{6R|Pncmq)>od@|zrNo2vK@LAr9v4+bCfO_m*Gpio zK@w+of7{vCqZb4BP#4gaZ+EFB$p?Skj5$ z@hb!G4f`@%QX50Pgu`A2-$W*1P$Q}>o!nma%I^X=Y9c5mHY-H%b+sE+l&NY`P!RS~ znKv$Z^V#9sb9kO@IR?-sf85H(I65Aq`k)>9o!ir&@A7*AMw| zsWwJs_0Dc~&p8n}gH$9Jdzx`s;bZ~lAS~+x)Kvz8#{j3@Y3Q}|;`fV-<@sXx94Qt?4LobArD?9TqP_=y;p&%;;t(JK~VQ9!9gO@BF#1m$+$f|Fx7bYe;uEn4O@MR zlQa*BH>H+d|Kaj#xjq}dE%y*v$1BkjeAon{Xw<&{9h?+lX_Z z0(MKstdi<+$KH5tZrQl^f3gr}U|`GlJsVVrV|cyMX0L5l2lHvZI-9?T)87`CpUzfS zmzQ`}$z0h)w#gA+xDFTUYu6mlKKnK0@v?0xK+G<_?3=38r@0qiq? zP4>Atks+Ygaw+RdpYU`NIcWErRB5kV?L278aug9CVJ+}RY`KIHf4`WLu^^sL<(XU6 zEc)xxw@-a(L>Gee!Zfn@vQ#IOD?1ErVBBC7flK5riF`K?{}R+E0>cVEKjJ4dvQNcC zv1=jbyal;;PIJgGp66Hz&%UFTEs!A6V5ub(->f9IRM{5<7jB|#(%_xyoCRiskm?Qf;9%@v?>)B5U}$s@269#`=fZoe?nCc5dL6;qmp;vKtEZc%!M5HsfrlgK zxfxj+WF@r`e^Sodb^7&}M(!jy2Dx|i5->A|;jI9wT_KUBF-IR(p|XcCin8P;jPs;E z>CsL0p&`#PFrNRJ<*!7(bZjI@jMoaaKdhb=sx*$PdU*8--y;UNl6+vd-be&d^Ew|} zQ#~BWPS;!*f{cgn#9`bjhR$ zw<*k6S1!q(rt}$xKoZfZ3f#t~UlDq8XoM~UaRIwD0@nm+JBm@22= zleuQu1cL0jWM$j}w&-XN!?2tU%jxqYcBuU_gSn-tH*g3=WZ2%m;8DbUjgx(a`N8tjRQE2z?nI##qrg}#p3d0!M-Z&>SB35e?MNV#_Jz=i}F3}F8tx%7xgc*LXTiU zHs2)gy#4yi{n!8G>CYVbVm6z-Baue8kv$%p8P%QYhn>ehTjs2FU{${JRtS9kMS2{c zKg_RBFA4WKg0VNcL24NUpdJ__S6xka0yMBs^=Dv{b|+$PzU?@)$YKJgnj28Q{YYLBn&_pX|xZuZyv z=+@ZG`@5qnvJFxkgu;0J;43f1 zlW0fGsCSjC>$>?FHy>}KvaUUb*4w(`Qq(Yl<=ZH{+ZF8w)GhX@o0QmUxp@d%(F>Q) z6yY`;CKbkEVM=t0sY+Ybrq39Lla$Wo)#bv;L)i6RY{bMCxY2?jfDr0I%$k{Ce`=dH zh{7|hTQRNhYgf>?gq*b_3gU&#|dx zC5A}uKbEVQ@=Ul-Rc=b9Qah`Djhd<>D^=XR+X6NY^ED)X0Rf;~I8;e)B8`|?TdBi6 zIo~#O*C@Xct62O3l%FN>rltHHf2H)*=5wUQ8id5SWPOBskGez}Gf0de{7ksb>j_JX z#$piV9HL5L25_q;Jh7>ukrS(m_U+gJMjd!czGo)9lENzjzDNVj5V+*kgF$nKS~TE_ z0>>c0hAZCV1|;6e+`l*BU3E9)PD&Yv{OoW%o}^xR@+}KvWTGzNnGkOEe~AA078Jk! zvhjlrYQFoETymyQDmp6%kDxiBDycA7@*0zEs!|p0xhSIEq=NZ~Z4^xiY?y#N31K{# z6F697p~ALSD_>ZV9>NmYSoiVU-dh2ELFQYn*ResYH<9iDl*p}@|1f(3*)TpB**=s^ zHjFLF;xU8M*5(H=c(Ub6e|((qie$#5){2v=q7f|lWr{nU!knL=lj9h*wWuMkOxYM9 zbKwmNvv(V%e`eA@_t#K(%6HU~!9*FWCaktw(U;T(M@X69!3$za!SW7D>KzJUOr-#A zDywYU3 zuSI|f4vV0djL>U_P(%pq0vKOZrh{7*qH_~ z@U_KX;$NN+e_N0pgu*KbOz|`R;{R@9Oc)<2K+wQs55BK#;WftJUY&`G={;GOCh9rhy z_%%lGz+ZLWgg^}<3Qt^19Rk60>y^|jD6%KzR4-q=hnSL{D?H8&`5GXjaCbtvDNL;a z$C7asV$onj)6-4BI%WX`K0UyuFFGtrEwC!KH7lV5R3`zaK^Q&bMw{Z`7 z>3%<9f63DZA5~x}X#*Ds4SQWM$4d{Vbo>(^fnP(bK_vGabYuSpDFBib*f%PX~cSc^ueqgxVG6uGm^PS^5 zpJhNkg)E;u*(b2=j2{eQ1OqUlSXiVEq!J0*w zY`1l8Q|LnyOvua417YbB)DrZM>U!b6e=w&s1SIl?+;<5TzKHTHyn}O`1?WET!*Xv( zaR7v+uP|NW#Ip#*tY;Nlnuc?UidjG7nce{m^<*JwcDHy+Asno0waD64zW&2W_{R-2i?dF7L>7IS#t3`Vr(}wkf z^PK%Pq&AGhvK+Ve27ox3pBB%T^YxnjRq%tyPl|;n1bG}Tb`5nwi+AK@cjZ11;i_ow zxMW1FK41O#5&HdWXK}6ZuaH z1e-tU>B#;@F}fW6@WT%VbkzEir&1FC48BS%RZpa90+O33yz`1A%mR})e@v-7xXPbLtkOKbnt+$k0-W>cdg+V<@L0oU>vFHPIoHnXoV{E{cBY>k*{V-3HIOOLd z1#r?vTyM?v%105T+~n;sf5%>;1{}hAB5B}Jq2H8oy#aVmwcu#pI9C;tmLv* zwWLI-*nCyR#7vG0L+oEY@L{HZWzz?k`<3Sy3G@#z?b|EB^f_O{LQJ3T?UiBbT(3b1 z_-t*sH)(BTC7j`fpCfj%*Ayq&mX%6{)^V=qt-b_LCRSQ%_52pQe;RqQiL+QOTZAbr z$$~t0U{(Y$rinubof#bcgYC#1UY0vJ&m zM!AMO_@1;*RmE3KPpt#SK5KYjTbPB${6?WZUZ0(xtucr)L|-|d^ONAtR%Z)57*5aB zK8ChT@^B%vWop!rf50s!QY>Kh)4`uTJ6vTv4saz`#jHC(Zzv>x5Bkb<^zlk3haOrAd!m~a9mnG=!mJqHO zrdatdN*9i)PqMHa@y-8xsnY zzGijeqe)q6mFgVGe9S}v=fLB!$knQykvWC>`g(r-as37;u;k}rd!wEQWl-HVJvyeA z@rxZBuke01-Gr=k{o(8Xez9=Ay}nwW9qapfe`V}q&(<~W|MWCJ#=I}=EO>&}E^#>3 zvN(LQN>LUG8-hm9U$T!_xC!GTOT?LsvoL*%Z+b?q8;#@hv$h65Y4YnY(br#CuRgou zQvs~MBu2mNBJv>8TAqkfj@pOAhT!w6YRt!|933~h%}=7;G=ozfe<~HVb=2;%(QSSb zf9|T0*@T4(E^ks?f8K=Q+*?vYq+2h~!7~>GEeofHJmrug7bo(HlAqr>ANTZU8lV>jcO+$ZE zpQK>UNC_h{oNfk*TRo_JV@T&%(v*HvjQU@H*?U<~X1czW(x|K{{iYbLyY=iHW%)SH zVDG3QfrW&^-t-!U)B^kpe-ZbrOT5WT+Q?6(f=$lH7y_s4v8N+!OQTQ0LOSaGf@vY- z6OF~fs-)cfq*}&dY_a?LpH`+@+RbmOak;;j;b_Z8uggG;w$i6!e`i(cu1A2E9JnQh zqqa(nkJ`8xwKS}YDc@3Rmam)-fc1?5QLUVF}Ht73?4>~(i znna}zp9;eeZ+ztCG|cKYCoH!cdP?)$KP?g-4m+^>IiIT)^^GO*D~G)VGjsl^p_ z$h;(B><5oZH=^sde+Zx97HI<*M^zF9tPvhU%?sG;nd#Y`)ndp{T-L5`7eTT7eRmCA zZR3dDY>)#-^TK7n0z9ief6BqLkIG;KeVU7`r%N%}HKnZkF!pRH=X`vY@jW)z@Emo{m)Lza(1++2z?%3nx`TcMCo<1sz_Y+p5sVm_{~_ zE+|F%sB>r`aZv$HdD9~HMf(dI(3ddn{AW6;uHHF($f_jh+5h?LU;jyGIQ3Ysq{ztz zEBPh=tApmZe};@K#QFWw;$kQdIxZJq;~yQaoV!Tj~65e{B|CTxz%bhjP=jTxY~T=2vJLdM_Vzs+knF~DBld_3c*8^f@bJ%TGYA+ zaFFseXieY2mf1dJ-}Zp@+3^&sL$GTjUa%`z&|booEyEJiPDKm)4l#Fp|Wye}s3r5d!Lk_-fPW!dZ<$jvGOQgqtQ0 zL6+}=C^F})hm(lI(}$osT)2Ar&ax5K@b^779*UsT8$)LST3v-3wVJG2_k^W75jc3q zWz~?gWDSSlG2lyO=>E}6q2Qbm+y_y=(A$M~UZ{1z3R+sx^JTAeK05{XTGVHBrx9A_ zf5pq;_8q=xgRq0e0u8ew?Xm5_cVB9F+|eFks{kV)g!XNhJiNLqLq_#Ew$c68^8=Ik zkxO9P-2OZTcr-2U*gEkF&smoHbO5&g2%wG#sm65NwCu%KR2m%tu%mPjhh#!*)@Fc8 zLiCvb9R$R!9IW^v>H`F# z^`h{erQ|_DH8louTuC_Zc_fK{t|go`NDR;m;=IHk{&nkK8HGSsf8`Xe zF*YM!4;b1d2^;_qn}SrKA=Re(N*^Ev_Yc)U9|z1y2Yct>x9x`o&7?~4gB*p~b@FV3 z=>x{$)MpH;aF;1I(5UV9bk5-X>9Zzb(3UiHMzSNx%dOA=e&l;pL4tyEc7{RHzFff9HI}z;1k=_wR1 zL@N7C_%){?)2zbm%e{+k@qC(^W?7|o!4sX8lsI5FP72jXL zP6mu7X^_#sy^{1*{c{NUo(&&ET5D9xUWp$Am}wU9+nd8aI0|w{W63U8fA!^nmCU=j z35)$t^bcxBVDU$ye-VJ~dEIgMfI%V3n$sowI}8ZH{kx;%K}aFYK>4p>ST^E` zlLsQK5N5Fa*AOfm_(gm1D$zCnI|NuNVnPf63ej~bVm&AUi-`2zg4p%>dI01hxG6&l z3>W+y+qe__MEt*l;@`|&~R zhPQ>Ad8MHk#MaFv6XH@d%bj6q-FA5uj0LrE%mZ=1DdYIbO;X(R>-!jx4*Yzf#dxwI zt_OVo@$&Ky?$r{v6#M?B$(_LgpCroItd&{nzI0z7L)DQ$o;iR8a)?z`t(Ze|o@ma1Z(rRDDxOxK-cI zT`yLj7AvO;B@$|fu%vPvn!lF!0r-mH^ z--l=XgYZnefA3WGFqvP3L0&!5z!$fQKW?kWYaH}rCE?T(;u#1DB7G*>G=%Ka14jhp zyCfMOwyBwG@jgkJ&U5Fwo!w&WC)+P7CsK)p5Wx=QialGfz}?yIL(e(E+yPA5H(N45 z{76d{qU7#QcMoOoO7@)p9fHhwA%#;PE2PUaNj3(Re@VA4*n45L31i%z9N+ORdd)(e z_Bkz3_pH|a47$ydo!C?dLQXBjUrK3R@7w!V-8c8ioCI{z{5B?pGHxxyn@?#;_Wsp0o&@~ANnHpY*#p9-2lFHNSA=kz zSSxhEe~T*5S@JxmiW_HMQ$pBs0rSP&6zf9ly>uFNHRPF;>MXC8&(ALAOJlm?W=tbk zfrz_jOal5ZTQ3i$v8Yj?!*k4jw0Ph~W%dES@wQ)bZ9@n#K8|ZiZ1z59A>L*=tJ*=X zw{patATbuV3qf0;w*Uusis&V7Ep5QZ0Q49of1T41B4ct%7*m%bmdU0D9w|oEZt;+j zx*DUP+gGldK4&FTM$AJYS*I`wbzcXC<(3|l|A|%7u=@q*+k?f&(2K&q@E#J(&E!E* z;99nUc^%AID-S1l)*^3&+*qGQK}6Se=^NOyujTC%v^G41d>FH872fSk-Wd(ZMU{iq ze-gUJtS&;%2(37HU|2!q8$AO_i~ZdEJu?ayBerxQa`g5(n%%%STB|uqiLgfCQNZI4 znV27fSYx^fUFTbV1mrPd`ypWbF>oe!K4SI)RS^n# z%LlQQOy5X4=;wglCR}~Qj*TpdfpVQne{!rCN%jRq&1lw2pQ~SEX80${m2+GXk;TZe z4u||5+&%djobJJEz4mka0Y$49L~NwTI#PvbVc)AC*`U}#Nj5Ob!Y%hy>-8}EW{;{1 zm>{V=FksRl4WUh9U(Kcg5cgVRELe(l{ z;EyrScUw14ywt^J34ACt3*{=NN`Uo;V`qIeU-Bl5Cyp^0?SiYU>wDZvD|ce9EN1@& zu+k+|DOK7ezCH;7;76wtN; z#X@j<8*alO-acWdQIRx|Nl;TO&8ZBynBgmF+ncZEd82KTJe;g1TxnI4}9m7-s8C&f#yGgPby;(ze* z2#KyNe-6L-h-C=A`fk7{HjBN;s8S9pS09>%$QY}vKb7J33wToUHFUtd57;P}7pBM{ z_5kb5GR*Rk#LNircU;(+f7imWp711Y-!%w3SFv*r!b2sydE-@-x@a}9hLPd zr4a!iUYDOiOS^R~1@QHCKJbgSg?h)N{wvam@dKLbYX>DXm`ALee-OI&VFuypw;o@3 zA=**u&LQm+q&aJmrZu02ZWOStr0Z>Q{{q=|R}q5!oI`>$#{`{KY>}hHz+9t&E%SMz zH-O{o>@f|~fNVn6f!`bcTWf|-eMAZCRy{#9g7VHSN~33}f#6xsS=KCla!w%2xh}_^ z=q|k5$s1E#zf3Whe^7uUicD;zr1B%eePCjawB^M)sl;%IBE-gdXJL{-Yw8EEl_+~M zE}a8uk6;NALWF_x0GY zG2&k~c*kHCz^D!J>w?QVL)+`R zW=3Y*dM1RtYNo6M4c>p@eLcVsdkK02jCva^nS(L#s#4$|$6LOGp*L))x7_MW<(IJ! zVgLB|uyS!Ue_%fVu&Oe6O3*iG&kHs~t1O$vWN z7@ae1F)DMt2tsNUfsZb@jS9V1o8qof-dTrum{v79oLBPb_1koEwQost>7oFgb63%% zS6w8Do5S)nZq;?+5{Hmv>w^H-N#a1pGrrRouW`Vsf1?Almwe_>J4EkrXlud5=UH{7 zGX}Gftnq&g4NS>8Fi*MUzqMwP>`U#gvoE6}gvG$t0W1dgDPW(u5MLy_5JJN3pj6Ff zmFZoEK2O@w+sEaPtNF><<&R=P2rn1Tj~~xY7Q=8ycOexLMejNrS=(T};Dy6rAo_at zV)m<-e|o$Z27oUR@#U|yh_C2?uQ`l5dxKhW`h;CR~mC&#gbi;NF%aewi30Wxqk&~HN8{Se}>I83ZGuV;>|j1SETz_MZ$8mjpF^Q z>xAivz{+s)2h6U%lGlVZut&lz)(>yRfqpq`5O@eM!W>_J3S*ZMz0b8JlW7=(9&=CJ zlSbYV@=n#w4`b*4m2;oZMoNP*gJ9Y@kjztAtCf#=I!sRo5=RXQ`6x8~!a|2YU$OPk ze^jhA3>y}8*v53F+BW`?rw*ED*TrqjPZy_IZE2h=*4L+({6O+y8;M&x4yunw8MLL+ z^pj2f+kNL$zu)NW!cR%V|f>NS#cA11uO~5Gp}S0!w8H`oe32luBCh}Ee7u5ap09(e`4h# zNq@b^VSo^m*x)JS@J0%usK2raKQ^tEq;2ip(&iy>TG%8BZLx9A-u7MQ)f@bNKM2!`Ptt z&_jIUxz5?rX>y?}tZg$e8puP)UU_Jjai%6I3vrewjg}q)ql1CTRnA&b$=C9OQWwPWi~+dL!6dnuMfUX`4FB;^o%E= z0iGmd*YjT!~}9{%((`m&B9>z6%dPu7!+Hpyd_{V@N6Gvh{fC9TG4 zoj7I_dWZX<@L=7`$ZT7&u`H*L8t?5$88eCsk}=$cGHyiC$`dRJt+u%tZ_i0K32*9v zR?lW$kZf}2HFK+#UdJv^CRxU7bHhTdV;8S!W)<<(NOpx@*RY7Ye@3yqOYQ@UN>%A~ zEn_mxvO2ge$#|pMwcmuhB~WfW{->fax5>3SHX)H@GY!9Z<~F%j$0j6>*_2{8?!(x~a934| zG9hv{m@`I!HEVHxYuGJllp3>D8r2~7imj{)&Aw^uP}A)ff2pPUB2`;2QnGQ_sg&E9 z7pe*Zm_w$JTi<|u=nmxLw?K?6XXc~SO7nPNuqrZ)?9VnEKM2xol0I!V_GCIR6e&}h z5ME;<#R_6f!j#%W;C*2l6WK{91R+C?H)R<4o4uERnZi*H~mg@`i=D_oC4EieOV_QC?(I==Y$glE##?yu6vllp~A?nDO#_ zf0HOY_l>B@AmcK|1gAH)4CMV-L)*yM5@cUKaG99&e}!#WNN5JahTPLMdV=-OBxd7w z^(kg%^a1d=0z9b!&E(Ar;fLEIynUL$x<(igFyz(S%wt9h)pfaMbZ)~KV!KWGOf?W= z5@yt(8@5T)X)U=7GA?6CFvuo---W(5+l&z$bd>dcij7D$5MvT%)Oe@L%kHK$Br?dj zj1584e~AsH@$MYQkc=5Y(M9sZEcFTqu`z*XgSD)%$f9PfS@$CZkAmPa_2PV5kD|g_ zG+1O&Bi5|@X*MIQRM+Ja>D&dyCQ9zGwm`qwhEpG7RK$Q?8v2vjwJ}CT4A?=W4%P?S z?gFU5w*0y%1R)|v*aaV0@v1ZjGKlu$1n=s`e||=jr7}$k_2%qL5xY*QL~)+R5DOcf$BxAS;Ip)5NQELm9(a8IgdL; zMm?cBDs4&sCh#)WcoxZ*AU*{DHlC5VZ3);2Cwn>wcY#C{wB*Y^5+S&?7rVqi1nV}Q zf04Ll2~yY^a336kd<{jFw56OStRr&}#sY~bXvsIvcbhN4llhQH&7}orB5g^(i1I_w zE(ZNvJ5rW3%j^)}a1KL}vZLwW9DwA>dxs!nOYo50jg$8V9S%u&0{26H!I6={H@q!x zUkIGqI1qn^^TsI)ixnX|AhVe-Qb3yCfkCMT~|Y4TiMId$=Q*Og7_d@1rABfj;UQQe@IP3 z*#R06wPL+Z%DC9d=!X= z3O414gTT+(paiZ=eXCTYdU!_Se>NrPgj$(gf*zicxJ?Pta(YXG7y&Le(aEDCqwGYK zt%9|Q+a&f4zivYNI$2lRn#?gS@^3piSg7$pjJjDYM=1^2gd&+5$<%eTkqZtU>bI%V}J%4g) z^~ed;19otmMv&lIr;0EVv(xcd5{*sEmaDR(ZmD{?CUh)YBFUz@b z_JhukAyuLCE-ECVAf2zDSkePUb-Ic1jXF-I0SgIXM8JqwKe(j{C$6o@G~qJw2I=pP z>8(KzuAFskBY$%f)b}>9<)^_j5`U+cAPVCzFO7$04FySGn@wl5|6=Nr*q9T#gIRPI zSpcV_S<KTE{9^!VU8Jv zNe@d{)IF@O2#Fn!Yd15GmVeh$U+IG8iCl9!6K+_`^6*Vli;dmVUpG1+ocjR=4jI>$c7coLOYwr2*VrB%!4Mj)YrP$i6YmW&XmU}Th=^CrI-a% ztB2V#u6mpu0U9ri8aXqMMcGnc>q1hBTyr{89;j?t^FWniG^SO!%YT_wG|eu^dOWUX zBV$W&$_?$a(A-vyur+t9cSb=(_2wwWNK7&G=*&2psjU2YIHoDjGbJ+NF-um5AFoP? z#u3A%&dh_bw$wlCVzG)`b2?LQnrvBf+mvEsO#9(hXI4>NRX}rEeAh;93R$}wtYf3R z)g*;U<+%4EL)S?yCw~EFB2A`m6M4ANKGTFCt}~6fST8m8Ob;zNX$8&s^2r(ViIqN$ z77|g=obQDCdDg)g6(O_R``^zD!#}r`FNQ-vL!K!SHio?m^MYyk8$)0IuIVlmRgz4Z zhnSw32e9rztj6M43kf@FQ)*tzyr%jo8W@U{4Nc4Mi5`h4XwH}YF`P3T#26JJvtvzCm<8J+@QZLC_*qhT5K|Ps zKs)xXMTWCIHSVg$y$0Nsz=bu!4;8MJ+5t<(#(G&2MG$`LZ&gTUVpW@%iZE7maj2eA zSuQG_UJ}t7gnvX#_GwuJR-Mj^E{dx2IVeQuXwjlw^puD5=tS(=tP7RCHk--_0&qjz zMJqa>d=j=D7P@&?&`vnt<|6s(_5B6WrU z`g{{od65O)-kQ={sOxg6bnb#;o5V%$Y-1uFrhZ(h>wj{obn>9ESRTA+wEL@ry-X?> zKAwc|cy@0V*I#mdZ8nur72Vm2PNO`WH%g>B>Sbnnbd01rzxbW{{20tJqhR-OYFku( zqXtB%?9!R(IX99jv$%8ybId5p>zV$h1oOe++EkOfDm zLz5{AkZ~D9f>{|KuCgk?=(2{y@iYb4*pyGYw=Eco)ELd?rxC5Sq^3%xo3$QltOp>* zBu1$fo>@PTE3~i2jKG>G>jd6IhzHZYJAW)y9?QCeS%xgEA4SLP(DTrUQJCIF#Vgap zvs!w}bXq zV7m3Ea@_jPm;jwuk@tN_#yBT?Tyr`TZ(eO#f9v{UWTx=>NXmkZ1OoFz zWowjcj7CP;ek7Llv&75mDnE;ZGs#))E9WLz+g`n;YTs zRElARQhQ_7_J(TCZ(VnnX1V<0A6zrqQfH1}O>&Q+hmb z*RTE@Znu*dws3|>N_^|Ve+xP$^DGl}$41Y2Qh$(p+v*v!E z+CJ0{M2`{ApYeP;v5_#tBb)}J3M$f<5lFr= zCCQqmf6;}?H$6>GM&|eWX@4yc>__g$A+bn zP4BTWjyxDY*l}nh^vKBBWL9zFm#JlSuXKA%c!nVdSGO=iA%Eibj)juh%!U_3h7n<+ zVG<<{FhmJ*$&~nK$c{~=+atm==o~a*wnrE!qHKfxPKfPM>#i4OvF${13qZ+b#&gXm z?Y(fqT@mVPI*?~ZCiZgA-AB0_XT=0kZ5TB}<$Erv_nB0A24u3(c7eXqRnUM8 zItR^BRU-@($5es+&H+`U*4@DVTP5o&nal#CuT{PaZ+{Cv%wA3M2k4{pxphRy4DVk( zWL}!u4wfbL9;Z5wOy(iX?U$!(@`3DkBrBMfrE(6M**PN(p`EiI zrzEeWTGW)e>@PI4_f^uNE{z?RS}Hars@#fZ_AX62RG@cd1bf}!$XLfN)bSP`7n3f3Kzh>qxW-65RsGk{%STj6KvsCjS zG(&w^WAf<6HnVY659jaZkZ3|mMi6r3nIJa%_evSYH`(e?3v9{ zsv2oc@&p%RWVUK=6GL^EyO0Voqt&M zReW@BfL7kLAdQ!{^m9@-n$oVj@LWdLKWf;=;gAA5`R+ZVq}u{&QOLShly_kx2dcB9SL)KqY-w943+V9 z28B#{vM!UC2b;V|(n&m9I0PXwPia%i%zoe`qnwWJewi5!j=BsdR?RLCT_qiqwI^@0 z&uNg($i}Chq&;m|t$lg8`XS>P2v6Y8KQf!(UUOcWX&Ks>h6?s&dGMky2Y)I8hoZ?% zBfLqoaBtlOQ4(q(&E%~L0*A@5m;W{j?{>weNRl{sm|m71>SgfYn5$ToC=X#kk9Be6 z$Xj}O)`+|L!)V0O#LBEq{8%%YEtE!601%)wA$@3fOSFK zs;WA(*Mjq5>Pm+bp^gk`On)uT0s0tSYGXYOwLG~X>ix4b%k8@(s4L@*yp77iN;I*~ zjq%jgKC8IEcI@{qiTuA&Sta}l%H;BbfB7Z~Z!*u;C!>v^ z%{E|lH#6QdFDsu9?VE=jQyLRrWnoqK#&$)>4CT%DGyARnO1O&?xPLgO?E7!YPA5O{ zh7U5+J%Vv1a=E0P|1?b`Ua6YH z=zG^fz21Pc8`G^fO`q6bD%8Vm-~wc1TH- zCf-uXy6#S@#DA>Vdbfo*%r`BjGj5}iMJF&f4}dmIW*{V*T5tkq^DsWcR0ab3s0FP! z^Zr_%1!%iEa0lUotEn*Yfi53H0OQ9B|bFPBD%`79z^?}xu z*m8~36sl8ia-WU%R%^s3mEyr;5ILNs?dOLpNgLHzg@0b6Iy~Jhu%E1wP!^+c@VJOI z!>QG#!$VtVhGgmFI}!F~(_;G#!mc6VL?nD91^esi9IjAPAJG_7?K2}QlgnF&B%I~t zJ}~rgpaQ-mRFaH%j-eh_%^&N zGmpx)qi}q6d3yHa$JJcJ-4A$RY0a9oWI&caS*(v&XG_3VLkEvI2%`|MMHj!HUo6iT z17xG*j)I0_=Sh1;wn0f!>iw)Fua=rSm<9W!2wdZbrPf~Snb!6irmp^y~{ddv=_QQ0`z=9>1mO*6+Z}rk+US{!mvr<> zfl?`$aK20KgUAhIcWYv!rIu~@r4zC`qO~{vqI4{czAjndvj-Tm8#?>-=u6WQu0GGs z@oI6x9`_l07NhV6?@`Z~(c9EFT&K8xP*KY)Z-0rk z$P#JT_vGFt+1@KmZ4U$C^Kb3~?l3;ZEK`2@BvScUO%&aL@k-tZ))idcb!bB#!Lm?P zyYahu_?LjylUuKh3ipNUhdH#5KHV}E5XG+Ry$5eW?wun9-#9OvZ!6K+cZ3o=K0dPE z?cR%xsY;r7{rktqV}3nu7SD43bAPZcTqZ8g3@&3nfidGTJTA3nQlCNUjq_H>y0B7kv`&rD<`MC7-h3ynNZKe#FH zOjw~j{yPTD?phWYL30i9cMKk)`}IC~W=*UHL>y_P`c{rNtHd#QkADqm6y7sc+{WVA zxav<;kT{9W9>5qDm)M9y>fZ9d(!IH4LSy$P%vk3s$)0RK*aHA{a{r?}8>N(Qz099l znKURO&$c>=Bca+|fFdi69_}zmmDTS-T(j&ka_m85W!#1}?a69DSk{JR^|?{HtUep? z-@u4-%8eVu5II)2Eq{32?x6L?Q=4np$F#hO!Yz(IDhYk4U@%`St4etYYAI4=7N&f7{`egNO^9p^W{aR9^-ATwvRIDfvnxL91CI9Hz*tJT@b z+2xNT)eYudFpy5};vZKVGD}gy0RTwGNH}cdhAGeZzq8rw-8dtxpkIQghlI78)jiXn z%QHYthg9V|Z-sz#gFkOO z?}f4L$6l=useczNRiZ-prr#zJ({uBueH6xDa?`h6sm>EORU+wazfH1jfJaWlZJzW+ z8ihiEjS#T=I_(0_4>I0N-+PhKSE;YdQ$!p7o41%aa=+xzB5oM70pmT+P>Wfa7cblq zFH99NGNvr)ysboAQ$H{j!KFuTWr%aR#gll&4ET06tAFeItsF5NZ==$$mT^t&wiU&t z!!O5d@;Gsw_QWmrshec@BD>)&KWv=OH?VtN7;&>QP^qaJv>DTNlFYfhx?DKntpmE7 zY7!+V#vX4Bo4=;L(Zd)#$L<~Gx-g?sO|%$OYAN%i_fPWd423}wM^DC6}%+^hToOPV{^#&bY-yEDwkaJYt#k z{926~os_)|rYSmL-!^lY@@}JN&4!p~u-{Ww{%*A7Q2=Yr6)EjF+u&A7yn zogNE#qQo&sIB%KA21MS;yuT-Nt~(9&4{)+|%Q%#l7<`)&5RvQhoCz_hck;)#pt1p# zcYl)0$MnVv$T%nEq>7?MVCid2H?Anc>E11hs6To&98rv835gApkcYcwgAD~ zdw=ceg*o9tB$1D`8o$Q9)vOmZuGKmW8(n#ms15;%?0QiL^KFTS@qvgcfMlX!Y(q56 zGS&s1u&z3Uz|(D3QR9SH9Rm`zN}N>HYRm@2EpuG{1EyqHHDFcQoPV#RD~LhL{0?fqk?}CLH_miB#>1Fo92!Sf zqo5o2!w)~W`F`g=nA1?A2twGnvdo{8_-B^+N6h@wNcG}ZE}ji%K&Pd~U7eikKP(q( ziZydXInAAleF&qV;KS2D!@4QBQPed$G4bIdU~vf?(Ebb(Kf@kG>7`)lBQFKa1%E$e zVG&Ge)-)h>mQCY^&4FRd(&*qnd_iu+OpxvC+X}zKOul429Q?aYQj=k>2`c05R&cI$8&Msi~^GTGJT6EiLUC!%?q z0(Vqv<3>g2Gf+0B8%=pWifUN9(0^viMGuDb#@Fc#Natz9Mm_eOX98G@^cqAgy3lBc zdknX4&HanlrgVp3kf`uV?%i7^K%tnx@{T4N`VgmD4@o5PrWd+=z+jQ2;nsYe4@gQKdr*)G{))}G^rZ<=m3o!vynnrH`8keI z`Kb)b;3hP3m2PzK*ZXkHJsQQ#9kE(!cyU5;$wEndxA2$vmnX!g<_B@`3ZhE?jKBE5 z8yt`PG|~mnyx33n;0tNEK-p2OFG-7%S>T}qujl`{%&SH+cw`-k5cWSwi(@9uuL)`; zJ4e~34PHp%-x)N?6&^n$k$?9$Wz!bL7=)?>PEnxlz_zH<*zzyH0k{qTRoP1z6j<@B zhu=n|8m&yYIS@K+JiHY;1Bst?=fcGHAczQ`1#Uz9XWb7NWR%9Zoiki!i&d*ClwPVyOX9(0YKXEa^XirDG6+~c)AH#k0%HoS%1fE>P8d;P!wH& z=zA1hFj4z0DY+NJ(mjmh{J``3{su4I?`@alEU-}nmOeJ1q4sHbIs5+aWv#Ii61Mzx ziH~jf>spBYA~763$x7_!bwU|5<-2eXcaJsn(1wC%0mHz`V%a2<5t-Zu*H%gg!2Vt>r$>vlj3>dxUF1sx7< z*KO_R*6bbb6EvTFmbJ*6dUIGo-eF%6zGUb!ZvBNNfe8`kEq*$G1~2q?#w)@w1CWaG zL>An!m)B~1G6KUg#W>_=o@+8Cl$SSr0>j(?1PxBX+Q8VtEq4S* zrqYHqn1h#_!!b`W&;iGZUN7#2A(;UXk)`hQjaBF(%Cqo}wfZ&SKJdeGZ$fPdf@Q2Q zL*m1;#z@)CFSgW7W))R4fM#>NLkQ|=!|{1t)=AIuX@7&!K?uy~f7WjagP!|WydmJj zeLpGL8{f=H*fKRitz=gydxEm9X%EM&K$Q4FUAnc-r|Q?J5qw8)Z((}C=ItLsVCmN^ z{R-0!-uip?frR*S_b`2v=kV9OYoY;RS&oa5>pm@>FX!tu`#aQi!J`UBBVP$A9^8ao zFFS$Z+kZ$$UUpaR(Ww=thzMnq@CTIVs~&+nh zpx7n8nR&Hxv!8?~zx(4e!Q)RFA`tqGS9&H*Vq-dXN3o`EwKQCEuzM zrnwPCNo~!posanBui3TEAZf0?Wve?;-wm_hwUE6Yb?j~7SMr2WOg&5ZC3qs^w{+@> zM0TZXY$26Q~*-Rxi9vb=Y*f7Nh_6ZWmnToJCEN}{7R=hu$7)|kWH zX?y-};*;%l)iB}Np8v}dhArMC{*%iGO*waWXF`cS7)r~w2H^eG$sgW0|KhwA+3%cx zb-w-W`s&iDM7nXBWM-sMb&CpVP=76(Fng+%w1`+g3=3^@lDZJZf)5Fy1DHSUZxRT{ z1Ia{-1RxN(O4&{R1}?vOBc>~$Ls9=p+HDv_KG~>3^9tK>akk?rrVX1GFNO%`O0?Qh;+Ma9E3V(^tRc}Y z{j(u!@FH!FwI2(iAhvYoW`AaCEphk6@mrevCmj%R|KhdFKBD1mxaC!`+IlP;{Mo3p zNVZ8tq-29EolOBtOqY^QRTklp@O&wBG({U7o3{Dtho&uLn8St%bUuSkHPF?9nQ!pr zOmTB!7H<)|SW7#fgY)317#L zI12@HZ6dV1bB+hfkAGW*!y}-p(Cd4S5;!_;G@G9!n|?!`jk@u3zk_H|NZrMNMTT6Y zo8f+}5yj1L;bt7_ez5^#7W`C(d02G63*$7GE#=k~$$0M&qj8hq(}gD*HSn(x{vj-O z8-8rs#t-(1z81bh_?`~d#ADXeQv4Al*BLA)u&%&HhQ^l2Zu zxz`7OCQ)*C*BdI+D4z>e@t16}HM3y#%&`yaE-D1xrL8W>JkqFSymQu~uuhU#h1n$! zuE(D)1eg#_OMf>8I*sL0;9mp&F~|Ra_@@H@q`?=$4hTD3*kQts$DcF%ayG)2CCmb^ z2;4Y$P^}5s6o~^~GQd;5Hq4q90bTTwhBP^p%L z*z*Au9=yy6i$gppF@Bo-kPwWoV09i4mO!j+nLQkSRDV5$$a!$v2P4=pSoQsEE}%d8}L3o2vG*LW>7tr+Z(4&CsTv~cTt!ZR-``H%Jnb0;Vi^8 zx+n0yWc790H~6za`vag|F|_96E3zEOa#)u7tNVK6r6J-Hx-4B`?5n_~Ghd!npMg>I zqwVe8jDMf_Vqizos(;Z;)dA~Gt<{S11jcO+$ZEN6|KAqXZEdPB(+Vs~$$ZF`{xT=}EuG4PyJuGSsU+BUVwFy-HOF%i`U_ zco1v|J~J{bYl&a7sb8Vao^>BLtT87v6eAHFdZl{$@~#? z8#46e;hzaU^p$4lKnWg)Dbb_3Kwh+v8=@`{g=cl}B5l8zlVv*W|1<*-5~A-SNU-w0 zQmlT^?2S){3|btW4;i*9Pl#Z&IvmcWPsPrHhddW@QiClym^=#tnS4OVGihAabK(SE z)qga&G#^f}SBK0nHdu$#XaZ}{Ox9ivrWPAT@k6%veWQgQI^zwKQUhD2CHINKH9zt6 z9KNDKv3FFtUg2UQuV#wn6atZ>rHsUhxIl!&kiD6~W8b0Tx+8!kt`n62M|Ijblq5R< z%04Smq~moaM3C71%E!w z8sudjz>&K}mgH`h?zvkyiIg5;g}KkyEY~^Vxz4vN8xIDBbN_~D-G}H21&0x3R3dGi zmAGa<;CjduuQ?+{u=XO z4G{8hl6)=lhUkTE8*RP34d}pUpK(o z$|?d#+1O{F-@uE@)Q(53ea!#T&BAg+k+>+tZZH=zcx(fFMqv+k<2ZyJO|FYV1_njr zWNA`pizZGsE8crubrekkuYBSHcSSpU_T0T_0FL|i!FUam+%$OzvV0dr>}7%v^Kj2b zHb_8$@GIQgd-&0=zkf;9-Ld{L4RVO76zm`ipXOw5~2UW67{BGRUe;?%Np{M zZn>j}hGF?1pD*j}#pSr&!ppz7`F0ohWin( zrwM~cK?YlKL3wrvXA8XAYl1&AL)H*w;*i9Zcmv!aj0Kf`^#Z|*>woeWmqb&gr)mU_ z6L2!PDPc(Q9NhL(*a^ccmY;0F!hndFodi#RmlXoFZj($ZY#aQ&mxtRkKkx>zYY7gG zmkwOFflh)vyo(1>cs7T4`9FV!|E-J6dte22cwQIoK8TWZUme$}#;j!qhTB3S$o`*y z`#*E%$1?PTj+tbO+kfqw!J*QSELFK!$%>7?T}y9qpG2h=xt0*9{3i0ndvHLES!ez# z3-3a3^ZoYKiF(+I{DxKG>uS4^%9=`;8$K)k=f86Y6CFq$HnR7< zU9_2}X%vc%`Ix1ahNz#Ih7aZ3dvHYFpwZ*`a&x^4681$lv45;k6JAO4r6V#%Z7)yO zn|XA{-sWPrr&w(%h$*>~wNodtw?|dsC4|*tesZy(*y57h$lEw^im-@+cZ0yqn^7@j zY&M)tPO+y25W|t??K3DckL5Jdh78CHyF40{flZwDqZpH>8e44(l5OPLhWsF6U-m(G zo-N+`FyEHE`+p_2Ksy(S-#AvYZ&B*q@%g0|h`t08?Iu0GYeTU1ca!4bRKY%tz};pD zt|wXTWP822KD$0&bZ~zvicOg3WiWgXBpK0u|L*$QIfKQgrfI!Qzyq?SmjIEh*m!v! z{J*VT%W~Vs65aDFP?e<0UMRYe7O}nKm1vnMNmhxHoqrt)B1aO+AOPdRNcn@T^8?u> z+~*6zy8m^%XL^S72I;s;3kv-j%(Ht=&tQ2+AAs~3uo;CFUcuLR(=31LREfNO$)^!$ zLdgeld@ec0B;RZftNm#51l3aVQXi5VfvKZ>)zKBk_+)c!Gf!#NGKEU~!eJX$D(FJl z87o@YBN=wEG7LR7!J|El94V(+op^=rh;O!3c8?Nu zcIhy=->C@4dlZ3I1L?3|WH8ltRU#5)@raby7#=qtmu1z%G;BvWyYQ0}EuQdDw(%S4 zvf@)KytXN(|9f1^J;WS8QZ{1;x3)SON5!_K`cjy;tLGvyejEHe9-Kmq~V7OYO<85dq<&9Db;$G#9wtte= zDB5E~zP<12;LOg6v|0T4oXpaJUO@$g#(eBD0qSh@uKMMOw|9HU zQ59XaO{0kff97~390v{GJK_t*RllrTM_+oK-QDF~I$kWGvifCAzs>8jCs>xB;W2UP zCMU}*FVZQ_uKcE-kC;8I4R^os0e>lK5M)Xeli0x2RKHjqz0`|>DcUDSjLACm7F!%UBWrVSHDGT+OKnab#^^IonD>= zOes29;r~vOv)k$EMArk7pUkaEhbT12eOJCqm#i>^=2TsoGni}|IZN+9-haF|y1Isu zyOM%P-U8Nzz{id1w-7Ur5*v5j3W(`d<6RxyRI}zdpoyq5U8~{UrT-iz*#xJDEihuU|A0w)CHdUbH?;eUB5Y-iZmGj0!r$GD$zsAwhV8*!LFj^eiQ#P^JNE2KW_I+lSUl)&u?Zh8NkX>^?z&eX2Pa#tEw|! zj~+QuTsnhQ=`J&Q>6zBJdXM~=f67OAIAjsR&m1E4br?eibQaK}fK6qW33T@Q{C4qJGzTum@P`bBS-mpXA0%xi27wZ+a3%}_;Q-p%A z;JVPRIx7_LG6W2?Nq=1}@muF$Yf+WuW(~hFPH@beI?kYRa!ZOn+tNe*n67kR7djLyr#oApi7U^(i|x`DFe>#CQ0micUilg&6)+kn~N|?n{#$%jp#pZ!{Xn$$Kf`27nQp2Rc4tSV^ocd0$ zt^6Wy+4wSFv8<1kL1Uv$Y78e5_`8_SCNPIzPCrb>w~l&e`tveu(G%QM;{->O8z}fW zXo(Slg5L36jo!s1%tbHGVIlZK7(Bb<${p3Kqp=l6_&K(r1nzqB0ZaV}!V27;;sFJh z9ZW0SwB~}{4D2wlg zj~vZ}d?J`j5NXVS%T1BqX1yh$t^0ibnBzTkwgwjq_kVLZaCi&#RAjh?F9C2qVzOkZ zY{)r=wlEZj_4jpM3u)g`LU^tI*L>!ZtA|`;HH_$_s}7j)88 z-I5rvz*&V2$u2v2C;IpjCfpFAroKMEA%7Ap0Q!*R`;&7bzFWOMM! z`;itU5^*%O&>vZIo}K5bCd*sred5fdTRg`aE0h`y@3qwUu>Jsx>cm3e0p?=xXtMqZ ztIq7rmbeDbZ*ltplYSXh1|XwxkwMTfj00DAX@3%*1c5#0t!kG=K-Thu!hYL|M@PA7 zr8oF+);)(+1tvz?iioQ9uRd zuka)=!s5&t@{G?3(`WJiqSz6lUn+=xp0(+s*L>_93KG{Kz2vSJjuOz5H^~J}WFQAR z5P$y<7LY^vqN6#`|E@9)zW7sCu3)7Rz<)@KZ`BDin#~YY>dOKc;#HA`K>qdk4Uy{S z8de5y?~Bb^1VY6&D}Yf}K*WSMGhi3~V0OR`!bf`=^JEEtD<-o7m`V%4r&`{?E=4)s zvnVvC_2fR75^KB(mNyA+f;j}EVtv5$0e?$t7$T1{S|LYG7&#>`2Zy@KsZwcHZ^_S! zSq=&fXgjb=q-LA?g)=!3ZF@t5*1~e>v8}~{bA5Cful3F6 zzRCrx3o$oFZ7qHWd4-Y2{ISa094{ykz%D4-?m<0xQo+0ov@zIZGFHQJ&zfakR)0kW z)o!Zw)qx-8*{ttzzl65BB3O@0-NHRK&4>7ecr4JzWeedxaZW$<Kz)xVq&o_GUxP(zS4^ZVH zlLM2LJuBqqrF7ZRh&=JGi~80Slctr)}fbO6~ z6?7w?%H9M&M~(#}e~zk_-$Gw-&1CZT@d)>wT>bU)fg~souZO`XEa7;t?hS~{$lrXM j9E>!D1C|K4H4L^aYwSA-#WRVUa{3i`rKA4?Y797GKIrYg delta 30084 zcmV)JK)b)>w*#KG1F()}f3_qyj-(CV|4+f4yr|Ncn37Um(^FcN#zL8qrR>Q=bVN$( zwzjq~W&|^XB?igjArCz@W^?(^zQNwL?afTh^?$c_qc_Zq)0=DZf_fZ%% zaHlW}5b-=#CX{-|ezxC@m$oHJbN^w)LVFiucD1fV1Zr}e-|Imug_-ZQ*UuSpH40;x`}zXsdKbBFy?? zhV=zzz7Uyo#zl~@VXGgfcMLdKg9k~N-v@F1y?Et+=Wo)g2)~43=I+&DZw3{XOkoKM z-rHJ39@xA({O<2%t!Fmn&hx;zFrd4b%;ysegR1~{nPt#vgz7i6%hzCE1+{=gh$NSZ zAd;*et2XcIe+j}V->!|4P+m;g$jG8iEH>$V=-T}i%8L(IpQh(lHXqzAGSyA`U||h* z|AUL|Jw^=(*7$dgd-F!TP6Mb5p6_A)*I&JFCqlxTafxU4CD;$+hT+xa$>hf=bfwPE z&n|zoA~fttY~aC_HBQA^n-KRrtz3JPjrwB#nl;(if9$7)?J{uoov3w#+|FQG748+Wk4#xAb))_$a)5<=(S<#9|Ey=(|DNpJ# zuRA3ZrpWc);?^^fEf1j&EZ+Yz52BLKd$E3cl&)c!-I2E%>v}#pyPiVKeh>QmXICd@ zY?NZfe-M4~-AQrv+NYmxne_yG@B+Wbs9^>C)tzid<6;1WUWbpq=AWi7W|PH&{jFzB z>5Rur7;s(734(_xNt}BCLizLA<)vc5b`upi?e#)z1j3c@r7kqRZ1F>_IoZ|ZQO(50 zB8Y^PzqYe`AQCZFgCeFYoyIN_m6a4tVR`iOf7L(I??z9PpGMQhSo&R%+{313$h0GH z0HI%#D2LMyAZ-Mp9@N)=^DqGpOK@Sf`nigDI8wOPcPVU}9mP)xIB8Si5&n2JUHJ16 zR5#gbUnBuay7oTIj%|r$jbs6i-(kvz(&-)d$Qr}aggcQky$c+NN!gYqz(uJX!vvNo ze}*$<^zGYG~`{RA17oNr@vrh&csK|Jn8??RozwRc=!TM}ax%HKwL zo(}Fz8KBh#V)fFysIM$3b;HP`KXxkc*{;*Z|^*6d$R0u?l#ce@TK$yiUebGokzz5h!)khcNea&+$y90DU^)7?uKj z3?9N8zqo~s)=ta^ATQvcrmufRXHhuo1@gVm;f+_^9`y=;=H{F(>H z9%7cKKRH$h1wzWSrn2zwJa&`LLWnl(NW8WdMF0z zRdfE({GaRn$!*6{}i2iBqRw?V$z?6U|e^eHBSfBS^@^*;iS zr~cDEN|6UywBA2`0V{a(tC4)6VMcFA)`_dnf#l6HeP~ZA!GNK^@h9RI0>n4r$M;vP z9o$p6l%klA;tYodgsZaRXLrRxe!~NjC2Jo}xyK#u;ZRg2tJ07yo(G-~tWW(xSr27B zki`gJ*?CJ7KMR3e)L_Yml%K2Jv+ zhE|AS1+>HY{_f?VB{(y-kq`&3)e_L)&qozhb8?z zOk>y@X%&a9ZNp--yd%Wb|IpJA!#?3;2km1WybQhzPZ=BB^TVX-!*IRNXAA$w>xGzt z{GP_@AjksN_g}NFfAuO49%9(H?!Z(DGpW;F9M@@7QV@z8T=;l=Kv*0vs@$&;H+Szze;Fnfd|JdNOmOA{8l;_V z`hpLk9&-_Rt5Ad=ya@%+Zgf+ZAQW3ApjT9fEUY6e;X!fro%J7}LtGYOz2SS8g1H;} z|DeeUAqHUR?{)#eGc!kVJR;~mBzMnt%5DKaE!jI8db>Rb@CU7hy;_)9I=GpEA99cG zRpm#q|HKmFe>AzX7;JQlG>8cgA@FeN6!^k%gHh}~v9w0Uf<6qE<7f-hqwHqF5n$nC z;C#C+oOS`uw{0$wFnTyA3^%Ka4Vq$&_co~RVO$yfR28+OQr&LdrvDoZ$AymCqwQV6m6_0cx-U%=Vf1Ab%`L!=t`-Q$o+aQ)(?=Z>3 zy9joZH0Ofy^D5cb?lAyP0UR)2M+> zud&(Q_8ptp`0n|HHII*Li5$pd3D3Msq70-3$K1 z)T!M;1>JCfxQ9O&j&zE*k0f3YDB*=~B52it8Rc2Q&dlEOwRp5R7j0CUz6`1gTdUb0@)k+ zC^;{zzkx0lXn5bE$}`@hs!z1_gp#qu*t1^VzkFpibZ)h9_$o^axH zuZ5qt8T5qZHfMUXY)@oEPsZv_?)WHjl(6nKukw%|m(8SI3qm(A=IPL;d8OH1DOnG8 zAf*z4J1Qn4=;X$unXJS6LF(x9#^aovFmdU?hBfwFc^?d|8rADd4Je*`Lr z05&*XnLU-8fx;`O5mB3SQ6HNx7Sv!ahew{EoLw;}n{CXLYXpg&NFp)0g}GW09-tkB z(2hY?5*q@X)B-rXY=$j{bCFfFS+}C(%d8MG5I42*$J9<_(jo#X%V32*0cj`<_^t|Z zQ5V`NQ++T&Rq3jA6b_v0Nj~7$R6ns?lV>ruWKFz-ohWI1~y(V~;Dc zALsCcXiYR`gVEbHHf42oDO$i2RV;V4eQ{QlgK443e$DY0#b7;I12Z0QFjd_ak(^sq zJO%+TY5|xq5fa$YXzbbe@C8OE?gncoe& zAE^l1V9Un{N~`kxL^w8BiP?>Aq$vd((JhozXLen^R?`Re;AlI%Dbq}02S_61Z6cTo zuCqw|_@YSA&Kp)u=MbMzjFVr(r?o3N+knq@gmJE@j;0FdV8uA$e}*AlNF_@nvGSDT znJ%?K`%>tDW|)EN&X|FE zW?~5}Y-Yn*gMmJ<6+{6n2G@?&3`d!p33c?Xoy^X>`_~>IcwhgEL5M{=)(vVV;yDJ+ zdI=25P2o?hXlfyZe@q`S<{E&T^X#S?e|rj1@S9N;sgu%vd3YG4aNH+t0B+uX#za)5 z(E58;1mH&G6Qg~rNcIsHm|{BLLq!A*mS{J(ZqstZUB>XAx=-cfchjDu6*z2pYlII$ z_z>g{!4>VW?$miG>{>E7SegIxHz=7NTv0NRJA@;i$Cs=Qe-hLF*l*#6@w?@##SZJB zH4a5AH(~9lS9V(r>(UsYt~a5#5Lpmb;9+^J3rVix$Olw0#A5`POK2oSTxffe2CVBQ z&x1T{YeXJ}W@qJ-!OCY|wNpB-#O=^KYpQSzfPDT|GmA9S74EjohW(DY6wXXHAI!z+ z^$gdn8Iht{f4E+4(x`}Vs~5{(=h628|M!D>9`t|=V4S>R#vEs)OWiW9NmEa>H z+)8-&oqhci|1O6G`y}1o@Etg%bOJPu(SD58UX-x)nos{AjQ7SvAaH2mKzw6=;vtsD zvBU&~z%twzRu_be2Sg|Vx4D7!eyN;F-P5RX2|2D)e-*wN5`#3sIUMM2GpH=)tF`H> z4C%Mr400;xe*N_gtMPmZnB6!oV&Ye3WEM=6)oe3ZVS!c*y(mo&7n0Ds1m3vD#e~0c zxZ~2svL))?UVDNoki>Gx{inq(!WBBX`S(?v(EOq#I~wf;>y~nlxfh>UhRN}%V6S2s z-bG=vf0wQ9yACe^)~YA9YJDIXZ*ot;N2ba18u7xC1RmQZ?X_#9i!t;JsCy&M8b;VA zU-4ma6BJ?$YYpVAPKMUC2|r=W7kB>0(M=xYPkvR5<*I;#jgH>=+57oq{zvcQV)EnE zi6ersZ&Nw44)nkX?9;vtbJi(ar`1i&#+1ViM6Gll7ALh557q}c{6u+NR27+Ivk+V_ zg}IWuq28F5Ll_swsb}=kNIPZI%)gJqp{YnMdlk}YyJt4d zJWQigi#z*x87A)p2jDNe4&&e{W^bYED?vs-@9g|#rD){5Z)L$}HU%sERa8D@wKF1y z4#GHw{@sd=k)4Y)gbPEwMxqHywdFw)e-H0ghpT{I4BSIqLR-GtWR8@(7#H=Gcl=>S zCxXYXXxMfnzUj52%LO5z7EJrpgMDRtu8&#C4Zc_OqU3bA`0xJ}+`x999FI7Gf53cD zbMh|2LE#H2aYPCiG63r|jP@GG`xkd{S`@6;sH8vdi(y%=^PqOXz~CY|t0x#|H8h~Z zbequP;Y(UAs$mlZnUnr$&39z5tn+rmfez@PNh3i@;(G8Re|`9BfF+mVwQK%b2XGLq z)J~Bqphg(tir0a}RiH50lNN!>e@8`$E6Kxgj#rDx<+Tajcpj3*LPw`_ra0A-ANcEt zAD8N4R94^F%^r9sB1cO_aGRmELb0)n9FRf2;=q(z!l9FcK*dSI&cfABj#Khs-% zO46)|h&QE?Ui|U$YPLAj-OW!{Ar4d~S(hJkd;>%K>P_FDSbb)b$Q4B7Tn>1egMf8`jIT09E@c9uxxs`n? zCW>7PG4CzNz4O{bhVeYdTKMo8tt5|+kK#}t2g;H%UjO0oQJnHaGM>RG7d)@wCFKcK zvW26FLI*ZRG=BZue-l36?B(YvA8QFBVYufH>?3mL-=t|AhDrUPZdr{DT}Tfga-jti z`V2yEytg3s_17?w&+j}1S;7-9A?^$j=h-E z;;44S)DVz*66K5)Cd;&5&}hL??0FbxLAmj7|Eezz$SkGATeAk)c&w$R;bcCuA1T1CwvbW;7am=-DV>(M9tgz z*jl&cdKjLg{!Wt`aQYlYj}vv4qGzzYO?<9g{}Clhf6~PIfefH=fhEsjtrPy0@6sic zBHX4ZXI;58e;U(g(1A4Rs(!;Eg+wJ>!~ zzbA9evIzv)bIGfu1MJYz*2A!zCClmaBX+3QRSt7YV{f1iMP#_%zVK1Rd`;4Ajr*8Y zH*vIre=$;>T~xQX(W4z@JLvk-d&|V-atM`YFd(ai7N|omoM`v)=DC%jgHR`)h|dbY z^#nFqgxk&X+Ls@1$#+|S6(v9WtO2QDi+PSG=(28&h(Ei{;$UUl)f{Pyt9x&2effEO zxAnXqe((Ut6F7(7e0qF!aWTC-nX<16ySkX2e@~95^Wpjj-lBXDyAOZ3_eJx|uFwNm zkj*#AdvCw~djIu5dHQotzBoKQd`BXUZX;VfHZyKI)eoD1eYWgbo51RP@2wE{`m6Lf zK7W{8pI#E~a|~l|bjOX7JE!lU8bYM9Z!{*$HRYQZ-%yC958I&msycKgln9V`!4j>z ze+;*23>%n=r)?Z1UkZmdLy5o>mvthw&A3hT72lx@w|wL`ZU_wXm-QZB*Y90DN!{+R zU!z-NJMZrguFxu&Q!wkTX8hs_DB?rp%?IsM?%mjS4?gI?FX+^fL&Qti8?T5EK zaroJ9(y9o*gkc6x3uCP^&9-@X{qm(>f3WsDS%;RRKpS9L)_dCucc$)O>PRRI*AKq( zQa*`x#E$x|a(&%2Kf~seRa`Z-$I^ONS6qr3MzDMvM|YdD+kpDzHuKX8TP?qcU@Lm* z^O+*thQp+yBr0u*jxkkhtJ?HKhT)}^cX@R=^@<2~y_ZWdu?23lAP69YdXTVYe%)nSSZCeB18ZwF>O2t4uqlbChmsqctv(j>R*GVn#f8u_u#gKjl+BmiC;hfC?5`0lAA~?X3kcc za8KU1?c6oWFU2YrzX0XuX|n7ne?Oy?zTSL}v{-|XT9>Sk(Ckr{NMiCjkcQO+T%6lMUodcqT%3K}`Fs_5R1X)v0=Q}R8t;gyy_8S+IMXokQguNe&5Gc=+B zR}?q~0XAF-9+x2TPUild4ez?UA$L-$B;sd>6+Pj5l- z>#xgoxJ1o&f0j$m^hrf$<=_!CM^q&h21{OGvP)H}qdk{p+?!OeAF&Oh34tXOkS8Im z2Xg`kYb;dQ&T8dLC(=4Bk&Sg9zwNyh(3fPs^?Dr}#0DejYM?}Jv;2qIBgjU{-pKZ$ zWU^7>NEVM79Je;F!Qjb`e=G4x$}5r`lSV5^>xxFOw5~GT=@b?G1f2rMsGUU(ab?TK z0+|ahQJB5kDE$kQ{-wW$!c(46O9m5VteUXe?nGZw7aSpFatAMnEd|FrD5>vIh!QFV zXj56ugD&Iu-+%8H+s*pHiHs6R(86|^W&V;Tzp%_dVdkHQ>mbSBe}9+Hpx?jRi2W>+ ztZ3uz$G)jCob3g}>7QUt9UOQ>t%pQQ7DH%U07u@xfWR+IKzeH+efXV8@5B57LtKn% z67?`mj$^}!-cK&Ak*t`ZijHvVaHb}!QYR0OfUiyNgdZZTZ4T7KC`srnMbDrZ;eC2ceEQ4 z>^69BSqhZ_pH*`t&??K*YZm6)rB_&3>aM*y5Hi9cMQQbxiKv!u?T8my9F-Vjs&sXH zBj9zYFF*u(Qy^p6yF^=JkwU&ls?$`4No#lCt-Oy92F$OfX@1qyRw!(=GS{+b?eK=r)(s1?@Zx(6K#O z!_l>MiyS_(4o$@O+&MP)Ho&#)1ZAZ*e=3PTv-#vOzoj3pT?1{Awtj?doIL4hZz6LJ+%&uxKfBb5weak$=gV}iC4g6L2dMruk zVE8pg@W5Y9--JL7A_|XOOVxp3y7NkE9+vr&a;ldv-a|~uz!x58mV7OcQFwPkxh+hi z0mqVY6=Km~L(|hu$U0^r1U}uvrY|}yN=`xYJxWfQ$d?V>KKU@k^e|(8DIL3%w8~fEZJutMnTS!dmJ~b`Ib|Z#W@^J} z9my}=2k(VwJ2ERo&$_Si2ogTGlO ze^yrW@Qzhs$I*Zph~8j0(NH{VL0tU5jX)v~oYdD}|C6!vAX~n#2ZZ}d3mLP^ix4!XYo}z* zB22csI=3nGAqghr<>rB~bO~xH`bX`0f8oBgr=$ZCc{=x9LWM8mB9HFi9A^Q#4cAe% zwWO#4Vd-;BmpJh(0x{=V#g3-sT%uyu&w8d;gQ1=*B+c%YPZ@-R^_>=3ca^XIIGZlK zlW(YtuB_jk7h?yYIuK0ne}8XjLz?>|-l+27K1Ku$+X;#h?u0hLwd@>aF}i5jf0+eo z-43b6s)JTpl5W&K)xRjFunoDrEyA)X*h_1}N)VQQ&C;(hUD|F=XqN8TH@;r9=P_+q zKe#B^UrTCw9G2zzjW+$n2PV8T8>a7gmyOc5yGy1v z{w9nw3oAmw-~8g^uK{?mKL}13N;mPm* z^jxs{vzdLwt)iKDxqOrt!se|f`{>Q~}T zlM~G>(0>K~d4>NT;lDO@UIT!>Fqn-09(jj{hxlvYZRq%BAczH(o^IEx1Crhm&C?t@ zl-8}hIeNCaHwG!-Pv3e+x#P{j|56wd>K{cDH~xN?MWbm}@PvNVbK zxkw?Lw2?GhGlS|;1Sz+9e|zk)XQ%;(u%1X7cvR>&Rnlw$Whx%3eEqdJG?z~-4_Q`n zS*u=BB2;X?s$yfNz=a|9uNinh)4#ImJebBqM~dzkj^6=3|FuVo>|Pxto9Fm|rj zq6B=lHrm>>HnI}V@WRglJNavhlWfOItwQTKH}h6s!Y3Om9kphDe~VoWyx7E9td1?h z6qaN`o;$EB)UKvH-9RW>nFp**#<&{Blh+IcGziyCI-Y3WIcd#6r&{4LPn{D|eRu(^ zDCtqIArHPMol{lu6*E)Y0b`#vJg_awBWr$xP#>?)&d(MYL>Z#5oKN^kaA)(gDIN@G zX6hb8TPC@`5ZW>|e`-kJ4ihOBF#GA@&z>EwG8_lEmaAjdXR78#0z1H2ao%v;hdDpQ zCd$b+boy{Yw|5Q6Z`gR5XS_T7m$xkM-QmBQ89^iLZ~4FJI<(-jtBDEExBOq0V76O9 zxMG-M<+~_-IHo?$OAGrtgb8MNJOdjHo?+y3ldhj2j(rJ1fBA4{1rtiwLoN&*Mh1-c zS0{gbR9w5(Oyy+hA42WdJi? z1>K}teJYAwcyh9t2S0Sg!m>~hhm;t>p~I7AK7`v5aabU5IvX)05Sr&E#RHP)rfF~> zb(OJN@OL2ie|K-ZzZ2nJAS62od#&)hzw`c;QUWo)NaOY3z(mD(N4;VA4bS-I&0CT6 z4rc@gC~?>HEKkdHmEt0kFScjGCp1WslqpH4pIFefhUVdZUd(C@Xb5Tz_RSU=(zz?< zqUEqJp{Xy}am(6ck;|<%v;j`v%e=aS)5Pj7Pp5j4@ck%n{YolrQ zvk)^4uyvI+quaWhN9JI_m^E2ne-&qsOW8(d;U5vL9+Jw$^+eKPZ1U^;6MX@Z8n+@k8Zoh zgaW0nS)cf5QK?eyx&bXAuC;f`1(IDrrx*LSF^KYe{(;tN__0u`qurQp617d_l3PFPcYgg z4yQU6^(U*8RhhCOX#C<8`-nx$C@J$)oXL0?WlzaX&&YMFaeRK()!-*he*HE6`YY?z z=XZQ6fc2Ne=$Bo@0Yq9WQc=o5`*7G0d|p+J`4E+Z<5su*Nwk~gaLVJ)m7=x|+MTt! zf9+4AUDby7L4$BqPrb=~*hIPWgy7TPJRz8x5KqXS$2Aq%t&$vJi5{YIvxLx~tDEII z+@?bn^$5xKw6Ld!F{;Geta68hHyhNpNZI6Vp}7Nk=4amv|uB2XU!N@8?{ z7}FX9FTMKGf=ed9D)26gR|O8PYENf}SH*|nME$C`k)Amk``f?ISzO&kN#V05e_fnH z&s(31Q)+MFsBWkGG1jU8@ECws1Hk>^03HB%(t0aI0qp>|-XUma z_%cC~R`($+{Wgzb^qn|v(JyQC(;8hau@Hntq86;r)+-!K##cA+F-TQ%e3>-3a%mb7 zti!kC%E8xiy45FOouB_?9sV@&e|P%|;|q8#89eP9?DY)flGnOWRZnZz0Mzy1n44W) zi(68#5opA|F>G`nJ~E7|H1;@6ga<0e=Wdo5OK@8#LJ?hjr>$9*yManAaKeSdpg3lH2M@Qq@&(1 z7zB~c0h|(N&FEmlwAlZtMkuo)T3du^5xwO&3Zg>gwLWb3yjHD$P;F|bn1^lFlgi!M zWrEE%8jFKfNxA(=wT#2qa`W{+olJMM+uu~w&9sr(k z;EouM+G;UAYU5(m(y%V3c+cy}R(U!~v}NsLB%I!}aVXozAv4g}watkS&B-3xpzm5f z=4PiYxG1E$?|S>(5txJdU;pZJFkDAvV1t!NOY&f5 z#1(bOz9dny4j+|ne?-?^5kA8$(li(cbrJ=v71p5^CG7Rg&Fsz^F=Qw%8&|iBu$=v2 zcMV-_?Bb9$CqtlZ9?oUw`F!CQ{M*71=t-&dz2=IH>~qEAW{q>F^5OPK7?k zG_rYgK`FCGlS2!MiwbDWn-;S#+F#g!zJh7zpXj7^_0Hi#RwqHv{->{h{U?**EMUEo zvLG9*HcCr)vy2RR*gK_$=lY@8mF& z#zS8$au%O`4z2h*r>T;kNhSI5^nqT(YWdInZx@=qe{`%lTZYLJ&mCG;3G~0fWAY}< zm(YB(E|dBDctL`|Z|AX?TdfzvSpTd_>di-<5OpMYuo82-EjUbr^371b5Zp&8Xomi# zMQwTjdnr$g*7hA-nQbHXZ4X(W9Z#{^2fHrf1-pU;?HOFTl1!Ln`n0dx*P>n4zif!b z=_-iFf4pHF0N=04dK)FsK?zFXQd@-iJ^Xwl*FMy6;&>2rEMUKrTaaD>lpbFi3tR5x z7LB9%{)?8A-{XrQsh9|B$YCH^?>zxq$_7?4a1bxDiB1 z_*wc8=EWwAV|&hKIEgqseF&<B|LosxE6X+~JtE+IMR+Clhp0HFe z1_$q?svB~aY~T<+hJ2|E-9OqX6r3}H`ylEUdb{w>3$+e7K}#!oYuPKE&rZR;7WEn3 ze`$o4eenvoefuw(7FJs<(6B4g7TX?t_oar%AM6o!3NQddXx}#J!_i$8F{&@HjqbOe zADG0CTmswX?&m4QqiJ!+)=5wX-mKbY8rbF|fI1?i8q@K!suy2TX>~G6k$m=T(N;hZMUa$2Io(owFz2V($pErjwCO)LK^&d9b~p;>FJ!GOlE|# zu!SX{ReBdZ(VI(&8oNna@*X@7@WlE?Yl>Nw+NGQZ zxBlcrV>Hdeoc`^Vq_3KvI^=sce2i$VQ6qaLerPbWJmj~xfPHWj+5lu^*S21wA6Kr0y|2@(Ss8vO+WtJ!J-=AGy z{N8)#y*_+>_^6|hR%LIiyT+sto%6pMKpY$J&s5;6=GfKXDm5H5co1xxHAMBq`=HT; zySPIGXKPqi<;L;jI^pTqe-`Qp!1lb|aks{x5M|BjjQ!OELU8}x(Xkd%2s2RrOApIN zJW2XMgcZUJmjBYh!hv737q1pw@V`31N)Z!611Llnm5BAA1T16HdkbRM=L-$ULwHj~ z6c{e}IlTFJrh|ed;i&NMQuyT2x)ME|&n&@<3hzfq@UD`7>Kj|~fA(R?zOAfYRNLV} z>yo#H%So-F7{oTsB@^OOG|M}~(x&YSY8VGd|=XbrvfOO#J3oXWz z3vn~x`;V8GfAp_rxTSc#UbeZ1aKI;tGB#^fp82o*BMg;LL9B!_^&8VA)TsdczhT=Q z)UG@X)=tH7H-=68f5-XEfA!+Xt2MncZSMhSvX6k!ggTF!#M>ZmD|9JYNB>N^AlmPC z_}D0Pu%oEvp~UI-99g2W>!{?FtqUJRfvmzhNa<};3w_yI8*<~}4gv+=viEEq$8&u)RGp;OK-gz%9Ej*NFdKWzydkMs;gE(ymeCle=%o0;3l{SeF&<)DJ0yw zZ|5(j^H0;cSBDabj6+ybIrh!p$a@cb#qfH+r2C+|%t6A1KKOvK>WlNSIPhctMeye) zECUznWZYb3-o5E4ZCOtftX*{27N z2q-pbIy`JsGdJRWk}|y)-gP&-!+4#pzNnl?B^E*iJCJksY{3F|XScF9g`sskaf5#leUw66E<{n0a9MhEMVhrk1`qS82RN8zY|I}s_c zFQx2F<&h|gZFQ!qLL(;uowUEL389SN$nfS|2L@%;UjxM`1D|Y1pkT< zZX;`je+hV6=Xo=p=hboJ>}yH{TP|R}n44l}#BZc6_*j4*f1{*#8bM@CE(v4mO2jf*HoybLsM{?b zGSXCI6m8z48-XHgI_bzS-fw(M(p`vk2G4;;Thi;OBpap6ZAuGLY9X?=AV|E5DA1fQ}{yFuG)zrs#e}onE zk~Dxge14i0a2Kp7?do1$O(x#)m47u`z{Y(;H*KTDoofvvZ*>8v zsIHBoW*54|OWK6~;p+4C)k3X*z!J-}Ai&g;3N-H4VWcBOkPjA#yL}WIoCCZ;{JNlk zb`>ZV!rR+u6@|&_2}6yt>>=+f*_>W`+T_4MP0G;`*_0(LO8gX>r$lAze>*B4uCKxK zP+aQl2zgdB@m}E#O=EVVecyO&OumLf;^0)07K(H;h1@~30eQN z+R|>MUVGl=;CTDE&e0Pw#G==l9|%LQGsUAR;CAVJO*GZjnb*-8=6J0$Roq%PB0DOJ zQ%WNOKD<6ZgO+ydItt+H>wVxCT?@^QN%L2v72^jqHP;?W7%&f5e>WlW@1q>T)2{-) z@Iths)SW=uCrI-aBF$(%i~KlbT}eM!;r<1(?OjC(_Hzyi-UJg&RAOu z^h7t&-A3M+;;*X=e}f5yIHJhKMoKC_BHRZi=1E&#ypviChbTg9n0FqfIkcwh5VjKK zPnJA;>YSHIX7`XM8+pi^PM1dykH5e>`j8%YPoTHe`EWa7<7&Le)6Mt{=)lu zY}gp{FB`mLFbiPS2ve}GgbZJpS=2IK1|H^I#z?m+dm$W5jJWs}{xRWFcHZrR%R0L4 zb-QK;X54xvguH5|YzG>=|DyY5fFbr0^adEsHdrzTYv6gUz(0<+de1n(mPfDOwv%goOWI2x1?Zf2 z6>WOeWt#d0EKlQBT^}xS2uZfC1-MRA4>F$foxXUDe*;bv9hkl3Gl#|@`VNP#7EFAe z)mJ8CFdNAl|HsI}l&k~ulr#R@XeQ0SH10avDlQ{f4D1}hVqu>G_L&RuMY0PaB-{=v z)ofOk-R0=>WE{PHoc%bToSa?$C>Dh9a_ar~@$6)(hda27sE{anx3iJ83)Tx>s0Rbl z*M~0;e}D7JjQ7$4@FgO?`i&9shz@wf8NM{)y{6;6M!eU*HRAn-j`thHJNgGB-gk7o z?>OFfM!bKZrYYQGotr}v1Bq0YtUov ziF?w@dqUo;yZKS#-5+`P#o<6{FlG=;JBN~aDr>d!F;9o-=}_WmAR!-xW?op>A<$Rs ze|$6*D-C+Xq7J*5u2s9nKk`(qd3IgiCj4}9n$?cR$#ijjddUwY*V{<_#&J-6Jc`zq zN^_kqo8SIBum1hUWFOXK%zL_b?Y0`s9{y#vvfVA-J7!?FHvU64(`qm?_?MZ1zxv|f zzz@R?_77arS=!OTA>ypQ)LY`Sr%Af5e==g7?5c=4R(>^PCJ#%)jHJp6*APbVLTdxg zkjC|{BVTqUg{J)eHNkhcW1b3j!R4S4lwDS#dB0~3sM2FsCM_BiKe&ZWgT}Sl4nKun zn&8Pbp3kZmCNF!-t2>rAVUU+MVNk-7pgi+R=AcJlY?@4{@Ng~V8)-3cACCjCf87#m z7fJf-Jq!bcn8XrK8HYDg2-TI%*bwj~)Q~qJlJg{)oLZZ4f{eNy@}xWy6|sH^&j1cf z5S0R!m8dQL5C|hC@}I+RJlVRfXIx0nFf;cvyG*h=_)WhDDT8LbO9d~eKf;v(pgL{ywdA0+O2LQeao9t; zLrA3vO&U*Adr9vYPLueFSEjoFU8|{vdy333q`mPV@i|Y_TaNOw3SvLX>N$LP(otg3 ze3&6V@m%k0=C!%d6*jgR7!BkhVy`^3%Q#b$R;4)0lSa!7fzd@ivs|3$fAK!^ToFcb zfEH{m9m`9L!HK2GH>H}H#_LUTb!(j}I|VRq~pE|5|H8uVE-md*nMDRMWpD^KQO~R*#d+&G4s>(Vrbt;GhrzYs-3i zai~2>LxrqRkxs{;*f`_^e<24`jpl9&)o>oJVdGw~>$**}E~_h(i9FU(@dc;SU06uU zibNs<=v;2YGJs_>7ZP24bvl(wZ+i=o0_t_IEleKvKOl6wLRpb$$AHizn3WZYHVnAW zoHK`7U72jd1FxNF2yIoW6$wSiHyaj0U72jfW0T&8?p3o^S0-EWe^AHbwV~1?=yGfb zJ@k(Twjd+4RjF1a6cPMvSO|4xGLc7wpPTZ@g+!~{PqQ?C800rmnFskOA~K38*OuIN zcgf0<7V4|hZK>p}YnX0Fv8f@nS+<;tP4L~Tqfwk{2yGUXlUT=hBGc&h(}?E#hlJ8h zbG`1hg~`KU`|~STf4f3ik!Z;v8^a(|G01EfWYL$vnE_W;BoZ0afyb5@{>g>LE`lzH zNQkv_Npb7e1!;BrX_n@(6F-K70MKMuvnjK2WXjCbq}x(~EnUSZG6F%DV@s$Qdvgli z-6?dpXXkijfBSPu7(l4CcHUh`9Iz?I`{XHvzUHxJ3PEI8f7w4=F4tk0t@p`!piZ5e0$|wXOOO9EP7vb_I zO8T+V>}c))(d3-SijX|x$u>YVIVZCBM|^E*JlhtDC}_zSe469?a2Y(}bA>4wp7(-nHXeV!3i2ERp)O%D56_Up{bh8TEy2Sx9IW!j{~#EPjF& z>of_IQhn~69en^it^rRPKs$N6Lad`z8QngOVBH`Le+XFe>TSQWBZcawTsu0qQ3BEU z#(bt)h#?6(YS0Z^X4$xwTm~7Iu_PGgqrUG#-DtouosmL5JHsYa23& zTv)$gsdT)hk?E+LatG>(Bf8j>WapqIWKs^O&7IkI~4`olJ1r$}% znX=5(=TDN5B^;|D{=1`}l@)7>bk|&GpS5NS?g+2r{k&_u1Vzd2i9-kc3BY-{%(` z8CiV8yYlXZz^RQr@fTQRQFqp2?QBoH8#D`HXYRpzy&u{LM3ZwSYqbG{LS}eNh*sXY z5O8wpUdSU5P0pF@CfL)RMj)D;Gua5Df1T{Tyz9$Tmjw}?N1zxF6&Gj zPLbXZYmP(|9OB#TrLx(lrPM!RzkaXXs?}yYFmmf^C~PZx874V5vT>N~g{#0JiMcU# z>jkN4C_6v{qE4(=X_b`AZDF~#rKBQbkwsltui`LBs%$jl28Sf(#xyO$J@8D6f6$`{ zxp1`Y7O0Hx^awN}F6^R&uS|@l*aFeyoX8f-@G*<>a6O)`1Vxo}q0HXFC9DBKxLf-r zWECF;qNRdMIg&737i>@hSGK-YDpEZ>D{+?+>;%UdU4kB-mAFd@vTA%wf*6A$gX~0H zw34-nt29|#e%*xjb-Jjv4Vgn+f8?$0miy;*C=l1{Vqh12N649@TX#{*L)mE@mL5aj zty^Z|r0krL6x_>U`;peu+4)o(1>O0=37C6Ty<=b?O|Z5dCmWj^+qTV(?PQ~k?POv* z8*5|Rw(VqN+vdJ`&N<(Y@9&_erlzK+x~s2yNG5Vi5-xw&Gci66w+YuHyB_JES9+o^ zoGKxgL7yuY2cN7g@~AB(QTYRVtF6e@f(=nY&aaIT{U#iQ!>1Z%#u=8+Qi2%;wOQ*d)5! zsO@Aw?p3R)vgy#@44Ujj(0jqTt{6BW56j;lr#;Knk`0W6gYdQ?7;)t9g zLE7QtmBekV6POMe;pjw~2gttP#BmL&p=MhWs!9%o;JatDxGLe;X03ukvHFC3c@Fcu zY#>P`$-ND}?E~y1bQLG3NH+qPD?&Tl`j*7{4Hp!1N#j?7k0DN6X0 zC{h&26Yp|(4*X3CqYei58O@`nRM9Mwg#!OPnK^2~{qqeYeu1!Yp#A$z0o(WyeDRa`Y^vI9AilsvMb8&XO~u0v^3z_M<)qWO5{+zrID&ZekyNYrWX$ z#Pw@c-9Y|e)e^PAF}Q|kHa!YQNM~e3!mo;yOg7WZp%@Fvj4FITE{#`!%v zH9qXigjK?EZc+N7KQL+dRtb50x=A~2QB6BMfWkP4aYP@MMgL~wiepo8Zx(0EvL7#2 zOO3>H?vRV}+RxDyO-6-1>^{4XO4w1k2|To)C?OFHF~SWrjYxu2P!Aq6i@K#OQVQDI0y8c^T5X_m6nZ+IAdiXMCdW) z0lJ_fia<-k_xD_fnn(YxIFRi@{#6G+{a`I2;NecGU<$b>(@wPPKiLc(6>S(76^5iK zJNYS&9ga%W59eL z69<+`tE`m&`v6mL?SA8EdQh;J97xcsd1VQ~F3WJFKdHfF|3;|$TE<(1Gh_Pv=eQ?* z|9rGgqIpc>R@XjC7)93g!iR1MSuVX@#hr{=HoaoFD~EE*PfDSKRFd)x8Q^WGu9zl8 z$;IDlDtF1{>Oepn<&bPJ!qRh5sY1YS_D`@@;Z{|Ko$=siFT#rc@|Eot`G}B}42t%j z6zL-pL>BvqgTLt)xyV7s-z9x*7$8D&S5G2mR>QM?oR!#L?&wN!QKBMBM@=~|6d#HZ zS#-0sgE{MycGF{l{XBm83jj*n`x3kUaWadmtAYxAHZl0YDA8U&mA3kx#6wnGViN~g zt%z2dF?hdXCycy3gYN_N5F0j60Im$XUp3mC+*T{V1v|E@`+s*|GwafyvF)xFy8cfJ z^rTK*(r6^d4x$II&7A%#S_Ii~8^*bZ}SJa*IcysD<9NW zluy=~?7UOCPMl_k3P<(bb1=kOBTb(kQzt^xFPmdSJH*+gG%>TQe&tv!_?pQ)4X!a~ zWjX2cO9DWFHPz+3!`b;GJuPns6f<;D`GaOmc_Sy8(2<&1!~CerSn+HADDiai$O`mm zB_iJtJ~4|V-&Uq)KpVk!;0uUL_LYd`{$yfBhTR{TxCtzIQ%Zu@Dm8=D81Lc#x^QEK->h1D_o_mUtx@290)AIfJsTeS|f>N z2lzX6(1%2Tp+xa7Q=g2ga;|$f4v9)zs>g@6cIxCIB#+;*%-?ZgeuUtWrb@w$+anF& zk^xR#v_DYTU}I7_Gh2TSx?v?y9cu>s&^|CFxI9pA))YmpGSMO|my70?r|n|-E<6(N zl1brKq#4QaTc?8fn`9j_x=D^pUZi9^uCVuUiKWhNnN#_La@D{c74_b>En@-R{~X1a zykh4Ypyj)qpV*Y9PDuw>1qUM zVV~wxYbv2j9eQh|V-L}LO&Hy`U^VFpC8Ux*u|NzzD|d@;g)~EOQ0J4I?%WcT! zh)CciI~2ix#DB~je4S{XjxFRM$OpOL*TYp*RO$`gRK^t`LoB(3wASD~)|Usgbw(3B z^?E_ak(rJAU_h^J`=YPmiXem2n$2br4e>8Jm1voj3=X2NGRZc&@Cy9{znMW{)Sfca<9;*;8rSl%7 zU1-Q!CuYyw*<~JRk#}nLO0Afknrrznjb8o(Mr-fToDAJ3o1MKM)Pzkvf^|f!4lbqN z{vKK+gxN&9eod_TfM+cBac5>08V|kpzzevKgVy43oS@G=zWW+57QCb=RdD&StOk$o ztPC|m&YE%Gj1ksTt${b<4*xDEUO9c{TMWG_%L$6*w&?;qK!oPodvsaIVdNF=)aK7< z{;G};Ik|_ymi>$pZv7YJK1GC3c$OYqy^cKhZB#=(OsoFlwY>FtD!x`>;K9rFW415c zR%5m)su3wMNoRxUFZAPH`o89Jm^Q23#=7;!xm0Qm|1Qsm&|_mFhV{5|dykgKCPIEz zJz+7~R=WhSklcC>ZGI6UDVn9lyYHf^E2GLgqV;w>tLVR(lvJ!QX=+D~yB^O}W$|~O z-P*Ylj&>cgvI9MI*6eyObGLXU>@Q172b4`GrgW;)=bM}Avba`nCEeLYWfmnVXlx=+ zE7yZ{(8jaVw20M_1TM|dW13zjs@`{AnkI5EEU`MEIUmQA`S>i1WD5Rio{pUlW>V2$ zDV>i;LEGI5k(gd;GhM_QeT{#^HVx?@nf9O(j-(y<%bSbpfaT8am8tWb=bH4WS;f!K zz^^gZPinD-*?JSvcsESGtygd0lqYLT+X4Og=AjB}8zgBmSI3~e_i1(FB`4e=A4~rp zOMU}%{x(*Kl^Tq_jf?Vpgbea839f!XMkSo|WUE!OetN(r6DU}#PH1L?X%k=LibXQk zD?TE-y3w{LJM!81M5LSpSG3~7geEP~^c+fLg6vi)^XjND)Jcx1ZtEQ8LwUO6=rq%S z!yA67LT%MuAKvJT)`xSjcFo6nu^o`;0>cNOiqfkw$($~^_I2oJkiKr17bFNft@3a4 z`rvd{)MW9i5zXDg*pAPCk9eJMqYu;<=H&N22;+c6Exy)+nzx*tpVDR%QKdm=p^6}+ zgKLza!mpT*gcc|27`l&l>M#WQgz9cGTOHV)K)bys!LWz4<7Wf7nEj3%4Wm%B9pFnF zD~f)KhrZ4pV?&~xPJy_Nauy?7&N+)A$Un`*FzRuI_dxmu=-suAfYdNtZukk zEQjBop`d){b?(^>Rv<=CbSTiq1G4cnqX-Q_3jxNnlM{%7>q-#@(N zm(>LaAs?FsH?MZ8>feAMfTgu#+n_5dKZDQyVf2^;yPjTiLn#ocBx%|u9-3%4d1ypK zOOw5`ww=Tz#IXnLjOrV>JrOgz4V?>@pZ3oCzs5xHY)K^V;bHk{e-#NHV= zD&uivUHQ>jtO=@=z*;QDfplW-k`T;Y7Jg>PMdTL~V{h(35|$uLAfS549sGZSQ5YYp zs9A#kc;uxhV)p@cxckgP?K034X-z6dKfy50z7p+Ab1 z7~%n0#FfuTke$0O^xK{>Q57^Smm}UAsw)@vmPlg(z7029n2QN2>|vp)cS6jUyB$Z& zW0Nm)Oj#!xJ^>ih@!QJ*2?yADk-;u!_?0=8btjysn>GYT0&j#97}vpKDBrn~>3gFb zrs?bn0o$jFNYSq>t~E!)cPTJ$lp9$-k(|kB19|ymDOnmTlInPfJ0`(r=76c6#g&Yh z4vqUY@!Q^>&^aZ#{eDxdM%fP2v;G4)y+w0x#t=QcGZ4ohHJev~1*vK+xpgW)c!$6_ zk_gww`4P1uI0$-Jw5<{9%3DAtLuyxQvf)grW-MqBfqmcxuo^7kY64TxZR5FD;ajSpHKbIfeHUpApK%xol z%iYN$0KL?au4GGnWRW?Twj$VRqw>#^n6Guf978%b$b@PUp?<>X_7op&D+bbSB}+8- zsO+`>j+LOIspfl$0(A${c2+Fw`};M`o$H)$c|qZ_NGMPZvEuAWPz4fFExKL8(O|77)|%)jxA0Pi)wv#>K-DT%Ij>ptIn%nUBZnhw=OZd+UKI z9V%({Z`%9SNCs(|4xlEDsom;j1Q6vcGKt36dGVRw4RZAK7#8fyoihr*c?D91C0ySu z4xXPndU{k2{;A>+edo%-ZmAX}@LQ@eqsNIWR49tvds&6AS)AD+ zMeL&*z?(fGq`<1bD-E&E+*F!TJpU?0OpP>A{gUX+Y206&u!p|0&q&U-`>0v)bdr0B z;Vrf77sq}T)-8b0i9Y^63JT#%xesipprIP`jXXH?QNuw@^qks1o?`Srl77YOKa!q` zvjau%e@Xf^pX_lpb({L$r9u=mn~7WZ#~Wj_p3|;m)qVWRsdm7cMZzn$y~v{4WmqnC zUD6}nT1)hB3)%yHJ$388O1Say{&s%#{q#1VF>JGV^xgWlYYWv`3VGA7Y9sgQPh|F+ zyR>9A231nPH>`|%fv69v8x0N)9?O>m15cE4QVFkq#<7^f-eq#6<#SMp^ALhh*XzO) znB^SvD|Z2YqgdcAia%1=J@Tow>E#^|NSB@_|1J@({wkQuO5mpsnI zNQPQew(HLyB(Jg~r=vECgN6U*3?v~NVy)UtX^0~9IK2R*&46`Y1(>cIeb23>ywGVF za(8cUlg>4pI8Bu#wwqU^*x2EB&lPL+SC40v78)Ol%e&t+MvX8<4)o!vwa*Vuv61fV zYZdRBk%}vQKYR@dyLtan{OEP5_h4zRU~Kd%KCtOmQ*8k3eeqFj(&LY^?4Of0LREqclJdB%LMw<=NSsi+r;Z^*_vo8xE_ zJ%ou=4w%cunZY)Pdi7K$?jM&DQc+|kx){=WqQ1G?35!sS2SJ_GS+?IX>34en8dQ$< zJBcVBy$#_SJUNAH(&U{~S4=8JU?r7LEVq0RG7bYwvwdf$pUaNzAwSJQ-b&%MB+1vI zVtLnX&QFAitfuN10*2e}FTim<`O1l6>;e|CIAq`=!17SE;*_bDr7Nn0a0ie)B~9WE zj4bep)%;40C4c>q^vAYP)(?!dlY=6m4NN}R+F zzsi9PNlZ%FzXeF?xq(Yicq51KLavEZ`hT<=8L|{?&USg3F4=SMqYr_VpcV;lgctq7 zGJ`ZD%RgxoLB;o5)hQjwRGZ-x50e)A7XyI>tq+0$_HhD|VFEFIay`wp>{-}LsIjiv7BOHly8 zBUi)0tVl%IQ#ghWn~#JSj{fZ}nYuIfr7Ei93$kUye-%o|2XX^3lFOMxV4$Zf$EeUz zt}y@de!hQxJM4c7b;p1$ReXIDYX_fJNRcH+kGRo+9a4PWuX%Xx!R=kg211hNBgw4id%4x| zY!;{bT7!@`@bI&GDRcoYnMR4&d){t7_2gx6o+BoKG5BJwO7$pwoG1Ri>Fd3u83+{I z;fQ@DK@iF9QHE*p$>K1oL3G-b+k&oL)F`bUR}sVe?AMX|-eTZrfg&gatoYp!n3oJz zOpK>|`e7ACVB@GH-)}DEWt9@9Mr_Z4H?#D$uHQ;`7-M?7v7enCR(@y7tk|{GW8C|@ zazPUz8*6~Ly6>>-`WLNx-OM+AFY;WnS)k?O&AZEg<8Ce@Bhg>`$KoG+7Cpwv&hhf` zQmhTnKkXHiN_~#UHxxB5fYmx)aUQLKns7oxukaYe7sY>W=H~1}F2Mb4w**K;3F>XyJeEx8H*o9M z0#Zz)j@dn5GArG>W|*D_{%FG+N`1xQxoI2bf%wL6dSD(%9xDoHT2)Eca`H9OCW+(} zW{Z}|VY7y;hT*eJ+4y1Z@^!Xv)f)PkEk6h|#+H?$OAF##Z^W~P zL9U2a#A&xuV7&Nd6)z^RWciN!q+YK-*RpiRWbKR*l~)Fix;mMMc-W2_oxqQx1~Mv^ zKM-v3`=|nr$5>A-v}ayVT`BRm20k2Wv`oU%qU8wG0R0_c7eHeC1%g0%A5$v$?*(H( zlaOKQ<`H?>rR_5ky^LS-@#+eaVt^N!XtEost!7sj(1r<*?IT)tCEZXta85b9MM-`e zPoks8SJ0K!~nER;t;bcdcUhGhK@9xFVJ5#-+XR-ytKm>wLfHH>Zp;TFyZ{3 z6LzQv+mZhlyP1Y3$KR28!*c9SNwt3{m_vubjH!ULL*87tZN!-4)ZvN`t%s)oi)eQy zSb}%`XN#BBr9oFyVR@i%ULS3%n_U`6urcg7Z-~V)k9;&if>fd@qjT$!VVc?Om~U5m zH4quX9L#mJAz~s&=V^Tuy2eH+0o9VcA4S=KBqf9IsTlX|GvcDTfckmp)mdDcFLBwHHMB2OgI^{Wq@~i06$mI^HR0#AM zyl;`mNcs{S2OJ64$v1Dq{c06z&0o_>u;4wAe=32?R;wpEynD5eH{P7Qu?CW}FRq7k*j4U>PFmvJ1I9!b3sI z^JVNbW0b1XV%Z`F$>Sl}1y2d>n$Ne^)K)^G?9}(zg#ELA1r_axsQKPJRUF&{4>YR@ zM9mduuh4BjLI*Q;xLdm`Gb=f|%{9=2NO=hpzlTwg`&VKra1x*01nrQXwM1`(8G}aT zsUZ8r=BZGec99ptplY^-I;``+FZlq08lP@evW|!=C7`l|vNMWrZ2u<ep9AZ;$x@aqPqy)$O44CA^_t=yF^wdd>AYYc*~y3NyZs zT1zB$r}T!99)UjM&k4EXEq7SS5ENn^&Ce(AkR3ByTGcT9@In+rXddpv`ufE;qag6( z=zBn%fqT{DZ$+hz>u*tpZ>(%w_(@|U70B)0%KiNo z9UR|2^Y~#`UpryeFO1G5$F4*q#UWnOtzr?d18LsjDQn_ba7L#48H0mLn9VLWX5(9% zZ^l|)k`CICvA0NEQj8FK$dP6^j2!vV(ZL|HDPQma{7>(caWD zPlLF&r{m%29Q+$_ zb8u<&T12&7?Xx@p(pSevNV@Ek-j(_T6Yf!C*`+rh7K+s18#TdtklwT_Sif65V!(UV z-#issITVyJiXE%ply`)Jeb0tFKMddI6^#mrKmzgTO!nF>l^Z}Fx?o4i9PX;EV_NPs zSd8&~WjQ!WUX#U)_U!t&^8cdGeI8-~gg}~~P1B&Wb<0I~yc}nSaFbE1^s?*W;@E{R zYWDl3!Zc*8AYPczaRvw{cRdH>A?*l~My`hvr3YNRNe!JBHu{aKmI;olrd4F-9hp{uKj;d_VN34tyXnssg`H85_q&sfabUB2>}Lw z`8u^RSC90Ttz`Y4Qtv;+zqW^BROKlAZ$20J&Ec;p@zCzd=y=`hLB3xY=!83ZzfRWX z?F$`Cq3|D^lMMkxw0eH!J|(RsBIPprduzcJ175#Gqn3Tfta z{FRy|cF4ZxYS09hc!qpLU@C8XWskCnw`h3Ua-6kPbYPJC!q*hGyLx|RQP-R63tO7r zoTj`J^d!VeBrFz99+oeBf{D(NY;JWREuQf@AD+rtv#)+ukEWunppvnK`zm)0Py&-x zKcJ+Y9`JSA(H`239^L5otD*6|c%K{jjL_#NP`{R7j6CCKnUTZ;dTF>iW4gM-V>4oz zLG;tnn&>7PKeA<%&_mA<2SzJ`PoGD%u0Ca%pt(55?GAlXv0CH^4%nQtZufVeSg&vs zwrW7}r`_G28SS(-+xr1_duipz$|)a|s!SPUNvpnUeg_+-(DwPJ_buliP0i&Y|BI*p zX?Fi2(7gpL0GgI|UNo7>UPYcJ1dyw0`OoK}H>|755#OVa@~4X{OpO$M`Z~N~X)_62 zHMf#DsKvT(?Zw)%kzo&>nid)J6QNX?-cm65J-ffW5=FQOq$sq>K>SD4hHP&+?O!JG znDs#M$FyexGu;B6r9Wgb__b;a`&GIzuC_lvC(Hnjal?wq=P3#LpxC-Px6%h5s)W%T%q18)6^0iSPmP^U3jk zADy)Ik)|T%pHsJ<!(lc6kr0S7chI5E=J6a{u#QqsGMt)&|?z zbwuRZnNY}O6mewnA`d)G()5Dg&Vb_c#L^`v+$0Fpl;0UZo`D`$97*6!(l$V5! zZCv#+O=?NDI*GGv@(x(6kUay=JK+-a?HSxM7@#iWF3xGqo7_JkTy2YIt3HCI@`|>l70cdr-RF$WjR*U zwCp_(S3)0(*}<;nmQqXzv~-y_A+3}&DWxm=tmmKww-vC!59GEDz(1LX z|M@)^gZ(QQ#Ofn}@zP!S*{9!=!}{jf)E7fO(f?r_o zC8$P2MgHV+ylQDml^_r|2i4#51p=I7lZ)lHoEq{6%Bt`I~Lw@LGZw1=<>C8QQzIjV0`KF7jf1_h>GUM zC8{wjwv4quGlGhh!c~j!Bd&eeawsfidnS1aSyM7+Wr3N#eG7Nza4OMWKLcttq1)_QUn#dQ)9 z%~kFhGVT-jTeGf#g*;q#d%prX?~j@|K`7KrENMXSnYJxz@GAuI_qM|dDt{`>{x9fO z@>6gncXcnuxzk8~t)l)<1y&GZ;#Yk}Grh7U^TkXQo2Wic0$OQwZD^;R)Z8@`-|ENq5l#Qheyu;NLAg(b(< z16?tVP^B18Cc|8`z&pg2u<8P<=OGxjT7uVs6Yv&?U?`o;UPf6uoWLJ{F3f_r^_dtW z)Zi;#2jy5_pN9CQRkND^e$vntZw66po?Z)7=a!nDuh<2d?}lQsPvkq}SCRoLKvMnk zdGURS#aI{lX;Tr-4-GMJr_4HgAB!Re-T`b@F0D5l|cEV$&e ztZUsXo#bffz`j<1NBarIQ>52Oj5|q6!Q-ASbNp*23i}=_75Yo2D>QK*F1|QlWuvB7>!7+ngGx%1u=##@ zHKqM=hRV2-xW`*89*dG{*Js>B-*1A|J6l9*_}1Ttd=C1rj@r2IAz(T}V$y7iL$~LQ zF)$+zVpo~L#Ob4q$%B6>gMIj9bP4=eS__N5q1fb>+EKS)5O4HVB#I*hi6eZb+G}Q! zKZg?5TRHkluS1eKtE+?DkSIoWyf=`oXv<-U4vcereEW$?SvU!zADREja>9)xn4ab% zxA*Ff?AHEzhVQ$)8ghW)OxMK3Hl4RZ z*Fwd-J@&dIB)-%6z}y+54V{|?Ak}x7lj4#65qidW8!_^e1U2_xFY08Gks4u6^fc~mgsq1p5<>s2pn$>BnrxX-yQ!l0P2?hlu14)= zlFHiVtj)PWy|bNCu@(2eS^{uBfwA*Pz#@}^jsOzJdJ6Jjl{k|g2Dkd#=Lnsa={WW>b|G6X%xlm>G%8%$z~FFEn0dct ze+tk-SZ)-xs;)3Rzx@eQH$P*VG3G@5j?2j3atW3dB<`GIq2$gH>iz(10m1+1$N1b0 zAs^j08P_RqIIel#^kh3 zpRV|wCqB3u68jP&e{M5Iu&#PRnT@hu%K6$NdnTXO@>8n2yq4IR*TfvO3sw(L2KPhM zcFsK8YIA7)L z-l(-l=Qou{@uu1eMKpcs#5774D4S_{%yDV&;mt$G`a;bMsxa!-#NcJJ+Ga_$9rBVdeVKj6;I?gk;Fo#AF>i}t$^i>a1kJ)0xU@vW zR(E&T`}Cr_!l|Cur;L$$Cr~d?SCBBILV16BdD1eNL}oGn^_JcOs`ulBM+1 zFzML%qiY4G?_Dm?cy>Hx7*?CBUg!*EbmN7&31d+r>c5MoZVD=5@D0J^k9TX>G>>H# z-DqMi``IuPd6KiEn;>jmK?ZV53bH?v_9;9$o^@RxS1AMo+y&LNJ@{q1Ofe@!Z@%5>4WI96q zzVx8g!jtHq$>OB`rioAr4v+f3iKv0^=fxU65&XA+;cCuEJ<=+pMTw{a5kfhKW=6i4 ze1BaXW}eSf&Mw+!@%)ngn>U|U=Qf)#*YbK<#3zVnD&bJ#USzwpy81J2_0KYLqKxW) zkMjhl2$iJ)e5gSa&I-Sf_O?OD!GE%4pj9({znR38xFTXTPm!-1?kuzS6vD9JoPl~% z1C{*%%BEEF=m_GClXe{LjMNtK>H51u>yh|zW>3SNP4V<+%TfXBq(zRQdtj)6&yT)_ z)n@alCZtmK#!Ie=K||yoh=D0pBu@?4!$jLxhP*?IDl9J2q^r^Dt5nenuc_lJy*L*0 z@h8q%!oUxUExR~yK37yrr)O)8O1iXs`IrRk`rEgBrIzVigRU3k@#R(p5ONuGCQ~-N zv#%^Ws~wZqO5rg-8V`x^-EVjr-msQukK8OvVUfzr>ryJ@YYBMYFZL{P^j1xYAtQ4P z>PFYv@g|VE!Is&*{pQw;UDqN?QSSRI+D^1-oS5@5>6m*}Yaf0ZtCQe1rxDVybD5b0q)pO|hQ#?&9g8 zxdhvCNB<~F&p2q{6pk+)i;OGlXfma}v#=y@0xe!w@GfwqNZe|~T5v0vu!L^uTcQ)# z!~&OXKNZKz#oGzi7ZVTJNWx`Y+SExyhpWNc;T%M_vIy8;G|0y3X9e>4dgK8}%zBx| zqg6GW7nR57eF#XOJq#sA)=b0h_h+PR`V-h zUTU-8XC|^~Vj8Ted2{~V?8An;J2!X4x)ff@iN5yPdhYZFKRVXHrqFmMLyWZH6@d&s zawDWq(%q0xv5{kM)OAuOlBf5sKhFwDBLUfkQ z8Hp|#y<;(1KJeMI-WexS_lPW7e-g_bpD0RgZVn`HB_-;xG*u2>bW_RH zZKU?bPay12XWk=&m9jMjrjg`suRJD_sajT@ndN#dZAySGT}V*G(*-Kp2)%5qp1Acd zV>Zq&>T$5<8BPK>^hH89*dv3j&+VbfK_)Wv@pIoL^u0N~(WNN%(Ry_Qq*P!bKG%`ug(1HuUHSPBa63M3cZIeK-n2g6hf4zGqzZ0=7X< zUq(31+m>KE`#INbpO`@ev=7tZ&|pefb7O``%JH*D%arxM?H-97*z$j;jgcHQy5hb_ zkd1O~vVC%N?R80!<`)N&{)X_mbH`jb4C3`4&E2#w=yf-~ML)td!KCSzXigX2X|q-)_@ zJH2xv<&t-i^e)SPKc}%3m6uUeFbJVP9jy9$A4dR&SY`B?rUc?D(!v0CpQssKH&ww2R2H7A6 z?}a5xHS<*4f)v4PF1tatoMOR_S|C0RL-UFw-51@&${%$>S)dbdFRuCDb6*%}g%s6= zL?D3-oEjt_HeN%d!(RWfR60cNK%S?kcUyQp>nNqQvh zhOkp5e+ij8@qCgz1~l4-BEP2R$(mchQmg%$_H zj~ylr{3Gnj^|Bv*Ntv)dK0b*{{f;NKjO2iyQ>)`ewaa926$3^EoB*e%4ZSb4M|Aek zeJjHnDkGI*4+G5K!9Urls!Yj#V1Yk!eb_Uf^0a=d@mJ@r>ecGvT{BI)-i6(u!n%;x zWY;)DKRug%-$l#65z2|93wbM`_Bf{8Hk!@h!Z7Wmx()>%kijG3+?nDe2Z@CFg5dxt z&}dkKNDrj%zl#cXnl^fp!7}9YE8N!QEX+dz!(ZUCUBQFPN^3~)4=VEm0fSIYtzh@z zz#ks`nZA)QR}3{NxZFpmWJ6G&s|5;BO!ATYTcZBhRrn6HD3$y`o+|;~TQB>30%h1= z>NUS3#i_f?a#gh}<;M7lMoYyAqZR;3*~w_adlG~1-_4_t{Y;_ON(U-Wz;JZXjYNgl zsmW$gq|ZJf(WqUY==n#!{T9rrO8)>>N83{=oEcg))DYm_K@5-7~7js1j08 zPC(fcv6oX8W$U17z2I4dDM!#&uJ5At_(ykCV?fJNjadvM%FvwfI~FK-X=XhsH*M5y z6&&Dfu4P6n9r#=W)_{McTM*Enu=!6l-F*V9-}!s(nJS>#W)&VR0&*n%p(ufvboEUG zds^q)rxTQ+ERmP-l%INrbRCEk`Ex;cz3rStwIslujjOlGxAR%CmdgAZ4Dr1!>5}YU S>#E6Herlfg0Ot&4`~L&POUqOM diff --git a/py-modindex.html b/py-modindex.html index e6fae6511..b9a3505cc 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -7,9 +7,9 @@ - + - + diff --git a/search.html b/search.html index 157becd21..578e82055 100644 --- a/search.html +++ b/search.html @@ -8,9 +8,9 @@ - + - + diff --git a/searchindex.js b/searchindex.js index 5949e6dde..35e3e9049 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["Contribution/AMQPprimer", "Contribution/BasicIdea", "Contribution/Design", "Contribution/Development", "Contribution/Documentation", "Contribution/Evolution", "Contribution/Philosophy/AboutTime", "Contribution/Philosophy/Amdahl_Applied", "Contribution/Philosophy/CAP_Theorem_Applied", "Contribution/Philosophy/PDS_Algorithm", "Contribution/Philosophy/README", "Contribution/Philosophy/Sarracenia_Algoritmic_Designs", "Contribution/Philosophy/SundewDesign", "Contribution/Philosophy/index", "Contribution/deltas", "Contribution/index", "Contribution/man_page_template", "Contribution/mqtt_issues", "Contribution/on_part_assembly", "Contribution/v03", "Explanation/CommandLineGuide", "Explanation/Concepts", "Explanation/DeploymentConsiderations", "Explanation/DetectFileReady", "Explanation/DuplicateSuppression", "Explanation/FileCompletion", "Explanation/Glossary", "Explanation/History/Evolution", "Explanation/History/HPC_Mirroring_Use_Case", "Explanation/History/deployment_2018", "Explanation/History/index", "Explanation/History/mesh_gts", "Explanation/History/messages_v01", "Explanation/History/messages_v02", "Explanation/History/messages_v03", "Explanation/History/sr3_Announcement", "Explanation/History/talks/SarraIntro/README", "Explanation/Overview", "Explanation/SarraPluginDev", "Explanation/Sundew_Migration/filter_conversion", "Explanation/Sundew_Migration/index", "Explanation/Sundew_Migration/sundew_pull_migration", "Explanation/Sundew_Migration/sundew_sender_migration", "Explanation/index", "Explanation/sftps", "How2Guides/Admin", "How2Guides/Admin_Rabbit_Addendum", "How2Guides/Email_Ingesting_With_Sarracenia", "How2Guides/FlowCallbacks", "How2Guides/Hydro_Examples", "How2Guides/UPGRADING", "How2Guides/docker", "How2Guides/index", "How2Guides/source", "How2Guides/subscriber", "How2Guides/v2ToSr3", "Reference/code", "Reference/flowcb", "Reference/index", "Reference/sr3.1", "Reference/sr3_cpump.1", "Reference/sr3_credentials.7", "Reference/sr3_options.7", "Reference/sr3_post.1", "Reference/sr_post.7", "Tutorials/1_CLI_introduction", "Tutorials/2_CLI_with_flowcb_demo", "Tutorials/3_api_flow_demo", "Tutorials/4_api_moth_sub_demo", "Tutorials/5_api_moth_post_demo", "Tutorials/Install", "Tutorials/Setup_a_local_subscriber", "Tutorials/Setup_a_remote_subscriber", "Tutorials/Windows", "Tutorials/index", "_Footer", "_Sidebar", "api-documentation", "fr/CommentFaire/Addenda_Admin_Rabbit", "fr/CommentFaire/Admin", "fr/CommentFaire/Docker", "fr/CommentFaire/Exemples_Hydro", "fr/CommentFaire/FlowCallbacks", "fr/CommentFaire/Ingestion_de_email_avec_Sarracenia", "fr/CommentFaire/MiseANiveau", "fr/CommentFaire/index", "fr/CommentFaire/source", "fr/CommentFaire/subscriber", "fr/CommentFaire/v2ASr3", "fr/Contribution/AMQPprimer", "fr/Contribution/Design", "fr/Contribution/Documentation", "fr/Contribution/D\u00e9veloppement", "fr/Contribution/Id\u00e9eDeBase", "fr/Contribution/assemblage_on_part", "fr/Contribution/deltas", "fr/Contribution/index", "fr/Contribution/mod\u00e8le_de_page_man", "fr/Contribution/probl\u00e8mes_mqtt", "fr/Contribution/v03", "fr/Contribution/\u00c9volution", "fr/Explication/Aper\u00e7u", "fr/Explication/AssurerLaLivraison", "fr/Explication/Concepts", "fr/Explication/ConsiderationsDeployments", "fr/Explication/Glossaire", "fr/Explication/GuideLigneDeCommande", "fr/Explication/Histoire/Annoncements_v03", "fr/Explication/Histoire/Evolution", "fr/Explication/Histoire/HPC_mirroring_cas_dutilisation", "fr/Explication/Histoire/deploiement_2018", "fr/Explication/Histoire/index", "fr/Explication/Histoire/mesh_gts", "fr/Explication/Histoire/messages_v01", "fr/Explication/Histoire/messages_v02", "fr/Explication/Histoire/messages_v03", "fr/Explication/SarraPluginDev", "fr/Explication/StrategieDetectionFichiers", "fr/Explication/SupprimerLesDoublons", "fr/Explication/index", "fr/Explication/sftps", "fr/Reference/glossary", "fr/Reference/index", "fr/Reference/sr3.1", "fr/Reference/sr3_cpump.1", "fr/Reference/sr3_credentials.7", "fr/Reference/sr3_options.7", "fr/Reference/sr3_post.1", "fr/Reference/sr_post.7", "fr/Tutoriel/1_CLI_introduction", "fr/Tutoriel/2_CLI_with_flowcb_demo", "fr/Tutoriel/3_api_flow_demo", "fr/Tutoriel/4_api_moth_sub_demo", "fr/Tutoriel/5_api_moth_post_demo", "fr/Tutoriel/Installer", "fr/Tutoriel/Mettre_en_place_un_subscriber_distant", "fr/Tutoriel/Mettre_en_place_un_subscriber_local", "fr/Tutoriel/Windows", "fr/Tutoriel/index", "fr/index", "index"], "filenames": ["Contribution/AMQPprimer.rst", "Contribution/BasicIdea.rst", "Contribution/Design.rst", "Contribution/Development.rst", "Contribution/Documentation.rst", "Contribution/Evolution.rst", "Contribution/Philosophy/AboutTime.ipynb", "Contribution/Philosophy/Amdahl_Applied.ipynb", "Contribution/Philosophy/CAP_Theorem_Applied.ipynb", "Contribution/Philosophy/PDS_Algorithm.ipynb", "Contribution/Philosophy/README.rst", "Contribution/Philosophy/Sarracenia_Algoritmic_Designs.ipynb", "Contribution/Philosophy/SundewDesign.ipynb", "Contribution/Philosophy/index.rst", "Contribution/deltas.rst", "Contribution/index.rst", "Contribution/man_page_template.rst", "Contribution/mqtt_issues.rst", "Contribution/on_part_assembly.rst", "Contribution/v03.rst", "Explanation/CommandLineGuide.rst", "Explanation/Concepts.rst", "Explanation/DeploymentConsiderations.rst", "Explanation/DetectFileReady.rst", "Explanation/DuplicateSuppression.rst", "Explanation/FileCompletion.rst", "Explanation/Glossary.rst", "Explanation/History/Evolution.rst", "Explanation/History/HPC_Mirroring_Use_Case.rst", "Explanation/History/deployment_2018.rst", "Explanation/History/index.rst", "Explanation/History/mesh_gts.rst", "Explanation/History/messages_v01.rst", "Explanation/History/messages_v02.rst", "Explanation/History/messages_v03.rst", "Explanation/History/sr3_Announcement.rst", "Explanation/History/talks/SarraIntro/README.rst", "Explanation/Overview.rst", "Explanation/SarraPluginDev.rst", "Explanation/Sundew_Migration/filter_conversion.rst", "Explanation/Sundew_Migration/index.rst", "Explanation/Sundew_Migration/sundew_pull_migration.rst", "Explanation/Sundew_Migration/sundew_sender_migration.rst", "Explanation/index.rst", "Explanation/sftps.rst", "How2Guides/Admin.rst", "How2Guides/Admin_Rabbit_Addendum.rst", "How2Guides/Email_Ingesting_With_Sarracenia.rst", "How2Guides/FlowCallbacks.rst", "How2Guides/Hydro_Examples.rst", "How2Guides/UPGRADING.rst", "How2Guides/docker.rst", "How2Guides/index.rst", "How2Guides/source.rst", "How2Guides/subscriber.rst", "How2Guides/v2ToSr3.rst", "Reference/code.rst", "Reference/flowcb.rst", "Reference/index.rst", "Reference/sr3.1.rst", "Reference/sr3_cpump.1.rst", "Reference/sr3_credentials.7.rst", "Reference/sr3_options.7.rst", "Reference/sr3_post.1.rst", "Reference/sr_post.7.rst", "Tutorials/1_CLI_introduction.ipynb", "Tutorials/2_CLI_with_flowcb_demo.ipynb", "Tutorials/3_api_flow_demo.ipynb", "Tutorials/4_api_moth_sub_demo.ipynb", "Tutorials/5_api_moth_post_demo.ipynb", "Tutorials/Install.rst", "Tutorials/Setup_a_local_subscriber.rst", "Tutorials/Setup_a_remote_subscriber.rst", "Tutorials/Windows.rst", "Tutorials/index.rst", "_Footer.rst", "_Sidebar.rst", "api-documentation.rst", "fr/CommentFaire/Addenda_Admin_Rabbit.rst", "fr/CommentFaire/Admin.rst", "fr/CommentFaire/Docker.rst", "fr/CommentFaire/Exemples_Hydro.rst", "fr/CommentFaire/FlowCallbacks.rst", "fr/CommentFaire/Ingestion_de_email_avec_Sarracenia.rst", "fr/CommentFaire/MiseANiveau.rst", "fr/CommentFaire/index.rst", "fr/CommentFaire/source.rst", "fr/CommentFaire/subscriber.rst", "fr/CommentFaire/v2ASr3.rst", "fr/Contribution/AMQPprimer.rst", "fr/Contribution/Design.rst", "fr/Contribution/Documentation.rst", "fr/Contribution/D\u00e9veloppement.rst", "fr/Contribution/Id\u00e9eDeBase.rst", "fr/Contribution/assemblage_on_part.rst", "fr/Contribution/deltas.rst", "fr/Contribution/index.rst", "fr/Contribution/mod\u00e8le_de_page_man.rst", "fr/Contribution/probl\u00e8mes_mqtt.rst", "fr/Contribution/v03.rst", "fr/Contribution/\u00c9volution.rst", "fr/Explication/Aper\u00e7u.rst", "fr/Explication/AssurerLaLivraison.rst", "fr/Explication/Concepts.rst", "fr/Explication/ConsiderationsDeployments.rst", "fr/Explication/Glossaire.rst", "fr/Explication/GuideLigneDeCommande.rst", "fr/Explication/Histoire/Annoncements_v03.rst", "fr/Explication/Histoire/Evolution.rst", "fr/Explication/Histoire/HPC_mirroring_cas_dutilisation.rst", "fr/Explication/Histoire/deploiement_2018.rst", "fr/Explication/Histoire/index.rst", "fr/Explication/Histoire/mesh_gts.rst", "fr/Explication/Histoire/messages_v01.rst", "fr/Explication/Histoire/messages_v02.rst", "fr/Explication/Histoire/messages_v03.rst", "fr/Explication/SarraPluginDev.rst", "fr/Explication/StrategieDetectionFichiers.rst", "fr/Explication/SupprimerLesDoublons.rst", "fr/Explication/index.rst", "fr/Explication/sftps.rst", "fr/Reference/glossary.rst", "fr/Reference/index.rst", "fr/Reference/sr3.1.rst", "fr/Reference/sr3_cpump.1.rst", "fr/Reference/sr3_credentials.7.rst", "fr/Reference/sr3_options.7.rst", "fr/Reference/sr3_post.1.rst", "fr/Reference/sr_post.7.rst", "fr/Tutoriel/1_CLI_introduction.ipynb", "fr/Tutoriel/2_CLI_with_flowcb_demo.ipynb", "fr/Tutoriel/3_api_flow_demo.ipynb", "fr/Tutoriel/4_api_moth_sub_demo.ipynb", "fr/Tutoriel/5_api_moth_post_demo.ipynb", "fr/Tutoriel/Installer.rst", "fr/Tutoriel/Mettre_en_place_un_subscriber_distant.rst", "fr/Tutoriel/Mettre_en_place_un_subscriber_local.rst", "fr/Tutoriel/Windows.rst", "fr/Tutoriel/index.rst", "fr/index.rst", "index.rst"], "titles": ["AMQP - Primer for Sarracenia", "Basic Idea", "1 Strawman Design", "MetPX-Sarracenia Developer\u2019s Guide", "Documentation Standards", "Design Changes since Original (2015)", "It\u00b4s About Time", "Amdahl\u2019s Law Applied", "CAP Theorem Applied", "PDS Algorithmic Design", "<no title>", "Sarracenia Algorithmic Design", "Sundew Algorithmic Design", "Sarracenia Design Philosophy", "Discussion of File Modification Propagation", "Contributing", "SR3_TITLE", "MQTT Implementation Notes", "File Re-assembling", "Version 3 Refactor", "Command Line Guide", "General Sarracenia Concepts", "Deployment Considerations", "File Detection Strategies", "Duplicate Suppression", "Delivery Completion (inflight)", "Glossary", "History/Context of Sarracenia", "Case Study: HPC Mirroring", "Sarracenia Status January 2018", "History", "Mesh-Style Data Exchange for the WIS-GTS in 2019", "Message v01 Format", "Description of the message v02 protocol / format", "Changes Made to create v03", "Announcing Sr3", "<no title>", "Overview", "Sarracenia Programming Guide", "Sundew filter migration to sarracenia (PXATX)", "Sundew Migration Guide", "Sundew pull migration to sarracenia (PXATX)", "Sundew sender migration to sarracenia (PXATX)", "Explanation", "Why SFTP is More Often Chosen than FTPS", "Administering AMQP Data Pumps", "Administering Rabbitmq Adddendum", "Email Ingesting with Sarracenia (v2)", "Writing FlowCallback Plugins", "Using Plugins to Grab Hydrometric Data (v2)", "UPGRADE GUIDE", "Running MetPX via Docker", "HOWTOS", "Data Sources", "Subscriber Guide", "Porting V2 Plugins to Sr3", "Code Reference", "FlowCallback Reference", "Reference", "SR3", "SR_CPUMP", "SR3 CREDENTIALS", "SR3 OPTIONS", "Sr3_Post", "SR_post", "Downloading Using the Command Line", "Customize File handling with Callbacks.", "flow API Example", "A first Example using Sarracenia Moth API", "Posting from Python Code", "MetPX-Sarracenia Installation", "Server Admin: A Local Subscriber", "How to setup a Remote Subscriber", "Windows user manual", "Tutorials", "<no title>", "MetPX Sarracenia Wiki", "API Documentation", "Administration de Rabbitmq Adddendum", "Administration des pompes de donn\u00e9es AMQP", "Ex\u00e9cution de MetPX via Docker", "Utilisation de plugins pour r\u00e9cup\u00e9rer des donn\u00e9es hydrom\u00e9triques", "\u00c9criture de plugins FlowCallback", "Ingestion par e-mail avec Sarracenia", "GUIDE DE MISE A NIVEAU", "Comment Faire", "Sources de donn\u00e9es", "Guide de l\u2019abonn\u00e9", "Portage des plugins V2 vers Sr3", "AMQP - Introduction \u00e0 sarrac\u00e9nia", "1 Conception Strawman", "Normes de documentation", "Guide du d\u00e9veloppeur MetPX-Sarracenia", "Id\u00e9e de Base", "R\u00e9assemblage de fichiers", "Discussion sur la propagation de la modification de fichiers", "Contribuer \u00e0 Sarracenia", "SR3_TITRE", "Notes de mise en \u0153uvre MQTT", "Refactorisation de la version 3", "Changements de conception depuis l\u2019original (2015)", "Aper\u00e7u", "Assurer la livraison (inflight)", "Concepts g\u00e9n\u00e9raux de Sarracenia", "Consid\u00e9rations relatives au d\u00e9ploiement", "Glossaire", "Guide De Ligne De Commande", "Annonce de Sr3", "Histoire/Contexte de Sarracenia", "\u00c9tude de cas : Mise en miroir HPC", "Sarracenia Janvier 2018", "Histoire", "\u00c9change de donn\u00e9es de type maill\u00e9 pour le WIS-GTS en 2019", "Message v01 Format", "Description du protocole / format du message v02", "Modifications apport\u00e9es pour cr\u00e9er la v03", "Guide de programmation Sarracenia", "File Detection Strategies", "Suppression de Doublons", "Explication", "Pourquoi SFTP est plus souvent choisi que FTPS", "Traduction de terminologie", "R\u00e9f\u00e9rence", "SR3", "SR_CPUMP", "SR3 CREDENTIALS", "OPTIONS SR3", "Sr3_Post", "SR_post", "T\u00e9l\u00e9chargement en utilisant la console", "Personnalisez la gestion des fichiers avec les rappels.", "Exemple d\u2019API de flux", "Un premier exemple utilisant l\u2019API Sarracenia Moth", "Publication \u00e0 partir du code Python", "Installation de MetPX Sarracenia", "Comment configurer un abonn\u00e9 distant", "Administrateur du serveur : un abonn\u00e9 local", "Manuel de l\u2019utilisateur Windows", "Tutoriel", "S\u00b4abonner et r\u00e9pliquer", "Subscribe and Replicate 3"], "terms": {"thi": [0, 1, 2, 3, 4, 6, 7, 11, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 77, 78, 79, 82, 86, 88, 92, 106, 116, 120, 121, 126, 127, 129, 134, 140], "short": [0, 2, 3, 20, 29, 44, 45, 47, 56, 59, 65], "rather": [0, 2, 3, 4, 6, 8, 9, 14, 19, 20, 21, 22, 23, 27, 28, 29, 31, 34, 38, 44, 45, 50, 53, 54, 55, 57, 59, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 117, 133], "dens": [0, 89], "brief": [0, 31, 54, 89], "explain": [0, 3, 4, 19, 20, 21, 39, 45, 60, 67, 70], "motiv": [0, 3, 9, 31, 34, 37, 55, 88, 89, 101, 112, 115], "metpx": [0, 1, 2, 4, 15, 16, 19, 21, 23, 25, 26, 27, 28, 31, 35, 37, 38, 39, 41, 42, 45, 46, 48, 50, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 68, 72, 73, 74, 77, 78, 79, 82, 84, 85, 88, 89, 90, 91, 93, 96, 97, 99, 101, 102, 103, 105, 107, 108, 109, 112, 116, 117, 121, 123, 124, 125, 126, 127, 128, 129, 132, 135, 138, 139, 140], "pump": [0, 1, 2, 11, 19, 22, 24, 25, 27, 29, 31, 37, 38, 41, 51, 52, 55, 57, 59, 62, 64, 65, 68, 70, 80, 86, 93, 106, 119, 121, 126, 132], "essenti": [0, 2, 6, 19, 27, 28, 31, 44, 45, 64, 70], "so": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 73, 77, 82, 84, 86, 87, 92, 104, 117, 127, 129, 130, 131], "some": [0, 1, 2, 3, 4, 6, 9, 10, 11, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 37, 38, 39, 42, 44, 45, 46, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69, 70, 77, 78, 82, 92, 106], "understand": [0, 3, 4, 6, 8, 12, 19, 20, 21, 22, 26, 28, 29, 31, 38, 44, 45, 53, 55, 63, 64, 66], "veri": [0, 1, 2, 3, 4, 5, 9, 11, 12, 14, 17, 19, 20, 23, 24, 26, 27, 29, 30, 31, 37, 38, 39, 41, 44, 45, 50, 52, 54, 56, 57, 62, 63, 64, 65, 66, 77, 85], "help": [0, 1, 3, 4, 5, 6, 19, 21, 28, 31, 37, 38, 45, 48, 50, 53, 54, 55, 56, 57, 59, 62, 65, 68, 75, 77, 82, 84, 87, 88, 92, 123], "vast": [0, 21, 31, 89, 103], "interest": [0, 1, 2, 6, 14, 19, 20, 21, 22, 26, 28, 31, 37, 38, 46, 49, 53, 54, 56, 57, 60, 62, 64, 68, 77], "": [0, 1, 2, 4, 5, 8, 9, 11, 12, 14, 15, 16, 19, 20, 21, 23, 24, 26, 27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 97, 99, 101, 102, 103, 105, 106, 108, 109, 110, 112, 113, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137], "own": [0, 1, 2, 3, 11, 12, 14, 19, 20, 21, 22, 26, 28, 29, 31, 32, 33, 38, 42, 45, 53, 54, 55, 57, 62, 65, 68, 74], "right": [0, 2, 3, 4, 7, 8, 12, 14, 19, 20, 21, 23, 25, 28, 29, 39, 41, 42, 48, 53, 55, 57, 62, 63, 65, 70, 73, 77, 106, 117], "No": [0, 1, 2, 3, 21, 22, 29, 30, 38, 44, 47, 49, 50, 54, 64, 65, 66, 67, 70, 81, 83, 92, 130, 131], "attempt": [0, 3, 19, 20, 21, 22, 31, 38, 41, 54, 55, 56, 57, 72, 87, 106, 116, 129], "made": [0, 2, 3, 11, 12, 14, 20, 21, 26, 27, 29, 30, 31, 37, 39, 46, 53, 55, 62, 63, 66, 70, 127], "all": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73, 77, 78, 79, 81, 83, 88, 92, 106, 112, 116, 121, 131, 132, 134], "here": [0, 2, 3, 4, 7, 11, 20, 21, 25, 26, 27, 28, 31, 32, 33, 34, 38, 39, 41, 42, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 77, 78, 79, 82, 86, 92, 105, 130, 133, 134], "just": [0, 1, 2, 3, 6, 7, 8, 11, 12, 14, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 38, 39, 41, 42, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 68, 70, 77, 79, 82, 86, 87, 88, 89, 90, 92, 93, 99, 103, 104, 106, 109, 113, 114, 116, 117, 120, 130, 134], "provid": [0, 1, 2, 3, 4, 8, 9, 11, 19, 20, 21, 22, 24, 26, 27, 28, 29, 31, 33, 37, 38, 39, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 68, 70, 77, 78, 87, 88, 92, 106, 116, 130], "context": [0, 2, 4, 8, 20, 21, 28, 30, 37, 41, 49, 62, 66, 81, 90, 91, 96, 101, 103, 106, 109, 110, 111, 119, 126, 130], "introduc": [0, 11, 21, 23, 26, 28, 29, 31, 63, 64, 65, 67], "onli": [0, 1, 2, 3, 4, 7, 8, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68, 70, 77, 78, 79, 82, 105, 108, 109, 117, 132], "need": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 14, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 31, 32, 33, 36, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 77, 79, 82, 88, 92, 116, 117, 126, 130, 134], "For": [0, 1, 2, 3, 4, 7, 9, 11, 14, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 34, 37, 38, 41, 42, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 66, 70, 71, 126], "more": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 34, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 53, 55, 56, 57, 59, 62, 63, 64, 66, 68, 70, 71, 72, 73, 77, 79, 84, 86, 87, 88, 92, 109], "inform": [0, 1, 2, 3, 4, 6, 20, 21, 31, 35, 38, 41, 42, 44, 45, 46, 47, 48, 50, 53, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 69, 70, 72, 73, 77, 78, 79, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 103, 104, 105, 106, 107, 109, 112, 116, 120, 123, 124, 125, 126, 127, 128, 130, 131, 133, 134, 135, 136, 137], "itself": [0, 2, 3, 6, 11, 12, 14, 20, 21, 22, 23, 27, 28, 31, 37, 38, 39, 44, 48, 49, 53, 54, 55, 56, 57, 59, 62, 66, 77], "set": [0, 1, 2, 7, 11, 12, 14, 16, 19, 23, 24, 25, 26, 28, 29, 31, 32, 33, 37, 39, 41, 44, 45, 47, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 64, 65, 66, 67, 68, 70, 71, 73, 77, 79, 81, 82, 83, 84, 86, 87, 88, 92, 99, 106, 126, 127, 129, 130, 131, 134, 136], "link": [0, 2, 4, 8, 14, 19, 20, 21, 26, 27, 28, 29, 31, 38, 47, 49, 50, 56, 57, 62, 77, 81, 83, 106, 109, 126, 129], "maintain": [0, 2, 21, 26, 28, 31, 37, 44, 45, 49, 50, 55], "web": [0, 1, 3, 4, 6, 20, 21, 22, 27, 29, 31, 35, 37, 38, 44, 45, 46, 53, 57, 59, 63, 64, 68, 71, 78, 79, 86, 89, 90, 91, 92, 93, 101, 103, 104, 106, 107, 110, 111, 112, 116, 120, 123, 126, 127, 128, 132, 136, 139, 140], "site": [0, 1, 2, 3, 4, 6, 14, 20, 21, 22, 27, 28, 29, 31, 35, 37, 38, 41, 44, 49, 53, 54, 57, 59, 62, 70, 73, 81, 86, 89, 90, 91, 92, 93, 95, 101, 103, 104, 106, 107, 109, 110, 111, 112, 116, 120, 123, 126, 134, 139, 140], "search": [0, 8, 11, 12, 20, 27, 28, 31, 38, 41, 45, 49, 53, 54, 55, 57, 62, 77, 140], "engin": [0, 1, 2, 9, 12, 21, 26, 27, 31, 37, 44, 45, 54, 57, 69, 103, 119, 120, 133], "also": [0, 1, 2, 3, 4, 7, 9, 12, 14, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 37, 38, 39, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 65, 68, 70, 71, 73, 77, 92, 106], "reveal": [0, 44, 45], "wealth": 0, "materi": [0, 12, 26, 29, 36, 55], "univers": [0, 2, 54], "messag": [0, 1, 2, 3, 4, 8, 11, 12, 14, 16, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 34, 35, 37, 39, 41, 42, 45, 47, 48, 49, 50, 51, 54, 55, 56, 58, 59, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 74, 77, 79, 80, 81, 82, 83, 84, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 101, 102, 103, 104, 107, 108, 109, 111, 115, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133, 134, 135, 136, 138], "pass": [0, 1, 2, 3, 8, 11, 19, 20, 23, 28, 31, 37, 38, 44, 45, 46, 48, 49, 53, 54, 55, 56, 57, 62, 63, 65, 66, 67, 68, 77, 78, 82, 83, 85, 86, 88, 90, 91, 92, 96, 99, 103, 104, 106, 113, 117, 120, 123, 125, 126, 130, 131, 136], "protocol": [0, 1, 2, 3, 4, 19, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 34, 35, 37, 38, 39, 41, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 58, 62, 63, 66, 67, 68, 72, 77, 78, 79, 82, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 115, 116, 117, 119, 120, 122, 126, 127, 130, 131, 132, 135], "mani": [0, 2, 3, 4, 7, 8, 9, 11, 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 40, 42, 44, 45, 50, 53, 54, 55, 56, 57, 62, 63, 64, 65, 69, 70, 77, 92], "differ": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 34, 38, 39, 41, 44, 45, 48, 49, 50, 53, 54, 56, 57, 59, 60, 62, 63, 64, 65, 66, 68, 71, 77, 79, 82, 92, 128], "option": [0, 2, 19, 21, 22, 23, 24, 25, 29, 32, 33, 37, 39, 41, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 56, 57, 58, 60, 61, 66, 68, 69, 70, 73, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 99, 102, 103, 104, 110, 113, 114, 117, 120, 122, 124, 125, 128, 129, 130, 132, 133, 134], "support": [0, 2, 3, 4, 5, 16, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 35, 37, 38, 39, 41, 47, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 67, 70, 77, 83, 87, 88, 90, 92, 97, 99, 102, 104, 106, 108, 109, 112, 116, 117, 120, 124, 126, 128, 134], "pattern": [0, 2, 9, 12, 18, 23, 26, 28, 38, 45, 50, 54, 56, 57, 63, 64, 67, 77, 121, 126, 131], "specifi": [0, 2, 19, 20, 21, 29, 31, 32, 33, 38, 41, 45, 47, 49, 50, 54, 56, 57, 59, 61, 62, 63, 64, 65, 68, 70, 72, 77, 83, 84, 87, 106, 116], "small": [0, 1, 2, 4, 6, 7, 14, 19, 20, 22, 23, 24, 28, 29, 31, 38, 44, 45, 50, 53, 54, 56, 62, 64, 71, 77, 79], "subset": [0, 2, 3, 8, 12, 14, 19, 20, 28, 31, 37, 54, 56, 57, 59, 62, 64, 68], "import": [0, 2, 3, 4, 7, 8, 9, 11, 12, 18, 19, 21, 24, 26, 28, 29, 31, 37, 38, 39, 42, 45, 46, 48, 50, 53, 54, 55, 56, 57, 62, 64, 65, 66, 67, 68, 69, 70, 73, 77, 78, 79, 81, 82, 84, 86, 88, 89, 90, 91, 92, 93, 94, 99, 101, 103, 104, 105, 108, 109, 110, 112, 116, 117, 120, 123, 126, 128, 129, 130, 131, 132, 133, 134, 137], "element": [0, 1, 2, 3, 11, 19, 20, 31, 38, 44, 48, 50, 53, 55, 56, 59, 62, 64, 66, 68], "develop": [0, 2, 4, 8, 9, 10, 15, 19, 20, 27, 28, 29, 31, 35, 37, 38, 42, 46, 47, 49, 55, 56, 62, 70, 77, 106, 109, 140], "wa": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 14, 18, 19, 20, 22, 23, 25, 26, 27, 28, 29, 30, 32, 33, 34, 37, 38, 39, 42, 44, 45, 47, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 71, 72, 73, 77, 92, 130], "possibl": [0, 1, 2, 3, 7, 11, 14, 19, 20, 23, 29, 31, 32, 33, 34, 37, 39, 44, 45, 46, 53, 54, 55, 62, 63, 70, 79, 86, 87, 88, 89, 90, 92, 93, 95, 99, 101, 103, 106, 109, 112, 113, 114, 117, 120, 123, 126, 127, 132, 134], "method": [0, 1, 2, 3, 4, 8, 11, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 29, 31, 37, 38, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 61, 62, 64, 67, 68, 69, 70, 77, 78, 79, 91, 92, 117, 118, 126, 128, 131, 132, 133], "ar": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 44, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 72, 73, 77, 82, 83, 87, 92, 106, 116, 117, 120, 123, 124, 128, 134], "gener": [0, 1, 2, 3, 4, 8, 14, 19, 20, 22, 23, 24, 27, 28, 29, 31, 37, 38, 39, 41, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 77, 92, 106], "easili": [0, 1, 2, 5, 7, 19, 20, 21, 22, 23, 26, 27, 28, 31, 34, 37, 38, 42, 44, 45, 47, 53, 56, 59, 64, 69, 73, 77], "understood": [0, 2, 20, 21, 38, 50], "order": [0, 1, 2, 3, 8, 9, 12, 14, 20, 21, 22, 23, 25, 28, 31, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 53, 54, 55, 56, 62, 63, 64, 70, 77, 81, 109, 128], "maxim": [0, 1, 2, 8, 29, 37, 86, 87, 90, 105, 106, 109, 126], "potenti": [0, 2, 12, 19, 24, 31, 38, 45, 49, 53, 54, 64, 66], "interoper": [0, 2, 26, 30, 34, 54], "alon": [0, 2, 12, 31, 42, 44, 45, 46, 57], "mai": [0, 1, 2, 3, 4, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 37, 38, 39, 42, 44, 45, 48, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 68, 70, 73, 77, 78, 79, 81, 83, 84, 86, 87, 88, 90, 91, 92, 93, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 121, 123, 124, 126, 127, 128, 129, 131, 132, 134], "insuffici": [0, 2], "enough": [0, 1, 2, 3, 4, 6, 7, 14, 19, 20, 24, 28, 29, 31, 34, 37, 38, 42, 45, 54, 56, 62, 63, 65, 129], "exampl": [0, 2, 3, 4, 12, 16, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 34, 37, 38, 39, 44, 45, 46, 47, 50, 53, 54, 56, 57, 60, 61, 62, 63, 65, 69, 70, 71, 72, 74, 77, 79, 81, 83, 87, 88, 92, 97, 99, 106, 116, 123, 124, 126, 127, 128, 129, 138], "when": [0, 1, 2, 6, 7, 8, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 77, 87, 133], "via": [0, 2, 3, 14, 16, 19, 20, 22, 28, 29, 31, 38, 45, 50, 53, 54, 55, 56, 57, 60, 62, 63, 68, 70, 72, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 95, 97, 99, 101, 104, 106, 109, 110, 112, 113, 114, 116, 117, 124, 126, 127, 129, 132, 134, 135], "number": [0, 1, 3, 6, 8, 9, 11, 12, 14, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 37, 38, 42, 45, 48, 49, 53, 54, 56, 57, 62, 63, 64, 65, 66, 67, 70, 77, 92, 109, 116, 128, 129, 131, 134], "choic": [0, 2, 11, 12, 14, 19, 20, 21, 23, 25, 31, 37, 38, 42, 44, 45, 46, 53, 56, 62, 77], "abov": [0, 2, 3, 7, 18, 19, 20, 21, 22, 23, 24, 28, 31, 38, 39, 44, 45, 48, 49, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 68, 69, 71, 77, 86, 116], "beyond": [0, 1, 2, 8, 11, 20, 28, 37, 38, 44, 57, 64, 66, 68], "authent": [0, 2, 3, 4, 20, 21, 22, 31, 44, 45, 46, 53, 56, 57, 61, 62, 63, 72, 77, 78, 79, 91, 92], "anonym": [0, 2, 3, 20, 21, 31, 38, 45, 46, 54, 56, 59, 61, 62, 65, 66, 67, 68, 72, 77, 78, 79, 87, 89, 90, 92, 103, 106, 112, 116, 123, 125, 126, 129, 130, 131, 132, 135], "signal": [0, 2, 19, 37, 45, 47, 49, 79, 81, 83, 89, 90, 99, 101, 106, 117, 129, 134], "file": [0, 1, 2, 3, 4, 5, 9, 12, 15, 16, 19, 21, 22, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 58, 59, 60, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 79, 81, 82, 83, 84, 88, 91, 92, 95, 97, 99, 101, 103, 104, 105, 108, 109, 110, 112, 113, 114, 116, 119, 121, 124, 126, 127, 130, 131, 132, 133, 134, 135, 136], "transfer": [0, 1, 3, 8, 9, 11, 14, 19, 21, 22, 23, 24, 25, 27, 28, 29, 31, 32, 33, 37, 45, 48, 49, 50, 53, 54, 55, 57, 58, 62, 63, 64, 65, 66, 67, 70, 72, 77, 82, 84, 87, 88, 93, 99, 101, 102, 109, 119, 130, 131, 134], "ha": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 34, 35, 36, 37, 38, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 70, 71, 77, 78, 79, 82, 88, 90, 92, 104, 130], "complet": [0, 1, 2, 3, 4, 7, 8, 12, 14, 19, 20, 21, 22, 23, 24, 28, 29, 31, 32, 33, 35, 37, 38, 43, 45, 46, 48, 50, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 71, 72, 77, 82, 84, 88, 92, 95, 99, 101, 102, 103, 104, 106, 107, 113, 114, 116, 117, 123, 126, 127, 128, 129, 130, 131, 135], "permiss": [0, 1, 2, 20, 21, 22, 25, 29, 45, 46, 53, 54, 55, 56, 57, 62, 64, 71, 72, 77, 78, 79, 86, 102, 104, 106, 110, 126, 128, 135, 136], "bit": [0, 1, 2, 3, 5, 14, 19, 20, 21, 23, 44, 45, 54, 56, 57, 62, 64, 71, 77, 87, 89, 90, 92, 93, 95, 106, 126, 128, 136], "suffix": [0, 2, 3, 20, 23, 25, 32, 33, 38, 39, 45, 48, 54, 56, 57, 59, 62, 66, 77, 79, 82, 87, 89, 90, 92, 96, 102, 106, 113, 114, 116, 117, 126, 130], "prefix": [0, 2, 3, 19, 20, 23, 25, 27, 31, 32, 33, 38, 45, 48, 50, 56, 57, 62, 63, 64, 66, 70, 71, 77, 117, 136], "convent": [0, 2, 5, 14, 19, 20, 21, 23, 25, 27, 31, 38, 41, 46, 48, 49, 54, 55, 56, 57, 62, 65, 66, 68, 70, 77, 78, 79, 81, 82, 88, 89, 90, 95, 96, 99, 100, 102, 103, 108, 112, 116, 126, 129, 130, 132, 134], "text": [0, 2, 3, 8, 9, 11, 12, 19, 20, 45, 53, 54, 56, 61, 64, 69, 77, 79, 86, 87, 89, 90, 92, 99, 106, 125, 128, 133], "binari": [0, 2, 3, 4, 14, 19, 20, 24, 31, 37, 38, 44, 53, 54, 56, 57, 61, 62, 70, 91, 106, 112, 116, 125], "agre": [0, 2, 23, 25, 30, 44, 55], "simpli": [0, 2, 16, 20, 31, 42, 44, 45, 53, 57, 60, 61, 64, 75, 79], "ietf": [0, 2, 44, 56, 64, 89, 90, 120, 128], "rfc": [0, 2, 44, 47, 64, 83, 89, 90, 120, 128], "959": [0, 2, 89, 90], "similar": [0, 2, 3, 8, 19, 20, 21, 26, 31, 37, 39, 42, 44, 49, 50, 53, 54, 55, 57, 59, 62, 64, 65, 68], "procedur": [0, 2, 3, 4, 57, 70], "without": [0, 1, 2, 3, 8, 9, 11, 14, 19, 20, 21, 22, 23, 25, 26, 28, 29, 31, 37, 39, 41, 44, 45, 46, 53, 54, 56, 57, 62, 63, 64, 65, 66, 67, 70, 72, 74, 77, 92, 130, 131], "incomplet": [0, 2, 20, 24, 25, 38, 70, 102, 106, 116], "The": [0, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 34, 35, 36, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 72, 73, 77, 79, 83, 92, 106, 121, 123, 124, 134], "intent": [0, 14, 28, 31, 38, 47, 48, 53, 54, 56, 64, 66, 70, 77, 79, 82, 83, 86, 87, 88, 89, 91, 95, 109, 112, 116, 128, 130, 134], "layer": [0, 1, 2, 3, 14, 19, 21, 22, 31, 36, 37, 38, 45, 54, 62, 64, 93, 126], "top": [0, 3, 11, 20, 22, 23, 29, 38, 41, 54, 55, 59, 62, 63, 66, 70], "minimum": [0, 1, 4, 11, 14, 20, 23, 25, 29, 31, 37, 57, 62, 64, 89, 91, 93, 95, 102, 103, 106, 110, 112, 117, 126, 127, 128], "amount": [0, 3, 11, 12, 20, 21, 28, 31, 34, 41, 44, 70], "achiev": [0, 1, 2, 7, 8, 19, 22, 28, 31, 37, 54, 64], "meaning": 0, "standard": [0, 1, 2, 3, 7, 14, 15, 19, 20, 21, 23, 26, 27, 30, 34, 37, 38, 44, 45, 46, 50, 51, 53, 54, 55, 59, 61, 62, 63, 66, 68, 71, 73, 78, 80, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 103, 105, 106, 108, 111, 115, 116, 117, 119, 120, 121, 123, 125, 126, 127, 130, 132, 136, 137], "wire": [0, 2, 26, 64, 105], "remov": [0, 2, 3, 5, 9, 16, 19, 20, 21, 23, 26, 28, 29, 32, 36, 37, 38, 39, 41, 42, 45, 48, 50, 55, 56, 57, 59, 60, 62, 63, 64, 66, 68, 70, 72, 77, 79, 87, 92, 97, 99, 106, 110, 123, 128, 130, 132, 134], "broker": [0, 1, 11, 17, 19, 21, 25, 26, 29, 31, 34, 35, 38, 39, 41, 46, 47, 48, 49, 50, 51, 53, 54, 56, 57, 59, 60, 61, 64, 65, 66, 67, 68, 69, 70, 71, 72, 77, 78, 79, 81, 82, 83, 84, 86, 87, 89, 99, 103, 104, 105, 112, 116, 121, 123, 124, 125, 128, 129, 131, 132, 133, 134, 135, 136], "As": [0, 1, 2, 3, 6, 7, 9, 11, 12, 19, 20, 22, 23, 27, 28, 29, 31, 36, 37, 38, 39, 42, 44, 45, 46, 48, 53, 54, 55, 56, 57, 62, 63, 64, 65, 66], "kei": [0, 2, 3, 4, 11, 12, 20, 21, 22, 24, 31, 33, 34, 41, 44, 45, 46, 47, 49, 50, 53, 56, 57, 61, 68, 72, 77, 79, 81, 83, 89, 91, 92, 118, 135], "fundament": [0, 2, 7, 8, 19, 23, 37, 44, 55], "earlier": [0, 2, 3, 31, 39, 70], "rel": [0, 2, 6, 11, 14, 20, 21, 24, 27, 29, 31, 32, 33, 37, 38, 44, 48, 54, 55, 56, 57, 62, 63, 64, 66, 68, 77, 88, 89, 96, 101, 106, 113, 114, 119, 126], "controversi": [0, 2], "assum": [0, 2, 3, 4, 6, 7, 8, 9, 11, 19, 20, 23, 25, 31, 32, 33, 44, 45, 53, 54, 56, 57, 59, 62, 63, 64, 65, 68, 77, 90, 92, 109], "pre": [0, 3, 9, 11, 14, 19, 26, 28, 29, 31, 48, 54, 56, 57, 64, 65, 77, 82, 92, 95, 128], "free": [0, 2, 26, 27, 31, 37, 56, 73], "rabbitmq": [0, 2, 3, 16, 20, 22, 26, 27, 31, 35, 38, 47, 49, 50, 51, 52, 54, 55, 56, 60, 61, 62, 67, 68, 69, 70, 71, 77, 80, 81, 83, 84, 85, 87, 88, 89, 90, 92, 97, 104, 105, 106, 107, 108, 112, 116, 124, 125, 126, 131, 132, 133, 134, 136], "apach": [0, 1, 2, 20, 21, 22, 26, 31, 37, 45, 46, 78, 79, 89, 90, 93, 101, 103, 104, 105, 106, 112], "qpid": [0, 19, 26, 55, 56, 77, 88, 89, 99, 105], "often": [0, 2, 3, 12, 19, 20, 21, 22, 23, 26, 30, 38, 43, 45, 48, 53, 54, 55, 56, 57, 60, 62, 77], "refer": [0, 1, 2, 3, 7, 8, 19, 20, 21, 22, 26, 27, 29, 30, 36, 38, 39, 41, 48, 50, 54, 55, 59, 62, 63, 64, 65, 77, 82, 84, 87, 88, 89, 91, 116, 126, 140], "post": [0, 1, 3, 5, 14, 16, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 31, 32, 33, 34, 37, 38, 39, 41, 42, 45, 47, 48, 49, 50, 53, 54, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 77, 79, 81, 82, 83, 84, 85, 86, 87, 89, 95, 99, 101, 103, 108, 109, 110, 112, 113, 114, 116, 117, 119, 121, 123, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135], "could": [0, 2, 3, 6, 7, 11, 12, 14, 16, 19, 20, 21, 22, 24, 26, 28, 31, 32, 35, 38, 39, 42, 44, 45, 46, 49, 50, 53, 54, 55, 56, 57, 60, 62, 63, 64, 70, 73, 77], "inter": [0, 2, 22, 32, 33, 45, 57, 90, 104], "oper": [0, 1, 2, 3, 8, 11, 12, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 32, 33, 37, 38, 41, 44, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 68, 70, 73, 77, 78, 79, 82, 84, 109, 129, 130, 134], "well": [0, 1, 2, 3, 4, 6, 11, 12, 19, 20, 21, 22, 23, 27, 28, 29, 31, 37, 44, 45, 46, 48, 49, 53, 54, 55, 56, 57, 62, 63, 64, 66, 68, 77, 82, 86], "In": [0, 2, 3, 4, 5, 6, 7, 8, 9, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 34, 35, 36, 37, 38, 39, 42, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68, 70, 72, 77, 88, 92, 130], "prior": [0, 2, 3, 11, 20, 22, 23, 25, 26, 27, 29, 31, 48, 50, 56, 57, 62, 63, 66, 77], "actor": [0, 2], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 77, 79, 92, 106, 116, 117, 124, 127, 130, 133, 134], "defin": [0, 2, 3, 11, 12, 19, 20, 21, 22, 26, 29, 31, 34, 37, 38, 39, 41, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 68, 73, 77, 132], "commun": [0, 2, 21, 22, 28, 29, 31, 35, 44, 49, 50, 53, 56, 62, 77, 79, 86, 87, 89, 90, 92, 93, 102, 103, 106, 107, 109, 110, 112, 115, 116, 117, 118, 120, 123, 126], "publish": [0, 2, 3, 11, 19, 20, 21, 22, 23, 26, 28, 31, 38, 39, 45, 49, 53, 54, 55, 56, 57, 58, 62, 64, 69, 77, 79, 86, 88, 89, 92, 103, 106, 117, 127, 128], "notif": [0, 1, 2, 3, 16, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 31, 32, 37, 39, 48, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 72, 77, 82, 84, 86, 87, 88, 89, 90, 92, 93, 96, 97, 99, 101, 103, 104, 106, 108, 109, 110, 112, 113, 117, 119, 121, 124, 126, 127, 128, 135], "accumul": [0, 3, 20, 28, 45, 54, 57, 65, 66, 67, 79, 87, 89, 92, 106, 126, 130, 131], "bind": [0, 2, 3, 11, 16, 21, 22, 38, 45, 47, 49, 54, 56, 57, 59, 60, 62, 64, 65, 66, 67, 72, 74, 77, 79, 81, 83, 87, 92, 116, 123, 124, 129, 130, 131, 132, 135], "between": [0, 1, 2, 3, 6, 7, 8, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 37, 38, 39, 41, 44, 45, 46, 47, 48, 53, 56, 57, 62, 63, 66, 67, 77, 82], "two": [0, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 19, 20, 21, 22, 23, 24, 26, 28, 29, 31, 32, 33, 35, 38, 39, 41, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 60, 62, 63, 64, 66, 68, 77, 92], "user": [0, 1, 3, 4, 7, 8, 14, 16, 18, 20, 22, 23, 26, 28, 29, 31, 37, 38, 41, 42, 44, 46, 47, 48, 49, 50, 51, 54, 56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 77, 78, 79, 81, 83, 86, 87, 89, 90, 92, 94, 95, 103, 106, 116, 123, 124, 125, 127, 128, 129, 130, 131, 134, 135, 136, 140], "declar": [0, 2, 3, 16, 19, 21, 29, 38, 39, 45, 47, 48, 49, 54, 55, 56, 57, 59, 60, 63, 65, 66, 67, 68, 69, 70, 77, 79, 81, 83, 87, 92, 97, 103, 116, 123, 124, 127, 130, 131, 132], "drop": [0, 1, 2, 3, 12, 16, 19, 20, 21, 24, 37, 42, 60, 62, 66, 68, 93, 99, 130], "move": [0, 1, 2, 3, 6, 19, 20, 21, 23, 27, 29, 37, 38, 45, 47, 48, 50, 55, 56, 57, 62, 63, 66, 77, 82, 101, 130], "make": [0, 1, 2, 3, 4, 6, 7, 10, 11, 14, 18, 19, 20, 21, 22, 26, 28, 29, 31, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 49, 50, 51, 53, 54, 55, 56, 57, 60, 62, 63, 64, 67, 68, 70, 77, 83, 86, 91, 92, 95], "underpin": 0, "pub": [0, 20, 26, 27, 31, 37, 41, 53, 59, 60, 61, 62, 63, 64, 65, 86, 89, 101, 105, 106, 108, 112, 123, 124, 125, 126, 127, 128, 139, 140], "sub": [0, 2, 3, 4, 19, 20, 23, 26, 27, 28, 31, 35, 37, 38, 44, 45, 50, 53, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 74, 77, 86, 89, 92, 101, 105, 106, 108, 112, 123, 124, 125, 126, 127, 128, 139, 140], "much": [0, 1, 2, 3, 4, 5, 7, 8, 11, 12, 17, 19, 20, 23, 27, 28, 29, 31, 37, 38, 42, 44, 50, 53, 54, 56, 62, 63, 64, 66, 77, 92], "difficult": [0, 2, 8, 11, 17, 19, 20, 23, 25, 28, 31, 44, 50], "one": [0, 1, 2, 3, 4, 6, 8, 11, 12, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 73, 77, 78, 79, 88, 92, 106, 116, 117, 132], "subscrib": [0, 2, 3, 11, 14, 18, 19, 21, 22, 24, 28, 31, 32, 33, 37, 38, 41, 46, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 70, 73, 74, 77, 79, 82, 84, 86, 87, 88, 90, 92, 99, 103, 109, 116, 119, 123, 126, 129, 130, 131, 134, 135, 136], "multipl": [0, 1, 2, 3, 4, 8, 9, 11, 12, 14, 16, 19, 22, 23, 24, 28, 29, 31, 37, 38, 44, 45, 49, 53, 57, 60, 61, 62, 63, 64, 67, 68, 79, 86, 89, 93, 99, 101, 110, 116, 119, 124], "process": [0, 2, 6, 7, 8, 9, 11, 12, 16, 17, 18, 19, 22, 24, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 53, 56, 57, 59, 60, 62, 64, 65, 67, 68, 71, 73, 74, 77, 82, 84, 86, 87, 92, 106, 112, 117, 119, 129, 130, 134], "given": [0, 1, 2, 3, 6, 12, 14, 19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 33, 36, 38, 41, 44, 45, 48, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 69, 70, 72, 77, 82], "consum": [0, 1, 2, 3, 19, 21, 22, 23, 24, 26, 29, 31, 32, 37, 38, 45, 46, 48, 53, 54, 55, 56, 57, 62, 64, 66, 77, 88, 89, 90, 103, 113], "same": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 32, 33, 34, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 63, 64, 68, 71, 77, 78, 79, 88, 92, 106, 117, 121, 128], "That": [0, 1, 2, 3, 7, 19, 20, 22, 27, 29, 30, 37, 38, 44, 45, 53, 55, 57, 62, 72, 74, 110], "requir": [0, 1, 2, 3, 4, 8, 11, 12, 19, 21, 22, 23, 25, 27, 28, 29, 31, 34, 37, 38, 39, 44, 46, 47, 50, 53, 54, 55, 56, 57, 61, 62, 63, 64, 68, 69, 70, 73, 77, 78, 91, 92, 117, 134], "being": [0, 1, 2, 3, 9, 11, 12, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 37, 38, 39, 42, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 67, 77, 82, 86, 92, 127], "abl": [0, 1, 2, 3, 11, 12, 19, 20, 21, 31, 37, 38, 42, 44, 45, 46, 53, 55, 57, 62, 63, 68, 70, 116, 134], "anoth": [0, 1, 2, 3, 6, 8, 12, 20, 22, 23, 24, 25, 26, 27, 28, 31, 37, 38, 41, 44, 46, 53, 54, 55, 56, 57, 59, 62, 63, 66, 77], "mqtt": [0, 15, 19, 20, 27, 34, 35, 37, 45, 50, 54, 55, 58, 62, 63, 70, 77, 79, 84, 87, 88, 89, 96, 99, 101, 106, 107, 108, 115, 119, 126, 127, 134], "cannot": [0, 2, 3, 8, 14, 20, 22, 23, 25, 26, 28, 31, 37, 38, 42, 44, 45, 48, 50, 53, 54, 56, 59, 62, 63, 64, 65, 66, 67, 70, 92, 104, 116, 120, 131, 134], "describ": [0, 2, 3, 4, 6, 16, 18, 19, 20, 21, 22, 23, 26, 27, 28, 31, 33, 38, 44, 45, 47, 48, 49, 50, 53, 54, 55, 56, 59, 60, 62, 64, 77, 83, 121], "allow": [0, 2, 3, 4, 8, 11, 12, 14, 19, 20, 22, 24, 27, 28, 29, 31, 34, 35, 37, 38, 39, 41, 44, 45, 47, 48, 50, 53, 54, 55, 56, 57, 59, 62, 64, 66, 67, 68, 69, 72, 77, 92], "establish": [0, 1, 2, 3, 6, 8, 14, 19, 20, 22, 28, 31, 44, 48, 56, 57, 62, 64, 69, 77, 82, 92], "separ": [0, 2, 3, 5, 14, 19, 20, 21, 22, 24, 27, 28, 31, 32, 33, 37, 38, 45, 47, 49, 50, 54, 55, 56, 57, 61, 62, 63, 64, 69, 77, 127], "hierarchi": [0, 4, 11, 19, 20, 21, 23, 31, 38, 48, 53, 54, 55, 57, 62, 63, 64, 66, 68, 77, 87], "which": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 68, 70, 73, 77, 79, 82, 106, 116, 117, 126, 130], "fix": [0, 1, 2, 3, 4, 14, 19, 20, 21, 28, 30, 32, 33, 34, 37, 42, 46, 48, 53, 55, 57, 62, 63, 66, 82, 86, 89, 92, 93, 95, 103, 106, 111, 113, 114, 115, 117, 126, 127, 130], "distribut": [0, 1, 2, 3, 8, 9, 12, 19, 23, 26, 27, 28, 31, 37, 44, 46, 54, 56, 57, 62, 63, 68, 70, 77, 78, 79, 89, 92, 93, 101, 105, 108, 109, 112, 117, 118, 127], "among": [0, 2, 5, 8, 20, 21, 29, 31, 37, 38, 44, 45, 49, 54, 56, 62, 66, 77], "worker": [0, 28], "exactli": [0, 1, 3, 4, 22, 26, 31, 37, 45, 53, 55, 57], "self": [0, 3, 4, 8, 16, 19, 20, 24, 38, 39, 45, 46, 48, 49, 55, 56, 57, 59, 60, 62, 65, 66, 67, 77, 78, 81, 82, 88, 91, 92, 99, 106, 116, 118, 126, 130, 131], "balanc": [0, 2, 17, 19, 20, 22, 31, 37, 44, 63, 64, 90, 121], "share": [0, 3, 7, 11, 14, 20, 21, 22, 23, 27, 28, 29, 31, 37, 38, 41, 44, 45, 46, 53, 54, 55, 59, 60, 61, 62, 63, 64, 68, 73, 78, 79, 103, 106, 123, 127, 128, 140], "initi": [0, 2, 3, 4, 6, 9, 11, 12, 19, 20, 21, 23, 25, 27, 28, 29, 31, 32, 33, 37, 38, 44, 45, 50, 53, 54, 56, 57, 64, 65, 66, 67, 69, 70, 72, 77, 79, 87, 89, 90, 91, 92, 101, 104, 108, 109, 112, 116, 117, 120, 129, 130, 131], "assign": [0, 2, 9, 12, 19, 38, 48, 53, 55, 56, 62, 67, 77, 126], "regular": [0, 9, 11, 12, 16, 22, 31, 48, 54, 57, 60, 62, 63, 64, 66, 67], "express": [0, 9, 11, 12, 16, 21, 31, 48, 54, 57, 60, 62, 63, 64, 66, 67, 82, 87, 89, 97, 112, 124, 126, 127, 130, 131], "model": [0, 6, 12, 19, 28, 29, 31, 38, 45, 54, 57, 63, 79], "enforc": [0, 3, 44, 62, 120], "resourc": [0, 2, 3, 8, 16, 19, 20, 22, 26, 29, 31, 38, 45, 46, 48, 53, 55, 56, 58, 59, 60, 62, 63, 65, 66, 67, 68, 70, 77, 78, 79, 87, 88, 97, 99, 112, 116, 124, 129, 130, 131, 134], "includ": [0, 2, 3, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 34, 36, 37, 38, 41, 42, 45, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 61, 63, 64, 66, 70, 73, 77, 106, 117], "usernam": [0, 3, 20, 21, 45, 46, 62, 63, 64, 71, 78, 79, 92, 106], "begin": [0, 3, 8, 20, 29, 31, 38, 45, 46, 48, 53, 54, 55, 56, 57, 62, 64, 66, 77, 79, 92], "xs_": [0, 20, 21, 45, 62, 63, 79, 89, 103, 106, 126, 127], "_": [0, 4, 20, 31, 38, 44, 53, 54, 55, 56, 62, 64, 65, 66, 71, 72, 77, 86, 87, 88, 89, 91, 92, 101, 102, 106, 110, 112, 116, 120, 123, 126, 128, 129, 130, 135, 136], "q_": [0, 20, 21, 22, 45, 62, 68, 79, 89, 104, 106, 126, 132], "exclus": [0, 2, 12, 19, 20, 50, 90], "type": [0, 2, 3, 12, 18, 19, 20, 21, 22, 31, 32, 33, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 64, 65, 66, 67, 68, 70, 73, 77, 78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 92, 99, 101, 103, 104, 111, 113, 114, 116, 117, 119, 120, 123, 128, 129, 130, 131, 132, 134, 136], "sr_post": [0, 2, 3, 14, 18, 19, 20, 22, 23, 26, 28, 29, 31, 33, 38, 53, 55, 56, 57, 60, 63, 77, 86, 88, 89, 90, 92, 94, 95, 99, 103, 104, 105, 106, 109, 110, 112, 114, 116, 117, 122, 127], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 34, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 74, 77, 78, 79, 82, 92, 106, 117, 121], "sent": [0, 2, 3, 8, 9, 11, 17, 20, 21, 25, 29, 31, 38, 44, 45, 46, 48, 49, 53, 54, 56, 57, 62, 63, 64, 65, 66, 68, 77, 79, 92, 106], "server": [0, 1, 2, 9, 12, 16, 20, 21, 23, 24, 26, 28, 29, 30, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 50, 53, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 77, 79, 82, 85, 86, 92, 101, 103, 106, 117, 124, 131, 132, 133, 135, 136, 137], "side": [0, 2, 3, 6, 8, 9, 11, 12, 14, 19, 21, 28, 31, 41, 44, 45, 49, 55, 56, 62, 64, 68, 77, 132], "filter": [0, 2, 11, 21, 24, 28, 31, 37, 38, 40, 48, 49, 50, 53, 54, 55, 56, 58, 62, 64, 66, 67, 77, 82, 84, 87, 88, 103, 116, 130], "At": [0, 1, 3, 4, 6, 7, 8, 19, 20, 27, 28, 29, 37, 44, 46, 54, 57, 62, 73], "inde": [0, 2, 28, 31], "longer": [0, 3, 4, 8, 19, 23, 24, 27, 28, 34, 44, 46, 50, 54, 55, 56, 57, 65, 70, 77, 129, 134], "fewer": [0, 19, 20, 23, 25, 30, 31, 44, 60, 64], "effici": [0, 1, 12, 20, 21, 23, 28, 29, 31, 37, 50, 57, 62, 63, 64, 65], "subscipt": 0, "chosen": [0, 2, 4, 12, 20, 21, 23, 28, 43, 53, 54, 62, 89], "mirror": [0, 2, 3, 5, 19, 20, 21, 22, 23, 30, 31, 32, 33, 37, 38, 41, 45, 47, 48, 49, 50, 53, 54, 56, 63, 64, 65, 66, 67, 79, 81, 83, 84, 87, 92, 99, 101, 103, 106, 109, 111, 112, 116, 121, 129, 131], "path": [0, 1, 2, 3, 4, 8, 11, 18, 19, 21, 27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 59, 61, 66, 67, 68, 70, 71, 72, 73, 77, 82, 88, 91, 92, 94, 95, 116, 118, 121, 125, 128, 134, 136], "announc": [0, 1, 2, 20, 21, 22, 23, 28, 30, 32, 33, 37, 38, 39, 41, 44, 45, 49, 50, 52, 54, 56, 57, 62, 63, 64, 68, 77, 85, 116, 121], "straight": [0, 2, 3, 19, 20, 31, 37, 41, 42, 44], "forward": [0, 1, 2, 3, 19, 20, 22, 24, 27, 28, 30, 34, 37, 38, 41, 44, 45, 48, 53, 54, 55, 56, 57, 62, 64, 68, 87, 90, 111, 120], "augment": [0, 2, 56, 62, 77, 79, 87, 93, 101, 109, 112, 117, 118, 120, 126, 128], "client": [0, 1, 2, 3, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 23, 26, 27, 28, 29, 31, 32, 33, 37, 38, 39, 40, 44, 45, 46, 47, 48, 49, 53, 54, 56, 57, 60, 62, 64, 65, 74, 77, 78, 79, 81, 83, 86, 87, 89, 90, 92, 93, 95, 97, 98, 99, 101, 103, 105, 108, 109, 110, 112, 113, 114, 116, 117, 120, 124, 126, 128, 129, 138], "recept": [0, 2, 11, 12, 17, 20, 48, 55, 56, 60, 62, 66, 106], "root": [0, 2, 3, 4, 20, 21, 23, 27, 29, 38, 39, 45, 46, 54, 55, 56, 57, 62, 63, 64, 65, 66, 67, 70, 77, 78, 79, 87, 91, 92, 104, 106, 129, 130, 134], "tree": [0, 1, 2, 3, 4, 11, 14, 19, 20, 21, 22, 23, 26, 27, 29, 30, 37, 38, 39, 41, 45, 46, 48, 50, 52, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 68, 70, 77, 79, 85, 87, 88, 106, 109, 117, 121, 123, 134, 139, 140], "version": [0, 2, 4, 8, 14, 15, 16, 17, 20, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 65, 66, 67, 68, 69, 70, 73, 77, 78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 95, 96, 97, 98, 101, 102, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 139, 140], "payload": [0, 2, 19, 21, 31, 34, 38, 45, 56, 64, 77, 121], "singl": [0, 1, 2, 3, 7, 8, 9, 11, 12, 14, 16, 19, 20, 21, 22, 23, 28, 29, 31, 33, 34, 35, 36, 37, 38, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 67, 68, 70, 77], "time": [0, 1, 2, 3, 7, 8, 9, 11, 12, 14, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 37, 38, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 64, 65, 66, 67, 68, 69, 71, 72, 77, 79, 88, 92, 101, 106, 109, 112, 117, 126, 129, 132, 133, 140], "dure": [0, 2, 3, 12, 20, 27, 33, 38, 42, 48, 50, 54, 55, 56, 57, 62, 63, 64, 66, 77, 117, 128, 130], "transit": [0, 2, 20, 28, 31, 37, 44, 54, 62, 64, 68, 85, 89, 90, 96, 98, 106, 109, 112, 120, 126, 132], "v02": [0, 2, 3, 14, 27, 30, 31, 45, 47, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 65, 66, 67, 68, 70, 72, 77, 79, 81, 83, 84, 86, 87, 88, 89, 90, 92, 95, 96, 106, 108, 111, 112, 119, 126, 127, 128, 129, 130, 131, 132, 135], "creat": [0, 2, 3, 4, 11, 14, 16, 18, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 79, 81, 83, 92, 106, 124, 126, 129, 130, 131, 134, 135, 136], "2015": [0, 15, 26, 27, 30, 31, 32, 33, 37, 44, 54, 57, 72, 87, 89, 96, 101, 105, 108, 111, 112, 113, 114, 120, 135], "third": [0, 2, 3, 14, 19, 20, 28, 31, 37, 39, 54, 62, 70], "iter": [0, 2, 19, 29, 57, 64, 68, 132], "exist": [0, 1, 2, 3, 6, 8, 9, 12, 14, 18, 19, 20, 21, 27, 29, 31, 34, 38, 39, 44, 45, 47, 53, 54, 55, 56, 57, 59, 62, 65, 67, 68, 69, 70, 77, 79, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 94, 95, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 115, 116, 117, 118, 120, 123, 126, 127, 128, 129, 130, 131, 132, 133, 134], "routin": [0, 2, 11, 12, 19, 20, 24, 28, 29, 38, 44, 48, 50, 53, 55, 56, 57, 62, 66, 67, 77, 82, 84, 86, 88, 99, 106, 109, 110, 116, 126, 130, 131], "previou": [0, 2, 3, 7, 9, 11, 12, 19, 20, 23, 29, 38, 45, 48, 50, 54, 55, 56, 62, 63, 64, 66, 77, 116], "simultan": [0, 2, 31], "wai": [0, 1, 2, 3, 4, 5, 8, 12, 14, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 59, 62, 65, 66, 68, 70, 73, 77, 79, 82, 110, 120], "second": [0, 1, 2, 3, 9, 11, 12, 17, 20, 21, 23, 24, 26, 27, 28, 29, 31, 37, 38, 39, 44, 45, 46, 48, 49, 53, 54, 55, 56, 57, 59, 63, 64, 65, 66, 67, 71, 73, 77, 78, 79, 81, 82, 86, 87, 90, 92, 93, 98, 101, 106, 109, 112, 116, 117, 118, 120, 127, 130, 131, 136, 139, 140], "write": [0, 1, 2, 4, 6, 7, 9, 14, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35, 37, 38, 41, 42, 45, 46, 53, 54, 55, 56, 57, 62, 63, 64, 69, 70, 71, 72, 74, 77, 78, 79, 86, 87, 95, 99, 106, 116, 133, 134, 136], "current": [0, 2, 3, 6, 8, 12, 14, 19, 20, 22, 23, 26, 28, 29, 31, 32, 33, 37, 38, 42, 44, 45, 49, 50, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 70, 77, 81, 84, 87, 116, 130, 131, 134, 140], "contain": [0, 2, 3, 4, 8, 14, 18, 19, 20, 23, 31, 32, 38, 39, 41, 45, 46, 47, 48, 49, 51, 54, 55, 56, 57, 59, 62, 63, 64, 66, 68, 72, 77, 79, 83, 121], "actual": [0, 1, 2, 3, 19, 20, 21, 22, 23, 25, 28, 31, 34, 37, 38, 44, 45, 53, 54, 55, 56, 57, 59, 61, 62, 64, 77], "optim": [0, 2, 20, 23, 28, 30, 34, 44, 45, 53, 56, 62, 63, 86, 87, 109, 126, 128], "keep": [0, 1, 2, 3, 12, 19, 20, 21, 23, 28, 37, 41, 42, 44, 45, 46, 54, 56, 57, 62, 63, 64, 68, 73, 92], "maximum": [0, 1, 2, 3, 7, 8, 14, 17, 20, 26, 28, 31, 37, 51, 53, 54, 55, 56, 57, 62, 64, 65, 66, 67, 77, 87, 89, 90, 92, 95, 98, 130, 131], "throughtput": [0, 2], "permit": [0, 2, 19, 20, 21, 29, 31, 34, 37, 44, 45, 55, 56, 62, 64, 77], "prioriti": [0, 1, 2, 20, 23, 28, 29, 30, 38, 45, 46, 62, 63, 78, 79], "mechan": [0, 1, 2, 3, 9, 19, 20, 21, 23, 27, 29, 31, 32, 33, 38, 39, 41, 44, 50, 53, 55, 57, 62, 63, 64, 67, 69, 116, 131, 133], "than": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 34, 37, 38, 41, 42, 43, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 67, 68, 69, 70, 72, 77, 92, 117, 129, 133], "accomod": [0, 2], "larg": [0, 1, 2, 3, 6, 8, 9, 11, 14, 20, 22, 23, 24, 28, 29, 30, 37, 38, 45, 50, 52, 56, 57, 62, 63, 64, 65, 68, 70, 77, 85, 92, 103, 109, 112, 132], "would": [0, 2, 3, 5, 6, 8, 11, 12, 14, 16, 17, 19, 20, 21, 22, 23, 24, 26, 28, 31, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 73, 77, 79, 83, 92, 106, 117], "practic": [0, 1, 2, 3, 8, 14, 17, 19, 20, 21, 22, 23, 26, 28, 29, 30, 34, 38, 44, 45, 53, 62, 68, 70, 72, 92], "complic": [0, 2, 3, 5, 19, 23, 31, 44, 54, 63, 68, 89, 90, 92, 117, 127], "inevit": [0, 2], "definit": [0, 2, 46, 54], "size": [0, 1, 2, 3, 7, 12, 14, 19, 20, 22, 23, 24, 26, 27, 28, 29, 30, 32, 33, 37, 38, 45, 46, 48, 49, 53, 54, 55, 56, 57, 63, 66, 67, 68, 69, 77, 78, 82, 87, 88, 92, 106, 108, 109, 116, 117, 118, 127, 131, 132, 133], "result": [0, 2, 3, 4, 6, 8, 19, 20, 23, 24, 28, 29, 31, 32, 33, 38, 39, 42, 44, 48, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 66, 69, 70, 77, 92, 116, 133, 134], "complex": [0, 1, 2, 3, 11, 20, 21, 23, 24, 28, 29, 31, 37, 47, 53, 54, 57, 63, 64, 83, 85, 86, 90, 92, 93, 106, 109, 110, 112, 117, 120, 127], "cover": [0, 2, 3, 6, 20, 22, 26, 29, 32, 33, 44, 45, 46, 54, 55, 56, 59, 64, 65, 77], "case": [0, 1, 2, 3, 5, 7, 8, 11, 12, 14, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 37, 38, 39, 41, 42, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 70, 73, 77, 79, 87, 90, 92, 101, 129], "sr3_post": [0, 16, 20, 21, 23, 25, 55, 58, 59, 60, 61, 62, 64, 73, 88, 89, 97, 102, 106, 117, 122, 123, 124, 125, 126, 128], "intend": [0, 2, 3, 4, 20, 21, 28, 29, 31, 38, 45, 50, 55, 57, 62, 64, 65], "arbitrarili": [0, 2, 8, 29, 53, 54], "segment": [0, 1, 2, 3, 5, 31, 32, 33, 37, 64, 89, 90, 92, 93, 101, 112, 113, 114, 128], "multi": [0, 1, 2, 3, 8, 11, 14, 19, 20, 22, 23, 26, 29, 31, 37, 56, 57, 62, 64, 77, 89, 90, 92, 93, 99, 104, 106, 117], "stream": [0, 1, 2, 3, 6, 14, 26, 31, 37, 44, 54, 56, 57, 62, 63, 64, 72, 89, 90], "block": [0, 2, 3, 4, 18, 20, 24, 32, 33, 37, 44, 53, 56, 57, 62, 63, 67, 69, 77, 101, 113, 114, 120, 131, 133], "independ": [0, 1, 7, 8, 12, 21, 22, 29, 37, 38, 53, 56, 64, 77, 90], "follow": [0, 2, 3, 4, 12, 14, 16, 18, 20, 21, 22, 23, 24, 27, 28, 29, 31, 32, 33, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 53, 54, 55, 56, 57, 60, 62, 63, 64, 66, 68, 70, 77, 112, 117, 127, 134], "final": [0, 1, 2, 3, 20, 22, 24, 28, 29, 31, 32, 33, 40, 41, 48, 50, 56, 57, 59, 62, 63, 65, 66, 67, 77, 83, 84, 87, 89, 90, 92, 93, 99, 104, 105, 106, 108, 109, 110, 112, 113, 114, 118, 123, 126, 127, 130, 131], "deliveri": [0, 1, 2, 14, 20, 23, 37, 38, 42, 43, 45, 46, 53, 57, 62, 66, 78, 79, 116, 126], "unidirect": [0, 56, 77], "dialogu": [0, 89, 137], "each": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 19, 20, 22, 23, 26, 27, 28, 29, 31, 34, 37, 38, 39, 42, 44, 45, 46, 48, 49, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 70, 72, 77, 78, 79, 92, 116, 117], "stand": [0, 20, 21, 28, 46, 62, 103], "item": [0, 3, 8, 19, 20, 22, 26, 31, 45, 53, 55, 56, 57, 62, 77, 86, 92], "receipt": [0, 2, 20, 21, 31, 38, 54, 62, 64, 68], "spread": [0, 28, 41], "over": [0, 1, 2, 3, 4, 7, 8, 12, 14, 19, 20, 23, 26, 27, 28, 29, 31, 37, 44, 45, 49, 54, 56, 57, 62, 63, 64, 71, 72, 77, 79, 101, 109, 120], "node": [0, 1, 2, 7, 8, 11, 14, 20, 21, 22, 23, 26, 28, 29, 31, 37, 42, 44, 45, 46, 50, 54, 55, 62, 64, 78, 79, 101, 110, 112], "howev": [0, 2, 3, 8, 14, 20, 22, 26, 28, 31, 37, 44, 45, 50, 54, 55, 56, 62, 72, 77], "like": [0, 1, 2, 3, 4, 6, 8, 11, 14, 19, 21, 22, 23, 25, 26, 27, 28, 31, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 70, 72, 73, 75, 77, 79, 82, 86, 88, 92, 128], "high": [0, 1, 2, 6, 11, 12, 14, 16, 20, 22, 23, 24, 26, 28, 29, 31, 34, 37, 38, 45, 46, 50, 53, 60, 62, 63, 64, 65, 70, 78, 79, 109, 116, 134], "latenc": [0, 1, 8, 23, 28, 37, 54, 62, 87, 89, 93, 101, 109, 117, 119, 126], "bodi": [0, 2, 14, 19, 20, 32, 33, 34, 47, 48, 53, 56, 69, 77, 82], "themselv": [0, 1, 2, 19, 22, 31, 38, 45, 49, 53, 54], "forc": [0, 2, 4, 20, 22, 44, 56, 57, 63, 64, 77, 90, 91, 104, 109, 120], "retriev": [0, 20, 21, 31, 32, 33, 38, 44, 46, 47, 48, 49, 53, 55, 56, 57, 62, 64, 67, 68, 77, 78, 112, 132], "phase": [0, 1, 3, 9, 21, 26, 28, 29, 33, 66, 89, 92, 93, 103, 105, 109, 110, 114, 130], "advantag": [0, 2, 3, 11, 14, 21, 37, 63, 64, 92], "depend": [0, 2, 7, 8, 14, 19, 20, 22, 31, 37, 38, 39, 42, 45, 49, 50, 53, 54, 55, 56, 57, 60, 62, 63, 64, 68, 70, 77, 96, 134], "coars": [0, 7, 20, 21, 53, 63], "mean": [0, 1, 2, 3, 6, 7, 8, 9, 12, 14, 16, 17, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 32, 33, 37, 38, 42, 44, 45, 53, 54, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 77, 109, 116], "done": [0, 1, 2, 3, 4, 8, 11, 12, 14, 20, 22, 24, 26, 27, 28, 29, 31, 37, 38, 39, 42, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 77, 79, 87, 92, 106, 120, 131, 133, 134, 136], "ani": [0, 1, 2, 3, 7, 8, 11, 14, 16, 19, 20, 21, 22, 23, 27, 28, 29, 31, 36, 37, 38, 42, 44, 45, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 70, 77, 82, 88, 92, 116, 121, 128, 134], "embed": [0, 3, 31, 34, 56, 64, 77, 92], "discard": [0, 3, 11, 19, 20, 38, 45, 47, 49, 54, 55, 56, 77, 81, 83, 99, 106, 116, 129], "wast": [0, 12, 24, 50], "long": [0, 3, 6, 8, 12, 14, 20, 21, 23, 24, 29, 30, 37, 38, 44, 45, 49, 53, 54, 56, 57, 62, 64, 68, 70, 77, 79, 86, 87, 88, 90, 92, 95, 101, 106, 109, 110, 112, 116, 126, 128, 132], "live": [0, 3, 19, 28, 29, 37, 45, 46, 55, 62, 79], "connect": [0, 2, 3, 4, 8, 19, 20, 21, 22, 28, 29, 31, 37, 38, 44, 45, 46, 47, 48, 49, 51, 53, 56, 57, 59, 60, 61, 62, 65, 67, 68, 69, 70, 72, 77, 78, 79, 80, 81, 82, 83, 86, 89, 90, 91, 92, 99, 104, 106, 112, 116, 120, 124, 125, 126, 127, 128, 131, 132, 133, 134, 135], "sftp": [0, 1, 2, 3, 4, 14, 18, 19, 20, 21, 22, 25, 26, 27, 29, 31, 32, 33, 37, 38, 43, 45, 47, 49, 55, 57, 58, 61, 62, 63, 64, 68, 70, 77, 79, 81, 83, 88, 89, 90, 91, 92, 93, 94, 95, 99, 101, 102, 103, 104, 105, 106, 108, 110, 112, 113, 114, 116, 119, 125, 126, 127, 128, 132, 134], "overhead": [0, 1, 7, 8, 12, 14, 21, 23, 25, 31, 34, 37, 44, 53, 54, 57, 62, 64, 65], "One": [0, 1, 2, 3, 4, 8, 11, 20, 22, 23, 24, 26, 28, 29, 30, 32, 33, 36, 37, 38, 44, 45, 48, 50, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 68, 69, 70, 73, 77], "higher": [0, 1, 3, 4, 7, 23, 28, 29, 31, 37, 38, 44, 45, 54, 62, 63, 70], "rate": [0, 1, 6, 19, 20, 26, 28, 45, 53, 54, 56, 57, 62, 65, 66, 67, 77, 87, 106, 130, 131], "becaus": [0, 2, 3, 7, 8, 12, 14, 19, 20, 21, 23, 24, 25, 27, 28, 31, 37, 38, 39, 41, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 62, 63, 67, 70, 71, 73, 79, 82, 92, 134], "faster": [0, 1, 2, 20, 23, 28, 31, 37, 54, 56, 62, 64], "parallel": [0, 1, 8, 11, 12, 14, 20, 28, 29, 31, 37, 38, 44, 53, 54, 57, 62, 63, 64], "download": [0, 1, 2, 3, 14, 16, 18, 19, 20, 21, 22, 26, 27, 29, 31, 32, 33, 37, 39, 41, 45, 49, 50, 53, 54, 56, 58, 59, 60, 63, 64, 70, 71, 72, 74, 77, 79, 81, 83, 84, 85, 86, 87, 92, 99, 106, 116, 128, 129, 130, 135, 136, 138], "save": [0, 3, 12, 19, 20, 29, 31, 34, 36, 45, 47, 49, 50, 53, 54, 56, 58, 59, 60, 62, 63, 64, 66, 67, 79, 84, 87, 92, 99, 123, 127, 128, 130, 131], "lower": [0, 2, 11, 28, 31, 38, 44, 53, 54, 56, 62, 65, 77], "lesser": [0, 2, 31, 44], "perform": [0, 1, 2, 3, 7, 11, 12, 19, 20, 22, 23, 24, 25, 28, 29, 31, 37, 38, 44, 48, 50, 53, 55, 56, 57, 60, 62, 63, 64, 66, 77, 84, 86, 88, 89, 90, 92, 93, 99, 101, 102, 104, 106, 109, 110, 112, 117, 118, 120, 124, 126, 127, 128], "becom": [0, 1, 2, 3, 11, 14, 19, 20, 23, 24, 29, 31, 38, 41, 45, 50, 54, 55, 56, 62, 64, 77], "limit": [0, 1, 2, 7, 8, 11, 12, 14, 16, 17, 19, 20, 21, 22, 23, 26, 27, 28, 30, 34, 37, 44, 45, 46, 53, 54, 56, 60, 62, 63, 64, 67, 77, 78, 79, 86, 87, 89, 90, 93, 95, 97, 99, 103, 104, 105, 106, 108, 109, 112, 115, 117, 120, 124, 126, 127, 128], "factor": [0, 5, 11, 19, 23, 35, 57], "further": [0, 2, 3, 19, 20, 21, 22, 24, 27, 29, 31, 37, 38, 42, 44, 45, 47, 48, 51, 53, 54, 56, 57, 62, 64, 66, 67, 77, 82, 130], "work": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 17, 19, 20, 21, 22, 23, 24, 26, 27, 29, 31, 32, 33, 36, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 56, 58, 59, 62, 63, 64, 65, 66, 68, 70, 72, 77, 79, 82, 87, 88, 92, 103, 104, 106, 116, 130], "better": [0, 6, 11, 19, 21, 23, 24, 25, 28, 30, 42, 53, 54, 55, 56, 62, 63, 65, 68, 77], "clarifi": [0, 22, 39, 89, 104], "sens": [0, 1, 2, 3, 19, 21, 24, 31, 37, 48, 53, 54, 63, 64, 65, 66], "emb": 0, "now": [0, 1, 2, 3, 6, 7, 8, 11, 12, 14, 18, 19, 20, 22, 26, 27, 28, 29, 31, 34, 36, 37, 38, 39, 41, 42, 44, 45, 47, 50, 53, 54, 55, 56, 57, 62, 64, 65, 66, 67, 71, 72, 73, 77, 84, 87, 88, 92, 106, 121, 130, 131], "header": [0, 2, 3, 4, 14, 19, 20, 21, 22, 24, 33, 34, 38, 39, 45, 47, 48, 49, 55, 56, 57, 66, 67, 68, 69, 70, 71, 72, 77, 79, 81, 83, 86, 88, 89, 92, 99, 106, 114, 116, 130, 131, 134, 135, 136], "experi": [0, 2, 14, 23, 31, 41, 42, 44, 54, 55, 62, 63], "occur": [0, 2, 3, 8, 12, 20, 21, 23, 26, 27, 28, 29, 38, 41, 44, 45, 48, 53, 57, 62, 63, 66, 77, 82], "reliabl": [0, 1, 2, 4, 6, 23, 25, 28, 31, 37, 42, 54, 62, 64], "particular": [0, 2, 4, 19, 20, 22, 24, 26, 28, 31, 45, 53, 68, 79], "assur": [0, 2, 3, 21, 24, 31, 49, 78, 84, 87, 90, 92, 101, 103, 104, 106, 112, 116, 118, 119, 120, 126, 127, 130, 134, 137], "persist": [0, 8, 29, 31, 38, 48, 56, 66, 89, 110], "surviv": [0, 54, 56, 77, 89], "restart": [0, 3, 16, 19, 20, 21, 22, 45, 46, 53, 54, 57, 59, 60, 62, 67, 70, 71, 73, 78, 79, 92, 97, 106, 123, 124, 136, 137], "default": [0, 2, 3, 4, 14, 16, 19, 21, 22, 23, 24, 25, 29, 32, 33, 35, 38, 41, 44, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 65, 66, 67, 68, 70, 77, 79, 83, 84, 86, 87, 88, 91, 92, 97, 99, 123, 124, 127, 129, 131, 134], "true": [0, 1, 4, 8, 9, 11, 12, 20, 21, 22, 23, 32, 33, 37, 38, 39, 41, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 63, 66, 67, 68, 69, 77, 78, 79, 81, 82, 83, 84, 87, 88, 89, 91, 99, 101, 103, 104, 106, 116, 123, 129, 130, 131, 132, 133], "expiri": [0, 57, 62], "should": [0, 1, 2, 3, 4, 6, 7, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 60, 62, 63, 64, 65, 66, 68, 69, 70, 72, 73, 77, 79, 84, 92, 106, 129, 130, 133, 140], "few": [0, 2, 3, 8, 9, 11, 17, 23, 24, 28, 29, 31, 42, 45, 49, 53, 54, 56, 57, 62, 64, 66, 68, 72, 77, 79], "minut": [0, 1, 3, 4, 8, 12, 20, 23, 24, 27, 28, 29, 31, 37, 38, 45, 48, 49, 53, 54, 56, 57, 63, 66, 67, 68, 72, 77, 79, 81, 82, 86, 87, 89, 91, 92, 93, 101, 106, 108, 109, 110, 112, 116, 117, 118, 127, 130, 131, 132, 135, 139, 140], "product": [0, 1, 2, 6, 11, 12, 14, 19, 20, 22, 24, 27, 28, 29, 31, 32, 33, 37, 38, 39, 41, 42, 45, 49, 53, 54, 55, 56, 57, 62, 63, 64, 66, 67, 68, 69, 73, 78, 79, 81, 86, 87, 89, 99, 106, 108, 109, 112, 118, 126, 127, 128, 131, 132, 133], "message_ttl": [0, 20, 38, 47, 49, 55, 56, 68, 77, 81, 83, 88, 89, 106, 116, 129, 132], "life": [0, 7, 8, 11, 19, 21], "span": 0, "queu": [0, 2, 12, 20, 22, 24, 26, 28, 31, 45, 46, 54, 57, 62, 64, 78, 105, 128], "too": [0, 1, 2, 3, 8, 9, 11, 12, 19, 20, 23, 31, 39, 42, 45, 53, 55, 56, 57, 62, 63, 69, 70, 77], "old": [0, 1, 3, 19, 20, 23, 25, 26, 28, 31, 36, 38, 39, 45, 46, 50, 54, 55, 56, 57, 62, 63, 64, 65, 69, 70, 77, 88, 112, 127, 129], "deliv": [0, 1, 20, 25, 27, 28, 29, 31, 37, 41, 45, 46, 54, 57, 62, 78, 79], "forev": [0, 3, 45, 56, 65, 66, 77], "fetch": [0, 2, 22, 33, 49, 57, 62, 63, 81], "tunabl": [0, 37, 63], "determin": [0, 1, 2, 4, 20, 21, 22, 23, 26, 29, 31, 32, 33, 38, 41, 44, 45, 47, 49, 50, 53, 54, 55, 56, 61, 62, 63, 64, 128], "onc": [0, 2, 3, 4, 6, 8, 9, 12, 14, 17, 19, 20, 21, 23, 24, 28, 29, 31, 37, 38, 39, 41, 45, 47, 48, 49, 53, 54, 55, 56, 57, 60, 62, 63, 64, 65, 66, 70, 77, 129], "25": [0, 6, 7, 8, 9, 11, 12, 20, 27, 29, 47, 49, 65, 67, 68, 81, 83, 85, 89, 106, 108, 110, 129, 130, 131, 132], "These": [0, 1, 2, 3, 4, 11, 12, 19, 20, 22, 26, 29, 31, 38, 45, 46, 53, 54, 57, 61, 62, 64, 67, 70, 92], "appropri": [0, 2, 3, 4, 8, 19, 20, 21, 22, 23, 24, 25, 29, 31, 38, 45, 48, 53, 54, 55, 56, 57, 62, 63, 64, 66, 69, 70, 77, 82, 116, 133, 134], "exhaust": [0, 3, 89, 92], "list": [0, 2, 3, 8, 11, 12, 16, 19, 20, 21, 23, 28, 29, 31, 32, 37, 38, 39, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 65, 66, 67, 68, 70, 71, 73, 77, 78, 79, 81, 82, 83, 86, 87, 88, 89, 90, 92, 97, 99, 103, 106, 109, 110, 112, 113, 117, 123, 124, 126, 127, 129, 131, 134, 136, 138], "call": [0, 2, 3, 6, 7, 12, 17, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 39, 42, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 65, 66, 67, 68, 77, 82, 86, 92, 117, 121, 129, 130], "sometim": [0, 2, 3, 7, 8, 19, 20, 21, 22, 26, 28, 38, 48, 54, 55, 62], "softwar": [0, 1, 2, 3, 8, 20, 21, 22, 25, 28, 31, 37, 38, 44, 53, 54, 62, 133], "run": [0, 1, 2, 4, 6, 7, 8, 9, 12, 14, 16, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 36, 37, 38, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 65, 66, 67, 68, 70, 72, 74, 77, 79, 80, 81, 82, 83, 87, 92, 99, 106, 109, 116, 117, 121, 123, 129, 130, 131, 134, 135], "confus": [0, 14, 19, 21, 26, 27, 29, 44, 50, 54, 55, 89, 95, 99, 103, 105, 108, 110, 128], "diagram": [0, 21, 28, 29, 31, 36, 44], "vocabulari": [0, 21], "orang": [0, 21, 89, 103], "term": [0, 3, 7, 8, 11, 12, 21, 31, 44, 45, 48, 53, 54, 56, 62, 64, 65, 72, 73, 77, 79, 86, 87, 89, 92, 93, 99, 103, 106, 112, 117, 120, 121, 126, 129, 135], "blue": [0, 21, 68], "There": [0, 1, 2, 3, 4, 7, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 37, 38, 39, 41, 44, 45, 48, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 77, 116, 121], "implement": [0, 1, 2, 3, 4, 5, 7, 11, 12, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 38, 39, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 70, 77, 87, 92, 105, 109, 116, 134], "we": [0, 1, 2, 3, 4, 5, 7, 11, 12, 19, 20, 21, 23, 24, 26, 27, 28, 29, 31, 35, 36, 37, 38, 39, 41, 44, 45, 46, 47, 53, 54, 56, 57, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 77, 92, 117, 130], "Not": [0, 1, 2, 11, 21, 30, 53, 54, 56, 63, 64, 65, 72, 127, 129, 135], "try": [0, 1, 3, 7, 19, 20, 21, 26, 36, 38, 39, 41, 42, 45, 48, 49, 55, 56, 57, 59, 62, 66, 73, 79, 82, 99, 106, 116, 130], "specif": [0, 2, 3, 4, 6, 11, 16, 19, 21, 22, 23, 27, 28, 29, 31, 32, 33, 34, 38, 39, 41, 44, 48, 49, 50, 53, 54, 55, 56, 57, 59, 61, 62, 64, 66, 67, 68, 77, 87, 91, 116, 126], "manag": [0, 1, 2, 3, 16, 19, 20, 21, 22, 26, 28, 31, 37, 38, 44, 46, 47, 54, 56, 57, 59, 60, 61, 62, 63, 64, 67, 70, 71, 77, 78, 79, 92, 101, 109, 124, 136, 140], "function": [0, 1, 2, 3, 4, 7, 9, 11, 12, 19, 20, 21, 23, 24, 26, 28, 29, 31, 37, 38, 39, 45, 46, 47, 48, 49, 50, 54, 55, 56, 57, 62, 64, 66, 69, 70, 73, 77, 79, 92], "admin": [0, 2, 3, 21, 28, 32, 33, 45, 46, 54, 56, 57, 59, 62, 68, 74, 77, 78, 79, 87, 92, 103, 109, 113, 114, 123], "task": [0, 7, 12, 19, 20, 21, 22, 26, 37, 38, 39, 42, 44, 45, 48, 50, 56, 57, 62, 77, 82, 105, 106, 120], "port": [0, 3, 9, 10, 19, 20, 42, 44, 45, 46, 47, 50, 52, 57, 61, 62, 63, 68, 78, 79, 83, 84, 88, 90, 92, 106, 120, 125, 126, 127], "while": [0, 1, 2, 3, 4, 7, 8, 11, 12, 18, 19, 20, 21, 22, 23, 27, 28, 29, 31, 35, 37, 38, 39, 42, 44, 45, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 62, 63, 64, 66, 68, 92, 94, 132], "main": [0, 4, 7, 19, 20, 21, 22, 24, 28, 29, 31, 37, 38, 44, 48, 50, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 70, 77, 87, 88, 92, 106, 110, 123], "do": [0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 68, 71, 73, 74, 77, 82, 88, 92, 97, 103, 136], "usual": [0, 2, 3, 7, 8, 19, 20, 21, 23, 24, 25, 26, 28, 29, 31, 38, 39, 41, 44, 45, 47, 53, 54, 55, 57, 62, 63, 64, 68, 70, 77, 79, 120, 127], "taken": [0, 3, 19, 20, 21, 28, 32, 33, 37, 39, 42, 45, 46, 48, 50, 55, 56, 57, 62, 66, 72, 73, 77, 78], "care": [0, 1, 2, 3, 19, 20, 21, 22, 23, 29, 31, 37, 39, 44, 45, 47, 48, 50, 55, 56, 57, 62, 63, 66], "transpar": [0, 1, 21, 28, 29, 31, 37, 44, 93, 101, 109, 110, 112], "you": [0, 1, 2, 4, 6, 7, 8, 11, 14, 17, 18, 19, 20, 21, 23, 24, 27, 36, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 61, 62, 63, 65, 66, 67, 68, 69, 71, 73, 74, 75, 77, 79, 92, 120, 127, 133], "know": [0, 1, 2, 3, 5, 6, 8, 14, 17, 19, 21, 22, 26, 28, 31, 32, 33, 37, 38, 39, 41, 49, 53, 54, 56, 57, 62, 64, 70, 77, 92], "receiv": [0, 2, 3, 8, 11, 12, 14, 17, 19, 20, 21, 23, 24, 25, 28, 31, 37, 38, 39, 41, 44, 45, 46, 47, 48, 53, 55, 56, 57, 62, 64, 65, 66, 67, 68, 71, 72, 77, 78, 79, 86, 87, 92, 106, 112, 116, 129, 130, 131, 132, 135], "bound": [0, 8, 11, 12, 20, 21, 28, 31, 45, 50, 106], "speak": [0, 3, 21, 45, 55, 89], "matchmak": [0, 21], "arriv": [0, 1, 2, 3, 6, 9, 20, 21, 28, 29, 31, 38, 45, 46, 47, 48, 53, 54, 57, 59, 62, 65, 66, 68, 72, 77, 78, 79, 82, 83, 87, 89, 90, 92, 93, 101, 102, 103, 106, 109, 110, 112, 123, 126, 130, 135], "goe": [0, 1, 2, 6, 8, 14, 20, 21, 30, 32, 33, 38, 53, 54, 56, 71, 72, 77, 87, 111, 116], "anyon": [0, 2, 19, 21, 31, 53, 68], "compar": [0, 3, 6, 11, 12, 14, 18, 19, 20, 21, 28, 31, 35, 38, 42, 44, 45, 53, 54, 55, 56, 57, 59, 62, 63, 67, 77, 86, 88, 89, 92, 94, 95, 103, 109, 116, 127, 132], "rout": [0, 1, 3, 5, 8, 20, 21, 24, 26, 29, 31, 37, 41, 42, 46, 47, 53, 54, 55, 56, 57, 62, 66, 77, 79, 92, 112], "aren": [0, 1, 21, 55], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 16, 18, 19, 20, 21, 22, 23, 25, 27, 28, 31, 36, 37, 38, 39, 45, 46, 47, 48, 49, 51, 53, 54, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 72, 77, 80, 82, 83, 85, 86, 87, 88, 90, 92, 96, 99, 108, 109, 112, 113, 126, 127, 128, 130, 135], "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 19, 20, 21, 22, 23, 24, 26, 28, 29, 31, 37, 38, 42, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 67, 68, 70, 72, 73, 77, 79, 82, 92, 117], "take": [0, 2, 3, 4, 6, 8, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24, 26, 27, 29, 31, 32, 33, 37, 38, 39, 41, 42, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 68, 73, 77, 88, 92], "turn": [0, 2, 19, 20, 21, 24, 28, 31, 32, 38, 39, 45, 54, 55, 56, 57, 62, 77], "heavili": [0, 8, 19, 21, 26, 27, 28, 42, 64], "sr_sarra": [0, 2, 3, 14, 19, 20, 21, 22, 23, 25, 39, 40, 45, 53, 79, 86, 89, 90, 92, 95, 99, 102, 103, 104, 106, 117], "sr_subcrib": [0, 21, 89], "instanc": [0, 2, 3, 11, 16, 19, 22, 23, 27, 28, 29, 38, 41, 45, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 65, 66, 67, 69, 70, 72, 77, 79, 81, 82, 83, 84, 86, 88, 89, 90, 92, 97, 99, 104, 108, 109, 110, 116, 117, 119, 123, 124, 129, 130, 131, 133, 134, 135], "durabl": [0, 8, 20, 21, 38, 45, 46, 47, 49, 68, 79, 81, 83, 89, 103, 106, 116, 120, 129, 132], "even": [0, 1, 2, 8, 12, 14, 17, 19, 20, 26, 28, 31, 37, 39, 44, 45, 53, 54, 55, 57, 62, 63, 64, 70, 73, 90], "your": [0, 2, 3, 4, 7, 17, 23, 36, 37, 38, 41, 42, 45, 47, 48, 49, 53, 54, 55, 56, 62, 63, 65, 68, 69, 70, 73, 74, 77, 79, 83, 133], "subscript": [0, 2, 14, 19, 20, 21, 22, 29, 31, 37, 45, 53, 54, 55, 62, 64, 79, 106], "di": [0, 37, 46, 62, 70], "back": [0, 1, 2, 3, 5, 6, 11, 12, 20, 22, 24, 36, 37, 38, 44, 45, 54, 56, 57, 62, 64, 71, 77, 79, 104, 106, 119], "reason": [0, 1, 2, 3, 11, 14, 19, 20, 21, 23, 28, 29, 31, 32, 33, 37, 38, 44, 45, 53, 54, 55, 56, 62, 63, 64, 77, 92], "miss": [0, 1, 3, 19, 20, 23, 24, 28, 31, 38, 42, 45, 48, 50, 53, 54, 56, 57, 62, 63, 65, 66, 67, 70, 77, 79, 84, 87, 92, 99, 106, 116, 129, 131, 134], "decid": [0, 2, 3, 6, 19, 20, 21, 22, 26, 29, 31, 42, 44, 48, 55, 56, 57, 62, 64, 66, 68, 77, 82, 120], "someon": [0, 2, 3, 11, 14, 19, 21, 22, 26, 36, 55, 73, 92], "indic": [0, 2, 3, 4, 8, 14, 19, 20, 21, 22, 23, 24, 26, 28, 31, 32, 33, 34, 38, 44, 47, 48, 50, 53, 54, 56, 57, 59, 62, 63, 64, 66, 68, 70, 72, 77, 88, 106, 112, 116, 126, 135], "what": [0, 1, 2, 3, 4, 6, 8, 11, 19, 20, 21, 22, 26, 28, 31, 32, 33, 38, 39, 41, 42, 44, 47, 53, 54, 56, 57, 59, 62, 63, 64, 65, 67, 68, 70, 72, 77, 79, 92, 95, 120], "keyword": [0, 19, 21, 65, 106, 121, 126, 129], "dot": [0, 4, 20, 21, 57, 63, 77, 106, 127], "wildcard": [0, 20, 21, 31, 38, 54, 62, 64, 68, 103, 106, 121, 126, 128], "match": [0, 2, 11, 12, 14, 19, 20, 21, 22, 23, 31, 32, 38, 39, 44, 45, 48, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 77, 79, 86, 103, 106, 126], "anyth": [0, 6, 20, 21, 31, 44, 45, 46, 54, 56, 57, 77], "word": [0, 2, 19, 20, 21, 22, 26, 50, 54, 55, 56, 62, 88, 121], "syntax": [0, 4, 19, 20, 21, 38, 45, 55, 62, 79, 88, 89, 91, 99, 103, 106, 116, 126], "resolut": [0, 6, 19, 21, 42, 53, 56, 77], "after": [0, 2, 3, 8, 11, 12, 14, 18, 20, 21, 23, 25, 27, 28, 31, 32, 35, 38, 39, 41, 42, 45, 47, 48, 50, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 67, 68, 70, 71, 72, 73, 74, 77, 79, 82, 92, 106, 116, 134], "regexp": [0, 11, 20, 21, 56, 89, 103, 106, 121], "reject": [0, 2, 9, 12, 19, 21, 22, 23, 38, 41, 42, 45, 46, 48, 53, 54, 55, 56, 57, 63, 64, 65, 66, 67, 77, 78, 79, 82, 86, 87, 88, 89, 99, 103, 116, 117, 127, 130, 131], "accept": [0, 1, 2, 3, 9, 14, 18, 19, 21, 23, 26, 28, 29, 31, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 58, 59, 63, 64, 65, 66, 67, 71, 72, 77, 78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 92, 94, 99, 101, 102, 103, 105, 109, 110, 112, 116, 117, 120, 123, 127, 128, 129, 130, 131, 135, 136], "direct": [0, 1, 2, 4, 6, 8, 14, 16, 19, 20, 21, 22, 24, 26, 28, 31, 36, 38, 41, 44, 45, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 67, 70, 78, 79, 84, 86, 87, 88, 89, 90, 91, 92, 95, 97, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 118, 120, 123, 124, 126, 127, 128, 130, 131, 134], "start": [0, 1, 2, 3, 4, 7, 10, 11, 14, 16, 18, 19, 21, 22, 23, 26, 27, 28, 29, 31, 32, 37, 38, 39, 41, 42, 45, 46, 47, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 77, 78, 79, 80, 81, 83, 84, 86, 87, 88, 92, 93, 97, 109, 116, 117, 123, 124, 126, 129, 130, 131, 133, 135, 136], "field": [0, 2, 14, 19, 22, 23, 24, 26, 31, 32, 33, 34, 46, 47, 50, 54, 55, 56, 57, 62, 63, 66, 67, 68, 77, 84, 128], "format": [0, 1, 3, 4, 14, 16, 19, 20, 21, 22, 26, 27, 30, 31, 34, 38, 39, 45, 46, 47, 48, 49, 50, 54, 55, 56, 57, 58, 59, 60, 63, 65, 66, 72, 77, 78, 79, 81, 82, 83, 84, 87, 88, 89, 91, 92, 93, 95, 97, 99, 103, 104, 105, 106, 108, 110, 111, 112, 115, 116, 119, 120, 122, 123, 124, 127, 129, 130, 135], "part": [0, 1, 3, 6, 7, 14, 18, 19, 20, 21, 22, 23, 26, 27, 28, 29, 31, 32, 33, 37, 38, 39, 42, 45, 46, 47, 48, 49, 50, 53, 55, 56, 57, 59, 61, 62, 63, 64, 66, 68, 71, 72, 79, 83, 86, 88, 90, 92, 94, 95, 99, 101, 103, 104, 105, 106, 109, 112, 113, 114, 116, 117, 126, 127, 128, 135, 136], "avail": [0, 1, 2, 3, 7, 8, 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, 62, 64, 65, 66, 68, 70, 75, 77, 78, 79, 83, 116, 121, 134], "2": [0, 3, 4, 6, 7, 8, 9, 11, 12, 19, 23, 25, 27, 28, 29, 31, 32, 33, 34, 38, 39, 41, 42, 44, 45, 47, 48, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 76, 77, 79, 81, 82, 83, 86, 87, 88, 89, 91, 92, 96, 99, 102, 108, 109, 110, 112, 113, 114, 115, 116, 117, 120, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 139, 140], "light": [0, 7, 8, 17, 21, 38, 45], "wrapper": [0, 3, 21, 56, 57, 77, 89, 92], "coat": [0, 21], "around": [0, 1, 2, 3, 6, 7, 12, 17, 19, 21, 26, 28, 31, 44, 45, 53, 54, 55, 56, 57, 62], "3": [0, 3, 6, 7, 8, 9, 11, 12, 15, 17, 20, 23, 27, 31, 33, 34, 35, 37, 38, 39, 41, 42, 44, 46, 53, 54, 55, 56, 57, 59, 64, 65, 66, 67, 68, 69, 70, 72, 73, 75, 78, 85, 86, 87, 88, 89, 92, 96, 98, 101, 106, 107, 108, 112, 114, 115, 116, 117, 120, 123, 128, 129, 130, 131, 132, 133, 134, 135, 139], "rework": 0, "driver": [0, 26, 37], "ad": [0, 1, 2, 7, 12, 16, 19, 20, 23, 25, 27, 28, 29, 31, 34, 35, 38, 39, 44, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 60, 61, 62, 63, 65, 66, 67, 68, 71, 73, 77, 82, 90, 96, 97, 110, 112, 130, 136], "less": [0, 1, 2, 11, 12, 14, 17, 19, 20, 23, 26, 27, 28, 29, 31, 37, 39, 44, 50, 53, 54, 55, 60, 63, 64, 65], "python": [0, 4, 7, 11, 14, 16, 19, 20, 21, 23, 26, 27, 28, 29, 31, 35, 37, 39, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 70, 73, 74, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 91, 95, 97, 99, 101, 103, 105, 106, 107, 108, 109, 110, 112, 117, 119, 123, 124, 125, 126, 127, 128, 130, 131, 134, 137, 138, 139, 140], "co": [0, 2, 3, 7, 20, 21, 31, 37, 54, 64, 67, 68], "ordin": [0, 2, 3, 7, 21, 31, 37, 54, 67], "http": [0, 1, 3, 4, 6, 7, 8, 11, 14, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 39, 41, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 93, 95, 99, 101, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 139, 140], "accompani": [0, 21], "openssh": [0, 3, 21, 22, 26, 31, 44, 89, 92, 103, 104, 105, 112, 120], "face": [0, 1, 2, 21, 28, 37, 44, 45, 101, 103], "address": [0, 2, 3, 5, 21, 22, 29, 31, 44, 45, 47, 55, 92], "wherev": [0, 21, 41, 53, 54], "terminologi": [0, 21, 89, 103, 122], "If": [0, 1, 2, 3, 6, 7, 8, 11, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 73, 75, 77, 79, 83, 106, 117, 120], "research": [0, 8, 21, 28], "configur": [0, 1, 3, 7, 9, 11, 12, 19, 21, 22, 23, 24, 26, 28, 29, 30, 32, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 56, 57, 58, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73, 77, 78, 80, 81, 83, 84, 85, 86, 89, 91, 93, 94, 99, 101, 103, 104, 105, 109, 110, 111, 113, 116, 117, 118, 119, 120, 122, 127, 128, 129, 131, 133, 134, 136, 137, 138], "instead": [0, 3, 6, 7, 12, 14, 19, 20, 21, 23, 26, 28, 31, 37, 44, 45, 46, 48, 50, 53, 54, 55, 56, 62, 64, 68, 72, 92, 140], "explicitli": [0, 2, 21, 23, 25, 28, 44, 45, 53, 54, 55, 62, 68], "pick": [0, 1, 2, 4, 14, 19, 21, 23, 25, 28, 31, 37, 38, 41, 45, 47, 53, 54, 55, 57, 62, 65, 66, 68], "subtop": [0, 21, 38, 39, 45, 48, 53, 54, 56, 57, 59, 65, 66, 67, 69, 70, 72, 77, 79, 82, 86, 87, 89, 103, 116, 123, 129, 130, 131, 132, 133, 135], "minim": [0, 2, 3, 14, 16, 20, 21, 23, 26, 28, 31, 38, 44, 45, 53, 54, 56, 62, 63, 64, 77, 79, 92, 97, 101, 117, 120], "transform": [0, 1, 20, 21, 22, 29, 37, 38, 48, 54, 56, 57, 62, 63, 64, 66, 67, 77, 82, 88, 93, 99, 101, 104, 106, 110, 113, 116, 127, 130, 131], "encod": [0, 3, 14, 20, 21, 32, 34, 47, 48, 50, 53, 55, 56, 57, 61, 62, 77, 92, 103, 132], "valu": [0, 3, 6, 8, 16, 19, 21, 22, 23, 24, 25, 31, 32, 33, 34, 38, 39, 41, 44, 47, 48, 50, 53, 54, 55, 56, 57, 59, 60, 61, 65, 66, 67, 68, 69, 77, 82, 92, 114, 116, 126, 128, 129, 131, 132, 133], "pair": [0, 2, 3, 20, 21, 22, 28, 33, 34, 42, 44, 55, 56, 59, 63, 64, 77, 89, 90, 92, 103, 104, 106, 110, 112, 114, 115, 120, 123, 127, 128], "json": [0, 3, 19, 20, 21, 34, 38, 48, 49, 56, 73, 77, 81, 82, 89, 92, 99, 103, 106, 115, 116], "reduc": [0, 2, 11, 12, 20, 21, 24, 26, 29, 31, 34, 37, 44, 45, 49, 54, 57, 62, 64], "through": [0, 1, 2, 3, 8, 12, 14, 19, 20, 22, 25, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 39, 42, 44, 45, 46, 47, 48, 49, 53, 54, 56, 57, 60, 62, 64, 65, 66, 67, 77, 78, 79, 82, 120, 130, 131], "x": [0, 2, 3, 6, 8, 9, 11, 12, 20, 21, 24, 27, 31, 41, 46, 50, 53, 55, 56, 57, 62, 63, 78, 86, 88, 89, 90, 92, 103, 106, 108, 112, 118, 126, 127], "xs_weather": [0, 21, 89, 103], "sourc": [0, 1, 2, 3, 4, 8, 9, 11, 12, 14, 19, 21, 22, 23, 24, 25, 27, 28, 29, 31, 32, 33, 37, 38, 41, 44, 48, 49, 50, 52, 54, 55, 56, 57, 60, 62, 63, 64, 66, 67, 68, 72, 74, 75, 77, 81, 82, 85, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 102, 103, 104, 108, 109, 110, 112, 113, 114, 116, 117, 118, 119, 120, 124, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 140], "weather": [0, 1, 2, 3, 6, 20, 21, 26, 27, 28, 30, 31, 37, 38, 44, 45, 46, 53, 54, 57, 59, 61, 62, 63, 71, 72, 78, 79, 86, 87, 90, 92, 103, 106, 108, 110, 112, 116, 123, 125, 126, 127, 135], "xpublic": [0, 2, 3, 21, 22, 38, 39, 41, 45, 46, 53, 54, 56, 65, 66, 67, 68, 69, 72, 77, 78, 79, 86, 87, 89, 90, 92, 103, 104, 116, 129, 130, 131, 132, 133, 135], "most": [0, 1, 2, 3, 14, 19, 20, 21, 22, 23, 25, 28, 29, 31, 34, 38, 39, 42, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 66, 77, 92, 130], "q": [0, 2, 3, 45, 79, 89, 90, 92, 103], "internet": [0, 2, 20, 30, 44, 47, 54, 57, 83, 87, 89, 90, 106, 111, 120], "our": [0, 1, 3, 4, 7, 11, 14, 20, 21, 24, 29, 39, 41, 44, 45, 46, 62, 64, 68, 79], "document": [0, 2, 14, 15, 19, 22, 25, 26, 27, 29, 31, 32, 33, 34, 38, 39, 41, 42, 45, 46, 47, 49, 50, 54, 55, 56, 57, 62, 63, 64, 70, 73, 78, 79, 81, 83, 84, 87, 88, 89, 90, 96, 99, 104, 105, 108, 110, 112, 113, 114, 115, 121, 126, 127, 134, 137, 140], "burden": 0, "code": [0, 1, 5, 7, 8, 9, 12, 18, 20, 21, 23, 27, 28, 29, 31, 35, 37, 38, 39, 42, 44, 48, 49, 50, 53, 54, 57, 58, 62, 63, 64, 66, 68, 70, 72, 73, 74, 77, 81, 82, 84, 86, 87, 88, 89, 94, 100, 101, 103, 106, 107, 108, 109, 110, 112, 116, 117, 120, 126, 127, 128, 129, 130, 132, 134, 135, 138], "expos": [0, 1, 37, 54, 62, 64, 89, 93, 101], "raw": [0, 3, 20, 29, 36, 45, 46, 47, 54, 56, 62, 64, 77, 78, 79, 92, 106, 126], "glue": [0, 45], "bug": [0, 3, 20, 44, 50, 56, 84, 89, 92, 96, 106, 120], "restrict": [0, 2, 11, 22, 39, 42, 44, 64, 89], "sensibl": [0, 20, 38, 60, 90, 106, 126], "rest": [0, 2, 3, 12, 19, 20, 21, 22, 26, 31, 32, 33, 38, 41, 42, 45, 49, 50, 54, 55, 56, 57, 62, 63, 64, 65, 68, 77, 79, 81, 88, 89, 90, 92, 95, 99, 101, 103, 104, 105, 106, 110, 112, 113, 114, 116, 126, 127, 128, 129, 132], "hous": [0, 31], "low": [0, 1, 3, 8, 12, 28, 29, 31, 37, 44, 53, 62], "send": [0, 1, 2, 3, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 37, 38, 39, 44, 45, 46, 48, 50, 51, 53, 54, 56, 58, 59, 60, 62, 63, 64, 66, 68, 77, 84, 85, 87, 106, 116, 128, 130], "read": [0, 2, 3, 4, 7, 8, 11, 14, 19, 20, 21, 22, 23, 24, 29, 31, 37, 38, 39, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 68, 70, 71, 77, 78, 79, 81, 82, 83, 84, 92, 95, 106, 116, 132, 134, 136], "fast": [0, 3, 7, 11, 20, 24, 37, 44, 54], "enabl": [0, 1, 2, 3, 16, 19, 20, 22, 31, 35, 37, 38, 44, 45, 46, 50, 53, 54, 56, 59, 60, 62, 64, 71, 77, 78, 79, 92, 97, 99, 106, 123, 136], "brows": [0, 6, 20, 31, 54, 55, 62, 65], "visit": [0, 109], "correspond": [0, 2, 3, 12, 14, 20, 21, 22, 29, 31, 38, 44, 45, 46, 49, 50, 53, 54, 55, 56, 57, 62, 64, 67, 68, 72, 77, 78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 92, 95, 99, 103, 104, 106, 110, 112, 113, 116, 117, 123, 126, 127, 128, 130, 131, 132, 135], "open": [0, 3, 20, 22, 26, 27, 30, 34, 38, 44, 47, 53, 54, 56, 59, 62, 63, 65, 67, 69, 71, 73, 77, 86, 87, 105, 106, 108, 112, 116, 120, 123, 131, 133], "encourag": [0, 3, 21, 28, 31, 63, 89, 103, 109, 112, 127], "asynchron": [0, 2, 38, 46, 68, 78, 89, 90, 98, 99, 116, 131, 132], "languag": [0, 3, 4, 12, 23, 26, 29, 31, 38, 50, 60, 63, 66, 67, 76], "vendor": [0, 8, 44, 50, 84], "neutral": [0, 26], "robust": [0, 2, 11, 23, 31, 37, 64, 89, 90, 101, 112, 117, 128], "next": [0, 1, 2, 3, 6, 18, 20, 21, 22, 26, 28, 29, 31, 37, 38, 39, 42, 45, 48, 54, 56, 61, 64, 65, 66, 69, 70, 112, 130], "section": [0, 2, 3, 4, 14, 16, 19, 20, 21, 22, 28, 34, 38, 39, 41, 42, 45, 50, 53, 55, 59, 60, 61, 62, 63, 64, 66, 79, 84, 86, 87, 88, 89, 90, 91, 92, 95, 97, 99, 103, 104, 106, 109, 115, 116, 123, 124, 125, 126, 127, 128, 130], "intern": [0, 1, 2, 11, 14, 19, 20, 22, 27, 29, 31, 47, 48, 50, 55, 56, 57, 62, 66, 68, 77, 82, 83, 84, 88, 89, 90, 93, 95, 99, 104, 106, 108, 110, 112, 126, 130, 132], "financi": [0, 26, 31, 89, 105, 112], "world": [0, 6, 20, 26, 27, 31, 37, 44, 51, 57, 62, 66, 101, 106, 120, 126], "proprietari": [0, 2, 12, 31, 37, 44], "system": [0, 1, 2, 3, 7, 9, 11, 12, 20, 21, 23, 24, 25, 26, 28, 29, 31, 37, 38, 41, 44, 45, 46, 48, 49, 53, 54, 56, 57, 62, 63, 64, 65, 66, 67, 73, 79, 87, 92, 106, 110, 112, 130, 131, 134], "built": [0, 1, 3, 4, 12, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 37, 38, 44, 45, 47, 48, 50, 53, 54, 55, 56, 57, 62, 66, 67, 68, 70, 77, 92, 106], "get": [0, 1, 2, 3, 4, 6, 7, 8, 11, 14, 17, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 65, 66, 68, 70, 72, 73, 77, 78, 79, 81, 87, 90, 92, 99, 106, 116, 117, 120, 130, 132, 134], "awai": [0, 2, 19, 22, 27, 37, 56, 57], "lock": [0, 7, 8, 9, 11, 25, 45, 46, 56, 78, 79, 102], "quit": [0, 3, 4, 12, 19, 20, 21, 23, 26, 27, 29, 31, 44, 45, 54, 55, 79], "matur": [0, 2, 3, 19, 26, 30, 89, 90, 112], "invari": [0, 31, 55], "behind": [0, 8, 12, 17, 22, 24, 27, 28, 44], "scene": 0, "compon": [0, 1, 2, 3, 4, 5, 9, 11, 12, 19, 22, 23, 26, 27, 29, 32, 33, 35, 37, 38, 39, 41, 44, 45, 48, 50, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 87, 88, 92, 106, 121, 123, 129, 131, 134, 136], "visibl": [0, 2, 3, 6, 21, 22, 31, 44, 46, 54, 64, 78, 87, 89, 90, 92, 99, 103, 112, 120, 128], "compani": [0, 31, 57], "soundcloud": [0, 31, 89, 112], "see": [0, 1, 2, 3, 4, 6, 7, 12, 14, 19, 20, 21, 22, 23, 24, 26, 28, 29, 31, 37, 38, 39, 45, 46, 48, 49, 50, 53, 54, 55, 56, 65, 67, 68, 70, 71, 72, 77, 79, 92, 106, 117], "good": [0, 2, 3, 4, 6, 7, 11, 14, 19, 20, 22, 25, 27, 28, 31, 37, 38, 42, 45, 48, 53, 54, 55, 56, 57, 65, 66, 67, 68, 77, 79, 88, 92, 104, 130, 131], "monitor": [0, 2, 21, 23, 24, 26, 28, 31, 37, 38, 44, 45, 46, 53, 54, 55, 62, 65, 67, 71, 72, 112], "integr": [0, 3, 19, 20, 28, 29, 37, 38, 50, 68, 70, 84, 109], "technologi": [0, 1, 2, 26, 27, 31, 37, 44, 89, 90, 93, 101, 105, 108, 112, 120], "cloud": [0, 3, 6, 31, 51, 80, 89, 92, 112], "xml": [0, 1, 3, 20, 24, 31, 36, 38, 45, 46, 49, 53, 54, 57, 65, 67, 68, 72, 78, 79, 81, 86, 87, 89, 92, 93, 106, 112, 116, 118, 129, 131, 132, 135], "easi": [0, 1, 5, 20, 28, 29, 38, 39, 47, 49, 54, 57, 67, 87], "With": [0, 1, 2, 6, 11, 12, 19, 20, 23, 28, 30, 37, 38, 41, 44, 45, 47, 53, 54, 55, 62, 63, 64, 66, 67, 70, 117], "palett": [0, 89], "paint": 0, "dialect": [0, 56, 89], "schema": [0, 45, 79], "etc": [0, 1, 2, 3, 4, 5, 7, 11, 19, 20, 21, 27, 28, 29, 31, 32, 33, 37, 38, 41, 42, 45, 46, 47, 54, 55, 56, 57, 59, 60, 62, 64, 71, 77, 78, 79, 83, 87, 88, 89, 90, 91, 92, 93, 99, 100, 101, 103, 106, 108, 109, 110, 112, 113, 114, 116, 123, 124, 126, 128, 136], "valid": [0, 1, 3, 4, 14, 19, 20, 21, 31, 32, 33, 45, 46, 47, 49, 53, 54, 56, 57, 62, 63, 64, 73, 77, 78, 79, 81, 83, 86, 87, 89, 91, 92, 93, 95, 99, 103, 106, 108, 112, 113, 114, 126, 127, 128], "pars": [0, 3, 4, 19, 20, 34, 38, 39, 47, 48, 50, 53, 54, 55, 56, 62, 64, 66, 68, 77, 88, 91, 116], "addit": [0, 3, 4, 11, 12, 14, 19, 20, 22, 24, 27, 28, 29, 31, 35, 38, 42, 44, 53, 54, 55, 56, 57, 61, 62, 64, 66, 67, 70, 77, 92, 134], "remain": [0, 2, 3, 4, 8, 19, 20, 23, 29, 31, 32, 33, 38, 45, 46, 48, 55, 56, 57, 62, 63, 64, 65, 77, 92], "uncertain": 0, "real": [0, 1, 3, 7, 8, 11, 21, 26, 27, 28, 29, 31, 37, 44, 45, 53, 54, 59, 60, 61, 62, 63, 64, 65, 70, 92, 101, 140], "interoperabiltii": 0, "must": [0, 1, 2, 3, 4, 8, 11, 18, 19, 20, 21, 22, 23, 24, 28, 31, 32, 33, 38, 39, 41, 42, 44, 45, 46, 50, 53, 54, 55, 56, 57, 62, 63, 64, 67, 68, 70, 73, 77, 92, 116], "rss": [0, 1, 20, 31, 37, 45, 62, 65, 79, 89, 93, 101, 106, 112, 126], "atom": [0, 1, 20, 23, 31, 37, 45, 63, 79, 89, 93, 101, 106, 112], "common": [0, 1, 2, 3, 9, 20, 21, 23, 25, 31, 34, 35, 37, 38, 39, 44, 45, 48, 50, 53, 54, 55, 57, 59, 62, 64, 66, 70, 86, 87, 89, 92, 112, 116, 134], "alert": [0, 2, 14, 20, 26, 31, 38, 53, 54, 59, 86, 87, 89, 90, 95, 105, 106, 110, 112, 116, 123], "cap": [0, 1, 13, 20, 31, 38, 53, 54, 57, 59, 86, 87, 89, 93, 106, 112, 116, 123], "those": [0, 1, 2, 3, 4, 6, 19, 20, 21, 22, 23, 26, 27, 29, 31, 37, 38, 44, 45, 49, 50, 54, 55, 56, 57, 62, 63, 64, 65, 67, 70, 73, 77, 92], "everi": [0, 2, 3, 7, 8, 11, 12, 14, 17, 20, 23, 24, 25, 28, 30, 38, 44, 47, 49, 53, 54, 56, 57, 61, 62, 63, 64, 68], "conceiv": [0, 31], "form": [0, 2, 3, 4, 11, 20, 21, 22, 32, 33, 37, 38, 39, 44, 46, 48, 49, 50, 55, 56, 57, 62, 63, 67, 77, 78, 81, 82, 84, 86, 90, 91, 92, 93, 99, 103, 106, 112, 116, 126, 127, 128, 131, 132], "elimin": [0, 7, 14, 20, 31, 35, 37, 55, 57, 62, 64, 77], "consider": [0, 1, 2, 3, 20, 21, 23, 28, 31, 37, 40, 43, 55, 56, 64, 68, 77, 92], "choos": [0, 1, 12, 14, 20, 31, 38, 44, 45, 54, 62, 73, 116], "colour": 0, "applicaton": 0, "narrow": [0, 12, 20, 39, 54, 62, 68], "scope": [0, 1, 2, 14, 19, 20, 21, 24, 45, 62, 93, 121], "necessari": [0, 3, 4, 23, 26, 27, 29, 44, 45, 46, 48, 50, 55, 56, 57, 62, 63, 66, 70, 77], "obtain": [0, 1, 2, 8, 11, 14, 20, 21, 22, 26, 28, 31, 32, 33, 38, 44, 45, 48, 53, 54, 59, 62, 63, 64, 65, 66, 68, 70, 79, 132], "man": [0, 2, 3, 4, 14, 20, 28, 38, 44, 45, 53, 58, 64, 66, 67, 70, 89, 92, 128, 132], "page": [0, 2, 3, 4, 14, 20, 22, 26, 27, 33, 38, 45, 48, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 70, 71, 73, 79, 82, 86, 87, 89, 90, 91, 92, 95, 104, 105, 106, 108, 114, 116, 122, 123, 124, 125, 126, 127, 128, 130, 131, 134, 136, 139, 140], "statu": [1, 2, 3, 14, 16, 27, 30, 32, 33, 38, 41, 49, 54, 55, 57, 59, 60, 65, 70, 72, 73, 87, 90, 92, 93, 95, 97, 113, 114, 116, 123, 124, 129, 134, 135], "approv": [1, 3, 20, 29, 32, 33, 62, 93, 113, 114], "draft1": [1, 32, 93, 113], "20150608": [1, 93], "sarracenia": [1, 2, 4, 15, 16, 19, 20, 22, 23, 24, 25, 26, 28, 30, 31, 34, 35, 37, 40, 43, 45, 48, 49, 50, 51, 52, 55, 58, 60, 61, 62, 63, 65, 66, 67, 69, 74, 79, 80, 81, 82, 84, 85, 88, 90, 91, 93, 97, 99, 101, 102, 104, 105, 106, 107, 109, 111, 112, 115, 117, 118, 119, 121, 122, 124, 125, 126, 127, 129, 130, 131, 133, 138, 139, 140], "i": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 82, 83, 84, 86, 88, 89, 92, 94, 99, 101, 104, 106, 109, 112, 113, 114, 116, 117, 120, 121, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 140], "data": [1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 20, 21, 22, 23, 25, 26, 27, 28, 30, 32, 33, 37, 38, 41, 42, 44, 47, 48, 50, 52, 55, 56, 58, 59, 60, 61, 63, 64, 65, 66, 70, 73, 74, 77, 81, 82, 86, 87, 88, 91, 92, 99, 101, 106, 109, 112, 113, 114, 116, 119, 121, 126, 127, 128, 130, 132, 134, 140], "duplic": [1, 20, 21, 28, 35, 38, 41, 43, 45, 48, 50, 53, 55, 56, 57, 59, 62, 63, 64, 66, 93, 107], "leverag": [1, 7, 27, 37, 57], "amqp": [1, 3, 4, 11, 15, 18, 19, 22, 25, 27, 28, 29, 30, 33, 34, 35, 37, 39, 41, 47, 48, 49, 50, 52, 53, 54, 55, 57, 58, 59, 61, 63, 65, 66, 67, 68, 69, 70, 71, 72, 77, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 96, 99, 101, 102, 104, 107, 108, 109, 110, 111, 114, 115, 119, 123, 125, 127, 129, 130, 131, 132, 133, 134, 135, 136], "end": [1, 3, 4, 8, 14, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 37, 38, 39, 41, 44, 45, 47, 49, 54, 55, 56, 57, 61, 62, 63, 64, 65, 77, 81, 83, 92, 93, 109], "wherea": [1, 3, 20, 62], "sundew": [1, 9, 23, 25, 27, 29, 31, 37, 38, 43, 50, 55, 56, 57, 77, 85, 93, 101, 102, 108, 110, 112, 117, 119], "standalon": [1, 20, 45, 55, 62, 79, 106, 126, 132], "structur": [1, 3, 11, 19, 20, 31, 37, 38, 46, 50, 53, 55, 56, 57, 64, 68, 77, 84, 86, 88, 92, 93, 96, 99, 101, 106, 112, 116, 128, 132], "carri": [1, 19], "interven": [1, 2, 14, 24, 31, 37, 44, 53, 64, 93, 112, 120], "until": [1, 2, 6, 14, 17, 19, 20, 24, 26, 28, 29, 31, 42, 56, 59, 62, 63, 64, 72, 73, 77, 106], "explicit": [1, 3, 5, 8, 20, 23, 31, 37, 38, 44, 45, 53, 54, 62, 79, 86, 87, 88, 89, 90, 92, 93, 100, 101, 102, 103, 106, 109, 112, 117, 120, 126, 132], "acknowledg": [1, 17, 19, 20, 22, 26, 38, 48, 56, 57, 62, 66, 68, 77, 82, 130], "propag": [1, 2, 8, 15, 20, 24, 28, 31, 57, 64, 90, 93, 96, 106, 109, 112, 118, 121, 128], "network": [1, 2, 8, 11, 20, 21, 22, 23, 24, 25, 28, 31, 32, 33, 37, 38, 44, 45, 46, 49, 54, 62, 63, 64, 78, 79, 101, 119], "tradit": [1, 2, 8, 11, 31, 37, 54, 55, 57, 64, 65, 66, 88], "point": [1, 3, 4, 5, 6, 7, 8, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 35, 37, 42, 44, 45, 50, 53, 54, 56, 57, 59, 62, 63, 64, 66, 68, 73, 77, 79, 80, 84, 85, 87, 89, 91, 93, 96, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 117, 120, 123, 125, 126, 127, 128, 130, 136], "affair": [1, 93, 95], "where": [1, 2, 4, 6, 12, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 70, 72, 73, 77, 83, 92, 116, 117], "knowledg": [1, 4, 19, 21, 28, 38, 55, 66], "flow": [1, 2, 5, 6, 11, 14, 19, 22, 26, 30, 31, 32, 33, 35, 37, 39, 41, 44, 45, 50, 52, 53, 54, 55, 57, 58, 59, 62, 64, 65, 68, 70, 74, 77, 82, 84, 87, 88, 95, 99, 100, 103, 113, 114, 121, 123, 126, 129, 130, 131, 132, 133, 134], "from": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 39, 41, 42, 44, 47, 48, 49, 50, 53, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 77, 78, 79, 81, 82, 83, 87, 88, 92, 99, 106, 109, 112, 116, 123, 129, 130, 131, 133], "both": [1, 2, 3, 4, 7, 8, 11, 12, 14, 18, 19, 20, 21, 22, 23, 24, 25, 28, 31, 32, 33, 34, 39, 41, 44, 45, 47, 48, 49, 50, 54, 55, 56, 57, 62, 64, 66, 70, 71, 77, 79, 92], "heart": [1, 37], "access": [1, 3, 7, 8, 9, 12, 19, 20, 21, 23, 29, 31, 35, 37, 42, 44, 45, 46, 47, 49, 50, 53, 55, 56, 57, 62, 64, 65, 68, 69, 70, 71, 77, 78, 79, 81, 83, 86, 87, 88, 90, 93, 101, 106, 110, 112, 117, 136], "folder": [1, 20, 21, 29, 37, 47, 53, 54, 55, 71], "waf": [1, 20, 37, 93, 101, 106], "us": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 30, 32, 33, 34, 35, 36, 39, 41, 42, 44, 50, 51, 52, 53, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 69, 70, 72, 74, 77, 78, 79, 82, 83, 87, 88, 90, 91, 92, 101, 106, 116, 117, 121, 124, 127, 129, 131, 133, 134, 135], "test": [1, 2, 12, 19, 21, 22, 23, 28, 29, 37, 38, 40, 44, 45, 46, 53, 54, 55, 56, 57, 62, 63, 68, 71, 77, 78, 79, 86, 87, 88, 90, 96, 99, 104, 109, 110, 116, 120, 126, 132, 136], "applic": [1, 3, 5, 7, 8, 9, 11, 12, 17, 19, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 34, 35, 37, 44, 46, 48, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 65, 70, 77, 78, 79, 81, 82, 84, 86, 87, 88, 92, 93, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 115, 117, 120, 126, 127, 128, 129, 134], "soft": [1, 37, 49, 81, 101], "quickli": [1, 2, 8, 12, 19, 20, 30, 31, 37, 38, 50, 52, 54, 55, 62, 63, 65, 72, 85], "hop": [1, 2, 14, 20, 21, 22, 26, 31, 37, 54, 64], "perhap": [1, 2, 3, 6, 8, 14, 17, 19, 20, 21, 24, 29, 31, 37, 38, 41, 42, 53, 54, 57, 62, 64, 66, 77, 130], "count": [1, 3, 7, 14, 20, 28, 32, 37, 38, 45, 48, 54, 56, 64, 65, 66, 67, 68, 77, 79, 82, 92, 116, 128, 130, 131, 132], "push": [1, 3, 4, 6, 11, 20, 26, 27, 28, 30, 37, 91, 92, 93, 101, 105, 106, 108, 111], "poll": [1, 3, 19, 21, 23, 24, 28, 31, 37, 41, 42, 45, 48, 50, 54, 58, 59, 60, 62, 65, 66, 70, 77, 82, 84, 85, 87, 92, 99, 101, 103, 105, 109, 118, 119, 121, 123, 124, 126, 129, 130, 134], "great": [1, 4, 6, 12, 23, 28, 31, 37, 38, 48, 53, 54, 55, 66], "deal": [1, 2, 8, 12, 14, 19, 22, 28, 29, 31, 37, 38, 46, 48, 56, 57, 66, 68, 77], "bandwidth": [1, 2, 8, 20, 24, 31, 37, 45, 54, 62, 126], "an": [1, 2, 4, 6, 7, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 32, 33, 34, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 75, 77, 82, 83, 88, 106, 107, 109, 112, 116, 117, 118, 120, 121, 127, 130], "stipul": [1, 37, 93, 101], "interv": [1, 28, 31, 37, 38, 44, 45, 46, 54, 56, 57, 78, 79], "five": [1, 20, 28, 31, 37, 41, 53, 56, 63, 65, 77], "advanc": [1, 3, 26, 31, 37, 46, 64, 78, 101, 105, 112, 128], "queue": [1, 3, 9, 11, 12, 16, 17, 19, 21, 22, 26, 27, 28, 29, 31, 35, 37, 38, 39, 41, 46, 47, 48, 49, 50, 55, 56, 57, 59, 60, 64, 65, 66, 67, 68, 71, 72, 77, 78, 79, 81, 83, 87, 88, 89, 92, 101, 103, 104, 105, 107, 112, 121, 123, 124, 130, 131, 132, 135, 136], "bring": [1, 3, 19, 26, 29, 31, 35, 37, 54, 66], "far": [1, 2, 6, 8, 11, 12, 19, 20, 22, 23, 26, 28, 29, 31, 37, 38, 50, 55, 60, 63, 65, 66, 67, 130, 131], "pull": [1, 3, 4, 28, 29, 31, 32, 33, 37, 40, 42, 45, 46, 48, 53, 55, 57, 64, 75, 78, 92, 112, 113, 114], "onto": [1, 20, 31, 37, 39, 54, 55, 66, 68], "downstream": [1, 2, 23, 32, 33, 37, 38, 45, 48, 53, 55, 64], "log": [1, 3, 7, 9, 11, 14, 19, 22, 26, 28, 30, 31, 33, 37, 39, 41, 42, 45, 46, 47, 49, 50, 53, 55, 56, 58, 62, 63, 64, 65, 67, 70, 71, 72, 73, 74, 77, 78, 79, 81, 82, 83, 88, 90, 92, 99, 101, 104, 105, 106, 109, 112, 113, 114, 116, 121, 126, 127, 129, 130, 131, 134, 135, 136], "entir": [1, 2, 3, 4, 6, 7, 9, 11, 12, 14, 19, 20, 21, 22, 23, 26, 29, 31, 32, 33, 34, 37, 38, 42, 44, 45, 48, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 66, 77], "took": [1, 7, 12, 19, 28, 37, 44, 54, 87], "first": [1, 2, 3, 4, 6, 12, 14, 18, 19, 20, 21, 22, 23, 26, 27, 28, 29, 31, 35, 37, 38, 39, 41, 44, 46, 47, 49, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 71, 73, 74, 106], "chain": [1, 2, 29, 37, 44, 45, 53, 64, 79, 84, 128], "opaqu": [1, 8, 31, 37, 55, 88, 93, 101, 112], "trace": [1, 19, 37, 45, 57, 79], "assist": [1, 29, 31, 37, 93, 118, 137], "administr": [1, 2, 3, 20, 21, 22, 26, 28, 29, 31, 37, 44, 45, 46, 49, 54, 56, 62, 70, 71, 81, 85, 89, 90, 92, 103, 106, 126, 136], "went": [1, 3, 27, 29, 31], "diagnost": [1, 37, 38, 93, 101, 116], "vastli": [1, 37], "simplifi": [1, 2, 3, 19, 29, 31, 34, 37, 54, 64, 87, 90, 110, 115, 120, 128], "everyon": [1, 5, 31], "ingest": [1, 20, 21, 26, 28, 37, 38, 39, 41, 52, 62, 70, 85, 93, 101, 103, 105, 106, 116, 126, 134], "suffici": [1, 3, 19, 23, 29, 31, 37, 38, 53, 57, 92], "worthwhil": [1, 3, 7, 31, 37, 50], "travers": [1, 2, 14, 20, 28, 37, 44, 45, 53, 54, 57, 62, 63, 79, 87, 90, 93, 101, 106, 120, 126, 127], "reassembli": [1, 18, 31, 37], "A": [1, 2, 5, 7, 8, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 35, 37, 38, 39, 41, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 72, 74, 77, 79, 85, 88, 90, 92, 96, 99, 103, 106, 109, 110, 112, 116, 117, 119, 120, 123, 124, 126, 128], "sever": [1, 2, 3, 12, 20, 26, 28, 29, 31, 37, 39, 42, 44, 45, 46, 49, 50, 53, 62, 63, 67, 120], "thread": [1, 3, 7, 14, 23, 27, 37, 56, 63, 93, 108, 117], "up": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 14, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 37, 38, 41, 44, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 67, 68, 70, 72, 77, 79, 80, 92, 134], "them": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 19, 20, 21, 22, 23, 26, 28, 29, 30, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 68, 70, 77, 82, 84, 92, 117, 132, 134], "usag": [1, 2, 3, 8, 20, 22, 28, 29, 37, 39, 41, 45, 54, 56, 57, 62, 64, 65, 66, 67, 77, 79, 87, 90, 92, 104, 106, 108, 110, 112, 119, 120, 121, 126, 128, 130, 131, 132], "intervent": [1, 8, 29, 31, 37, 50, 84, 93, 101, 110, 112], "store": [1, 2, 3, 6, 11, 14, 19, 20, 22, 28, 29, 30, 34, 36, 37, 38, 44, 45, 47, 48, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 70, 77, 90, 92, 106, 111, 116, 134], "concept": [1, 4, 5, 7, 19, 26, 31, 39, 41, 43, 45, 48, 54, 56, 57, 64, 66, 68, 79, 82, 87, 88, 91, 93, 96, 101, 104, 105, 112, 114, 119, 127, 128, 130, 132], "below": [1, 3, 4, 7, 18, 19, 20, 21, 22, 23, 28, 29, 34, 38, 50, 51, 54, 55, 56, 59, 62, 63, 64, 66, 68, 77], "yet": [1, 2, 11, 19, 21, 23, 26, 28, 29, 32, 37, 38, 47, 53, 54, 56, 57, 64, 77], "mayb": 1, "later": [1, 2, 3, 6, 8, 9, 14, 19, 23, 25, 28, 29, 31, 37, 38, 45, 48, 54, 55, 56, 57, 62, 64, 66, 77, 117, 130], "sure": [1, 2, 3, 4, 7, 12, 19, 38, 41, 42, 45, 46, 47, 50, 53, 55, 56, 83, 88, 92, 117], "about": [1, 2, 3, 4, 7, 8, 9, 12, 19, 20, 21, 22, 23, 26, 27, 28, 29, 31, 37, 38, 44, 45, 46, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 68, 77, 88, 92, 130, 131], "meant": [1, 3, 9, 12, 20, 22, 37, 53, 55, 56, 57, 62, 64, 77], "guid": [1, 15, 19, 22, 43, 45, 48, 53, 55, 56, 59, 62, 70, 79, 82, 85, 86, 88, 96, 99, 104, 119, 123, 126, 134], "reflect": [1, 2, 3, 4, 19, 41, 44, 48, 62, 66, 68], "design": [1, 4, 7, 15, 19, 26, 28, 29, 30, 32, 33, 37, 45, 55, 57, 63, 91, 96], "decis": [1, 2, 11, 23, 31, 45, 53, 62, 64], "object": [1, 2, 3, 4, 19, 22, 31, 34, 38, 45, 48, 49, 55, 56, 57, 62, 64, 66, 67, 68, 77, 79, 81, 88, 91, 92, 112, 121, 128, 132], "advic": [1, 52, 54, 66], "seem": [1, 3, 11, 19, 24, 54, 56, 57, 77], "rid": [1, 19, 28, 41, 56, 77], "put": [1, 6, 7, 8, 9, 19, 20, 22, 26, 28, 29, 36, 38, 41, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 62, 66, 67, 68, 70, 71, 77, 99, 106, 136], "charg": [1, 6, 44, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 112, 115, 116, 117, 119, 121, 124, 125, 126, 127, 128, 129, 130, 131, 132, 135], "chang": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 14, 15, 20, 23, 26, 27, 28, 30, 31, 32, 33, 37, 38, 39, 41, 42, 44, 46, 47, 48, 50, 54, 56, 57, 62, 63, 64, 71, 74, 77, 84, 92, 93, 99, 106, 112, 116, 126], "stop": [1, 3, 8, 14, 16, 19, 26, 28, 38, 42, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 59, 60, 62, 65, 66, 67, 70, 71, 72, 73, 77, 78, 79, 80, 81, 83, 87, 92, 93, 97, 123, 124, 126, 129, 130, 131, 135, 136, 137], "metadata": [1, 5, 11, 24, 28, 29, 31, 38, 47, 49, 53, 55, 56, 57, 62, 63, 64, 70, 73, 77, 81, 116, 134], "gum": 1, "threshold": [1, 2, 14, 31, 53, 54, 57, 65, 66, 67, 87, 130, 131], "everyth": [1, 2, 14, 19, 23, 28, 29, 42, 44, 47, 49, 56, 57, 62, 68, 70], "config": [1, 3, 16, 18, 19, 20, 21, 22, 23, 24, 28, 32, 33, 38, 39, 40, 42, 45, 46, 47, 49, 50, 53, 54, 55, 57, 58, 59, 60, 61, 63, 65, 67, 69, 70, 71, 72, 74, 78, 79, 81, 82, 83, 84, 86, 87, 88, 92, 93, 97, 99, 104, 106, 109, 113, 114, 116, 117, 123, 124, 125, 127, 129, 130, 131, 133, 134, 135, 136], "uniqu": [1, 2, 3, 9, 12, 19, 20, 21, 31, 32, 33, 46, 53, 54, 57, 62, 64, 78, 79, 81, 82, 83, 84, 86, 87, 88, 90, 92, 93, 95, 97, 99, 101, 103, 104, 106, 107, 109, 110, 112, 113, 114, 115, 116, 117, 119, 120, 125, 126, 127, 128, 130, 132, 134], "host": [1, 2, 3, 17, 20, 21, 22, 26, 31, 32, 41, 45, 46, 47, 57, 61, 62, 63, 64, 69, 78, 79, 83, 90, 92, 106, 113, 125, 127, 128, 133], "dsh": [1, 93], "px": [1, 18, 41, 42, 45, 46, 57, 78, 79, 93, 94], "sort": [1, 2, 3, 9, 19, 20, 22, 23, 26, 27, 31, 36, 37, 38, 41, 44, 45, 50, 54, 55, 56, 57, 62, 64, 68, 77, 78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 92, 93, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 123, 124, 126, 127, 128, 130, 132, 134], "bu": [1, 37, 64, 93, 101, 128], "might": [1, 2, 3, 6, 11, 14, 19, 20, 21, 22, 23, 26, 31, 34, 36, 37, 38, 39, 41, 44, 45, 49, 53, 54, 55, 56, 57, 59, 62, 65, 68, 70, 77], "command": [1, 2, 3, 4, 14, 16, 18, 19, 22, 23, 27, 28, 29, 35, 37, 38, 39, 41, 43, 44, 45, 46, 48, 50, 53, 54, 56, 59, 60, 61, 62, 63, 64, 67, 70, 72, 74, 77, 78, 79, 82, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 97, 99, 101, 104, 107, 108, 109, 110, 116, 117, 119, 120, 123, 124, 125, 126, 127, 128, 129, 131, 134, 135, 138, 139, 140], "cluster": [1, 2, 3, 5, 7, 8, 9, 20, 21, 22, 23, 24, 26, 28, 29, 31, 38, 41, 42, 44, 54, 56, 57, 62, 64, 67, 68, 70, 77, 78, 87, 90, 92, 93, 100, 103, 104, 106, 109, 112, 116, 117, 120, 126, 128, 131, 132, 134], "It": [1, 2, 3, 4, 7, 8, 9, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 77, 104, 121], "justic": [1, 93], "seen": [1, 11, 19, 20, 23, 29, 47, 54, 55, 63], "return": [1, 3, 4, 7, 8, 9, 11, 12, 19, 20, 28, 29, 37, 38, 39, 44, 45, 48, 49, 53, 55, 56, 57, 59, 62, 64, 65, 67, 68, 69, 70, 77, 81, 82, 88, 91, 92, 106, 116, 134], "want": [1, 2, 3, 4, 5, 6, 7, 8, 14, 16, 19, 20, 21, 22, 23, 26, 27, 31, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 53, 54, 56, 57, 60, 62, 63, 65, 66, 67, 68, 69, 70, 73, 92, 117, 133], "suppli": [1, 3, 20, 24, 47, 49, 55, 56, 61, 62, 63, 64, 68, 69, 77, 106, 133], "drown": 1, "meta": [1, 28, 31, 46, 53, 64, 78, 109, 128], "local": [1, 2, 8, 17, 20, 21, 22, 23, 26, 27, 29, 31, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 66, 67, 69, 73, 74, 77, 79, 81, 82, 83, 86, 87, 88, 90, 91, 96, 98, 101, 103, 104, 105, 106, 108, 110, 112, 116, 117, 120, 123, 125, 126, 127, 128, 130, 131, 133, 138], "disposit": [1, 3, 47, 56, 64, 77, 83, 90, 92, 93, 101, 103, 104, 105, 106, 108, 112, 124, 126, 128, 130], "whenev": [1, 2, 8, 20, 23, 28, 31, 41, 54, 56, 57, 63, 64, 117], "either": [1, 2, 3, 14, 16, 19, 20, 22, 23, 24, 26, 28, 31, 38, 44, 45, 47, 48, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 65, 66, 68, 70, 77, 83, 124, 130], "abandon": [1, 90, 127], "tool": [1, 2, 4, 11, 14, 20, 22, 27, 28, 29, 37, 38, 41, 42, 45, 53, 54, 55, 59, 65, 67, 70, 79, 134], "replic": [1, 2, 3, 8, 14, 27, 29, 31, 37, 53, 64], "linux": [1, 3, 9, 12, 14, 16, 20, 21, 22, 23, 25, 28, 31, 37, 38, 44, 45, 50, 52, 54, 55, 56, 59, 60, 62, 63, 64, 65, 70, 72, 79, 84, 85, 87, 88, 92, 93, 95, 97, 101, 102, 103, 104, 106, 109, 112, 116, 117, 120, 123, 124, 126, 127, 128, 129, 134, 135], "uid": [1, 45, 46, 78, 79, 93], "gid": [1, 93], "origin": [1, 2, 3, 8, 12, 14, 15, 19, 20, 21, 22, 26, 27, 28, 29, 31, 32, 33, 38, 41, 44, 45, 48, 53, 54, 55, 56, 57, 62, 64, 66, 79, 82, 86, 87, 88, 90, 92, 93, 95, 96, 99, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 117, 120, 126, 128, 130], "modifi": [1, 2, 3, 19, 20, 21, 22, 23, 24, 28, 29, 31, 32, 33, 38, 39, 41, 42, 46, 47, 49, 53, 54, 55, 56, 57, 59, 62, 63, 64, 65, 66, 67, 71, 77, 78, 81, 82, 83, 84, 87, 88, 90, 92, 93, 106, 108, 109, 110, 113, 114, 116, 117, 118, 123, 124, 126, 127, 129, 130, 131, 136], "acl": [1, 93], "relev": [1, 2, 3, 4, 20, 31, 39, 48, 50, 56, 57, 62, 66, 77, 91, 130], "destin": [1, 2, 9, 11, 12, 19, 21, 22, 23, 25, 26, 28, 29, 31, 37, 38, 41, 44, 45, 50, 53, 55, 57, 61, 62, 63, 64, 77, 79, 83, 84, 86, 88, 90, 93, 99, 101, 102, 103, 104, 105, 109, 110, 112, 117, 120, 125, 126, 127, 128], "extend": [1, 3, 8, 9, 11, 12, 27, 29, 39, 45, 54, 56, 63, 64, 70, 92, 116, 134], "attribut": [1, 3, 4, 12, 20, 28, 38, 55, 56, 63, 64, 70, 79, 88, 91, 92, 93, 106, 109, 116, 118, 128, 134], "portabl": [1, 14, 27, 28, 37, 62, 92, 99, 101, 108, 109, 126], "win": [1, 3, 12, 14, 37, 92, 93, 95], "mac": [1, 14, 20, 37, 38, 56, 59, 65, 70, 93, 95, 101, 106, 116, 123, 129, 134], "lin": [1, 93], "netapp": [1, 93], "again": [1, 3, 6, 14, 19, 20, 23, 24, 28, 41, 42, 44, 45, 46, 48, 53, 54, 55, 56, 57, 62, 63, 66, 73, 79, 130], "doubt": 1, "doe": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 14, 16, 17, 19, 20, 21, 22, 23, 24, 26, 31, 32, 33, 37, 38, 44, 45, 47, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 68, 70, 72, 73, 77, 124], "worri": [1, 28, 53, 55], "1": [1, 3, 4, 6, 7, 8, 12, 14, 16, 17, 22, 23, 26, 27, 28, 29, 31, 32, 33, 34, 37, 38, 39, 41, 42, 45, 47, 48, 49, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 79, 81, 82, 83, 86, 87, 88, 91, 92, 93, 95, 96, 97, 98, 101, 104, 105, 108, 109, 110, 112, 113, 114, 115, 116, 117, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136], "scalabl": [1, 2, 28, 30], "re": [1, 2, 3, 4, 5, 9, 11, 12, 14, 15, 19, 20, 21, 22, 23, 26, 28, 31, 35, 38, 44, 45, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 67, 68, 73, 77, 78, 79, 90, 93, 99, 106, 110, 116, 117, 118, 120, 126, 128, 131], "assembli": [1, 2, 14, 18], "bigger": [1, 6, 9, 11, 14, 17, 23, 63], "greater": [1, 20, 31, 42, 44, 62], "add": [1, 2, 3, 4, 5, 7, 8, 9, 16, 19, 20, 23, 25, 27, 28, 29, 31, 32, 37, 38, 39, 42, 44, 45, 47, 48, 49, 53, 54, 55, 56, 57, 59, 60, 62, 63, 65, 66, 68, 70, 73, 77, 81, 83, 87, 88, 92, 97, 99, 106, 110, 117, 123, 124, 127, 129, 130, 134], "prove": [1, 8, 27, 29], "togeth": [1, 2, 3, 6, 19, 20, 29, 32, 33, 37, 38, 55, 64, 92], "how": [1, 2, 3, 4, 6, 7, 9, 11, 12, 19, 20, 22, 23, 24, 25, 26, 28, 31, 34, 37, 38, 39, 41, 42, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 60, 62, 63, 65, 68, 70, 71, 73, 74, 77, 95], "go": [1, 2, 3, 8, 11, 17, 19, 20, 22, 26, 27, 28, 31, 37, 38, 39, 41, 42, 44, 48, 50, 53, 54, 56, 57, 62, 65, 67, 68, 70, 77, 79, 82, 101, 112, 140], "ftp": [1, 2, 3, 4, 19, 20, 25, 27, 29, 31, 38, 41, 43, 45, 46, 47, 48, 49, 50, 55, 57, 58, 61, 62, 63, 64, 68, 70, 77, 78, 79, 81, 82, 83, 84, 88, 90, 91, 92, 93, 99, 102, 106, 108, 110, 112, 116, 119, 125, 126, 127, 128, 132, 134], "transport": [1, 6, 19, 21, 26, 28, 31, 37, 38, 44, 45, 53, 55, 62, 64, 68, 79, 86, 88, 93, 99, 101, 103, 105, 109, 112, 116, 119, 120, 126, 128, 132], "group": [1, 8, 16, 17, 19, 20, 27, 38, 39, 41, 42, 45, 49, 50, 54, 55, 59, 60, 61, 62, 63, 64, 68, 79, 81, 87, 88, 90, 93, 97, 98, 99, 106, 108, 116, 123, 124, 125, 126, 127, 128], "interconnect": [1, 22, 26, 29, 31, 64, 128], "u": [1, 2, 3, 8, 11, 12, 20, 28, 29, 31, 32, 41, 45, 53, 55, 56, 57, 75, 79, 86, 88, 90, 92, 106, 112, 113], "secur": [1, 4, 20, 21, 31, 37, 56, 57, 61, 62, 91, 101, 120, 126], "someth": [1, 6, 7, 14, 19, 20, 29, 31, 36, 37, 38, 39, 41, 45, 47, 49, 53, 54, 55, 56, 57, 62, 64, 65, 66, 77, 79, 130], "sai": [1, 6, 7, 12, 14, 17, 19, 20, 22, 26, 27, 28, 31, 39, 42, 44, 45, 53, 55, 56, 57, 62, 63, 68, 77, 88, 90, 99, 113, 114], "anywher": [1, 2, 20, 22, 23, 51, 53, 54, 80], "ubuntu": [1, 19, 45, 50, 51, 56, 79, 80, 84, 93, 99], "cento": [1, 93], "primari": [1, 3, 8, 20, 27, 28, 29, 31, 55, 59, 92], "window": [1, 14, 20, 21, 37, 38, 44, 50, 56, 59, 62, 63, 64, 65, 74, 84, 93, 95, 101, 103, 106, 116, 120, 123, 126, 128, 129, 138], "other": [1, 2, 3, 4, 8, 9, 11, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 34, 36, 37, 38, 39, 42, 44, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 67, 68, 70, 74, 77, 78, 79, 92, 128, 138], "adopt": [1, 11, 19, 27, 31, 64, 93, 99, 112], "instal": [1, 2, 4, 19, 20, 22, 23, 28, 38, 39, 41, 42, 51, 53, 54, 55, 56, 57, 65, 68, 71, 73, 74, 77, 85, 86, 88, 90, 91, 93, 96, 99, 104, 109, 116, 117, 129, 136, 138], "aspect": [1, 2, 19, 54, 62, 66, 79, 87, 90, 93, 99, 126, 128], "dealt": [1, 3, 19, 28, 38, 92], "packag": [1, 2, 3, 16, 18, 19, 20, 22, 23, 27, 28, 29, 31, 37, 38, 45, 46, 48, 50, 53, 54, 55, 57, 59, 60, 63, 65, 68, 73, 77, 78, 79, 82, 84, 86, 87, 88, 92, 94, 97, 104, 106, 108, 109, 124, 127, 129, 132, 134], "pursu": [1, 42], "absolut": [1, 12, 20, 31, 36, 39, 57, 62, 63], "failur": [1, 2, 3, 12, 19, 20, 23, 25, 28, 29, 31, 37, 38, 44, 55, 56, 57, 62, 64, 67, 68, 72, 77, 92, 128], "rare": [1, 3, 7, 11, 19, 31, 44, 55, 92, 93, 112, 120], "centr": [1, 8, 9, 20, 22, 28, 29, 31, 35, 38, 54, 62, 87, 93, 104, 106, 109, 110, 112, 116, 126], "environ": [1, 9, 23, 27, 28, 29, 37, 38, 41, 42, 44, 45, 47, 49, 51, 53, 54, 56, 59, 62, 65, 70, 71, 72, 77, 79, 81, 86, 87, 92, 107, 108, 109, 110, 115, 117, 127, 132], "normal": [1, 2, 3, 6, 10, 19, 20, 21, 22, 24, 28, 31, 32, 33, 37, 38, 44, 45, 48, 53, 54, 55, 56, 57, 60, 61, 62, 64, 66, 67, 68, 70, 71, 72, 77, 79, 82, 86, 87, 88, 90, 92, 93, 99, 103, 104, 106, 109, 112, 113, 114, 116, 118, 120, 124, 125, 126, 128, 129, 130, 131, 132, 134, 135], "break": [1, 19, 22, 29, 32, 33, 44, 45, 50, 56, 68, 77, 132], "never": [1, 2, 3, 5, 7, 11, 19, 28, 31, 45, 46, 56, 57, 62, 64, 77], "lost": [1, 3, 21, 26, 28, 62, 67, 92], "worst": [1, 11, 14, 28], "resend": [1, 17, 59, 60, 63, 64], "left": [1, 3, 4, 8, 19, 20, 21, 28, 39, 41, 45, 48, 56, 62, 67], "figur": [1, 7, 8, 9, 11, 12, 19, 25, 45, 49, 56, 57, 77, 81, 104], "out": [1, 2, 3, 5, 8, 9, 14, 19, 20, 23, 24, 25, 28, 31, 38, 42, 44, 45, 47, 49, 53, 54, 55, 56, 57, 62, 63, 68, 71, 72, 77, 92, 136], "flight": [1, 17, 25, 62], "down": [1, 2, 3, 6, 7, 8, 12, 14, 19, 20, 29, 31, 32, 33, 37, 39, 41, 45, 51, 54, 55, 56, 62, 64, 68, 69, 71, 77, 80], "deadman": [1, 93], "timer": 1, "But": [1, 7, 19, 20, 37, 42, 44, 45, 46, 64, 106], "ack": [1, 2, 3, 38, 48, 56, 57, 66, 74, 77, 82, 90, 92, 93, 99, 116, 130, 138], "guarante": [1, 3, 23, 25, 31, 46], "simpler": [1, 2, 12, 19, 29, 31, 39, 42, 44, 53, 67], "databas": [1, 8, 22, 24, 28, 30, 42, 70, 134], "bulletin": [1, 3, 11, 12, 20, 31, 39, 41, 45, 54, 57, 62, 63, 65, 66, 70, 79, 87, 92, 93, 106, 112, 126, 127, 129, 130], "larger": [1, 2, 7, 23, 28, 31, 37, 44, 53, 54, 62, 63], "app": [1, 9, 11, 12, 19, 31, 39, 41, 42, 45, 46, 49, 54, 57, 78, 79, 81, 87, 112], "tini": [1, 45], "million": [1, 6, 19, 23, 29, 30, 31, 44, 53, 54, 64, 86, 87, 93, 99, 110, 111, 112, 117, 120, 128], "ec": [1, 2, 41, 45, 46, 53, 54, 78, 79, 86, 87, 90, 93], "msc": [1, 28, 53, 54, 57, 67, 86, 87, 93, 109, 131, 132], "grow": [1, 11, 23, 28, 29, 31, 38, 54, 57, 62, 63], "lot": [1, 5, 8, 12, 19, 20, 28, 39, 44, 48, 53, 54, 66, 88, 99, 116, 131], "satellit": [1, 6, 29, 31, 54, 87, 112], "sensor": 1, "critic": [1, 4, 20, 23, 24, 25, 31, 37, 38, 54, 55, 62, 65, 70, 87, 88, 106, 116, 126, 134], "substanti": [1, 3, 9, 11, 12, 14, 19, 21, 29, 31, 37, 38, 44], "wmo": [1, 19, 20, 27, 31, 37, 39, 45, 48, 54, 57, 62, 65, 66, 82, 87, 93, 99, 101, 106, 108, 112, 119, 126, 128, 129, 130], "warn": [1, 3, 20, 23, 29, 31, 38, 48, 53, 54, 55, 56, 57, 62, 63, 77, 87, 88, 92, 106, 112, 116, 126, 127], "15kbyte": 1, "32": [1, 20, 45, 56, 64, 69, 72, 77, 79, 93, 106, 128, 131, 133, 135], "kbyte": [1, 53], "were": [1, 5, 6, 8, 9, 11, 12, 19, 20, 24, 26, 27, 28, 29, 31, 34, 37, 42, 44, 45, 47, 49, 50, 55, 56, 57, 62, 63, 66, 70, 73, 79, 126, 134], "reach": [1, 3, 7, 8, 19, 20, 21, 29, 38, 54, 57, 59, 92], "7": [1, 3, 4, 7, 8, 11, 12, 14, 16, 19, 20, 22, 25, 26, 27, 28, 29, 33, 34, 38, 44, 45, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 77, 79, 86, 87, 88, 89, 91, 92, 93, 95, 96, 97, 99, 101, 102, 104, 105, 106, 108, 109, 110, 114, 115, 116, 120, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134], "12k": [1, 93], "averag": [1, 6, 9, 12, 20, 23, 28, 53, 54, 65, 66, 67, 87, 130, 131], "modern": [1, 9, 26, 31, 37, 44, 57, 93, 101, 112, 120], "60k": [1, 93], "eight": [1, 31, 55], "fold": [1, 7, 12, 28], "increas": [1, 17, 37, 44, 45, 54, 57, 64], "sinc": [1, 15, 17, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 37, 38, 39, 41, 42, 44, 45, 46, 49, 54, 55, 56, 63, 66, 71, 77, 78, 88, 106, 120, 130], "rais": [1, 19, 31, 54, 62], "500": [1, 6, 8, 9, 11, 12, 31, 47, 53, 66, 83, 86, 93, 95, 112], "000": [1, 3, 12, 23, 25, 31, 44, 45, 47, 49, 53, 79, 81, 83, 86, 92, 93, 102, 109, 112, 117, 120], "byte": [1, 6, 8, 14, 19, 20, 24, 28, 31, 32, 33, 34, 37, 38, 45, 46, 48, 53, 54, 56, 57, 62, 63, 64, 65, 66, 67, 68, 77, 78, 79, 82, 87, 99, 106, 109, 128, 130, 131], "gt": [1, 26, 27, 29, 30, 37, 67, 68, 93, 101, 105, 108, 111, 119, 130, 131, 132], "scientif": 1, "domain": [1, 6, 8, 26, 27, 31, 37, 93, 101, 105, 108, 112], "measur": [1, 3, 12, 20, 44, 54, 57, 62], "terabyt": [1, 28, 29, 31, 63, 64], "aim": [1, 19, 42, 45], "worth": [1, 3, 7, 31, 92], "think": [1, 2, 6, 14, 23, 27, 32, 39, 42, 56, 77], "huge": [1, 7, 28, 31, 36, 38], "program": [1, 4, 7, 16, 19, 20, 22, 28, 31, 37, 39, 41, 43, 45, 46, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 66, 68, 69, 73, 77, 87, 104, 106, 126], "configuratin": 1, "distinct": [1, 2, 38, 87, 89, 90, 93, 99, 112, 118, 126, 127], "activ": [1, 2, 3, 9, 19, 21, 23, 28, 37, 38, 44, 45, 46, 48, 50, 53, 54, 55, 57, 59, 61, 63, 65, 66, 67, 70, 72, 73, 77, 78, 79, 82, 84, 86, 87, 88, 89, 92, 103, 109, 112, 116, 117, 124, 125, 127, 128, 129, 130, 131, 135, 137], "script": [1, 2, 3, 7, 12, 21, 22, 23, 24, 28, 29, 32, 33, 36, 38, 41, 42, 45, 46, 47, 53, 54, 58, 63, 64, 70, 73, 78, 79, 83, 86, 87, 90, 92, 93, 103, 104, 109, 110, 113, 114, 116, 117, 118, 127, 128, 134], "leav": [1, 2, 24, 27, 36, 39, 41, 42, 44, 45, 57, 67, 72, 108], "featur": [1, 3, 4, 8, 14, 24, 26, 27, 28, 29, 31, 34, 35, 37, 38, 50, 55, 56, 57, 59, 62, 64, 67, 70, 77, 92, 116, 128, 134], "plug": [1, 49, 81, 83, 86, 87, 93, 99, 109, 112], "detail": [1, 2, 3, 4, 11, 21, 23, 24, 28, 29, 31, 38, 39, 41, 44, 45, 46, 48, 50, 53, 55, 56, 59, 62, 63, 64, 66, 70, 91, 92, 103, 116], "peopl": [1, 3, 6, 8, 12, 19, 20, 26, 27, 31, 37, 38, 45, 46, 53, 55, 56, 62, 65, 66, 77, 78, 79], "core": [1, 5, 7, 9, 11, 12, 19, 20, 29, 31, 37, 38, 48, 55, 56, 66, 77], "cli": [1, 3, 45, 50, 54, 55, 56, 58, 79, 84, 87, 92, 93, 122], "least": [1, 3, 4, 6, 8, 11, 14, 19, 20, 21, 23, 25, 26, 44, 45, 57, 62, 79, 92], "consier": 1, "why": [1, 2, 7, 14, 19, 31, 39, 43, 45, 53, 54, 55, 56, 62, 77, 95], "carefulli": 1, "programm": [1, 14, 19, 20, 26, 28, 30, 38, 48, 55, 66, 67, 78, 79, 81, 84, 86, 88, 91, 93, 95, 97, 99, 101, 104, 106, 109, 110, 112, 117, 118, 119, 123, 124, 125, 126, 127, 130, 131, 132, 133], "subtl": [1, 19], "flexibl": [1, 4, 20, 24, 31, 37, 51, 53, 54, 55, 88, 91, 101, 106, 112], "brought": 1, "realm": 1, "draft": [2, 14, 56, 90, 95], "discuss": [2, 3, 4, 9, 15, 20, 21, 23, 26, 31, 35, 37, 38, 44, 45, 48, 53, 59, 62, 63, 64, 66, 68, 79, 82, 86, 90, 91, 92, 96, 101, 105, 106, 107, 112, 117, 120, 123, 126, 127, 128, 130, 139, 140], "level": [2, 3, 4, 6, 7, 11, 19, 20, 21, 22, 28, 31, 38, 44, 45, 46, 48, 49, 50, 53, 55, 56, 57, 62, 66, 77, 116, 130], "outlin": [2, 29], "overview": [2, 3, 43, 55, 140], "explor": [2, 4, 23, 28, 29, 90, 109, 110, 112], "situat": [2, 6, 25, 28, 31, 38, 44, 46, 57, 62, 78, 90, 102, 109, 112, 116, 120, 126], "progress": [2, 3, 4, 8, 14, 19, 28, 29, 31, 38, 53, 71, 72, 86, 90, 91, 92, 99, 106, 110, 135, 136], "toward": [2, 3, 7, 37], "plan": [2, 3, 6, 29, 31, 37, 79, 90, 96, 105, 106, 109, 112, 119, 126, 128, 129], "everywher": 2, "team": [2, 26, 42, 105], "certain": [2, 3, 20, 21, 23, 28, 31, 37, 54, 56, 63, 65, 77, 79, 82, 86, 87, 88, 89, 90, 91, 92, 95, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 113, 116, 117, 118, 120, 123, 126, 127, 128, 129, 130, 132, 134], "difficulti": [2, 20, 27, 31, 38, 44, 62], "scan": [2, 6, 9, 12, 19, 22, 23, 28, 29, 31, 37, 38, 45, 55, 57, 62, 65, 70, 87, 88, 110, 116, 134], "traffic": [2, 11, 12, 17, 20, 21, 22, 28, 29, 31, 37, 44, 45, 50, 62, 64, 120], "refus": [2, 8, 44, 53, 62, 86, 90], "heavier": [2, 44], "extranet": [2, 90], "zone": [2, 8, 22, 90, 104, 105, 112, 116], "inbound": [2, 44], "govern": [2, 4, 29], "scienc": [2, 3, 20, 22, 24, 29, 41, 50, 53, 54, 56, 57, 59, 65, 66, 67, 68, 70, 77, 84, 86, 87, 90, 92, 104, 106, 110, 118, 123, 129, 130, 131, 132], "consid": [2, 3, 4, 19, 20, 21, 22, 23, 24, 25, 26, 28, 32, 33, 34, 39, 42, 44, 45, 49, 50, 53, 54, 55, 57, 62, 63, 64, 70, 79], "partner": [2, 28, 29, 31, 45, 131], "depart": [2, 49], "gc": [2, 3, 20, 22, 24, 27, 29, 31, 38, 41, 45, 46, 50, 53, 54, 56, 57, 59, 61, 62, 63, 65, 66, 67, 68, 70, 72, 77, 78, 79, 84, 86, 87, 90, 92, 104, 106, 108, 110, 112, 116, 123, 125, 126, 127, 129, 130, 131, 132, 135], "ca": [2, 3, 20, 22, 24, 27, 29, 31, 38, 41, 45, 46, 49, 50, 53, 54, 56, 57, 59, 61, 62, 63, 65, 66, 67, 68, 70, 72, 73, 77, 78, 79, 82, 84, 85, 86, 87, 88, 89, 90, 92, 93, 95, 99, 100, 101, 103, 104, 106, 110, 111, 112, 113, 114, 116, 117, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 137], "within": [2, 3, 8, 11, 19, 20, 22, 28, 29, 31, 32, 33, 37, 38, 44, 45, 48, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 70, 77, 88], "area": [2, 6, 22, 26, 31, 38, 44], "orient": [2, 4, 11, 19, 26, 29, 37, 45, 57, 112], "afford": [2, 44], "ensur": [2, 3, 9, 11, 20, 21, 22, 24, 25, 31, 38, 44, 54, 57, 62, 63, 64, 66, 70, 73], "nrc": 2, "lab": [2, 31, 112], "equip": [2, 28, 44], "wise": [2, 19, 21, 23, 28, 42, 62, 63], "disclos": [2, 44], "vulner": [2, 23, 25], "excess": [2, 24, 54, 55, 87, 88, 90], "ie": [2, 3, 4, 20, 31, 45, 53, 54, 55, 62, 87, 91], "certifi": [2, 90], "train": [2, 6, 90, 117, 123], "shaker": 2, "still": [2, 3, 7, 8, 9, 19, 20, 22, 27, 28, 29, 31, 37, 39, 44, 45, 47, 49, 50, 53, 54, 55, 57, 59, 62, 63, 66, 77, 120], "appli": [2, 3, 6, 11, 12, 13, 19, 20, 21, 24, 26, 28, 31, 34, 38, 41, 46, 48, 53, 54, 55, 56, 57, 62, 63, 64, 66, 77, 88, 92], "patch": [2, 3, 8, 9, 11, 12, 90, 92], "collabor": [2, 31, 112], "academ": 2, "government": 2, "commerci": [2, 31, 37, 45, 79, 101, 112], "entiti": [2, 24, 31, 44, 64], "scientist": 2, "similarli": [2, 3, 20, 21, 22, 38, 53, 55, 57], "subject": [2, 20, 47, 54, 56, 64], "except": [2, 3, 4, 11, 19, 20, 21, 23, 32, 38, 39, 45, 48, 50, 55, 56, 57, 59, 63, 66, 67, 77, 79, 82, 84, 88, 90, 91, 99, 103, 106, 116, 117, 123, 130], "proxi": [2, 29, 31, 44, 90, 110, 112, 120], "storag": [2, 12, 13, 22, 28, 29, 31, 57, 64, 68, 72], "isol": [2, 3, 92], "cross": [2, 23, 54], "boundari": [2, 14, 23], "improv": [2, 11, 12, 22, 27, 28, 29, 31, 35, 45, 54, 55, 56, 57, 62, 75, 77], "servic": [2, 6, 11, 20, 21, 22, 26, 27, 28, 29, 31, 37, 38, 45, 46, 48, 54, 55, 56, 57, 64, 70, 71, 73, 77, 78, 79, 87, 88, 90, 101, 103, 104, 106, 108, 109, 110, 112, 116, 128, 134, 136], "reserv": [2, 44, 50, 55], "extern": [2, 4, 20, 37, 44, 50, 56, 61, 77, 82, 84, 90, 91, 101, 106, 120, 121, 125, 130], "insid": [2, 8, 55], "impervi": 2, "ddo": [2, 44, 90, 120], "variou": [2, 3, 4, 20, 21, 22, 27, 31, 38, 41, 44, 45, 48, 51, 53, 54, 56, 57, 63, 64, 66, 73, 77, 116], "load": [2, 3, 11, 12, 17, 19, 20, 22, 26, 28, 29, 31, 37, 38, 44, 45, 50, 53, 54, 56, 57, 62, 63, 64, 65, 66, 67, 68, 70, 72, 77, 84, 87, 90, 92, 99, 106, 116, 121, 129, 130, 131, 134], "scale": [2, 7, 9, 11, 12, 19, 22, 28, 29, 31, 44, 45, 54, 68], "suppos": [2, 19, 39, 41, 42, 53, 56, 77, 79, 86, 87, 89, 90, 91, 92, 102, 106, 112, 113, 114, 117, 120, 127, 128, 129, 132, 134], "0": [2, 3, 7, 8, 9, 10, 11, 12, 14, 18, 21, 23, 26, 27, 28, 29, 31, 32, 33, 38, 39, 41, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 77, 78, 79, 81, 82, 83, 85, 86, 87, 88, 90, 92, 94, 95, 103, 105, 108, 109, 110, 112, 113, 114, 116, 117, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136], "thing": [2, 3, 4, 6, 7, 8, 9, 14, 17, 19, 20, 22, 26, 31, 32, 38, 39, 41, 42, 48, 54, 55, 56, 57, 65, 66, 68, 76, 77, 79, 82, 87, 90], "isn": [2, 3, 7, 11, 19, 20, 21, 23, 25, 31, 47, 48, 53, 54, 57, 64, 65, 72, 83, 87], "insert": [2, 3, 5, 18, 21, 22, 23, 26, 31, 37, 38, 39, 45, 53, 57, 62, 64, 66, 79, 92, 94, 101, 105, 112, 128], "firewal": [2, 21, 37, 44, 45, 90, 101, 120], "rule": [2, 3, 6, 9, 12, 20, 31, 39, 44, 57, 92], "organ": [2, 19, 20, 21, 26, 27, 31, 37, 38, 44, 54, 55, 56, 57, 62, 66, 68, 77, 87, 101, 106, 126], "prefer": [2, 3, 19, 20, 24, 25, 26, 42, 44, 45, 48, 50, 53, 62, 64, 65, 70], "avoid": [2, 14, 19, 20, 21, 22, 23, 24, 28, 31, 37, 38, 44, 45, 48, 50, 53, 54, 55, 56, 57, 62, 63, 64, 68, 70, 77], "prevent": [2, 11, 14, 19, 20, 21, 22, 31, 44, 45, 48, 54, 56, 57, 62, 64, 77, 82], "physic": [2, 6, 20, 28, 31, 57], "present": [2, 3, 6, 19, 20, 21, 22, 23, 31, 36, 38, 39, 42, 45, 46, 48, 50, 53, 55, 56, 57, 59, 62, 63, 64, 66, 72, 77, 79, 92, 116, 126], "involv": [2, 3, 6, 8, 19, 28, 29, 31, 38, 44, 54, 55, 57, 62, 64], "b": [2, 3, 11, 19, 20, 24, 31, 37, 44, 48, 55, 57, 62, 63, 64, 66, 67, 68, 69, 70, 77, 82, 88, 90, 92, 99, 101, 106, 112, 118, 120, 121, 126, 127, 128, 130, 131, 132, 133, 134], "c": [2, 3, 8, 12, 16, 19, 20, 23, 24, 26, 28, 29, 31, 32, 37, 45, 48, 50, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 77, 78, 79, 80, 81, 82, 84, 86, 87, 88, 90, 91, 92, 93, 95, 97, 98, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 117, 118, 120, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140], "translat": [2, 3, 4, 6, 20, 29, 31, 39, 44, 56, 77], "copi": [2, 3, 5, 16, 19, 20, 22, 23, 24, 26, 27, 29, 31, 32, 37, 38, 42, 45, 47, 48, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 72, 77, 79, 82, 83, 86, 87, 88, 90, 92, 101, 104, 105, 106, 110, 113, 117, 118, 123, 125, 126, 127, 128, 129, 130, 135], "easier": [2, 8, 19, 20, 22, 26, 29, 31, 38, 55, 56, 57, 60, 62, 70, 77, 116, 134], "central": [2, 11, 19, 30, 31, 88, 99, 101, 103, 106, 111, 112], "observ": [2, 3, 6, 20, 21, 28, 29, 31, 38, 44, 45, 49, 50, 54, 56, 57, 62, 67, 68, 72, 77, 79, 81, 87, 90, 92, 103, 106, 109, 110, 112, 116, 117, 120, 126, 131, 132, 135], "detect": [2, 3, 8, 14, 20, 21, 43, 46, 47, 54, 55, 56, 57, 62, 70, 77, 87, 92, 106, 119, 126], "escal": 2, "wait": [2, 3, 7, 8, 12, 14, 19, 20, 24, 29, 31, 33, 45, 46, 54, 56, 62, 63, 77, 79, 92, 106, 114], "hoc": [2, 31, 90, 112], "issu": [2, 3, 11, 12, 22, 23, 25, 26, 28, 29, 31, 32, 33, 38, 44, 45, 50, 53, 55, 56, 62, 63, 72, 73, 77, 79, 84, 92, 99, 109, 116, 117, 121, 126, 127, 135, 137], "give": [2, 3, 7, 8, 11, 12, 19, 20, 28, 31, 35, 38, 39, 41, 42, 45, 46, 50, 53, 54, 55, 56, 57, 62, 63, 64, 69, 70, 72, 77], "respons": [2, 8, 19, 20, 21, 22, 27, 28, 31, 44, 45, 49, 62, 64, 79, 103, 106, 108, 109, 126], "lengthi": 2, "full": [2, 3, 6, 19, 20, 23, 27, 31, 38, 45, 47, 48, 50, 54, 55, 56, 57, 59, 63, 72, 77, 83, 90, 106], "nearli": [2, 7, 20, 28, 31, 63], "instant": [2, 53, 84, 86, 89, 92, 99, 112, 116], "basic": [2, 4, 15, 19, 28, 39, 42, 44, 45, 46, 53, 55, 56, 65, 67, 69, 73, 77, 131, 133], "name": [2, 3, 4, 7, 9, 11, 12, 14, 19, 21, 22, 23, 25, 27, 31, 32, 33, 34, 38, 39, 41, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 58, 59, 64, 66, 68, 69, 71, 73, 77, 78, 79, 82, 87, 88, 92, 99, 103, 112, 116, 119, 128, 129, 130, 132, 136], "interact": [2, 16, 19, 20, 45, 54, 55, 56, 60, 62, 65, 77, 90, 97, 106, 124, 126, 129], "paramet": [2, 18, 20, 38, 45, 49, 50, 54, 55, 56, 57, 62, 64, 77, 116], "To": [2, 3, 6, 7, 10, 19, 20, 21, 22, 23, 25, 28, 31, 35, 38, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 57, 59, 62, 63, 64, 66, 68, 70, 72, 73, 79, 83, 88, 92, 117], "clearer": [2, 19], "constrain": [2, 11, 23, 44, 56, 77], "expect": [2, 3, 4, 8, 12, 19, 20, 21, 22, 23, 28, 29, 31, 38, 42, 45, 51, 54, 55, 56, 57, 62, 64, 65, 68, 70, 72, 77, 92, 99, 106, 129], "been": [2, 3, 5, 19, 20, 22, 23, 24, 26, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 66, 67, 70, 71, 77, 79], "upon": [2, 20, 46], "scheme": [2, 4, 19, 20, 31, 47, 48, 54, 56, 83, 99, 106], "qc_": [2, 90], "topic": [2, 3, 11, 19, 20, 21, 26, 31, 32, 33, 34, 38, 45, 46, 48, 53, 54, 55, 56, 57, 63, 66, 68, 72, 77, 78, 79, 82, 86, 87, 88, 89, 90, 92, 99, 103, 106, 121, 127, 132, 135], "base": [2, 3, 7, 9, 11, 14, 19, 20, 21, 23, 24, 26, 27, 28, 29, 31, 32, 33, 37, 38, 41, 44, 45, 47, 48, 49, 53, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 68, 71, 77, 78, 79, 81, 82, 87, 88, 89, 90, 91, 92, 95, 96, 98, 99, 100, 101, 103, 104, 106, 109, 110, 111, 113, 114, 116, 117, 118, 120, 123, 126, 127, 128, 129, 130, 132, 134, 136, 137], "vhost": [2, 3, 19, 20, 21, 38, 45, 46, 47, 49, 53, 56, 61, 62, 63, 64, 68, 71, 72, 78, 79, 81, 83, 86, 90, 92, 99, 106, 116, 125, 126, 127, 128, 129, 132, 135, 136], "saw": 2, "purpos": [2, 3, 12, 19, 20, 21, 22, 24, 26, 28, 31, 37, 38, 44, 45, 50, 55, 56, 57, 62, 64, 67, 82], "appar": [2, 28], "alwai": [2, 3, 6, 11, 14, 20, 21, 22, 24, 26, 28, 31, 41, 42, 45, 50, 53, 54, 55, 56, 57, 62, 63, 64, 72, 77], "don": [2, 3, 4, 6, 8, 19, 20, 28, 31, 39, 45, 46, 49, 54, 55, 56, 57, 59, 62, 70, 77, 92, 99], "impos": [2, 14, 28, 31, 37, 44, 53, 86, 95, 101, 112, 117, 120, 126], "credenti": [2, 3, 4, 19, 21, 22, 41, 42, 44, 45, 47, 48, 53, 54, 57, 58, 59, 62, 63, 64, 67, 68, 69, 72, 77, 79, 82, 83, 86, 87, 91, 92, 99, 103, 104, 116, 122, 123, 126, 131, 132, 133, 135], "ident": [2, 3, 7, 19, 21, 22, 23, 24, 29, 31, 34, 38, 48, 50, 53, 54, 55, 57, 58, 66, 67, 68, 69, 77, 84, 88, 92, 99, 115, 116, 118, 131, 132, 133], "feder": 2, "trust": 2, "repres": [2, 6, 9, 19, 20, 21, 22, 23, 25, 42, 46, 54, 55, 56, 57, 62, 64], "behalf": [2, 27, 31], "s0": [2, 90], "s1": [2, 90], "collid": 2, "sad": [2, 55], "descript": [2, 4, 6, 14, 20, 21, 23, 25, 30, 32, 38, 40, 54, 70, 87, 90, 91, 95, 96, 102, 103, 106, 111, 113, 116, 117, 119, 134], "logic": [2, 3, 14, 19, 20, 21, 27, 31, 45, 53, 55, 56, 57, 62, 69, 88], "control": [2, 3, 6, 19, 20, 23, 26, 28, 31, 36, 44, 54, 56, 57, 59, 62, 63, 64, 65, 77, 92, 106, 121], "plane": [2, 6, 64], "new": [2, 4, 8, 11, 14, 18, 19, 20, 23, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 39, 41, 45, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 67, 68, 70, 73, 74, 77, 79, 83, 96, 106, 110, 121, 127, 130, 131, 134, 140], "report": [2, 5, 14, 16, 19, 21, 22, 27, 28, 29, 31, 32, 33, 34, 37, 38, 44, 47, 49, 50, 54, 55, 57, 58, 65, 70, 71, 72, 77, 79, 81, 83, 84, 86, 87, 92, 99, 103, 104, 110, 116, 119, 135], "produc": [2, 3, 4, 6, 9, 19, 20, 21, 22, 24, 26, 29, 31, 36, 37, 45, 46, 50, 53, 54, 56, 57, 62, 63, 68, 77], "whose": [2, 20, 22, 25, 28, 31, 45, 48, 54, 57, 59, 62, 63, 66, 77], "confidenti": [2, 20, 61], "who": [2, 11, 19, 21, 22, 26, 28, 29, 31, 37, 44, 54, 55, 56, 66], "typic": [2, 3, 4, 6, 8, 11, 12, 20, 23, 26, 31, 37, 39, 44, 45, 53, 55, 57, 62, 63], "null": [2, 56, 77, 90], "request": [2, 3, 8, 20, 24, 29, 31, 44, 45, 48, 49, 55, 56, 57, 68, 72, 73, 75, 77, 79, 92, 120, 132, 135], "abil": [2, 3, 18, 19, 22, 23, 28, 31, 44, 45, 50, 53, 55, 62, 66, 67, 99], "non": [2, 3, 11, 16, 19, 20, 22, 23, 25, 28, 29, 33, 38, 54, 55, 56, 59, 60, 62, 63, 64, 65, 68, 70, 77, 79, 83, 86, 87, 88, 89, 90, 91, 92, 95, 97, 99, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 120, 123, 124, 126, 127, 128, 132, 134, 137], "problem": [2, 3, 4, 7, 12, 14, 20, 27, 29, 30, 38, 44, 46, 50, 54, 55, 57, 62, 64], "aris": [2, 22, 29, 31, 62, 64], "somewher": [2, 19, 20, 22, 26, 38, 54, 55, 56, 116], "archiv": [2, 3, 20, 28, 44, 45, 54, 62, 70, 79, 92, 109, 120, 134], "effect": [2, 3, 12, 20, 22, 23, 24, 26, 28, 31, 44, 45, 50, 53, 54, 55, 56, 57, 59, 62, 63, 64, 67, 68, 73, 77], "encrypt": [2, 22, 37, 44, 45, 62, 79, 120], "ssl": [2, 20, 22, 44, 45, 47, 57, 61, 62, 79, 83, 90, 104, 106, 120, 125, 126], "tl": [2, 4, 20, 22, 38, 44, 56, 61, 62, 90, 91, 104, 106, 116, 120, 125, 126], "httpd": [2, 20, 22, 31, 90, 104, 106, 112], "htpasswd": [2, 90], "htaccess": [2, 90], "continu": [2, 3, 14, 20, 21, 29, 30, 31, 37, 41, 45, 46, 48, 50, 53, 54, 55, 56, 57, 59, 62, 63, 66, 77, 78, 82, 84, 86, 87, 90, 92, 95, 101, 103, 106, 110, 111, 112, 116, 126, 127, 130], "parti": [2, 14, 28, 31, 37, 44, 78, 81, 82, 84, 86, 88, 89, 92, 93, 94, 95, 99, 101, 103, 104, 105, 106, 108, 109, 112, 113, 114, 116, 120, 125, 126, 127, 128, 130, 132], "outsid": [2, 11, 28, 44, 45, 55, 56, 57, 77], "throughout": [2, 11, 28, 54], "arbitrari": [2, 19, 31, 32, 33, 37, 38, 44, 45, 48, 53, 58, 62, 63, 64, 66, 77, 99, 116, 126, 127, 128], "clear": [2, 19, 20, 27, 31, 45, 46, 56, 61, 62, 72, 78, 79], "written": [2, 4, 5, 12, 14, 19, 20, 21, 22, 23, 28, 29, 31, 38, 42, 46, 48, 50, 53, 54, 55, 56, 57, 62, 63, 117], "tent": [2, 82, 84, 88, 89, 92, 99, 101, 103, 104, 106, 110, 112, 116, 126, 135, 136], "wonder": 2, "split": [2, 14, 39, 55, 63, 88], "accord": [2, 18, 20, 21, 23, 31, 32, 33, 45, 49, 56, 57, 62, 77, 81, 88, 94, 101, 104, 112, 120], "svr": [2, 90], "synonym": [2, 56, 62, 90, 126], "capit": [2, 48, 55, 57, 66, 77], "s2": [2, 90], "interpump": [2, 90], "account": [2, 3, 20, 21, 22, 32, 33, 42, 44, 45, 53, 54, 57, 61, 62, 63, 90], "feeder": [2, 3, 21, 22, 38, 39, 41, 45, 46, 53, 56, 62, 67, 77, 78, 79, 86, 90, 92, 103, 116, 126, 129, 131], "concierg": [2, 90], "inject": [2, 20, 21, 25, 31, 45, 54, 62, 79, 85, 87, 90, 102, 103, 106, 112, 126], "relat": [2, 3, 11, 20, 28, 31, 32, 33, 38, 40, 44, 45, 53, 54, 55, 62, 68, 101, 120], "source_clust": [2, 90], "to_clust": [2, 45, 47, 48, 49, 53, 57, 64, 66, 67, 68, 71, 72, 79, 81, 82, 83, 86, 90, 128, 130, 131, 132, 135, 136], "comma": [2, 20, 32, 34, 49, 61, 62, 63], "flag": [2, 14, 20, 32, 38, 47, 48, 50, 54, 56, 57, 64, 66, 77, 82, 95, 106, 113, 116, 130], "whether": [2, 3, 6, 14, 19, 20, 23, 28, 31, 38, 45, 46, 47, 54, 55, 56, 57, 62, 63, 64, 67, 73, 77], "goal": [2, 3, 4, 11, 20, 27, 28, 31, 37, 42, 50, 53, 56, 57, 64, 77], "individu": [2, 3, 8, 9, 14, 19, 20, 29, 31, 34, 38, 39, 44, 47, 48, 54, 55, 57, 59, 64, 77], "sarra": [2, 3, 4, 11, 16, 18, 19, 21, 22, 23, 28, 37, 38, 39, 41, 42, 47, 48, 49, 50, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 65, 70, 71, 72, 81, 82, 83, 84, 86, 87, 88, 90, 91, 92, 94, 97, 99, 101, 103, 104, 109, 116, 117, 123, 124, 125, 126, 127, 129, 134, 135, 136], "align": [2, 90], "properli": [2, 3, 19, 20, 23, 25, 31, 41, 42, 45, 46, 48, 54, 55, 56, 62, 66, 77], "sequenc": [2, 3, 20, 29, 31, 42, 54, 57, 62, 106], "emit": [2, 3, 20, 22, 31, 32, 45, 48, 54, 57, 62, 64, 66], "xs_sourc": [2, 41, 90], "modif": [2, 15, 19, 20, 23, 24, 25, 28, 42, 46, 48, 55, 57, 59, 62, 64, 67, 78, 84, 85, 87, 88, 90, 91, 92, 93, 96, 100, 102, 106, 108, 109, 111, 112, 116, 117, 118, 119, 123, 126, 127, 128, 130, 131, 135, 136], "xprivat": [2, 90], "fixm": [2, 3, 14, 20, 22, 23, 24, 26, 28, 29, 31, 32, 33, 37, 38, 45, 53, 54, 55, 56, 57, 59, 62, 64, 77, 79, 86, 87, 88, 90, 92, 95, 96, 101, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 123, 126, 128], "ye": [2, 3, 19, 21, 38, 44, 45, 54, 56, 79, 92, 116], "look": [2, 3, 4, 6, 8, 11, 12, 14, 19, 20, 21, 22, 24, 26, 28, 29, 31, 38, 39, 41, 42, 44, 45, 47, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 66, 67, 72, 73, 77, 79, 92, 106, 120], "consult": [2, 3, 19, 20, 22, 23, 28, 31, 38, 53, 54, 55, 56, 57, 63, 67, 77, 87, 88, 90, 92, 99, 104, 106, 109, 116, 117, 126, 131], "post2clust": [2, 90], "conf": [2, 3, 16, 19, 20, 21, 22, 23, 28, 38, 41, 42, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 65, 66, 70, 71, 72, 77, 78, 79, 81, 83, 84, 86, 87, 88, 90, 92, 97, 99, 103, 104, 106, 109, 116, 117, 123, 124, 125, 126, 127, 129, 130, 135, 136], "ddi": [2, 20, 22, 41, 45, 54, 57, 72, 79, 85, 87, 90, 104, 106, 135], "cmc": [2, 7, 20, 28, 29, 41, 45, 46, 53, 54, 57, 62, 67, 68, 72, 78, 79, 86, 87, 90, 106, 109, 110, 126, 131, 132, 135], "reachabl": [2, 45], "tr": [2, 3, 57, 92], "feed": [2, 9, 19, 20, 21, 22, 27, 28, 30, 45, 52, 54, 55, 57, 65, 68, 69, 88, 112, 129, 133], "x2ddiedm": [2, 90], "x2ddidor": [2, 90], "x2ddisci": [2, 90], "sr_log": [2, 90], "xl_": [2, 20, 45, 62, 79, 90, 106, 126], "xlog": [2, 90], "log2clust": [2, 90], "space": [2, 3, 4, 6, 7, 20, 22, 26, 28, 32, 34, 45, 53, 62, 70, 92, 109, 134], "per": [2, 3, 4, 6, 8, 9, 11, 12, 14, 17, 19, 20, 23, 24, 27, 28, 31, 32, 33, 34, 37, 38, 44, 45, 47, 48, 50, 53, 55, 56, 57, 59, 61, 62, 63, 64, 66, 67, 68, 106], "soclust": [2, 90], "sampl": [2, 14, 20, 22, 28, 31, 37, 45, 47, 54, 55, 56, 58, 62, 65, 69, 74, 77, 83, 87, 88, 92, 106, 129, 130, 133], "clusternam": [2, 20, 90], "log2us": [2, 90], "log2sourc": [2, 90], "sx_": [2, 90], "view": [2, 8, 20, 21, 22, 31, 44, 50, 53, 54, 55, 59], "sr_subscrib": [2, 3, 14, 16, 18, 19, 20, 21, 22, 25, 29, 38, 41, 45, 47, 49, 50, 53, 54, 55, 60, 63, 71, 72, 79, 81, 83, 84, 86, 88, 90, 92, 94, 95, 97, 99, 102, 103, 104, 106, 110, 116, 124, 127, 135, 136], "n": [2, 3, 7, 11, 12, 17, 20, 23, 31, 32, 33, 38, 45, 53, 54, 55, 59, 71, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 121, 123, 124, 125, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137], "topic_prefix": [2, 19, 50, 55, 65, 68, 84, 88, 90, 99, 106, 129, 132], "equival": [2, 8, 19, 20, 21, 28, 38, 44, 53, 56, 57, 61, 62, 64, 85, 106], "alic": [2, 4, 20, 21, 22, 44, 45, 56, 79, 90, 91, 103, 104, 106, 120], "she": [2, 22, 44], "xs_alic": [2, 20, 22, 45, 79, 90, 104, 106], "her": [2, 6, 20, 22, 41], "xl_alic": [2, 45, 79, 90], "qs_alice_": [2, 22, 90, 104], "destroi": [2, 3, 20, 22, 45, 46, 56, 62, 77], "els": [2, 7, 11, 14, 19, 20, 22, 26, 28, 38, 42, 45, 55, 56, 57, 65, 66, 68, 77, 82, 88, 106, 130, 132], "xs_exchang": [2, 90], "note": [2, 3, 4, 6, 7, 8, 12, 14, 15, 19, 20, 21, 22, 24, 25, 28, 31, 37, 39, 42, 44, 45, 47, 48, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 70, 71, 77, 79, 86, 88, 92, 95, 96, 99, 101, 102, 103, 104, 112, 120, 125, 126, 129, 131, 134], "tester": [2, 3, 86, 92, 99, 126], "q_tester": [2, 90], "xs_tester": [2, 90], "xl_tester": [2, 90], "correct": [2, 7, 19, 20, 22, 23, 24, 28, 39, 44, 45, 46, 62, 63, 70, 72, 73, 78, 79, 81, 82, 83, 87, 88, 90, 91, 92, 99, 102, 104, 106, 109, 112, 116, 117, 120, 126, 127, 130], "check": [2, 3, 4, 11, 14, 19, 20, 21, 23, 38, 41, 42, 44, 45, 46, 49, 53, 55, 56, 57, 59, 62, 63, 64, 66, 73, 77, 79, 92, 106, 130], "befor": [2, 3, 4, 14, 19, 20, 22, 23, 24, 25, 26, 28, 31, 36, 38, 44, 45, 48, 49, 50, 53, 54, 55, 56, 57, 62, 64, 65, 66, 67, 72, 77, 82, 88, 92, 130, 131], "input": [2, 6, 9, 14, 19, 20, 24, 28, 29, 31, 37, 38, 39, 46, 48, 49, 57, 62, 63, 66, 67, 71, 72, 78, 82, 109, 130, 135, 136], "sanit": 2, "error": [2, 3, 4, 16, 19, 21, 22, 23, 27, 28, 38, 39, 48, 53, 54, 55, 56, 57, 62, 63, 64, 65, 66, 68, 71, 72, 77, 82, 87, 88, 92, 97, 99, 106, 116, 126, 128, 130, 132, 135, 136], "malici": [2, 20, 22, 44, 62], "undefin": [2, 22, 26, 55], "vari": [2, 6, 12, 20, 21, 23, 28, 32, 33, 34, 44, 49, 54, 55, 56, 59, 62, 63, 66, 68, 77, 87, 103, 106, 113, 114, 117, 126, 127, 130], "overwrit": [2, 20, 22, 24, 38, 63, 106, 116, 127, 129], "doesn": [2, 3, 8, 12, 16, 18, 19, 20, 22, 27, 28, 31, 37, 38, 49, 55, 56, 57, 60, 62, 63, 65], "matter": [2, 7, 22, 31, 53, 55, 67], "lie": [2, 89], "regardless": [2, 14, 20, 24, 28, 31, 53, 55, 56, 57, 62, 68, 70, 77], "partit": [2, 8, 14, 18, 19, 29, 31, 37, 53, 54, 62, 63, 64, 94, 106, 126, 127, 128], "exce": [2, 31, 53, 57], "place": [2, 3, 4, 8, 9, 12, 19, 20, 22, 23, 29, 31, 32, 33, 34, 37, 38, 39, 41, 42, 44, 45, 46, 48, 50, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 70, 72, 77, 84, 86, 87, 88, 90, 92, 99, 101, 103, 105, 106, 110, 112, 116, 117, 120, 124, 125, 126, 127, 128, 130, 134, 138], "exceed": [2, 31, 56, 77], "hold": [2, 4, 20, 39, 54, 56, 57, 64, 68, 90], "disk": [2, 3, 8, 12, 22, 28, 29, 45, 53, 55, 56, 57, 62, 63, 67, 70, 131, 134], "xinput": [2, 90], "sleep": [2, 20, 21, 23, 38, 41, 47, 49, 53, 56, 57, 68, 77, 83, 86, 103, 106, 116, 117, 129, 132], "temporari": [2, 32, 33, 38, 48, 55, 56, 57, 62, 64, 68], "analysi": [2, 9, 20, 28, 29, 31, 54, 87, 106], "invok": [2, 3, 4, 19, 20, 22, 23, 29, 38, 45, 47, 53, 54, 55, 56, 57, 59, 62, 63, 69, 70, 77, 117], "viru": [2, 57, 87], "scanner": [2, 79, 90, 129], "locat": [2, 6, 20, 21, 28, 29, 31, 42, 45, 46, 49, 50, 53, 54, 55, 56, 57, 59, 62, 63, 70, 72, 73, 77, 106, 112], "org": [2, 3, 6, 7, 8, 20, 21, 26, 37, 45, 54, 56, 57, 64, 70, 72, 77, 79, 92, 101, 103, 105, 106, 128, 134, 135], "ok": [2, 3, 7, 8, 11, 14, 19, 20, 22, 23, 25, 38, 39, 41, 42, 45, 48, 49, 54, 55, 56, 57, 65, 66, 67, 77, 79, 82, 87, 88, 92, 99, 104, 106, 116, 129, 130, 131], "mena": 2, "delet": [2, 3, 14, 18, 19, 20, 21, 23, 38, 41, 45, 46, 47, 48, 49, 53, 54, 55, 56, 58, 59, 64, 66, 68, 71, 72, 77, 79, 81, 82, 83, 87, 88, 92, 106, 116, 117, 129, 130, 132, 135], "quarantin": 2, "granular": [2, 22], "imperson": [2, 28, 44], "sl_": [2, 90], "reader": [2, 8, 11, 37, 38, 39, 41, 42, 62], "consumingus": 2, "sl_alic": [2, 90], "consuminghost": 2, "clean": [2, 3, 19, 20, 21, 22, 38, 41, 44, 45, 55, 56, 57, 62, 63, 65, 66, 67, 70, 72, 77, 92, 99, 129, 130, 131], "sourcc": 2, "channel": [2, 3, 20, 31, 44, 46, 55, 56, 67, 68, 69, 78, 92, 131, 133], "convert": [2, 3, 11, 12, 19, 27, 38, 39, 41, 42, 47, 49, 50, 55, 56, 57, 59, 60, 62, 63, 64, 77, 123], "evid": [2, 28], "denial": 2, "infinit": [2, 3, 7, 11, 24, 68], "bog": [2, 68], "mi": [2, 22, 54, 57, 86, 87, 90, 92, 101, 103, 104, 105, 108, 109, 110, 112, 116, 120, 129, 130, 134], "caus": [2, 14, 20, 23, 24, 25, 27, 28, 34, 37, 38, 44, 46, 50, 53, 54, 57, 62, 63, 66, 79, 102, 108, 117, 120, 126, 128], "past": [2, 3, 5, 28, 29, 31, 38, 57, 62, 92], "crucial": [2, 90], "half": [2, 3, 7, 23, 28, 49, 54, 55, 63, 92], "bake": [2, 29, 32], "idea": [2, 3, 14, 15, 19, 28, 41, 42, 44, 48, 55, 66, 92], "bob": [2, 44, 71, 90, 120, 136], "s3": [2, 38, 55, 57, 88, 90, 116], "ev": [2, 90], "presum": [2, 54, 56], "unless": [2, 20, 27, 53, 54, 55, 62, 72], "deni": [2, 28, 109], "auth": [2, 90], "mode": [2, 3, 4, 19, 20, 21, 32, 33, 37, 38, 44, 45, 46, 53, 54, 56, 61, 62, 69, 71, 77, 78, 79, 85, 86, 87, 90, 91, 92, 99, 101, 103, 106, 112, 113, 114, 116, 120, 123, 125, 126, 133, 136], "transmit": [2, 23, 24, 63, 68], "comer": 2, "arrang": [2, 22, 28, 29, 31, 55, 57, 70, 90, 104, 112], "nobodi": [2, 5, 11], "hell": 2, "happen": [2, 3, 14, 19, 20, 28, 29, 31, 44, 45, 48, 53, 54, 55, 56, 57, 62, 64, 66, 68, 70, 77, 82, 88, 92], "realli": [2, 6, 7, 8, 11, 14, 19, 23, 26, 31, 32, 38, 41, 53, 55, 56, 57, 116], "dai": [2, 3, 6, 12, 20, 21, 28, 31, 37, 42, 44, 45, 53, 54, 55, 56, 57, 62, 64, 77, 79, 109], "kind": [2, 3, 6, 11, 12, 19, 20, 21, 22, 27, 31, 38, 42, 44, 45, 48, 53, 55, 56, 57, 62, 65, 66, 71, 77, 88, 92, 116, 130], "adm": [2, 32, 33, 90, 113, 114], "alter": [2, 19, 20], "crud": [2, 90], "queri": [2, 3, 8, 20, 22, 28, 31, 37, 41, 47, 49, 53, 56, 59, 62, 106], "ht": [2, 90], "talk": [2, 8, 46, 53, 56, 68], "webmailteam": 2, "gui": [2, 45, 54], "password": [2, 3, 4, 20, 22, 41, 44, 45, 46, 47, 53, 56, 57, 59, 61, 62, 63, 69, 70, 71, 72, 78, 79, 83, 86, 91, 92, 106, 127, 133, 134, 135, 136], "question": [2, 3, 20, 21, 28, 31, 35, 44, 45, 50, 54, 56, 62, 79, 84, 90, 92, 103, 106, 107, 109, 110, 112, 120, 126, 131], "layout": [2, 42, 48, 54, 66], "simpl": [2, 7, 11, 23, 30, 37, 38, 41, 44, 49, 50, 53, 54, 55, 56, 57, 63, 65, 66, 77, 79, 81, 84, 86, 87, 88, 89, 90, 92, 93, 99, 101, 103, 106, 109, 110, 111, 116, 117, 120, 126, 127, 129, 131, 134], "h": [2, 38, 45, 48, 54, 55, 56, 59, 62, 66, 68, 77, 79, 82, 87, 88, 90, 116, 123, 126, 130, 132], "passiv": [2, 4, 19, 21, 38, 44, 48, 56, 61, 82, 91, 103, 116, 125], "arrai": [2, 9, 11, 21, 44, 56, 64], "ahead": [2, 42], "state": [2, 3, 6, 7, 13, 20, 28, 29, 31, 38, 42, 45, 46, 48, 49, 50, 54, 55, 56, 57, 62, 63, 65, 66, 70, 77, 78, 79, 81, 87, 92, 106, 116, 126, 129, 134], "none": [2, 3, 4, 8, 19, 22, 23, 24, 25, 38, 39, 45, 47, 48, 49, 50, 54, 55, 56, 57, 63, 65, 66, 67, 68, 70, 77, 79, 81, 83, 87, 88, 91, 92, 99, 102, 116, 117, 127, 129, 130, 131, 132, 134], "style": [2, 3, 19, 20, 30, 45, 50, 55, 56, 57, 62, 63, 64, 77, 84, 88, 90, 92, 96, 99, 106, 126, 127, 128], "unreli": [2, 3, 62], "dedic": [2, 3, 22, 26, 28], "hand": [2, 3, 4, 12, 19, 20, 21, 22, 29, 31, 37, 45, 56, 77, 106], "bunni": [2, 45, 79, 85, 90], "capybara": [2, 90], "snake": 2, "rodent": 2, "distort": 2, "digest": [2, 53, 56, 86, 90], "symbol": [2, 19, 20, 28, 29, 31, 38, 50, 56, 57, 62, 77, 109, 112], "poor": [2, 19, 27, 30], "spike": 2, "slow": [2, 3, 6, 7, 9, 11, 12, 17, 20, 23, 25, 26, 28, 31, 53, 56, 68], "inordin": [2, 23, 54, 63], "fingerprint": [2, 3, 20, 31, 53, 56, 63, 64, 77, 90, 92, 128], "winnow": [2, 3, 16, 19, 21, 38, 45, 48, 50, 54, 57, 58, 59, 60, 62, 64, 65, 79, 82, 87, 90, 92, 97, 99, 103, 116, 123, 124, 126, 128], "checksum": [2, 11, 14, 18, 19, 20, 22, 23, 24, 27, 28, 29, 31, 32, 33, 37, 38, 45, 48, 50, 54, 55, 56, 57, 62, 63, 64, 66, 77, 79, 82, 110, 113, 117, 121, 126, 127], "identifi": [2, 3, 9, 12, 20, 31, 38, 54, 55, 56, 57, 62, 64, 77, 81, 87, 90, 91, 92, 112, 123, 126, 128], "elect": [2, 8, 64], "ignor": [2, 3, 11, 19, 20, 28, 29, 38, 44, 46, 50, 54, 56, 60, 62, 64, 77, 87, 90, 92, 99, 109, 110, 126, 128], "subsequ": [2, 3, 19, 29, 38, 50, 62, 64], "ones": [2, 3, 14, 19, 20, 23, 26, 27, 28, 29, 31, 38, 44, 45, 48, 50, 53, 54, 55, 56, 57, 62, 64, 66, 67, 68, 70, 77], "basi": [2, 17, 19, 20, 22, 27, 31, 42, 48, 57, 62, 64], "strategi": [2, 20, 24, 29, 31, 32, 33, 43, 53, 62, 63, 64, 106, 114, 119], "disappear": [2, 11, 19, 27, 44, 62, 64], "automat": [2, 3, 4, 20, 23, 31, 37, 38, 45, 50, 53, 54, 55, 57, 61, 63, 64, 70, 72, 82, 101, 117, 134], "fresh": [2, 3, 20, 55, 64, 128], "pumpov": 2, "zero": [2, 3, 14, 20, 24, 56, 57, 62, 64, 65, 70, 77, 134], "delai": [2, 8, 19, 20, 23, 24, 25, 28, 31, 54, 56, 57, 62, 64, 117], "pathologi": [2, 64, 90, 128], "summar": [2, 3, 54, 64, 92], "flap": [2, 8, 64], "deadlock": [2, 64, 128], "24x7": [2, 22, 37, 90, 104], "acquisit": [2, 22, 28, 30, 31, 44, 53, 86, 90, 104, 109, 111, 112, 120], "setup": [2, 4, 16, 19, 22, 23, 28, 40, 48, 51, 54, 55, 56, 57, 59, 60, 63, 66, 70, 71, 74, 77, 80, 92, 97, 99, 123, 124, 134], "transmiss": [2, 11, 22, 24, 31, 55, 63, 64, 79, 84, 88, 89, 90, 101, 104, 106, 112, 118, 128, 132], "instrument": [2, 22, 90, 104], "mover": [2, 31, 90, 112], "intermediari": [2, 31], "On": [2, 3, 12, 19, 20, 21, 22, 25, 28, 31, 37, 42, 44, 46, 50, 52, 54, 56, 57, 59, 60, 63, 70, 73, 77, 79, 82, 85, 87, 88, 89, 90, 91, 92, 99, 101, 103, 104, 105, 106, 109, 110, 112, 116, 118, 120, 129, 132, 133, 134], "router": [2, 11, 12, 44], "watch": [2, 3, 8, 16, 18, 19, 21, 23, 29, 37, 38, 42, 44, 48, 50, 53, 54, 55, 57, 58, 59, 60, 62, 63, 65, 66, 70, 71, 72, 82, 84, 86, 87, 88, 92, 99, 101, 103, 105, 110, 116, 117, 123, 124, 126, 127, 129, 134, 136], "tick": 2, "off": [2, 3, 14, 18, 19, 21, 24, 33, 38, 42, 45, 49, 50, 53, 54, 55, 57, 70, 79, 84, 86, 87, 94, 103, 114, 116, 118], "confirm": [2, 3, 14, 49, 57, 71, 81, 90, 92, 95], "last": [2, 3, 6, 8, 14, 20, 23, 24, 25, 26, 28, 29, 31, 32, 33, 38, 39, 41, 45, 46, 47, 48, 49, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 70, 77, 79, 87, 88, 92, 116, 130, 131], "xmit": [2, 90], "big": [2, 6, 14, 20, 22, 31, 38, 42, 57, 112], "divid": [2, 8, 20, 45, 62, 68], "incom": [2, 8, 18, 19, 20, 21, 38, 39, 48, 53, 55, 56, 57, 66, 77, 82, 88, 99, 103, 106, 116, 130], "act": [2, 4, 16, 20, 21, 22, 27, 32, 37, 38, 55, 56, 60, 62, 63, 77, 135], "highest": [2, 23, 25, 54, 73], "land": [2, 28, 62], "mostli": [2, 19, 28, 29, 31, 45, 50, 54, 56, 57, 59, 65, 77, 87], "highli": [2, 11, 19, 31, 37, 45, 46, 56, 64, 78, 79], "suscept": [2, 90, 95, 112, 117, 120], "though": [2, 19, 20, 31, 44, 54, 62, 64, 65], "trigger": [2, 3, 8, 18, 19, 20, 21, 23, 24, 28, 29, 42, 53, 55, 57, 62, 63, 73], "across": [2, 3, 4, 8, 20, 21, 23, 28, 29, 31, 37, 44, 45, 46, 50, 53, 54, 62, 64], "therefor": [2, 16, 20, 21, 34, 44, 45, 46, 50, 54, 56, 60, 63, 64, 77, 120], "trustworthi": 2, "sr": [2, 3, 19, 20, 39, 41, 45, 47, 50, 54, 56, 62, 65, 66, 71, 72, 79, 83, 84, 87, 90, 92, 96, 99, 106, 126, 129, 130, 135, 136], "deploy": [2, 4, 9, 11, 19, 21, 26, 28, 29, 30, 31, 43, 45, 50, 51, 62, 91, 108, 112], "unifi": [2, 5, 29, 31, 35, 107, 112], "compat": [2, 3, 11, 14, 19, 23, 25, 27, 37, 38, 41, 50, 54, 56, 57, 64, 77, 84, 87, 90, 95, 99, 101, 108, 128], "varieti": [2, 3, 20, 21, 27, 29, 31, 37, 44, 48, 53, 54, 59, 66, 121], "browser": [2, 3, 4, 6, 38, 53, 54, 57, 62, 71], "fulli": [2, 3, 19, 22, 26, 29, 37, 44, 45, 56, 57, 60, 77], "reassembl": 2, "fragment": [2, 20, 38, 106, 116], "tradeoff": [2, 8, 23], "front": [2, 20, 44], "dd1": [2, 3, 45, 46, 78, 79, 90, 92], "dd2": [2, 3, 45, 72, 79, 90, 92, 135], "thereaft": [2, 4, 8], "ultim": [2, 7, 90], "wan": [2, 8, 14, 31, 90, 95, 112], "havng": 2, "distant": [2, 86, 88, 90, 92, 104, 106, 112, 116, 117, 118, 120, 121, 123, 126, 127, 138], "intra": [2, 45, 79, 90], "fail": [2, 3, 7, 8, 19, 20, 22, 23, 25, 28, 29, 37, 38, 44, 45, 48, 50, 55, 56, 57, 64, 65, 66, 70, 72, 77, 82, 84, 88, 92, 106, 116, 130, 134, 135], "ceas": [2, 31], "hmm": [2, 11, 14, 19, 22, 42, 56, 77, 90, 95, 99, 104], "cooper": 2, "fingerpr": 2, "wide": [2, 3, 20, 21, 27, 29, 31, 37, 44, 45, 53, 54, 70, 120], "1st": [2, 3, 14, 19, 32, 33, 49, 92], "come": [2, 7, 19, 20, 21, 30, 31, 41, 46, 53, 56, 57, 60, 62, 64, 77, 92], "serv": [2, 3, 19, 20, 22, 28, 29, 31, 37, 45, 46, 54], "got": [2, 5, 19, 45, 48, 49, 66, 82, 99, 130], "fraction": [2, 14, 54, 87, 90], "upstream": [2, 19, 20, 22, 24, 26, 37, 38, 45, 48, 55, 62, 66, 68], "amongst": [2, 20, 31, 62], "poison": [2, 90], "demo": [2, 19, 53], "advertis": [2, 14, 21, 22, 23, 28, 29, 31, 45, 47, 49, 57, 62, 64, 73, 83, 121], "immedi": [2, 3, 4, 19, 20, 22, 31, 38, 44, 53, 54, 56, 62, 67, 73, 77, 92], "spec": [2, 14, 20, 33, 34, 56, 62, 106, 126], "directli": [2, 3, 14, 19, 20, 27, 29, 31, 37, 38, 44, 45, 46, 53, 54, 62, 66, 70, 79], "pure": [2, 11, 12, 20, 26, 34, 37, 53, 63, 64, 101, 105, 115], "noth": [2, 20, 21, 22, 23, 44, 54, 56, 57, 63, 64, 65, 77], "said": [2, 19, 21, 39, 42, 53, 99], "watcher": [2, 44, 71, 136], "collect": [2, 20, 21, 26, 28, 29, 31, 39, 46, 48, 49, 55, 56, 62, 64, 66, 67, 69, 70, 78, 81, 82, 90, 99, 106, 112, 126, 128, 130, 131, 133, 134], "benefit": [2, 12, 28, 31, 54, 62, 63], "ordinari": [2, 3, 7, 20, 22, 28, 46, 57, 62, 64, 66], "quota": [2, 90], "unknown": [3, 11, 16, 20, 38, 53, 54, 55, 57, 59, 60, 61, 62, 63, 64, 70, 86, 87, 92, 97, 106, 116, 123, 124, 125, 126, 127, 128, 134], "date": [3, 16, 20, 29, 31, 32, 33, 38, 39, 41, 42, 44, 45, 48, 50, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 70, 77, 79, 82, 86, 87, 88, 92, 97, 106, 112, 113, 114, 116, 123, 124, 125, 126, 127, 128, 130, 134], "aug": [3, 16, 38, 53, 54, 59, 60, 61, 62, 63, 64, 70, 86, 87, 92, 97, 116, 123, 124, 125, 126, 127, 128, 134], "16": [3, 7, 9, 11, 16, 19, 20, 23, 28, 29, 38, 45, 53, 54, 59, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 79, 86, 87, 92, 97, 99, 106, 109, 110, 116, 117, 123, 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, 136], "2023": [3, 8, 16, 38, 42, 53, 54, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 77, 86, 87, 92, 97, 116, 123, 124, 125, 126, 127, 128, 130, 131, 132, 134], "hack": [3, 28], "adjust": [3, 19, 20, 24, 28, 39, 41, 42, 44, 45, 48, 50, 53, 54, 60, 62], "distro": [3, 45], "line": [3, 4, 12, 19, 28, 31, 32, 33, 35, 37, 38, 41, 42, 43, 45, 46, 47, 48, 50, 53, 54, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 71, 72, 73, 74, 77, 82, 87, 88, 92, 106, 116, 123, 126, 130, 140], "comfort": [3, 8, 31, 38, 45, 79], "python3": [3, 16, 18, 19, 20, 23, 28, 29, 37, 45, 50, 54, 55, 57, 60, 63, 70, 79, 84, 87, 88, 92, 94, 97, 99, 101, 106, 109, 110, 117, 124, 127, 134], "5": [3, 6, 7, 8, 9, 11, 12, 14, 23, 24, 26, 27, 28, 31, 38, 41, 42, 45, 46, 53, 54, 56, 57, 63, 64, 65, 66, 67, 68, 69, 70, 77, 78, 79, 86, 87, 92, 95, 96, 105, 108, 109, 112, 116, 117, 127, 128, 129, 130, 131, 132, 133, 134], "pep8": [3, 92], "max": [3, 7, 8, 28, 92, 109], "119": [3, 4, 65, 68, 91, 92], "pycodestyl": [3, 92], "vscode": [3, 73, 92], "yapf3": [3, 19, 92, 99], "com": [3, 4, 7, 8, 11, 14, 20, 23, 26, 27, 28, 35, 37, 38, 41, 44, 45, 47, 48, 50, 51, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 69, 70, 73, 79, 80, 82, 83, 84, 87, 88, 91, 92, 95, 101, 105, 106, 107, 108, 109, 110, 116, 117, 120, 121, 123, 126, 127, 128, 130, 131, 133, 134, 139, 140], "submit": [3, 45, 50, 75], "bunch": [3, 14, 39], "modul": [3, 19, 20, 24, 27, 35, 45, 47, 48, 49, 50, 54, 55, 56, 57, 59, 66, 70, 72, 77, 79, 81, 82, 83, 84, 87, 88, 92, 99, 101, 106, 107, 108, 116, 118, 121, 123, 126, 130, 134, 135, 140], "py": [3, 4, 18, 19, 20, 21, 38, 42, 45, 47, 48, 49, 50, 53, 55, 56, 57, 62, 66, 70, 73, 77, 79, 81, 82, 83, 84, 86, 88, 91, 92, 94, 99, 103, 106, 116, 126, 130, 134], "pyftpdlib": [3, 92], "ftpserver": 3, "git": [3, 36, 41, 45, 51, 57, 70, 79, 80, 85, 92, 134], "exchang": [3, 11, 14, 16, 21, 22, 26, 27, 29, 30, 37, 38, 39, 41, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 60, 64, 65, 67, 68, 69, 71, 72, 77, 78, 79, 81, 83, 86, 87, 88, 89, 90, 92, 103, 116, 124, 128, 129, 131, 132, 133, 135, 136], "disrupt": 3, "clone": [3, 36, 41, 45, 51, 70, 79, 80, 92, 134], "v03_wip": [3, 19, 20, 38, 55, 70, 88, 92, 99, 106, 116, 134, 139, 140], "sr3": [3, 5, 24, 27, 30, 38, 45, 47, 48, 51, 52, 54, 56, 57, 58, 60, 63, 64, 66, 67, 68, 70, 72, 73, 74, 77, 79, 80, 82, 83, 85, 87, 92, 96, 100, 104, 108, 111, 116, 118, 119, 122, 124, 127, 128, 130, 131, 132, 134, 135, 137, 138, 139, 140], "v03": [3, 19, 20, 21, 30, 37, 38, 45, 48, 50, 54, 55, 56, 58, 63, 66, 69, 77, 79, 82, 84, 87, 88, 92, 99, 101, 103, 106, 111, 116, 119, 127, 128, 130], "sarrac": [3, 23, 28, 37, 55, 63, 74, 88, 92, 101, 109, 117, 127, 138], "sr3c": [3, 50, 55, 70, 88, 92, 134], "insect": [3, 38, 92, 116], "cd": [3, 4, 41, 42, 45, 51, 56, 57, 70, 77, 79, 80, 91, 92, 134, 139, 140], "grant": [3, 22, 45], "doc": [3, 4, 8, 20, 27, 49, 54, 56, 57, 59, 70, 75, 77, 87, 91, 92, 106, 108, 123, 134], "contribut": [3, 11, 31, 75, 76, 92, 112, 140], "rst": [3, 19, 20, 21, 27, 36, 45, 47, 49, 62, 73, 79, 81, 83, 87, 92, 99, 102, 103, 106, 108, 126], "mainten": [3, 19, 20, 28, 44, 50, 79, 83, 84, 86, 87, 88, 90, 92, 93, 94, 95, 99, 101, 104, 105, 106, 108, 109, 110, 112, 115, 116, 120, 126, 128, 135, 136, 137], "sr3_option": [3, 55, 56, 59, 60, 61, 63, 64, 77, 92, 123, 124, 125, 127, 128], "dictionari": [3, 4, 11, 21, 38, 48, 55, 56, 57, 66, 68, 77, 99], "alphabet": 3, "laptop": [3, 19, 73], "flow_test": [3, 19, 57, 92, 99], "step": [3, 4, 6, 7, 12, 21, 22, 26, 27, 31, 37, 39, 45, 47, 48, 49, 53, 54, 55, 57, 66, 77], "gate": 3, "commonli": [3, 22, 34, 44, 62], "18": [3, 9, 11, 12, 19, 20, 25, 28, 29, 38, 47, 49, 54, 56, 65, 69, 70, 81, 83, 87, 99, 102, 106, 109, 110, 116, 129, 130, 132, 133, 134], "04": [3, 19, 20, 28, 35, 45, 56, 67, 70, 79, 99, 106, 107, 109, 133, 134], "platform": [3, 21, 38, 50, 56, 59, 62, 67, 69, 70, 77, 92, 116, 131, 133, 134], "finish": [3, 7, 19, 24, 28, 38, 42, 69, 72, 73], "v2_dev": [3, 92], "snapshot": [3, 6, 28], "merg": [3, 56, 77, 92], "v2_issue365": [3, 92], "issue365": [3, 92], "issue365_methodb": [3, 92], "pr": [3, 11, 92], "pleas": [3, 20, 22, 35, 39, 44, 45, 53, 54, 57, 62, 63, 69, 70, 79, 92, 134], "successfulli": [3, 19, 20, 31, 38, 45, 48, 56, 57, 62, 66, 68, 70, 77, 79, 106, 116, 130, 134], "static_flow": [3, 92], "flakey_brok": [3, 19, 38, 92, 99, 116], "dynamic_flow": [3, 19, 92, 99], "concern": [3, 14, 16, 20, 23, 31, 34, 37, 50, 60, 63, 79, 90, 91, 96, 106, 112, 133], "satisfi": [3, 20, 31, 50, 70, 92], "natur": [3, 11, 12, 19, 28, 31, 37, 38, 44, 50, 53, 57, 62, 84, 92, 99], "three": [3, 6, 8, 20, 24, 27, 28, 29, 31, 34, 49, 54, 59, 62, 63, 64, 68], "machin": [3, 11, 19, 22, 38, 44, 45, 46, 53, 54, 57, 65, 77, 78, 79, 86, 87, 99, 104, 116, 120, 129], "tag": [3, 19, 20, 21, 32, 33, 45, 55, 56, 57, 63, 70, 71, 79, 88, 92, 134, 136], "v2onli": [3, 92], "net": [3, 6, 34, 50, 84, 92, 115], "v2_stabl": [3, 55, 88, 92, 139, 140], "upcom": [3, 44], "major": [3, 12, 29, 31, 56, 59, 77], "refactor": [3, 15, 29, 50, 56, 99, 107, 110], "construct": [3, 31, 38, 55, 59, 66, 88, 92, 106, 108, 112, 123, 130], "regress": 3, "enhanc": [3, 4, 44, 56, 73, 77], "v3onli": [3, 19, 92, 99], "v03_": [3, 92], "v03_issue401": [3, 92], "fairli": [3, 19, 31, 41, 44], "criterion": 3, "transform_flow": [3, 92], "2022": [3, 5, 19, 20, 27, 35, 47, 54, 55, 62, 67, 69, 70, 83, 87, 88, 92, 99, 100, 106, 107, 108, 126, 129, 131, 133, 134], "11": [3, 11, 12, 20, 23, 28, 31, 34, 35, 45, 46, 48, 54, 55, 56, 57, 64, 65, 66, 68, 69, 70, 77, 78, 79, 82, 87, 88, 92, 106, 107, 109, 112, 115, 117, 128, 129, 130, 132, 134], "recip": [3, 92], "db": [3, 31, 42, 46, 56, 57, 78], "comput": [3, 8, 11, 18, 20, 23, 24, 28, 29, 31, 44, 60, 62, 63, 64, 109], "stabl": [3, 19, 28, 29, 57, 70, 92, 99, 109, 110, 134, 139, 140], "librari": [3, 16, 17, 19, 20, 24, 26, 29, 31, 38, 46, 50, 53, 54, 55, 56, 57, 60, 62, 68, 70, 73, 77, 92, 106, 112, 119], "upload": [3, 20, 31, 38, 57, 64, 92, 116], "pain": [3, 14], "nois": 3, "e": [3, 6, 19, 20, 23, 24, 27, 31, 38, 44, 47, 49, 50, 54, 55, 56, 57, 62, 63, 77, 84, 85, 87, 88, 92, 95, 106, 108, 116, 117, 123, 126, 129], "let": [3, 7, 11, 17, 20, 22, 26, 29, 38, 39, 41, 44, 45, 46, 57, 65, 66, 79], "edit": [3, 4, 16, 19, 20, 29, 36, 38, 41, 42, 45, 46, 47, 49, 53, 54, 59, 60, 61, 63, 65, 72, 73, 79, 86, 87, 97, 99, 106, 110, 116, 123, 124, 125, 127, 129, 135], "ideal": [3, 4, 7, 8, 17, 21, 24, 26, 31, 44, 45, 50, 55, 57, 77, 92], "debug": [3, 4, 16, 19, 20, 28, 45, 48, 53, 55, 56, 57, 60, 65, 66, 67, 69, 77, 82, 86, 87, 88, 106, 129, 130, 131, 133], "apt": [3, 45, 46, 50, 57, 71, 78, 79, 84, 92, 136], "dev": [3, 4, 20, 41, 45, 46, 47, 49, 57, 61, 70, 78, 79, 81, 83, 91, 92, 106, 125, 134], "dpkg": [3, 46, 78, 92], "virtual": [3, 8, 20, 21, 31, 44, 45, 50, 53, 62, 70, 84, 134], "multipass": [3, 92], "launch": [3, 7, 20, 23, 56, 62, 63, 67, 73, 92], "m": [3, 7, 11, 38, 45, 48, 54, 55, 56, 57, 62, 63, 65, 66, 67, 68, 69, 72, 77, 79, 82, 87, 88, 92, 116, 126, 127, 130, 131, 132, 133, 135], "8g": [3, 92], "d": [3, 7, 12, 20, 23, 28, 31, 32, 33, 45, 46, 47, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 67, 68, 71, 72, 75, 77, 80, 85, 91, 93, 94, 95, 96, 98, 100, 101, 102, 103, 104, 105, 107, 111, 113, 114, 115, 117, 119, 121, 122, 123, 124, 125, 129, 132, 133, 134, 135, 136, 138, 139], "30g": [3, 92], "ssh": [3, 4, 20, 22, 23, 28, 31, 37, 38, 41, 42, 44, 53, 56, 61, 63, 70, 86, 91, 92, 101, 104, 106, 109, 112, 116, 117, 120, 125, 127, 134], "localhost": [3, 18, 20, 38, 39, 41, 45, 47, 49, 53, 54, 57, 62, 69, 71, 79, 81, 83, 86, 87, 92, 94, 106, 116, 126, 129, 133, 136], "privat": [3, 37, 44, 45, 53, 62, 72, 90, 92], "fractal": [3, 19, 20, 38, 45, 47, 54, 55, 59, 69, 70, 79, 83, 87, 88, 92, 99, 106, 116, 123, 129, 134], "ipv4": [3, 22, 92, 104], "imag": [3, 6, 28, 36, 39, 46, 51, 78, 80, 87, 92, 109, 110, 112], "20": [3, 7, 8, 11, 12, 17, 20, 23, 28, 29, 31, 32, 38, 45, 50, 53, 54, 55, 56, 62, 65, 66, 67, 68, 69, 71, 77, 79, 84, 86, 87, 88, 92, 98, 106, 109, 110, 112, 113, 116, 117, 126, 130, 131, 132, 133, 136], "lt": [3, 67, 68, 92, 131, 132], "10": [3, 7, 9, 11, 12, 14, 19, 20, 24, 27, 28, 29, 31, 34, 37, 38, 39, 41, 44, 45, 46, 47, 50, 53, 54, 55, 62, 65, 66, 68, 78, 79, 83, 84, 86, 87, 88, 92, 95, 99, 101, 106, 108, 109, 110, 112, 115, 116, 118, 120, 126, 129, 130, 132], "23": [3, 14, 20, 28, 45, 49, 54, 57, 62, 68, 69, 70, 79, 81, 87, 92, 95, 106, 109, 126, 132, 133, 134], "56": [3, 11, 20, 28, 45, 70, 79, 92, 106, 109, 130, 133, 134], "keen": [3, 92], "crow": [3, 92], "weird": [3, 19, 55, 57], "interpret": [3, 19, 20, 32, 33, 38, 45, 50, 55, 56, 57, 59, 62, 64, 77], "paramiko": [3, 14, 20, 38, 50, 55, 56, 57, 66, 70, 73, 77, 88, 92, 95, 106, 116, 130, 134], "stackoverflow": [3, 56, 92], "54612609": [3, 92], "rsa": [3, 92], "sudo": [3, 22, 45, 57, 70, 71, 79, 92, 104, 134, 136], "cat": [3, 4, 38, 41, 42, 45, 46, 47, 53, 70, 78, 79, 83, 86, 92, 116], "var": [3, 20, 45, 46, 53, 57, 62, 78, 79, 86, 92, 106, 126], "snap": [3, 92], "multipassd": [3, 92], "id_rsa": [3, 92], "sed": [3, 16, 28, 41, 92, 97, 109], "id_rsa_contain": [3, 92], "chmod": [3, 20, 25, 38, 45, 46, 50, 56, 57, 62, 77, 78, 79, 84, 92, 102, 106, 116, 126], "600": [3, 7, 8, 12, 22, 24, 28, 47, 49, 81, 83, 92, 104, 109, 118, 129], "scp": [3, 19, 22, 23, 28, 41, 42, 56, 62, 63, 92, 99, 104, 109, 117, 126, 127], "175": [3, 92], "home": [3, 4, 18, 19, 20, 27, 28, 38, 42, 47, 49, 53, 54, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 70, 73, 76, 81, 83, 86, 87, 91, 92, 94, 99, 106, 109, 116, 123, 128, 129, 130, 134, 140], "100": [3, 6, 7, 9, 11, 12, 14, 20, 24, 31, 38, 45, 46, 53, 54, 56, 57, 63, 65, 66, 67, 69, 77, 78, 79, 86, 87, 92, 95, 106, 112, 116, 118, 127, 130, 131, 133], "1704": [3, 92], "7mb": [3, 92], "00": [3, 20, 28, 31, 47, 49, 54, 55, 57, 65, 66, 67, 68, 81, 83, 87, 88, 92, 106, 109, 112, 130, 131, 132], "106": [3, 20, 31, 92, 106, 112], "ecdsa": [3, 92], "sha256": [3, 92], "jlrnxv7udicbdazcvovgtu0myjr5": [3, 92], "kyznwi": [3, 92], "dihked8": [3, 92], "perman": [3, 19, 24, 29, 38, 44, 56, 62, 64, 90, 92, 99, 110, 116, 120, 126], "known": [3, 8, 20, 21, 22, 26, 28, 31, 38, 44, 45, 50, 53, 56, 57, 62, 70, 77, 92], "1712": [3, 92], "9": [3, 7, 9, 11, 12, 20, 28, 31, 45, 50, 56, 57, 66, 67, 68, 69, 70, 71, 72, 77, 79, 84, 92, 106, 109, 112, 130, 131, 132, 133, 134, 135, 136], "4mb": [3, 92], "shell": [3, 12, 20, 23, 24, 28, 39, 41, 44, 45, 53, 62, 63, 73, 79, 86, 92, 106, 109, 117, 120, 126, 127], "welcom": [3, 37, 57, 92], "gnu": [3, 92], "4": [3, 4, 6, 7, 8, 9, 11, 12, 14, 19, 20, 28, 34, 37, 38, 41, 42, 44, 45, 55, 57, 62, 65, 66, 67, 68, 79, 88, 91, 92, 95, 96, 99, 101, 103, 106, 109, 115, 116, 120, 126, 129, 130, 131, 132], "81": [3, 31, 53, 86, 92, 112, 130, 131], "x86_64": [3, 92], "landscap": [3, 92], "canon": [3, 48, 55, 62, 82, 92, 121], "fri": [3, 92], "27": [3, 19, 20, 29, 30, 38, 45, 49, 54, 67, 68, 69, 70, 79, 81, 87, 92, 99, 106, 110, 111, 116, 133, 134], "21": [3, 20, 38, 44, 45, 53, 54, 70, 79, 86, 87, 92, 106, 116, 120, 134], "12": [3, 8, 11, 12, 20, 23, 28, 31, 38, 41, 45, 46, 54, 55, 57, 62, 63, 64, 65, 67, 68, 72, 78, 79, 87, 88, 92, 106, 109, 112, 116, 117, 126, 127, 128, 129, 130, 132, 135], "edt": [3, 92], "2021": [3, 19, 20, 50, 54, 56, 69, 77, 84, 87, 92, 99, 106, 133], "42": [3, 28, 45, 54, 66, 70, 73, 79, 87, 92, 109, 134], "112": [3, 53, 68, 86, 92], "28": [3, 11, 19, 20, 28, 45, 54, 56, 65, 66, 70, 77, 79, 87, 92, 99, 106, 109, 130, 131, 132, 134], "90gb": [3, 92], "memori": [3, 6, 19, 20, 23, 24, 28, 29, 31, 44, 45, 50, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 77, 87, 92, 106, 130, 131], "ens4": [3, 92], "swap": [3, 20, 45, 79, 92, 106], "updat": [3, 4, 8, 14, 19, 20, 21, 24, 29, 31, 37, 39, 41, 42, 44, 45, 48, 50, 53, 55, 56, 57, 59, 62, 64, 66, 68, 70, 77, 79, 92, 106, 132, 134], "upgrad": [3, 14, 19, 28, 52, 70, 92, 134], "sudo_root": [3, 92], "prompt": [3, 54, 59, 70, 74], "l": [3, 11, 19, 20, 28, 41, 42, 45, 55, 56, 57, 62, 71, 72, 77, 80, 81, 82, 83, 84, 85, 88, 90, 91, 93, 94, 95, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 110, 112, 113, 114, 115, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 135, 136, 138], "127": [3, 45, 79, 92], "bash_logout": [3, 92], "bashrc": [3, 23, 63, 92, 117, 127], "cach": [3, 8, 11, 19, 20, 21, 23, 28, 29, 31, 38, 42, 45, 46, 47, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 65, 70, 72, 78, 79, 83, 84, 86, 87, 88, 92, 99, 103, 106, 109, 110, 112, 116, 117, 123, 124, 126, 127, 129, 134, 135], "profil": [3, 73, 92], "travi": [3, 92], "flow_autoconfig": [3, 92], "sh": [3, 20, 41, 42, 53, 86, 92, 106], "add_sr3": [3, 92], "empti": [3, 4, 18, 56, 62, 63, 67, 77], "readi": [3, 19, 20, 21, 22, 26, 28, 37, 38, 41, 42, 44, 53, 54, 56, 62, 66, 67, 68, 69, 73], "grep": [3, 19, 20, 28, 41, 42, 47, 65, 70, 83, 92, 99, 106, 109, 129, 134], "ii": [3, 20, 57, 62, 92, 106, 126], "libsr3c": [3, 92], "08a1": [3, 92], "202108270410": [3, 92], "ubuntu20": [3, 92], "amd64": [3, 92], "08": [3, 19, 20, 38, 42, 45, 50, 65, 71, 72, 79, 84, 92, 99, 106, 116, 135, 136], "202108241854": [3, 92], "directori": [3, 4, 9, 12, 14, 16, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 32, 33, 36, 37, 38, 39, 41, 42, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73, 77, 79, 86, 87, 88, 92, 106, 109, 112, 116, 117, 123, 128, 129, 130, 131, 134, 135, 136], "008exp": [3, 92], "overrid": [3, 11, 14, 19, 20, 24, 38, 45, 48, 50, 54, 55, 56, 57, 59, 63, 64, 65, 66, 77, 116, 129, 130], "export": [3, 23, 36, 41, 42, 47, 53, 62, 63, 83, 86, 92, 117, 126, 127], "sarra_py_vers": [3, 92], "Then": [3, 9, 14, 18, 23, 28, 31, 36, 38, 45, 53, 54, 56, 63, 73, 77, 117], "bdist_wheel": [3, 70, 92, 134], "newer": [3, 20, 44, 45, 59, 62], "dist": [3, 16, 18, 20, 54, 60, 63, 70, 73, 87, 92, 94, 97, 106, 124, 127, 134], "pip3": [3, 57, 65, 70, 92, 129, 134], "whl": [3, 70, 92, 134], "bin": [3, 20, 38, 45, 48, 53, 55, 56, 62, 67, 68, 70, 73, 79, 86, 88, 92, 106, 116, 126, 131, 132, 134], "deb": [3, 46, 65, 70, 78, 92, 129, 134], "parent": [3, 19, 20, 21, 25, 28, 31, 38, 39, 54, 55, 56, 57, 62, 63, 77, 87, 88, 92, 99, 103, 106, 109, 112, 116, 126, 127], "sign": [3, 7, 57, 62], "devscript": [3, 92], "debuild": [3, 92], "uc": [3, 92], "accomplish": [3, 9, 20, 21, 29, 31, 38], "checklist": 3, "issue240": [3, 92], "approach": [3, 19, 23, 24, 25, 27, 28, 31, 37, 44, 45, 53, 54], "issue240_2": [3, 92], "consequ": [3, 50], "cycl": [3, 28, 31, 48, 56, 66, 92, 109, 112], "eventu": [3, 7, 8, 12, 19, 27, 28, 29, 31, 68], "qualiti": [3, 6, 8, 49], "alreadi": [3, 11, 14, 19, 20, 23, 26, 28, 29, 31, 38, 39, 44, 45, 48, 53, 54, 55, 56, 57, 59, 60, 62, 64, 66, 69, 74, 77, 79, 82, 88, 130], "solv": [3, 12, 31, 45], "issuexxx": [3, 92], "checkout": [3, 70, 92, 134], "skew": [3, 23, 25, 28, 92], "otherwis": [3, 18, 20, 21, 31, 45, 48, 49, 56, 57, 61, 63, 72, 77, 92], "flakey_brows": [3, 92], "flow_setup": [3, 92], "flow_limit": [3, 92], "period": [3, 8, 24, 28, 31, 44, 45, 48, 49, 50, 54, 56, 57, 62, 64, 66, 77, 81, 82, 92], "1000": [3, 11, 49, 56, 77, 81, 92], "flow_check": [3, 92], "flow_cleanup": [3, 92], "shortest": [3, 20, 54, 62], "saniti": [3, 20, 45, 50, 59, 65, 70, 79, 84, 106, 123, 129, 134], "behaviour": [3, 8, 19, 20, 38, 48, 50, 55, 57, 59, 62, 66, 77], "linear": 3, "uniformli": 3, "lend": 3, "repeat": [3, 4, 44, 57], "shutdown": [3, 8, 19, 44, 45, 56, 62, 66, 99], "post_log": [3, 20, 47, 49, 50, 55, 71, 81, 83, 84, 88, 92, 106, 136], "print": [3, 7, 8, 9, 11, 12, 19, 20, 38, 45, 51, 54, 56, 57, 59, 62, 65, 68, 69, 70, 77, 116, 132, 133, 134], "on_post": [3, 20, 29, 38, 45, 47, 49, 50, 53, 62, 79, 81, 83, 84, 86, 92, 106, 110, 116, 126], "plugin": [3, 4, 12, 16, 18, 21, 22, 23, 27, 28, 29, 31, 35, 37, 39, 42, 45, 46, 47, 50, 52, 53, 56, 57, 59, 60, 62, 63, 65, 67, 70, 71, 74, 77, 78, 79, 83, 84, 85, 86, 91, 92, 94, 96, 97, 101, 103, 104, 107, 108, 109, 110, 117, 119, 121, 123, 124, 126, 127, 129, 131, 134, 136, 138], "action": [3, 4, 16, 23, 31, 38, 45, 49, 50, 53, 54, 56, 60, 62, 63, 64, 65, 67, 73, 77, 79, 81, 84, 86, 87, 91, 92, 97, 112, 116, 117, 124, 126, 127, 128, 129, 131, 137], "retri": [3, 18, 19, 20, 21, 29, 37, 38, 45, 47, 48, 49, 50, 54, 56, 58, 62, 65, 66, 67, 70, 71, 72, 77, 81, 82, 83, 84, 87, 92, 99, 103, 106, 116, 126, 129, 130, 131, 134], "runnig": [3, 92], "ancestor": [3, 26, 27, 38], "beginnig": [3, 46], "proceed": [3, 29, 38, 45], "instruct": [3, 9, 11, 12, 37, 45, 46, 70, 73, 78, 79, 85, 86, 87, 88, 92, 101, 116, 126, 134], "o": [3, 11, 12, 14, 19, 20, 23, 28, 31, 37, 38, 39, 48, 53, 55, 56, 57, 62, 63, 65, 66, 67, 69, 77, 82, 86, 88, 92, 95, 99, 101, 106, 109, 112, 116, 117, 126, 127, 129, 130, 131, 133], "blob": [3, 31, 38, 54, 55, 70, 87, 88, 92, 112, 116, 134], "blind": 3, "execut": [3, 4, 7, 20, 30, 38, 45, 46, 53, 57, 59, 62, 70, 73, 88, 123], "lead": [3, 4, 28, 29, 31, 41, 56, 62, 64, 77, 92], "undesir": [3, 23, 44, 45], "tabl": [3, 4, 12, 20, 31, 34, 42, 44, 57, 63, 70, 85, 91, 92, 106, 112, 115, 117, 120, 121, 127, 134], "coverag": [3, 6, 38], "show": [3, 6, 7, 8, 9, 10, 11, 12, 19, 27, 28, 36, 37, 38, 39, 42, 45, 53, 54, 55, 59, 62, 66, 68, 70, 71, 73, 79, 88, 99, 116, 123, 134], "t_ddx": [3, 92], "mart": [3, 54, 87, 92], "xwinno00": [3, 92], "xwinnow01": [3, 20, 62, 92, 106, 126], "public": [3, 4, 6, 20, 21, 22, 27, 29, 31, 37, 38, 44, 45, 46, 53, 57, 63, 64, 78, 79, 82, 84, 86, 88, 89, 91, 92, 94, 99, 101, 103, 104, 105, 108, 109, 110, 112, 113, 114, 115, 116, 117, 119, 120, 121, 124, 126, 127, 128, 130, 138], "post_exchangesplit": [3, 19, 45, 50, 54, 67, 84, 87, 92, 99, 131], "xwinnow0x": [3, 92], "t0x_f10": [3, 92], "xsarra": [3, 38, 45, 79, 92, 116], "excchang": 3, "f20": [3, 92], "testdocroot": [3, 20, 92, 106, 129], "sarra_devdocroot": [3, 19, 20, 38, 92, 99, 106, 116], "255": [3, 20, 28, 34, 53, 57, 62, 64, 86, 92, 106, 109, 115, 126, 128], "charact": [3, 4, 11, 12, 14, 20, 28, 31, 34, 50, 53, 54, 56, 57, 61, 62, 64], "accel_wget": [3, 19, 50, 54, 84, 87, 92, 99], "truncat": [3, 19, 31, 56, 57, 64, 77, 92], "downloaded_by_sub_t": [3, 92], "f40": [3, 20, 57, 92, 106], "appear": [3, 20, 26, 28, 31, 44, 45, 54, 56, 62, 72, 73], "ceil": [3, 8], "url": [3, 4, 14, 19, 22, 29, 31, 32, 33, 37, 38, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 59, 61, 64, 66, 68, 72, 77, 78, 79, 81, 82, 84, 86, 87, 88, 91, 92, 95, 99, 101, 104, 110, 112, 113, 114, 116, 123, 125, 128, 130, 132, 135], "auto": [3, 4, 19, 45, 46, 54, 67, 68, 72, 79, 87, 89, 92, 97, 131, 132, 135], "sender": [3, 11, 12, 19, 21, 25, 31, 37, 38, 39, 40, 45, 46, 48, 50, 53, 54, 55, 57, 58, 59, 62, 65, 79, 84, 87, 88, 92, 99, 102, 103, 112, 116, 123, 126, 129], "tsource2send": [3, 92], "sent_by_tsource2send": [3, 20, 92, 106], "xs_tsource_output": [3, 92], "replace_dir": [3, 92], "post_exchangesuffix": [3, 19, 56, 67, 77, 99, 131], "u_sftp_f60": [3, 20, 92, 106], "downloaded_by_sub_u": [3, 92], "accel_sftp": [3, 54, 87, 92], "test2_f61": [3, 20, 45, 79, 92, 106], "xs_tsource_pol": [3, 20, 92, 106], "f62": [3, 20, 92, 106], "ftp_f70": [3, 20, 92, 106], "q_f71": [3, 20, 92, 106], "recd_by_srpoll_test1": [3, 20, 92, 106], "shovel": [3, 16, 19, 21, 22, 23, 38, 41, 42, 45, 48, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 79, 82, 87, 92, 97, 99, 103, 116, 123, 124, 125, 126, 127, 128, 129], "pclean": [3, 20, 54, 55, 58, 66, 87, 88, 92, 106, 130], "f90": [3, 92], "fake": [3, 41, 56, 66, 77, 92], "exercis": [3, 19, 46], "f91": [3, 92], "f92": [3, 57, 92], "assumpt": [3, 49, 56], "pc": [3, 92], "desktop": [3, 42], "requisit": [3, 65], "verifi": [3, 18, 22, 32, 33, 38, 45, 46, 53, 54, 55, 57, 73, 78, 79], "latest": [3, 8, 26, 45, 51, 56, 57, 70, 77, 80], "dozen": [3, 6, 12, 20, 28, 29, 31, 55, 62, 68], "rabbitmq_manag": [3, 45, 46, 71, 78, 79, 92, 136], "mkdir": [3, 20, 41, 42, 45, 50, 56, 62, 65, 67, 70, 71, 72, 77, 79, 84, 92, 106, 126, 129, 131, 135, 136], "eof": [3, 45, 79, 92], "env": [3, 16, 20, 54, 55, 60, 62, 63, 70, 73, 87, 88, 92, 97, 106, 124, 126, 127, 134], "flowbrok": [3, 20, 47, 49, 81, 83, 92, 106], "mqp": [3, 19, 20, 21, 26, 38, 92, 96, 99, 103, 105, 106, 116, 129], "sftpuser": [3, 20, 92, 106, 129], "sr_config_exampl": [3, 16, 60, 63, 92, 97, 124, 127], "rabbitmq_pass": [3, 92], "s0m3r4nd0mp4ss": [3, 92], "bunnymast": [3, 20, 38, 45, 54, 79, 87, 92, 106, 116], "tsourc": [3, 18, 20, 45, 47, 49, 53, 79, 81, 83, 86, 92, 94, 106], "tsub": [3, 20, 92, 106], "tfeed": [3, 20, 38, 45, 69, 79, 92, 106, 116, 129, 133], "hpfx": [3, 24, 29, 54, 56, 57, 65, 66, 67, 68, 70, 77, 87, 92, 104, 110, 118, 129, 130, 131, 132], "collab": [3, 24, 29, 54, 56, 57, 65, 66, 67, 68, 70, 77, 87, 92, 110, 118, 129, 130, 131, 132], "hpfx1": [3, 92], "hpfx2": [3, 67, 92, 131], "dd": [3, 20, 24, 27, 28, 31, 38, 53, 54, 56, 57, 59, 61, 62, 63, 65, 66, 67, 68, 70, 72, 77, 85, 86, 87, 92, 106, 108, 109, 112, 116, 118, 123, 125, 126, 127, 129, 130, 131, 132, 135], "2121": [3, 20, 61, 92, 106, 125], "rabbitmqctl": [3, 22, 45, 46, 71, 78, 79, 92, 104, 136], "delete_us": [3, 45, 79, 92], "guest": [3, 20, 39, 45, 46, 53, 63, 64, 71, 78, 79, 86, 92, 106, 128, 136], "add_us": [3, 20, 45, 46, 56, 71, 78, 79, 92, 106, 136], "set_permiss": [3, 45, 46, 71, 78, 79, 92, 136], "set_user_tag": [3, 45, 46, 71, 78, 79, 92, 136], "systemctl": [3, 45, 79, 92], "usr": [3, 16, 18, 20, 38, 45, 53, 54, 55, 56, 59, 60, 62, 63, 67, 70, 79, 86, 87, 88, 92, 94, 97, 106, 116, 123, 124, 126, 127, 131, 134], "mv": [3, 23, 36, 41, 45, 63, 79, 92, 117, 127], "rabbitmqadmin": [3, 45, 56, 79, 92], "wget": [3, 38, 45, 53, 54, 56, 62, 67, 79, 86, 87, 92, 116, 126, 131], "15672": [3, 45, 71, 79, 92, 136], "755": [3, 45, 79, 92], "hard": [3, 7, 8, 11, 12, 19, 23, 29, 31, 50, 55, 56, 57, 64, 77, 92, 128], "suit": [3, 20, 27, 28, 29, 31, 39, 41, 42, 57, 63, 78, 79, 82, 86, 87, 88, 90, 92, 95, 103, 104, 106, 109, 110, 112, 113, 114, 117, 126, 127, 128, 130, 134], "passwordless": 3, "authorized_kei": [3, 53, 86, 92], "associ": [3, 12, 22, 27, 44, 47, 55, 56, 77, 83, 104, 120, 126], "www": [3, 8, 20, 26, 28, 45, 53, 54, 56, 57, 62, 64, 72, 79, 86, 92, 105, 106, 109, 110, 126, 128, 135], "linuxproblem": [3, 92], "art_9": [3, 92], "html": [3, 4, 7, 11, 20, 27, 38, 45, 48, 54, 55, 56, 57, 62, 64, 77, 79, 82, 87, 88, 89, 90, 91, 92, 106, 108, 112, 116, 126, 128], "older": [3, 20, 24, 25, 29, 45, 50, 55, 56, 62, 84], "6": [3, 6, 7, 8, 9, 11, 12, 20, 24, 28, 34, 54, 65, 66, 68, 70, 87, 92, 96, 106, 109, 115, 118, 129, 130, 131, 132, 134], "keygen": [3, 92], "p": [3, 7, 8, 9, 11, 12, 18, 20, 32, 33, 39, 41, 45, 46, 54, 56, 57, 62, 63, 64, 65, 70, 71, 72, 73, 77, 78, 79, 84, 87, 92, 94, 106, 113, 114, 126, 127, 128, 129, 135, 136], "pem": [3, 45, 79, 92], "f": [3, 4, 7, 8, 9, 11, 12, 27, 28, 42, 51, 53, 56, 62, 65, 66, 68, 70, 73, 77, 80, 86, 91, 92, 108, 109, 126, 129, 132, 134], "trivial": [3, 20, 54, 56, 62, 92], "daemon": [3, 16, 20, 28, 37, 45, 46, 54, 56, 59, 62, 63, 79, 87], "blacklab": [3, 21, 38, 45, 53, 54, 79, 86, 87, 92, 103, 116], "rm": [3, 45, 79, 92], "peter": [3, 4, 8, 19, 20, 28, 38, 42, 45, 46, 47, 53, 54, 56, 57, 59, 65, 66, 70, 72, 73, 77, 78, 79, 83, 86, 87, 91, 92, 99, 106, 109, 116, 123, 129, 130, 134, 135], "2018": [3, 27, 28, 30, 31, 38, 47, 49, 81, 83, 92, 108, 109, 111, 112, 116, 119], "02": [3, 19, 20, 28, 31, 34, 38, 42, 56, 62, 66, 69, 77, 92, 99, 106, 109, 112, 115, 116, 126, 132, 133], "14": [3, 19, 20, 28, 31, 45, 46, 53, 54, 55, 62, 66, 68, 69, 70, 72, 78, 79, 85, 86, 87, 88, 92, 99, 106, 109, 112, 126, 133, 134, 135], "22": [3, 11, 12, 20, 53, 54, 57, 61, 68, 69, 70, 72, 85, 86, 87, 92, 106, 125, 133, 134, 135], "58": [3, 20, 45, 47, 49, 57, 66, 79, 81, 83, 92, 106, 129], "944": [3, 92], "info": [3, 19, 20, 23, 28, 38, 39, 42, 45, 46, 47, 48, 49, 53, 54, 55, 57, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 78, 79, 81, 82, 83, 86, 87, 88, 92, 99, 106, 116, 117, 127, 129, 130, 131, 132, 134, 135, 136], "lib": [3, 16, 18, 20, 45, 46, 54, 60, 63, 70, 78, 79, 87, 92, 94, 97, 106, 124, 127, 134], "cpump": [3, 47, 54, 59, 65, 83, 87, 92, 123, 129], "cno_trouble_f00": [3, 20, 47, 54, 65, 83, 87, 92, 106, 129], "inc": [3, 20, 41, 47, 54, 65, 67, 69, 83, 87, 92, 106, 129, 131, 133], "09": [3, 20, 38, 45, 49, 54, 65, 79, 81, 87, 92, 106, 116, 131], "59": [3, 20, 28, 45, 46, 47, 49, 66, 69, 78, 79, 81, 83, 92, 106, 109, 133], "204": [3, 92], "src": [3, 20, 32, 33, 53, 57, 64, 86, 92, 106, 113, 114], "no_trouble_f00": [3, 20, 54, 65, 87, 92, 106, 129], "206": [3, 19, 92, 99], "cpost": [3, 20, 42, 45, 63, 79, 92, 106, 127], "veille_f34": [3, 20, 45, 79, 92, 106], "207": [3, 20, 92, 106], "pelle_dd1_f04": [3, 20, 45, 79, 92, 106], "208": [3, 92], "pelle_dd2_f05": [3, 20, 45, 79, 92, 106], "xvan_f14": [3, 20, 92, 106], "209": [3, 92], "xvan_f15": [3, 20, 92, 106], "483": [3, 92], "756": [3, 92], "shim_f63": [3, 20, 45, 79, 92, 106], "030": [3, 92], "299": [3, 92], "tsarra_f20": [3, 45, 79, 92], "561": [3, 45, 79, 92], "twinnow00_f10": [3, 92], "824": [3, 92], "twinnow01_f10": [3, 92], "01": [3, 8, 19, 20, 28, 31, 38, 49, 53, 54, 55, 56, 57, 64, 70, 72, 77, 81, 86, 87, 88, 92, 99, 106, 109, 112, 116, 128, 130, 132, 134, 135], "086": [3, 92], "download_f20": [3, 20, 38, 45, 79, 92, 106, 116], "350": [3, 92], "tsource2send_f50": [3, 20, 45, 79, 92, 106], "615": [3, 92], "t_dd1_f00": [3, 20, 92, 106], "877": [3, 92], "t_dd2_f00": [3, 20, 92, 106], "137": [3, 54, 87, 92], "cclean_f91": [3, 20, 92, 106], "400": [3, 12, 19, 45, 47, 49, 79, 81, 83, 92, 99], "cdnld_f21": [3, 20, 92, 106], "658": [3, 20, 92, 106, 131], "cfile_f44": [3, 20, 92, 106], "921": [3, 92], "clean_f90": [3, 20, 38, 92, 106, 116], "03": [3, 5, 19, 20, 27, 28, 31, 34, 44, 45, 47, 54, 57, 64, 67, 72, 79, 83, 87, 92, 99, 100, 106, 108, 109, 112, 115, 120, 128, 129, 135], "185": [3, 28, 92, 109], "cp_f61": [3, 20, 92, 106], "455": [3, 19, 92, 99], "715": [3, 72, 92, 135], "978": [3, 45, 66, 79, 92], "t_f30": [3, 20, 92, 106], "237": [3, 66, 92], "504": [3, 92], "764": [3, 92, 130], "t00_f10": [3, 20, 92, 106], "05": [3, 7, 8, 9, 11, 12, 14, 20, 28, 31, 54, 56, 65, 66, 67, 68, 69, 77, 87, 92, 95, 106, 109, 112, 129, 130, 131, 132], "027": [3, 49, 81, 92], "t01_f10": [3, 20, 92, 106], "sr_audit": [3, 19, 20, 21, 22, 50, 84, 92, 99, 103, 104, 106], "audit": [3, 20, 22, 28, 45, 59, 79, 92, 109, 123], "31": [3, 19, 20, 28, 45, 56, 69, 77, 79, 92, 99, 106, 109, 133], "pid": [3, 20, 46, 54, 56, 57, 62, 65, 66, 67, 77, 78, 87, 92, 106, 126, 129, 130, 131], "httpserverpid": [3, 92], "ftpserverpid": [3, 92], "sr_util": [3, 19, 92, 99], "sr_credenti": [3, 19, 92, 99], "sr_config": [3, 19, 92, 99], "sr_cach": [3, 19, 55, 88, 92, 99], "sr_retri": [3, 19, 47, 49, 50, 67, 81, 83, 84, 92, 99, 131], "sr_consum": [3, 19, 55, 88, 92, 99], "sr_http": [3, 19, 92, 99], "sr_ftp": [3, 19, 92, 99], "instanti": [3, 19, 48, 55, 56, 57, 62, 66, 67, 69, 77, 82, 92], "creation": [3, 4, 20, 28, 38, 42, 45, 62, 64, 67, 79, 92], "succeed": [3, 28, 31, 38, 48, 55, 56, 62, 66, 77, 92, 116], "renam": [3, 19, 20, 25, 30, 32, 33, 37, 38, 41, 45, 49, 50, 53, 55, 56, 57, 74, 77, 79, 84, 86, 88, 92, 106, 114, 129], "06": [3, 20, 28, 38, 44, 45, 46, 50, 54, 65, 72, 78, 79, 87, 92, 106, 109, 116, 120, 129, 135], "onfly_checksum": [3, 38, 92, 116], "bbb": [3, 20, 62, 92, 106, 126], "tztz": [3, 92], "ddd": [3, 92], "07": [3, 19, 20, 28, 38, 45, 54, 69, 79, 87, 92, 99, 106, 109, 116, 129, 131, 133], "bad": [3, 19, 20, 44, 54, 55, 56, 57, 65, 66, 67, 77, 88, 92, 99, 130, 131], "sr_sftp": [3, 19, 92, 99], "sr_instanc": [3, 19, 92, 99], "flow_post": [3, 92], "flowpostpid": [3, 92], "success": [3, 19, 20, 38, 48, 55, 56, 57, 59, 64, 66, 77, 92, 126, 130], "overal": [3, 12, 19, 21, 22, 31, 44, 45, 54, 57, 92], "unit_test": [3, 92], "proce": [3, 19, 38, 39, 41, 42, 57], "proper": [3, 19, 20, 21, 25, 28, 31, 41, 42, 45, 49, 56, 57, 63, 64, 77], "output": [3, 4, 12, 16, 19, 20, 21, 22, 23, 28, 31, 32, 33, 36, 37, 38, 45, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 71, 72, 77, 81, 83, 86, 91, 92, 109, 113, 114, 128, 135, 136], "8": [3, 4, 6, 7, 8, 9, 11, 12, 14, 16, 20, 41, 44, 45, 48, 50, 55, 56, 57, 64, 66, 67, 68, 69, 70, 79, 82, 84, 88, 91, 92, 95, 97, 106, 120, 128, 129, 130, 131, 132, 133, 134], "1021": [3, 92], "2017": [3, 25, 28, 30, 31, 53, 72, 86, 92, 102, 109, 111, 112, 135], "37": [3, 20, 45, 54, 57, 66, 72, 79, 87, 92, 106, 130, 135], "422": [3, 92], "sr_shovel": [3, 16, 19, 20, 45, 57, 58, 79, 92, 97, 99, 106, 122], "0001": [3, 72, 92, 135], "435": [3, 92], "436": [3, 92], "15872": [3, 92], "15847": [3, 92], "1022": [3, 92], "OF": [3, 39, 92], "IN": [3, 36, 92], "sr_cpump_xvan_f14_001": [3, 92], "404h": [3, 92], "not_found": [3, 92], "xcvan00": [3, 20, 45, 79, 92, 106], "sr_cpump_xvan_f15_001": [3, 92], "xcvan01": [3, 20, 38, 45, 54, 79, 87, 92, 106, 116], "tsarra": [3, 92], "2240": [3, 92], "sr_watch": [3, 18, 19, 22, 23, 24, 26, 28, 29, 53, 63, 64, 71, 86, 92, 94, 99, 103, 104, 105, 106, 109, 110, 117, 118, 128, 136], "sr_sender": [3, 14, 18, 19, 20, 25, 39, 57, 92, 94, 95, 99, 102, 106], "content": [3, 4, 12, 20, 24, 32, 34, 38, 44, 45, 46, 54, 62, 63, 64, 68, 70, 77, 83, 92, 99, 115, 116, 128, 132, 134], "test1_f62": [3, 92], "equal": [3, 4, 19, 20, 44, 46, 56, 92], "r_ftp_f70": [3, 92], "pell": [3, 79, 92, 104, 106, 117, 126], "3665": [3, 92], "3662": [3, 92], "13": [3, 19, 20, 38, 45, 54, 56, 57, 65, 67, 68, 69, 70, 77, 79, 87, 92, 99, 106, 116, 129, 131, 132, 133, 134], "van_14": [3, 92], "van_15": [3, 92], "15": [3, 8, 9, 11, 12, 20, 23, 28, 38, 47, 49, 54, 63, 65, 66, 68, 69, 72, 81, 83, 85, 87, 92, 93, 106, 109, 116, 117, 127, 129, 132, 133, 135], "confid": [3, 22], "lowest": [3, 23, 38, 62], "thy": 3, "qualit": [3, 92], "thorough": [3, 29], "examin": [3, 9, 19, 22, 23, 26, 28, 31, 38, 39, 44, 53, 54, 86, 87, 88, 92, 99, 103, 104, 105, 109, 112, 116, 117, 120], "fclean": [3, 92], "45": [3, 11, 20, 23, 44, 57, 66, 68, 92, 106, 117, 120], "cfclean": [3, 92], "cflow_test": [3, 92], "broken": [3, 4, 19, 21, 53, 57], "By": [3, 11, 20, 21, 25, 28, 31, 38, 41, 44, 45, 49, 54, 55, 61, 62, 63, 68, 127], "ask": [3, 6, 9, 11, 20, 28, 31, 38, 44, 45, 53, 55, 62, 65, 68, 79], "50000": [3, 9, 45, 79, 92], "fifti": 3, "thousand": [3, 12, 20, 27, 28, 31, 44, 45, 54, 62, 68], "especi": [3, 28, 31, 44, 45, 53, 56, 57, 77], "housekeep": [3, 19, 38, 50, 55, 56, 58, 65, 66, 67, 70, 84, 88, 99, 116, 129, 130, 131, 134], "on_heartbeat": [3, 47, 49, 81, 83, 92], "kill": [3, 7, 20, 65, 70, 73, 92], "poster": [3, 20, 23, 33, 55, 57, 58, 79, 86, 87, 88, 89, 92, 93, 101, 103, 104, 106, 114, 116, 118, 122, 126, 127], "17": [3, 7, 8, 11, 19, 20, 45, 54, 55, 65, 66, 68, 69, 70, 72, 79, 85, 87, 88, 92, 99, 106, 129, 130, 132, 133, 134, 135], "34": [3, 19, 20, 38, 45, 54, 62, 65, 67, 69, 79, 87, 92, 99, 106, 116, 126, 129, 130, 132], "150": [3, 6, 12, 45, 46, 78, 79, 92], "353": [3, 54, 87, 92], "837": [3, 92], "sr_poll": [3, 19, 20, 26, 28, 38, 40, 47, 49, 53, 57, 81, 83, 86, 92, 99, 103, 105, 106, 109, 116], "845": [3, 28, 92, 109], "35": [3, 9, 11, 12, 19, 20, 45, 69, 70, 72, 79, 92, 99, 106, 129, 130, 131, 133, 134, 135], "115": [3, 9, 20, 53, 54, 57, 66, 68, 86, 87, 92, 106], "122": [3, 7, 92, 132], "xs_tsource_shim": [3, 92], "394": [3, 19, 92, 99], "402": [3, 19, 92, 99], "xs_tsource_post": [3, 92], "659": [3, 92, 131], "sr_report": [3, 16, 19, 38, 45, 53, 79, 86, 92, 97, 99, 116], "661": [3, 92], "q_tfeed": [3, 20, 45, 79, 92, 106], "89336558": [3, 92], "04455188": [3, 92], "920": [3, 92], "922": [3, 92], "35552245": [3, 92], "50856337": [3, 92], "36": [3, 9, 11, 12, 19, 20, 34, 72, 92, 99, 106, 115, 129, 130, 135], "179": [3, 45, 67, 79, 92], "180": [3, 41, 67, 92], "182": [3, 11, 67, 92], "48262886": [3, 92], "11567358": [3, 92], "445": [3, 66, 92, 129], "deprec": [3, 19, 25, 32, 33, 62, 92], "post_base_url": [3, 47, 49, 50, 53, 55, 63, 81, 83, 84, 86, 88, 92, 127], "446": [3, 92], "post_base_dir": [3, 47, 49, 50, 53, 55, 63, 81, 83, 84, 86, 88, 92, 127], "document_root": [3, 38, 41, 45, 50, 53, 79, 84, 86, 92, 116], "448": [3, 92], "449": [3, 92], "703": [3, 50, 68, 84, 92], "705": [3, 49, 81, 92], "q_tsourc": [3, 20, 45, 47, 49, 79, 81, 83, 92, 106], "711": [3, 92], "969": [3, 92], "072": [3, 92, 131], "q_anonym": [3, 45, 56, 67, 68, 72, 77, 79, 92, 131, 132, 135], "095": [3, 53, 86, 92], "xwinnow00": [3, 20, 62, 92, 106, 126], "389": [3, 19, 45, 46, 78, 79, 92, 99], "498": [3, 92], "522": [3, 92], "523": [3, 92], "804": [3, 92], "806": [3, 92], "q_tsub": [3, 92], "39328538": [3, 92], "44917465": [3, 92], "38": [3, 20, 45, 54, 69, 72, 79, 87, 92, 106, 131, 133, 135], "062": [3, 92], "064": [3, 92], "11963392": [3, 92], "61638098": [3, 92], "324": [3, 92], "326": [3, 92], "56469334": [3, 92], "87337271": [3, 92], "583": [3, 92], "585": [3, 19, 92, 99], "45979835": [3, 92], "20516428": [3, 92], "854": [3, 20, 62, 63, 64, 92, 106, 126, 127, 128], "download_cp_command": [3, 92], "cp": [3, 28, 36, 42, 45, 53, 62, 79, 86, 92, 104, 109, 126], "preserv": [3, 19, 22, 26, 46, 62, 92], "timestamp": [3, 47, 56, 62, 64, 77, 92, 127], "855": [3, 92], "857": [3, 92], "61218922": [3, 92], "69758215": [3, 92], "39": [3, 9, 11, 20, 28, 54, 65, 66, 67, 68, 69, 87, 92, 106, 109, 129, 130, 131, 132, 133], "121": [3, 54, 87, 92], "123": [3, 68, 92, 132], "47997098": [3, 92], "27633529": [3, 92], "386": [3, 20, 26, 27, 31, 57, 62, 92, 105, 106, 108, 112, 126], "84316550": [3, 92], "21567557": [3, 92], "660": [3, 92], "26453890": [3, 92], "50752396": [3, 92], "924": [3, 54, 87, 92], "927": [3, 92], "81353341": [3, 92], "03950190": [3, 92], "40": [3, 7, 20, 28, 31, 45, 49, 54, 64, 65, 66, 67, 79, 81, 85, 87, 92, 106, 109, 112, 128, 129, 130, 131], "196": [3, 92], "post_brok": [3, 20, 21, 25, 39, 41, 45, 47, 50, 53, 55, 56, 71, 77, 79, 83, 86, 88, 92, 102, 103, 106, 136], "197": [3, 92], "xs_tsourc": [3, 18, 47, 49, 81, 83, 92, 94], "471": [3, 45, 79, 92], "sr_winnow": [3, 16, 19, 22, 53, 54, 86, 87, 92, 97, 99, 104], "474": [3, 49, 67, 81, 92], "480": [3, 49, 65, 81, 92], "741": [3, 92], "743": [3, 92], "750": [3, 65, 92], "753": [3, 19, 92, 99], "found": [3, 4, 20, 27, 42, 45, 46, 47, 49, 55, 56, 57, 59, 60, 61, 62, 63, 65, 72, 73, 77, 92, 135], "sr_audit_f00": [3, 92], "durat": [3, 19, 20, 32, 38, 48, 54, 56, 57, 66, 77, 82, 87, 106, 113, 116, 130], "remot": [3, 22, 23, 24, 31, 38, 41, 44, 45, 50, 53, 54, 55, 56, 57, 62, 63, 74, 79, 117, 121], "desir": [3, 8, 14, 19, 20, 31, 37, 48, 54, 56, 77], "rapid": [3, 31, 86, 87, 88, 89, 90, 92, 93, 99, 101, 106, 110, 111, 112, 116, 117, 118, 126, 127, 128, 129], "argument": [3, 14, 16, 19, 20, 23, 32, 38, 48, 49, 54, 55, 56, 57, 60, 62, 64, 66, 67, 68, 77, 81, 82, 84, 87, 88, 92, 95, 97, 99, 106, 113, 116, 117, 124, 126, 128, 130, 131, 132], "shorten": [3, 23, 31, 45], "200": [3, 8, 45, 53, 67, 79, 86, 92], "advis": [3, 22, 26, 53, 54, 56, 77], "20000": [3, 11, 92], "entri": [3, 5, 9, 16, 19, 20, 24, 27, 28, 29, 31, 32, 34, 35, 38, 44, 45, 50, 54, 56, 57, 59, 60, 61, 62, 63, 67, 73, 74, 77, 88, 116], "100000": [3, 8, 92], "155": [3, 92], "100003": [3, 92], "content_check": [3, 92], "missed_disposit": [3, 92], "964": [3, 45, 79, 92], "20031": [3, 92], "20043": [3, 92], "traceback": [3, 92, 130], "recent": [3, 11, 20, 28, 70, 92, 130], "ng": [3, 92], "1012": [3, 92], "413": [3, 92], "593": [3, 92], "invoke_list": [3, 92], "format_list": [3, 92], "uri": [3, 20, 59, 62, 92, 106, 123, 126], "col": [3, 92], "obj_info": [3, 92], "710": [3, 49, 81, 92], "formatter_inst": [3, 92], "displai": [3, 19, 29, 54, 62, 63, 92], "json_list": [3, 92], "721": [3, 45, 79, 92], "column": [3, 20, 21, 65, 70, 92], "list_to_t": [3, 92], "depth": [3, 11, 35, 53, 56, 77, 92], "775": [3, 45, 46, 47, 49, 78, 79, 81, 83, 92], "add_to_row": [3, 92], "742": [3, 92], "subitem": [3, 92], "fun": [3, 8, 38, 42, 56, 92], "754": [3, 92], "761": [3, 92], "row": [3, 20, 57, 92], "column_ix": [3, 92], "maybe_utf8": [3, 92], "val": [3, 92], "431": [3, 45, 79, 92], "utf": [3, 14, 20, 56, 57, 64, 68, 92, 95, 106, 128, 132], "attributeerror": [3, 92], "float": [3, 38, 48, 56, 66, 67, 77, 92, 116, 131], "100008": [3, 92], "nb": [3, 28, 92, 109, 118], "sr_cpost_veille_f34_0001": [3, 92], "sr_cpost": [3, 20, 23, 28, 29, 59, 63, 92, 106, 109, 110, 117, 123, 127], "cfr": [3, 92], "ab": [3, 16, 92, 97], "todai": [3, 6, 27, 31, 41, 42, 45, 55, 57, 92], "today_ab_20180210_": [3, 92], "stat": [3, 20, 28, 39, 50, 55, 56, 57, 62, 64, 65, 66, 67, 69, 77, 88, 92, 106, 109, 126, 128, 130, 131, 133], "sr_cpump_xvan_f14_0001": [3, 92], "sr_cpump_xvan_f15_0001": [3, 92], "sr_sarra_download_f20_0002": [3, 92], "alphanumer": [3, 20, 31, 45, 54, 57, 63, 65, 66, 70, 79, 87, 92, 106, 112, 127, 129, 130], "20180210": [3, 31, 92, 112], "cwao": [3, 20, 31, 45, 54, 55, 57, 62, 65, 66, 69, 79, 87, 88, 92, 106, 112, 126, 130, 133], "cacn00_cwao_100857__wdk_10905": [3, 92], "errno": [3, 92], "110": [3, 20, 47, 57, 83, 92, 106, 132], "class": [3, 4, 19, 21, 24, 35, 39, 47, 50, 54, 55, 56, 57, 62, 67, 68, 74, 77, 83, 84, 85, 87, 88, 91, 92, 99, 103, 118, 126, 131, 132, 138], "urllib": [3, 4, 56, 68, 91, 92, 132], "urlerror": [3, 92], "urlopen": [3, 68, 92, 132], "sr_sarra_download_f20_0004": [3, 92], "sa": [3, 20, 31, 54, 57, 62, 65, 78, 79, 83, 86, 87, 92, 93, 99, 102, 103, 104, 106, 108, 110, 112, 117, 120, 124, 126, 127, 128, 131], "cymm": [3, 92], "sacn61_cymm_100900___53321": [3, 92], "cweg": [3, 92, 129], "cscn03_cweg_101200___12074": [3, 92], "flow_check_errors_log": [3, 92], "txt": [3, 4, 14, 32, 36, 48, 53, 54, 55, 56, 57, 64, 66, 69, 71, 73, 82, 86, 87, 88, 91, 92, 95, 113, 128, 130, 133, 136], "200016": [3, 92], "99953": [3, 92], "199906": [3, 92], "199620": [3, 92], "cp_f60": [3, 92], "99966": [3, 92], "199549": [3, 92], "99754": [3, 92], "94865": [3, 92], "99935": [3, 92], "99731": [3, 92], "99939": [3, 92], "110795": [3, 92], "160737": [3, 92], "160735": [3, 92], "50113": [3, 92], "50221": [3, 92], "twice": [3, 7, 45, 56, 64, 77, 92], "100205": [3, 92], "49985": [3, 92], "19": [3, 20, 45, 53, 54, 65, 66, 67, 69, 79, 86, 87, 92, 106, 129, 131, 133], "fire": 3, "hour": [3, 6, 12, 20, 27, 28, 31, 38, 42, 45, 48, 49, 53, 54, 56, 57, 62, 66, 70, 77, 79, 82, 112, 116, 130], "morn": 3, "closer": [3, 6, 7, 28, 31, 37], "contin": 3, "inotifi": [3, 23, 37, 46, 78, 92, 101, 117], "encount": [3, 19, 20, 28, 46, 62], "overcom": [3, 46, 53], "sysctl": [3, 92], "variabl": [3, 6, 7, 14, 19, 23, 29, 31, 32, 33, 38, 41, 44, 47, 49, 53, 54, 55, 56, 57, 59, 64, 73, 77, 81, 83, 86, 87, 88, 92, 95, 99, 110, 112, 113, 114, 115, 116, 117, 120, 123, 128], "max_user_watch": [3, 92], "8196": [3, 92], "524288": [3, 92], "excut": [3, 92, 106], "event": [3, 11, 19, 20, 28, 31, 38, 44, 47, 49, 50, 54, 56, 57, 63, 64, 68, 71, 81, 83, 84, 132, 136], "succe": [3, 38, 55, 62], "recov": [3, 12, 20, 21, 56, 68, 77], "interrupt": [3, 25, 28, 54, 65, 68, 87, 92, 109, 129], "pclean_f90": [3, 20, 50, 54, 58, 66, 84, 87, 92, 106, 130], "sr_shovel_pclean_f90_0001": [3, 92], "pclean_f92": [3, 20, 50, 54, 58, 66, 84, 87, 92, 106, 130], "sr_shovel_pclean_f92_0001": [3, 92], "sr_subscribe_t_f30_0002": [3, 92], "pclean_f91": [3, 92], "sr_shovel_pclean_f91_0001": [3, 92], "sr_subscribe_q_f71_0004": [3, 92], "50": [3, 7, 11, 19, 20, 31, 45, 49, 54, 64, 68, 79, 81, 87, 92, 99, 106, 112, 128, 132], "167": [3, 47, 83, 92], "177": [3, 92], "235": [3, 92, 130], "12435": [3, 92], "12428": [3, 92], "100075": [3, 92], "t_dd1": [3, 92], "t_dd2": [3, 92], "100068": [3, 92], "200143": [3, 92], "sum": [3, 8, 19, 20, 23, 33, 34, 45, 47, 48, 49, 50, 53, 56, 57, 60, 62, 63, 64, 66, 69, 71, 72, 77, 79, 81, 82, 83, 84, 86, 92, 99, 106, 114, 115, 117, 124, 126, 127, 128, 130, 135, 136], "98075": [3, 92], "100077": [3, 92], "98068": [3, 92], "397354": [3, 92], "392737": [3, 92], "361172": [3, 92], "195408": [3, 92], "196368": [3, 92], "195406": [3, 92], "193541": [3, 92], "195055": [3, 92], "97019": [3, 92], "94537": [3, 92], "161365": [3, 92], "47950": [3, 92], "95846": [3, 92], "47896": [3, 92], "spite": [3, 8, 28, 62], "termin": [3, 20, 28, 44, 47, 57, 71, 83, 90, 91, 92, 106, 109, 113, 114, 126, 127, 128, 136, 137], "signific": [3, 19, 21, 28, 29], "cumul": [3, 20, 56, 77, 92], "clariti": [3, 19], "pw": [3, 20, 53, 61, 62, 86, 92, 106, 125], "brokerhost": [3, 20, 61, 62, 92, 106, 125], "asid": [3, 20, 31, 45], "typo": 3, "fixup": 3, "increment": [3, 19, 32, 37, 56, 57, 77], "affect": [3, 26, 37, 38, 50, 53, 54, 55, 62, 63, 86, 87, 88, 89, 92, 101, 105, 126, 127], "felt": 3, "v03_issuexxx": [3, 92], "vi": [3, 36, 41, 42, 54, 55, 57, 71, 87, 88, 92, 136], "restructur": [3, 27, 92, 108], "dch": [3, 92], "impact": [3, 19, 23, 28, 53, 62, 63, 86, 92, 99, 109, 117, 126, 127], "fr": [3, 4, 91, 92, 112], "bon": [3, 81, 87, 88, 89, 90, 92, 95, 99, 101, 102, 108, 109, 112, 116, 120, 126, 132, 134], "ceci": [3, 79, 81, 83, 84, 86, 87, 88, 89, 90, 92, 99, 102, 103, 104, 106, 109, 110, 112, 116, 117, 118, 123, 126, 127, 129, 130, 132], "est": [3, 16, 79, 80, 81, 82, 83, 84, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 111, 113, 114, 115, 116, 117, 118, 119, 123, 124, 125, 127, 128, 129, 131, 132, 134, 135, 136, 138, 139], "aux": [3, 78, 79, 80, 81, 82, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 117, 118, 119, 120, 122, 124, 125, 126, 128, 129, 130, 131, 132, 134, 135, 136, 137], "donc": [3, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 97, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 120, 124, 125, 126, 127, 128, 129, 130, 132, 134], "review": [3, 19, 20, 22, 29, 44, 50, 55, 62, 64, 73], "degre": [3, 7, 8, 20, 28, 29, 57], "fragil": [3, 92], "moment": [3, 6, 56, 57, 62, 64, 78, 81, 82, 86, 87, 89, 90, 92, 98, 101, 105, 109, 112, 116, 118, 120, 126, 127, 128, 130, 131], "complaint": 3, "four": [3, 7, 19, 23, 24, 29, 33, 38, 44, 50, 56, 62, 63, 64, 77], "v3_issuexxx": [3, 92], "promot": [3, 92], "best": [3, 6, 8, 17, 20, 21, 23, 25, 26, 31, 38, 44, 45, 48, 53, 54, 55, 59, 62, 63, 66, 72], "against": [3, 7, 8, 19, 20, 28, 54, 56, 57, 59, 62], "reli": [3, 26, 28, 50, 53, 64], "ssc": [3, 28, 39, 70, 92, 109, 134], "hpc": [3, 22, 30, 31, 37, 54, 70, 87, 92, 101, 104, 111, 112, 119, 134], "chp": [3, 70, 92, 110, 134], "spc": [3, 22, 29, 70, 92, 109, 110, 134], "edg": [3, 7, 28, 31], "newest": 3, "stabil": [3, 28, 50], "reproduc": [3, 19, 20, 41, 56], "rang": [3, 7, 14, 23, 28, 37, 49, 57, 81], "alpha": [3, 29, 92, 110], "futur": [3, 6, 19, 20, 31, 34, 45, 59, 62, 64, 79, 92, 99, 112, 126, 128], "yy": [3, 20, 62, 92, 106, 126], "mm": [3, 20, 46, 57, 62, 78, 92, 106, 126], "digit": [3, 20, 32, 56, 62, 64, 77, 106], "year": [3, 6, 11, 20, 23, 27, 28, 29, 31, 35, 44, 56, 62, 63, 77], "seri": [3, 4, 6, 20, 33, 36, 47, 50, 57, 62], "month": [3, 20, 28, 31, 55, 62, 88], "april": 3, "pep0440": [3, 92], "yan": [3, 92], "ybn": [3, 92], "beta": [3, 29, 35, 50, 85, 92], "yrcn": [3, 92], "candid": [3, 44, 92, 120], "y": [3, 8, 9, 11, 12, 46, 55, 57, 62, 78, 79, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 113, 114, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 132, 135], "ypostn": [3, 92], "iibj": [3, 92], "j": [3, 8, 29, 31, 37, 55, 62, 79, 88, 90, 92, 99, 101, 104, 106, 109, 110, 112, 126], "solid": [3, 92], "resum": [3, 28], "hopefulli": [3, 19], "classifi": [3, 56, 65], "partial": [3, 14, 20, 31, 32, 33, 38, 55, 64, 68, 106, 113, 114, 128], "breakag": 3, "earli": [3, 5, 9, 14, 25, 28, 29, 31, 37, 44, 45, 54, 62], "custom": [3, 12, 16, 20, 21, 24, 31, 35, 48, 50, 53, 54, 55, 56, 57, 59, 60, 62, 63, 67, 74, 77], "previous": [3, 29, 31, 44, 47, 64, 70, 134], "rc": [3, 68, 92, 132], "impli": [3, 48, 56, 66], "gone": [3, 19, 50, 54, 55], "mind": [3, 28, 31, 44], "simplest": [3, 21, 45, 53], "drain": 3, "investig": [3, 11, 42, 50, 62], "recreat": [3, 62], "januari": [3, 25, 27, 28, 30, 31, 108, 112], "2016": [3, 20, 21, 27, 28, 29, 31, 45, 53, 62, 79, 86, 92, 103, 106, 108, 109, 110, 112, 126], "01a01": [3, 92], "_version": [3, 92], "changelog": [3, 92], "overwritten": [3, 38, 56, 63, 77], "august": [3, 42], "08b1": [3, 92], "septemb": [3, 28, 49], "09b1": [3, 92], "docker": [3, 20, 52, 62, 85, 92, 106, 126], "pypirc": [3, 92], "supercomputinggcca": [3, 92], "liner": 3, "twine": [3, 92], "metpx_sarracenia": [3, 70, 92, 134], "py3": [3, 70, 92, 134], "seamless": 3, "switch": [3, 14, 27, 32, 33, 37, 38, 45, 46, 57, 92], "occas": [3, 50, 59, 84, 92, 104], "wish": [3, 20, 31, 37, 45, 56, 59, 62, 69, 77], "03a9": [3, 92], "replac": [3, 9, 12, 16, 21, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 38, 39, 44, 45, 46, 48, 49, 50, 53, 54, 55, 56, 57, 60, 62, 64, 66, 77, 78, 79, 82, 109, 123, 130], "upto": [3, 45, 57, 64, 68, 132], "click": [3, 71, 73], "button": [3, 6, 73], "ppa": [3, 70, 92, 134], "find": [3, 5, 6, 12, 14, 18, 19, 20, 21, 27, 28, 29, 31, 38, 39, 41, 42, 44, 45, 53, 54, 57, 59, 60, 62, 66, 71, 79, 99, 109], "v": [3, 7, 8, 9, 16, 19, 20, 28, 31, 60, 67, 85, 92, 96, 97, 99, 106, 109, 110, 124], "minor": [3, 8, 20, 29], "pynsist": [3, 92], "nsi": [3, 92], "demand": [3, 31, 78, 81, 86, 87, 88, 90, 92, 99, 101, 110, 112, 116, 118, 120, 126, 129, 132], "conveni": [3, 19, 22, 45, 55, 57], "easiest": [3, 4, 23, 57, 65], "trusti": [3, 53, 86, 92], "xenial": [3, 92], "12a1": [3, 92], "summari": [3, 30, 42, 54, 73], "precis": [3, 28, 39, 64, 92], "dsc": [3, 92], "debsign": [3, 92], "k": [3, 11, 38, 48, 54, 56, 57, 62, 63, 66, 77, 82, 87, 92, 116, 126, 127, 130], "id": [3, 4, 8, 16, 20, 21, 31, 46, 49, 50, 56, 57, 62, 77, 78, 81, 84, 92, 97, 103, 106, 112, 126], "dput": [3, 92], "gpg": [3, 92], "backportpackag": [3, 92], "bionic": [3, 92], "librabbitmq": [3, 70, 92, 134], "clumsi": 3, "usabl": [3, 14, 19, 28, 55], "fedora": [3, 70, 92, 134], "fed34": [3, 92], "csclub": [3, 92], "uwaterloo": [3, 92], "xz": [3, 92], "redhat": [3, 28, 92, 109], "sysadmin": [3, 27, 73, 92], "dnf": [3, 70, 92, 134], "rpmdevtool": [3, 92], "rpmlint": [3, 92], "distutil": [3, 70, 92, 134], "bdist_rpm": [3, 70, 92, 134], "strang": [3, 14, 19, 38, 55], "incompat": [3, 62, 126], "comment": [3, 4, 20, 41, 44, 57, 62, 79, 82, 84, 86, 87, 88, 90, 93, 96, 99, 101, 103, 104, 105, 106, 109, 118, 120, 124, 126, 127, 132, 136, 137, 138, 139], "long_descript": [3, 92], "readm": [3, 4, 27, 91, 92, 108], "nn": 3, "author": [3, 31, 49, 57, 73, 92], "unfortun": [3, 4, 28, 56, 77], "decod": [3, 54, 57, 62, 64, 68, 83, 132], "recommend": [3, 20, 22, 23, 37, 44, 50, 53, 60, 64, 92, 120], "g": [3, 6, 19, 20, 23, 24, 31, 38, 44, 45, 47, 48, 49, 50, 55, 56, 57, 62, 63, 66, 70, 77, 79, 82, 83, 87, 88, 92, 112, 116, 126, 127, 130, 134], "ncftp": [3, 92], "tail": [3, 42, 65, 72, 92, 128, 129, 135], "egrep": [3, 92], "appdir": [3, 20, 38, 56, 59, 70, 73, 77, 92, 106, 116, 123, 134], "watchdog": [3, 38, 70, 73, 92, 116, 134], "netifac": [3, 38, 50, 70, 84, 92, 116, 134], "human": [3, 6, 31, 38, 45, 56, 62, 70, 73, 77, 92, 116, 134], "jsonpickl": [3, 73, 92], "paho": [3, 17, 26, 38, 50, 56, 70, 77, 84, 92, 98, 105, 116, 134], "psutil": [3, 70, 73, 92, 134], "qp": [3, 92], "noarch": [3, 70, 92, 134], "rpmlib": [3, 92], "compressedfilenam": [3, 92], "filedigest": [3, 92], "partialhardlinkset": [3, 92], "payloadfileshaveprefix": [3, 92], "payloadiszstd": [3, 92], "acceller": [3, 6, 12, 28, 31, 37, 50, 92], "strip": [3, 16, 20, 37, 38, 47, 48, 49, 55, 56, 57, 60, 64, 67, 77, 81, 82, 83, 88, 97, 106, 116, 124, 129, 131], "Such": [3, 20, 45, 48, 56, 62, 64, 66, 77], "ineleg": 3, "drag": 3, "winpython": [3, 92], "io": [3, 4, 8, 26, 27, 31, 35, 38, 54, 56, 57, 59, 60, 61, 62, 63, 64, 77, 87, 91, 92, 105, 107, 108, 112, 116, 123, 124, 125, 126, 127, 128, 139, 140], "guidanc": [3, 50], "loop": [3, 14, 19, 20, 21, 22, 23, 24, 42, 48, 55, 56, 57, 64, 65, 66, 67, 77, 88, 129, 130, 131], "dispar": [3, 20, 92], "crash": [3, 20, 23, 28, 45, 53, 59, 63, 65, 92, 109], "deploi": [3, 9, 21, 22, 23, 27, 28, 29, 31, 44, 45, 62, 92], "troubl": [3, 31, 92, 103], "featuredetect": [3, 38, 92, 116], "degrad": [3, 92], "tell": [3, 4, 7, 8, 9, 20, 22, 26, 45, 53, 56, 62, 65, 66, 67, 68, 72, 77, 79, 82, 83, 86, 88, 89, 90, 92, 99, 101, 104, 106, 110, 112, 116, 117, 120, 126, 127, 130, 131, 132], "batteri": 3, "albeit": [3, 19], "guard": 3, "elegantli": [3, 20, 31], "explan": [3, 20, 31, 34, 45, 56, 91, 140], "sarraplugindev": [3, 92], "callback": [3, 5, 19, 21, 35, 39, 47, 48, 50, 52, 54, 56, 57, 65, 67, 68, 74, 77, 82, 83, 84, 85, 87, 92, 99, 103, 129, 130, 131], "divo": [4, 91], "articl": [4, 86, 89, 90, 91, 104, 106, 109, 112, 121, 127], "sidebar": 4, "ll": [4, 49, 50, 57, 65, 84], "30": [4, 6, 11, 19, 20, 23, 24, 27, 28, 31, 34, 35, 45, 49, 54, 57, 72, 79, 81, 87, 91, 99, 106, 107, 108, 109, 112, 115, 117, 118, 132, 135], "gain": [4, 44], "unix": [4, 9, 20, 23, 31, 45, 62, 63, 64, 79, 91, 106, 112, 117, 126, 127, 128], "respect": [4, 20, 45, 50, 55, 56, 62, 63, 77, 81, 88, 106, 126], "quadrant": [4, 91], "todo": [4, 37, 55, 88, 91, 96], "under": [4, 19, 20, 22, 28, 31, 41, 42, 45, 46, 47, 49, 53, 54, 55, 56, 62, 63, 67, 69, 77, 106, 131, 133, 140], "sphinx": [4, 27, 36, 56, 70, 91, 108, 134], "makefil": [4, 36, 91], "build": [4, 6, 14, 19, 20, 22, 23, 26, 27, 28, 31, 38, 39, 44, 45, 48, 49, 50, 51, 54, 55, 56, 57, 59, 62, 63, 64, 66, 67, 68, 69, 70, 77, 80, 82, 88, 91, 133, 134], "pip": [4, 50, 51, 65, 68, 73, 80, 84, 91, 129, 132], "github": [4, 8, 19, 20, 23, 27, 28, 31, 35, 37, 38, 41, 42, 45, 48, 50, 51, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 70, 73, 75, 77, 79, 80, 82, 84, 87, 88, 91, 96, 99, 101, 106, 107, 108, 109, 112, 116, 117, 121, 123, 124, 125, 126, 127, 128, 130, 134, 139, 140], "job": [4, 7, 20, 23, 28, 45, 50, 53, 109, 117, 134], "branch": [4, 11, 19, 42, 70, 91, 96, 99, 134, 139, 140], "autom": [4, 6, 29, 38, 45], "ci": [4, 57, 79, 80, 81, 82, 84, 86, 87, 88, 89, 91, 92, 93, 94, 99, 101, 103, 104, 106, 109, 110, 112, 113, 114, 115, 116, 117, 120, 123, 125, 126, 127, 128, 129, 130, 132, 133, 134, 136, 139, 140], "commit": [4, 19, 27, 36, 96, 99, 108], "gh": [4, 91], "workflow": [4, 27, 37, 51, 91, 108], "yml": [4, 51, 70, 80, 91, 134], "hundr": [4, 12, 24, 27, 28, 31, 37, 44, 45, 54, 55, 65, 68], "learn": [4, 19, 28, 44, 73], "focus": [4, 54, 57], "concret": [4, 28, 54, 87, 96, 112], "abstract": [4, 19, 31, 37, 56, 77, 99], "jupyt": [4, 10, 19, 35, 54, 55, 65, 87, 88, 91, 99, 107, 129], "notebook": [4, 10, 19, 35, 54, 55, 65, 67, 87, 88, 91, 99, 107], "md": [4, 64, 91, 128], "beginn": 4, "skin": 4, "glanc": [4, 20], "relax": [4, 22], "perspect": [4, 12, 44, 71, 91, 120], "altern": [4, 20, 23, 28, 31, 39, 44, 48, 49, 53, 55, 56, 57, 60, 62, 63, 66, 68, 81, 91, 120, 124, 126], "opinion": [4, 91], "technic": [4, 31], "strictli": [4, 20, 44, 45, 57, 62], "project": [4, 8, 9, 12, 28, 29, 30, 31, 42, 53, 56, 57, 70, 73, 86, 134], "templat": [4, 18, 20, 39, 56, 77], "restructuredtext": [4, 91], "sr_": [4, 19, 23, 27, 53, 55, 56, 77, 86, 88, 91, 99, 108, 117], "whatev": [4, 20, 28, 31, 37, 42, 56, 62, 68, 77, 91, 106], "revis": [4, 29, 74, 128], "worthi": 4, "shall": 4, "newlin": [4, 33, 91, 114], "li": 4, "indent": [4, 49, 57, 81], "cmd": [4, 20, 39, 62, 73, 91, 106, 126], "irrelev": [4, 45], "substitut": [4, 20, 31, 37, 45, 56, 57, 62, 70, 77, 79, 82, 106], "outright": 4, "omit": [4, 19, 20, 29, 46, 49, 52, 55, 63, 64, 72], "stick": 4, "titl": [4, 7, 50], "h1": [4, 91], "h2": [4, 91], "h3": [4, 91], "pep": [4, 19, 91, 99], "yapf": [4, 91], "length": [4, 8, 11, 12, 14, 19, 20, 24, 34, 44, 45, 53, 54, 55, 56, 62, 64, 77, 79, 99], "docstr": [4, 91], "googl": [4, 8, 91], "napoleon": [4, 91], "select": [4, 9, 11, 12, 19, 20, 22, 23, 28, 31, 37, 38, 39, 42, 45, 50, 56, 57, 61, 62, 64, 68, 70, 73, 77, 134], "option1": [4, 56, 91], "value1": [4, 56, 91], "option2": [4, 56, 91], "value2": [4, 56, 91], "herhost": [4, 56, 91], "ssh_keyfil": [4, 20, 38, 56, 61, 91, 106, 116, 125], "myself": [4, 20, 42, 56, 91, 106], "mykei": [4, 56, 91], "id_dsa": [4, 20, 56, 61, 91, 106, 125], "georg": [4, 56, 91], "gpass": [4, 56, 91], "hishost": [4, 56, 91], "sr3_credenti": [4, 59, 60, 63, 64, 91, 123, 124, 127, 128], "parseresult": [4, 20, 56, 91, 106], "str": [4, 20, 24, 38, 48, 55, 56, 57, 62, 66, 67, 77, 82, 88, 91, 106, 116, 118, 126, 130, 131], "bool": [4, 39, 48, 50, 56, 57, 67, 77, 84, 91, 131], "fals": [4, 8, 9, 11, 12, 18, 19, 20, 21, 38, 39, 41, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 63, 65, 66, 67, 68, 71, 77, 78, 79, 81, 82, 83, 84, 87, 88, 91, 94, 99, 103, 106, 116, 129, 131, 132, 136], "prot_p": [4, 20, 38, 56, 61, 91, 106, 116, 125], "bearer_token": [4, 20, 56, 61, 91, 106, 125], "bearer": [4, 20, 56, 61, 91, 125], "token": [4, 12, 20, 56, 61, 91, 106, 125], "login_method": [4, 20, 56, 61, 91, 106, 125], "login": [4, 20, 23, 28, 56, 61, 63, 91, 109], "plain": [4, 19, 20, 23, 31, 38, 45, 53, 56, 61, 67, 69, 79, 91, 106, 112, 125, 131], "amqplain": [4, 20, 56, 61, 67, 69, 91, 106, 125, 131, 133], "gssapi": [4, 20, 56, 61, 91, 106, 125], "def": [4, 7, 8, 9, 11, 12, 20, 24, 38, 39, 48, 49, 55, 56, 57, 66, 77, 81, 82, 88, 91, 106, 116, 118, 130], "__init__": [4, 19, 20, 38, 48, 54, 55, 56, 57, 65, 66, 67, 69, 77, 82, 87, 88, 91, 99, 106, 116, 129, 130, 131, 133], "urlstr": [4, 56, 77, 91], "arg": [4, 91], "string": [4, 11, 12, 19, 20, 32, 33, 38, 48, 49, 50, 54, 55, 56, 57, 61, 63, 64, 66, 67, 73, 77, 91, 106, 116, 121, 128], "isvalid": [4, 56, 91], "primarili": [4, 20, 31, 44, 57, 62, 63], "markup": [4, 91], "inlin": [4, 7, 8, 9, 11, 12, 20, 38, 54, 56, 57, 68, 77, 87, 106, 112, 116, 129, 132], "head": [4, 20, 22, 62], "liter": [4, 55, 56, 57, 62, 63, 77], "markdown": [4, 91], "elsewher": [4, 19, 31, 32, 33, 45, 62, 64], "french": [4, 29, 121], "english": [4, 76, 121], "canada": [4, 6, 9, 27, 28, 29, 31, 45, 49, 54, 57, 71, 72, 73, 79, 81, 87, 91, 108, 109, 110, 112, 135, 136], "offici": [4, 21], "deepl": [4, 91], "revers": [4, 9, 45], "francophon": [4, 91], "total": [5, 7, 8, 11, 12, 18, 19, 20, 28, 31, 32, 33, 34, 35, 38, 45, 48, 54, 56, 62, 64, 65, 66, 70, 77, 79, 82, 87, 93, 94, 99, 100, 106, 107, 109, 112, 113, 114, 115, 116, 126, 128, 129, 130, 134], "v2": [5, 19, 27, 35, 37, 38, 48, 52, 56, 57, 59, 62, 66, 70, 77, 82, 85, 99, 100, 107, 108, 116, 123, 126, 130, 134], "rip": 5, "fantast": 5, "theori": [5, 20, 31, 62], "had": [5, 6, 7, 11, 12, 27, 28, 29, 35, 42, 47, 50, 55, 57], "evolv": [5, 19, 44, 48, 62, 66], "cluster_from": [5, 100], "cluster_to": [5, 100], "analyst": [5, 11, 20, 28, 29, 31, 62, 100, 109, 110, 112, 126], "dead": [5, 8, 17, 27, 57], "ever": [5, 17, 19, 31, 37, 57, 62], "algorithm": [5, 7, 8, 14, 19, 20, 22, 23, 24, 26, 29, 31, 33, 35, 44, 48, 50, 53, 56, 57, 59, 62, 63, 64, 66, 77, 82, 86, 95, 96, 99, 100, 104, 105, 106, 107, 110, 112, 114, 116, 117, 118, 119, 120, 123, 126, 127, 128, 130], "emerg": [5, 26, 31], "envisag": [5, 86, 115], "didn": [5, 9, 19, 31], "scratch": [5, 48, 55, 66], "forecast": [6, 28, 29, 31, 54, 109], "predict": [6, 9, 22, 26, 28, 29, 45, 49, 55], "vertic": [6, 7], "aviat": [6, 57], "busi": [6, 26, 31], "america": 6, "pictur": [6, 7, 29, 31, 54], "sky": 6, "spectrum": 6, "cloudi": 6, "shot": [6, 20, 63], "polar": 6, "orbit": 6, "hrdp": [6, 132], "smaller": [6, 8, 12, 23, 28, 31, 45, 54, 62, 64], "unit": [6, 8, 9, 11, 19, 20, 26, 38, 45, 48, 49, 54, 56, 57, 62, 66, 70, 77, 81, 116], "geolog": [6, 49, 81], "survei": [6, 49, 81], "water": [6, 49, 57], "surfac": [6, 28, 44, 57, 109, 120], "station": [6, 31, 49, 54, 57, 68, 81, 87, 112, 132], "faa": [6, 31, 112], "navcanada": 6, "airport": [6, 68], "tend": [6, 19, 31, 44], "tightli": 6, "radar": [6, 20, 24, 28, 30, 31, 45, 53, 54, 57, 62, 79, 86, 87, 106, 109, 111, 112, 118, 126], "imageri": [6, 29, 31, 54, 112], "spreadsheet": 6, "cell": [6, 11, 57, 81, 84, 86, 87, 88, 92, 99, 104, 105, 106, 112, 120, 123, 124, 126, 130, 132, 134], "temperatur": [6, 49, 57, 68, 132], "barometr": 6, "pressur": [6, 31, 38, 119], "wind": [6, 55], "speed": [6, 8, 11, 12, 20, 23, 24, 25, 28, 29, 31, 45, 46, 49, 54, 62, 65, 78, 79], "movement": [6, 79], "trend": 6, "p0": 6, "p1": 6, "t1": [6, 20, 62, 106, 126], "illustr": [6, 8, 31, 112], "stuff": [6, 10, 19, 53, 56, 57, 77], "air": [6, 31, 54], "mass": [6, 31, 112], "constant": [6, 28, 31, 44, 45, 46, 78, 79, 109, 112, 120], "acceler": [6, 7, 19, 37, 56, 64, 77], "dissip": 6, "calcul": [6, 7, 12, 14, 20, 22, 23, 32, 33, 37, 38, 48, 55, 56, 57, 62, 63, 64, 77, 82, 94, 106, 109, 110, 112, 117, 118, 120, 124, 126, 127, 128], "simlat": 6, "till": 6, "restat": 6, "acquisiion": 6, "gather": [6, 19, 21, 38, 42, 45, 48, 49, 54, 56, 58, 62, 65, 66, 67, 70, 77, 82, 85, 87, 99, 103, 106, 116, 126, 129, 130, 131, 134], "assimil": [6, 28, 109], "pile": [6, 7, 17, 19, 81, 87, 92, 99, 104, 108, 110, 111, 129, 132], "numer": [6, 20, 28, 29, 31, 38, 45, 56, 62, 77, 79], "hit": [6, 7, 8, 11, 14, 45, 54, 55, 87], "timestesp": 6, "obviou": [6, 19, 22, 29, 31, 73], "extrem": [6, 20, 44, 45, 53, 54, 64], "tediou": 6, "principl": [6, 11, 28], "extract": [6, 28, 39, 42, 47, 48, 49, 53, 55, 64, 79, 92, 109, 112, 114], "guess": [6, 11, 20, 38, 42, 56, 57, 68, 77, 106, 116, 129, 132], "map": [6, 11, 12, 22, 28, 31, 44, 45, 47, 49, 50, 56, 77, 81, 83, 84, 119], "manual": [6, 8, 16, 20, 21, 22, 23, 26, 29, 31, 33, 38, 39, 41, 42, 48, 50, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 66, 70, 74, 77, 87, 97, 106, 123, 124, 125, 127, 128, 134], "hi": [6, 38, 41, 42, 53, 54, 116], "ship": [6, 11, 22, 26, 70], "volum": [6, 24, 29, 31, 45, 54, 62, 79, 87, 110, 112, 118, 126], "fuzzier": 6, "ago": [6, 30, 44, 56, 57, 62, 65, 66, 67, 77, 130, 131], "north": [6, 49, 81, 132], "km": [6, 8], "whole": [6, 7, 8, 14, 19, 28, 32, 33, 42, 55, 57, 64, 113, 114, 128], "10km": [6, 68], "sq": 6, "earth": 6, "grid": [6, 28, 54], "height": [6, 57], "atmospher": [6, 28, 49, 54, 81], "125": [6, 11, 68], "phenomena": 6, "billion": 6, "gbyte": [6, 31, 45, 112], "en": [6, 7, 8, 20, 54, 56, 57, 77, 78, 80, 84, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 111, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 125, 126, 127, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140], "wikipedia": [6, 7, 8, 20, 54, 56, 106], "wiki": [6, 7, 8, 20, 54, 56, 75, 106], "history_of_numerical_weather_predict": 6, "cite_not": 6, "rfe": 6, "43": [6, 20, 53, 54, 66, 69, 70, 86, 87, 106, 133, 134], "1989": 6, "4x": 7, "embarassingli": [7, 11, 12], "perfectli": 7, "perfect": [7, 11, 31, 66], "paral": 7, "embarrasingli": 7, "paralleliz": [7, 47], "graph": [7, 31], "plot": 7, "95": [7, 8, 20, 106], "throw": 7, "98": [7, 12, 20, 31, 106, 112, 132], "99": [7, 20, 65, 67, 68, 106, 131, 132], "ten": [7, 20, 21, 28, 31, 62], "numpi": [7, 8, 9, 11, 12], "np": [7, 8, 9, 11, 12], "matplotlib": [7, 8, 9, 11, 12, 70, 134], "pyplot": [7, 8, 9, 11, 12], "plt": [7, 8, 9, 11, 12], "linspac": 7, "lambda": 7, "vector": 7, "f1": 7, "xlabel": 7, "proport": [7, 54, 87], "ylabel": 7, "theoret": [7, 31], "its": [7, 11, 12, 16, 20, 21, 22, 23, 26, 27, 28, 29, 31, 37, 38, 39, 41, 44, 45, 46, 47, 53, 54, 57, 60, 61, 62, 63, 64, 66, 67, 69, 75, 79, 106, 131], "asymptot": 7, "20x": 7, "bite": 7, "nproc": 7, "logspac": 7, "num": 7, "dtype": 7, "int": [7, 8, 9, 11, 26, 56, 57, 67, 105, 131], "sped": 7, "75": [7, 11, 12, 20, 28, 34, 54, 67, 87, 106, 109, 115, 132], "label": [7, 19, 23, 27, 63], "02d": 7, "xscale": 7, "legend": 7, "cours": [7, 39, 42, 136], "embarrassingli": 7, "aka": [7, 11, 12, 14, 19, 22, 28, 29, 45, 62, 79, 99, 104, 109, 110], "995": [7, 47, 57, 83], "997": 7, "999": [7, 45, 64, 79, 128], "snippet": [7, 20, 38, 39, 62], "math": [7, 11, 12], "tot": 7, "1000000": 7, "counter": [7, 19, 20, 54, 55, 62, 63, 106], "global": [7, 8, 20, 22, 26, 31, 37, 38, 48, 55, 62, 66, 79, 82, 88, 92, 104, 106, 112, 116, 120, 121, 126, 130], "1414": 7, "21661385363": 7, "cpu": [7, 9, 11, 12, 20, 29, 37, 44, 45, 50, 53, 54, 57, 65, 84, 86, 87, 106, 110, 120, 129], "161": [7, 54, 87], "sy": [7, 55, 66, 88], "wall": 7, "160": [7, 47, 69, 83, 133], "answer": [7, 8, 11, 31, 44, 45], "millisecond": [7, 31, 62, 112, 126, 130], "threadmax": 7, "threadnumb": 7, "target": [7, 14, 18, 20, 22, 29, 39, 42, 56, 57, 62, 64, 72, 77, 106, 135], "append": [7, 14, 19, 20, 24, 31, 38, 39, 42, 45, 48, 49, 54, 55, 56, 57, 62, 63, 64, 66, 77, 82, 88, 130], "join": [7, 17, 39, 48, 55, 66, 82, 88, 130], "2449": 7, "49161668406": 7, "404": [7, 72, 135], "408": [7, 45, 79], "405": [7, 19, 45, 79, 99], "wrong": [7, 8, 19, 20, 56, 62, 77], "amort": 7, "eachoth": 7, "race": [7, 14, 71, 95], "condit": [7, 14, 23, 62, 63, 68, 71, 86, 92, 95, 104, 106, 116, 117, 126, 127, 132, 136], "contend": 7, "counterlock": 7, "totlock": 7, "acquir": [7, 20, 22, 29, 31, 41, 53, 73], "releas": [7, 19, 29, 31, 35, 49, 50, 52, 55, 70, 76, 88, 99, 134], "2180280637874": 7, "78": [7, 20, 53, 86, 106], "slower": [7, 12, 23, 25, 28, 31, 45, 62], "almost": [7, 20, 21, 25, 28, 45, 62], "spend": [7, 19, 24], "kernel": [7, 23, 28, 63, 117], "did": [7, 20, 21, 38, 39, 41, 42, 44, 45, 47, 53, 55, 56, 62, 116], "synchron": [7, 8, 11, 24, 28, 37, 53, 86], "doubl": [7, 44, 54, 62, 87, 120, 126, 127], "expens": [7, 9, 11, 20, 23, 29, 31, 44, 54, 63], "sparingli": [7, 62], "critlock": 7, "687": 7, "810": 7, "917": 7, "inher": [7, 8, 19, 28, 31, 37, 44, 53, 62], "hardwar": [7, 8, 12, 31], "super": [7, 31, 38, 48, 55, 82, 88, 100, 112, 116], "headlin": 7, "truth": 7, "gold": 7, "littl": [7, 20, 21, 22, 23, 25, 29, 31, 44, 53, 54, 57, 62, 63, 117], "api": [7, 19, 20, 26, 27, 28, 35, 37, 50, 55, 56, 57, 64, 65, 66, 74, 84, 85, 88, 99, 101, 105, 106, 107, 108, 109, 128, 129, 138, 140], "percentag": [7, 20], "rise": 7, "domin": [7, 11, 12, 28, 31, 109], "formul": [7, 28, 31, 57], "ddsr": [7, 14, 22, 41, 42, 53, 57, 67, 68, 86, 95, 104, 131, 132], "128": [7, 45, 79, 131], "900": [7, 12], "7200": 7, "multiprocess": [7, 11], "27s_law": 7, "jenkov": 7, "tutori": [7, 35, 38, 54, 55, 56, 77, 107, 140], "java": [7, 11, 26, 38, 105, 116], "concurr": [7, 19], "silva": [8, 28, 57, 73, 109], "propos": [8, 28, 31, 32, 33, 42, 64, 87, 106, 112, 126, 128], "eric": 8, "brewer": 8, "2000": [8, 9, 11, 27, 37, 54, 87, 101, 108], "2002": 8, "gilbert": 8, "lynch": 8, "consist": [8, 19, 20, 29, 31, 62, 63, 64, 65, 66, 79, 82, 88, 90, 91, 92, 98, 99, 106, 109, 112, 116, 117, 126, 127, 129, 130, 135], "toler": [8, 54, 57], "lose": [8, 20, 23, 56, 68, 77], "realiti": [8, 44], "walk": [8, 23, 28, 31, 37, 53, 57], "mwhittak": 8, "blog": [8, 44, 120], "an_illustrated_proof_of_the_cap_theorem": 8, "theoream": 8, "pragmat": 8, "sql": 8, "hash": [8, 11, 20, 31, 44, 57, 62], "law": 8, "96": [8, 12, 20, 106], "circl": [8, 9, 11, 12, 31, 68], "rectangl": [8, 9, 11, 12], "polygon": [8, 9, 11, 12, 38, 116], "arrow": [8, 9, 11, 12], "fancyarrow": [8, 9, 11, 12], "fancyarrowpatch": [8, 11], "three_circl": 8, "ax": [8, 9, 11, 12], "box_bg": [8, 9, 11, 12], "arrow1": [8, 9, 11, 12], "fc": [8, 9, 11, 12], "width": [8, 9, 11, 12, 14], "head_width": [8, 9, 11, 12], "head_length": [8, 9, 11, 12], "add_patch": [8, 9, 11, 12], "g1": 8, "fontsiz": [8, 9, 11, 12], "85": [8, 9, 12, 20, 31, 49, 69, 81, 106, 112, 133], "g2": 8, "70": [8, 20, 56, 77, 106], "create_bas": [8, 9, 11, 12], "cccccc": [8, 9, 11, 12], "88ccff": [8, 9, 11, 12], "arrow2": [8, 9, 11, 12], "88ff88": [8, 9, 11, 12], "supervis": [8, 9, 11, 12], "fig": [8, 9, 11, 12], "figsiz": [8, 9, 11, 12], "facecolor": [8, 9, 11, 12], "w": [8, 9, 11, 12, 38, 48, 53, 56, 62, 66, 69, 77, 82, 86, 116, 126, 130, 133], "xtick": [8, 9, 11, 12], "ytick": [8, 9, 11, 12], "frameon": [8, 9, 11, 12], "set_xlim": [8, 9, 11, 12], "set_ylim": [8, 9, 11, 12], "iop": 8, "san_iop": 8, "time_for_1_iop": 8, "distanc": [8, 54, 87, 103, 104, 106, 127], "300000": [8, 12], "tprop": 8, "max_iop": 8, "travel": [8, 14, 31], "1wai": 8, "sec": [8, 20, 54, 55, 65, 66, 67, 87, 88, 106, 130, 131], "002": [8, 131], "92": [8, 11, 20, 45, 79, 106], "filesystem": [8, 62, 63], "24": [8, 11, 19, 20, 27, 28, 47, 65, 67, 68, 69, 83, 87, 99, 101, 106, 108, 109, 131], "600km": 8, "apart": [8, 23], "availabilti": 8, "consensu": 8, "shard": 8, "master": [8, 20, 41, 42, 54, 59, 65, 70, 87, 106, 129], "paus": 8, "respond": [8, 20, 31], "unavail": [8, 39, 45, 64], "formerli": [8, 29], "dy": 8, "paxo": 8, "exception": 8, "season": 8, "paper": [8, 41], "raft": 8, "converg": 8, "leader": 8, "quick": [8, 29, 53, 55], "loss": [8, 20, 23, 46, 62], "fork": [8, 12, 14, 49, 75, 81, 95], "inconsist": [8, 121], "OR": [8, 39, 54, 87], "hope": [8, 14, 19, 26, 29, 31, 42, 53], "bicker": 8, "unstabl": 8, "lr": [8, 20, 45, 79, 106], "backup": [8, 24, 28, 29, 45, 46, 56, 78, 79, 109], "restor": [8, 29, 56, 57, 62, 67, 99, 131], "processor": [8, 28, 29, 53], "bandaid": 8, "journal": [8, 78, 79, 82, 84, 86, 87, 92, 93, 95, 99, 109, 113, 116, 126, 127, 128, 129, 130, 135], "sync": [8, 32, 37], "meantim": [8, 57], "upper": [8, 11, 20, 21, 48, 62, 63, 66, 82, 106, 130], "hang": 8, "struggl": 8, "deleg": [8, 19], "subdomain": 8, "synch": 8, "solut": [8, 19, 23, 29, 30, 37, 53, 55, 63, 86, 88, 92, 99, 101, 110, 111, 117, 127], "underli": [8, 21, 22, 23, 31, 57, 63], "lag": [8, 20, 28, 31, 54, 57, 65, 66, 67, 87, 106, 129, 130, 131], "unlimit": [8, 34], "perfom": 8, "pipe": [8, 19, 20, 38, 54, 56, 57, 63, 77, 87, 99, 106, 116, 127], "lean": 8, "adapt": [8, 26, 28, 29, 55, 105, 109, 110, 123, 132], "profound": 8, "foti": 8, "nikolaidi": 8, "tromo": 8, "kit": 8, "phd": 8, "thesi": 8, "2020": [8, 19, 20, 27, 28, 38, 45, 54, 71, 79, 87, 99, 106, 108, 109, 116, 136], "monei": 8, "2006": 8, "hp": [8, 9], "dc": [8, 45, 46, 78, 79], "consolid": [8, 56], "mile": 8, "longest": [8, 20, 54, 65, 129], "aw": [8, 20, 37, 47, 54, 55, 65, 83, 87, 88, 106, 129], "amazon": 8, "rd": 8, "az": 8, "failov": [8, 29, 31, 70], "replica": 8, "repd": 8, "region": [8, 29, 31, 68], "zonal": 8, "ssd": 8, "pd": [8, 11, 12, 23, 25, 27, 45, 79, 85, 102, 108, 117], "writer": [8, 23, 37, 50, 62], "throughput": [8, 19, 23, 45], "gb": 8, "mb": [8, 45], "48": [8, 47, 70, 83, 134], "architectur": [8, 11, 12, 27, 31, 64, 70, 108, 112, 134], "buffer": [8, 38, 48, 56, 57, 62, 77, 82, 116], "legaci": [8, 19, 27, 29, 64, 110], "un": [8, 19, 45, 48, 54, 80, 81, 82, 83, 84, 85, 88, 90, 91, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 129, 131, 133, 134, 138, 139], "agnost": [8, 22, 31, 37, 57], "fallacies_of_distributed_comput": 8, "youtub": [8, 55, 88, 110], "ewmgsk7mpfc": 8, "ab_channel": 8, "ibmtechnologi": 8, "eax360": 8, "coordin": [8, 31, 101, 112], "pdf": 8, "diego": 8, "ongaro": 8, "john": 8, "ousterhout": 8, "ubc": 8, "bestchai": 8, "teach": [8, 73], "cs416_2020w2": 8, "lectur": [8, 79, 83, 90, 99, 103, 106, 112, 116, 118, 126, 128], "mar23": 8, "csail": 8, "mit": 8, "edu": [8, 57], "td": [8, 57], "jacm85": 8, "imposs": [8, 95, 128], "faulti": 8, "michael": [8, 28, 109], "fischer": 8, "nanci": 8, "paterson": 8, "obsolet": [9, 20, 26, 27, 50, 56, 62, 106], "gradual": [9, 20, 26, 29, 38, 55], "storm": [9, 11, 17, 22, 24, 29], "offic": [9, 29, 31, 47, 71, 72, 83], "climat": [9, 28, 45, 54, 87], "inspir": [9, 28, 31, 37, 101, 109], "lack": [9, 19, 20, 21, 23, 44, 56, 61, 63, 77], "deduc": [9, 62], "1980": [9, 27, 54, 87, 108], "pdsreceiv": 9, "pdsdispatch": 9, "pdssender": 9, "ux": 9, "9000": 9, "105": [9, 20, 53, 54, 86, 87, 106, 131], "directory_polygon": [9, 11, 12], "zorder": [9, 11, 12], "55": [9, 11, 19, 20, 45, 54, 68, 69, 79, 87, 99, 106, 129, 130, 132, 133], "ipc": 9, "notifi": [9, 14, 20, 28, 32, 33, 41, 45, 46, 62, 78, 79, 95, 113, 114, 126], "imask": 9, "emask": 9, "evalu": [9, 11, 12, 20, 22, 28, 31, 38, 54, 62, 63, 106], "sequenti": [9, 20, 21, 31, 56, 62, 68, 77], "regex": [9, 11, 12, 16, 20, 45, 54, 56, 60, 67, 70, 79, 87, 97, 106, 124, 131, 134], "eighti": 9, "mip": [9, 11], "r": [9, 12, 20, 30, 31, 32, 41, 45, 46, 55, 62, 79, 106, 111, 112, 113, 126], "rp": [9, 11, 12], "cost": [9, 23, 29, 31, 56, 63, 77], "exppress": 9, "rpc": [9, 11, 12], "5000": [9, 11, 12], "500000": 9, "power": [9, 20, 24, 31, 44, 54, 55, 62, 63, 73], "corrupt": [9, 20, 31, 38, 44, 54, 62, 63, 64, 106, 126, 127], "mediat": [9, 22, 26, 29], "2004": [9, 27, 108], "tandem": [9, 12, 27, 57, 108], "background": [10, 20, 21, 29, 65], "slideshow": [10, 36], "slide": [10, 29, 36], "editor": [10, 20, 36, 54, 65, 72, 73, 106], "ip": [10, 11, 20, 21, 22, 26, 28, 31, 37, 44, 50, 62, 70, 84, 101, 103, 104, 105, 106, 109, 112, 120, 126, 134], "8040": 10, "nbconvert": 10, "xx": 10, "ipynb": 10, "led": [11, 27], "fall": [11, 12, 17, 19, 24, 27, 28, 38, 44, 56, 116], "cheap": [11, 23, 31, 44, 63], "colon": [11, 20, 34, 57, 61, 62], "studi": [11, 30, 37, 54, 62, 87], "dissemin": [11, 22, 29, 45, 47], "six": [11, 20, 28, 29, 49, 62, 81, 106, 109, 110, 126], "componentm": 11, "analog": [11, 32, 33, 57, 64, 68], "hurt": 11, "mix": [11, 19, 20, 31, 54, 62], "constraint": [11, 12, 22, 28, 31, 53], "triple_circl": 11, "len": [11, 12, 19, 39, 55, 66, 88, 99, 117, 130], "estim": [11, 14, 42, 95, 112], "along": [11, 28, 31, 53], "10000": [11, 23, 56, 77], "integ": [11, 12, 19, 20, 31, 32, 33, 38, 48, 56, 62, 63, 64, 66, 77, 106, 116], "op": [11, 12, 28, 41, 42, 45, 54, 79, 85, 87, 109], "lookup": [11, 12, 31, 56, 57], "higherarchi": 11, "rpb": 11, "pretti": [11, 19, 56, 77], "iffi": 11, "convers": [11, 19, 39, 40, 41, 50, 56, 57, 77, 84, 99, 106], "cheaper": [11, 31, 37], "alot": 11, "swtch": 11, "rsc": 11, "regexp1": 11, "Be": 11, "And": [11, 19, 20, 27, 30, 38, 39, 41, 42, 45, 46, 111], "perl": 11, "php": 11, "rubi": [11, 26, 105], "russ": 11, "cox": 11, "nregex": 11, "sound": 11, "overli": [11, 31, 53], "pessimist": 11, "eval": 11, "round": [11, 12, 20, 22, 23, 25, 31, 62, 63, 104, 106, 127], "nt": [11, 56], "120366": 11, "1500": [11, 23, 28, 109, 117], "125366": 11, "dispatch": [11, 68], "10ish": 11, "msg": [11, 19, 20, 24, 38, 39, 45, 48, 55, 56, 57, 62, 65, 66, 67, 77, 79, 82, 88, 99, 106, 116, 118, 126, 130, 131], "120": [11, 14, 95], "kilo": [11, 38, 48, 56, 57, 62, 66, 77, 82, 116, 126, 130], "optimist": [11, 112], "perf": 11, "topc": 11, "serverpeak": 11, "clientsid": 11, "050": 11, "pdspeak": 11, "slowest": [11, 23], "sundewclientsid": 11, "005": 11, "200000": 11, "sundewreceiv": 11, "5494": 11, "sundewpeak": 11, "54940": 11, "54": [11, 19, 20, 45, 54, 57, 65, 66, 68, 72, 79, 87, 99, 106, 130, 135], "sarraclientsid": 11, "sarrabrok": 11, "8000": 11, "um": [11, 19, 20, 106], "sarrapeak": 11, "80000": 11, "gip": 11, "inver": 11, "contributor": 11, "maxima": 11, "conserv": [11, 79, 82, 87, 92, 103, 116, 128, 130, 132], "handl": [11, 19, 21, 22, 31, 37, 45, 56, 57, 64, 70, 74, 77], "connectionstyl": 11, "arc3": 11, "rad": 11, "65": [11, 20, 44, 106, 120, 129], "particip": [11, 20, 21, 28, 31, 37, 50, 54, 55, 64, 87, 88, 101, 103, 106, 109, 110, 112, 128], "contact": [11, 20, 21, 41, 62, 106, 126], "partip": 11, "modulo": 11, "occurr": [11, 20, 38, 48, 54, 56, 57, 62, 64, 66, 77, 82, 87, 106, 116, 121, 126, 128, 130], "52": [11, 19, 28, 68, 99, 109, 129, 131], "white": 11, "72": [11, 28, 37, 54, 67, 87, 101, 109], "meet": [11, 20, 44], "fair": [11, 78, 79, 81, 82, 86, 87, 88, 89, 90, 92, 93, 99, 101, 103, 104, 105, 106, 109, 112, 116, 117, 118, 120, 123, 126, 127, 129, 130, 131, 134, 137, 139], "fine": [11, 20, 38, 54, 57, 62, 117], "sensit": [11, 20, 62], "300": [12, 20, 21, 24, 28, 38, 47, 49, 53, 54, 56, 63, 77, 81, 83, 86, 87, 103, 106, 109, 116, 118, 127, 129], "outag": [12, 56, 77], "peak": 12, "teen": 12, "spurt": 12, "alrogithim": 12, "clash": [12, 14, 19, 20, 21, 28, 56, 62], "eg": [12, 54, 87], "combin": [12, 20, 21, 28, 54, 55, 57, 62, 63, 68, 77, 87], "worsen": [12, 26], "serial": [12, 53], "unlock": 12, "intens": [12, 31, 112], "slightli": [12, 19, 20, 44, 53, 60, 63, 67], "shortcut": [12, 70], "mask": [12, 20, 38, 48, 53, 55, 56, 57, 62, 74, 77, 82, 86, 88, 106, 116, 129, 138], "magnitud": [12, 31, 37, 44, 53], "comparisong": 12, "grew": [12, 28], "25000": [12, 45, 46, 78, 79], "comparison": [12, 28, 30, 31, 37, 56, 57, 111], "extant": [12, 56], "duti": 12, "10x": [12, 53, 62, 86, 126], "speedup": [12, 28], "peralleliz": 12, "tradition": 12, "industri": [12, 26, 29, 31, 105, 110, 112], "lore": 12, "thumb": 12, "approxim": [12, 28, 34, 35], "judg": 12, "safe": [12, 31, 53], "thu": [12, 19, 21, 22, 23, 28, 29, 31, 44, 46, 63], "shorter": [12, 19, 20, 31, 44, 54, 57, 62, 64], "clode": 12, "0000": 12, "450": 12, "biggish": 12, "reduct": [12, 35], "feasibl": [12, 28], "expand": [12, 19, 29, 31, 38, 55, 68], "102": [12, 68], "de": [12, 20, 28, 37, 41, 54, 59, 61, 64, 85, 96, 97, 111, 114, 115, 119, 122, 123, 124, 125, 129, 133, 135, 136, 138, 139], "compos": [12, 21, 37, 51, 55, 79, 80, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 96, 99, 100, 101, 104, 105, 107, 108, 110, 112, 114, 116, 117, 119, 120, 121, 124, 125, 126, 127, 128, 130], "lum": 12, "luk": 12, "rpr": 12, "181946": 12, "benchmark": [12, 31], "capabl": [12, 51, 67, 69, 79, 88, 89, 90, 92, 120, 131, 133], "feel": [12, 21, 31, 73], "2005": 12, "superior": 12, "surround": [12, 20, 106], "happi": [12, 19, 26], "becam": [12, 19, 27, 29, 50], "enorm": 12, "reap": [12, 28], "daunt": 12, "bar": [12, 57, 77], "peripher": 12, "amdahl": 13, "theorem": 13, "thank": [13, 75], "conclus": [14, 32, 33, 64, 74, 95, 113, 114, 128, 138], "blocksiz": [14, 18, 29, 32, 33, 47, 49, 64, 67, 81, 83, 94, 110, 113, 128, 131], "signatur": [14, 19, 28, 37, 38, 55, 56, 64, 88, 95, 99, 109, 116, 128], "he": [14, 20, 44, 46, 59, 63, 64], "gedanken": [14, 95], "cool": [14, 95], "gridftp": [14, 95], "stage": 14, "largest": [14, 28, 54], "chunk": [14, 48, 49, 56, 57, 77, 82], "listen": [14, 22, 29, 41, 45, 79, 110], "dd_subscrib": [14, 30, 31, 37, 95, 101, 111, 112], "10mb": 14, "offset": [14, 56, 62, 77, 95], "v01": [14, 30, 33, 95, 111, 114, 119], "blocksz": [14, 95], "sz": [14, 33, 64, 95, 114, 128], "inblock": [14, 95], "remaind": [14, 31, 32, 33, 42, 64, 113, 114, 128], "blocknum": [14, 32, 95, 113], "chksum": [14, 95], "settabl": [14, 23, 25, 95], "smallish": 14, "multipli": [14, 38, 48, 56, 62, 66, 77, 116], "puzzl": [14, 19, 38], "spars": [14, 95], "sr_sub": [14, 95], "administratospher": [14, 95], "wordpress": [14, 95], "2008": [14, 27, 31, 95, 108, 112], "besid": [14, 31, 48, 57, 66, 77], "contigu": [14, 95], "lseek": [14, 32, 33, 95, 114], "unusu": [14, 27], "partnum": [14, 95], "special": [14, 20, 23, 31, 41, 44, 45, 53, 55, 56, 57, 60, 61, 62, 68, 70, 77], "unlik": [14, 20, 31, 57], "havoc": [14, 62], "anywai": [14, 19], "1024": [14, 62, 95, 126], "10485760": [14, 95], "500mb": 14, "ascii": [14, 20, 41, 44, 57, 61, 95, 106, 120, 125], "avereag": 14, "580": [14, 95], "aesthet": 14, "dwarf": 14, "boil": 14, "filesz": [14, 95], "ith": 14, "0th": 14, "chase": 14, "disabl": [14, 16, 19, 20, 28, 38, 44, 45, 50, 59, 60, 84, 92, 97, 99, 106, 120, 123], "repositori": [14, 27, 57, 70, 75, 134], "zsyncmak": [14, 95], "ik": 14, "downsid": 14, "2011": [14, 27, 95, 108], "seein": 14, "sigh": [14, 19, 56, 77], "2nd": [14, 19, 68], "megabyt": [14, 31, 63], "extra": [14, 19, 23, 25, 31, 42, 44, 50, 56, 70, 77, 84, 134], "email": [14, 20, 21, 50, 52, 54, 55, 58, 62, 66, 73, 83, 84, 87, 88, 103, 130], "readv": [14, 95], "primer": 15, "sr3_titl": 15, "assembl": [15, 22, 49, 81], "philosophi": 15, "foreground": [16, 18, 38, 45, 47, 49, 53, 54, 56, 57, 59, 60, 62, 65, 66, 70, 79, 81, 83, 86, 87, 94, 97, 116, 123, 124, 129, 130, 134], "reload": [16, 45, 59, 60, 63, 64, 79, 97, 124], "configfil": [16, 20, 60, 97, 106, 124], "cleanup": [16, 19, 20, 48, 50, 54, 56, 57, 59, 60, 62, 65, 66, 67, 68, 71, 74, 77, 79, 87, 97, 99, 106, 123, 124, 130, 131, 132, 135, 136], "lorem": [16, 97], "ipsum": [16, 97], "dolor": [16, 97], "sit": [16, 97], "amet": [16, 97], "consectetur": [16, 97], "adipisc": [16, 97], "elit": [16, 97], "eiusmod": [16, 97], "tempor": [16, 53, 97], "incididunt": [16, 97], "ut": [16, 97], "labor": [16, 97], "et": [16, 68, 70, 79, 80, 81, 83, 84, 85, 88, 91, 92, 93, 94, 95, 97, 98, 99, 100, 102, 104, 105, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 119, 120, 123, 124, 128, 129, 131, 132, 133, 135, 136, 137, 138], "magna": [16, 97], "aliqua": [16, 97], "enim": [16, 97], "veniam": [16, 97], "qui": [16, 78, 79, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138], "nostrud": [16, 97], "exercit": [16, 97], "ullamco": [16, 97], "labori": [16, 97], "nisi": [16, 97], "aliquip": [16, 97], "ex": [16, 20, 22, 42, 48, 56, 57, 62, 66, 73, 77, 82, 84, 87, 88, 97, 104, 106, 126, 130, 137], "ea": [16, 97], "commodo": [16, 97], "consequat": [16, 97], "dui": [16, 97], "aut": [16, 68, 97, 132], "irur": [16, 97], "reprehenderit": [16, 97], "volupt": [16, 97], "velit": [16, 97], "ess": [16, 97], "cillum": [16, 97], "eu": [16, 87, 90, 97, 101, 106, 108, 109, 116, 118, 120, 128, 130], "fugiat": [16, 97], "nulla": [16, 97], "pariatur": [16, 97], "excepteur": [16, 97], "sint": [16, 97], "occaecat": [16, 97], "cupidatat": [16, 97], "proident": [16, 97], "sunt": [16, 97], "culpa": [16, 97], "officia": [16, 97], "deserunt": [16, 97], "mollit": [16, 97], "anim": [16, 97], "laborum": [16, 97], "circul": [16, 20, 24, 31, 60, 79, 90, 92, 93, 97, 103, 106, 112, 116, 120, 128], "vip": [16, 38, 41, 45, 46, 50, 54, 55, 56, 57, 60, 65, 66, 67, 70, 77, 78, 79, 84, 87, 88, 97, 116, 119, 124, 129, 130, 131, 134], "posix": [16, 20, 60, 62, 63, 97, 106, 124, 126, 127], "greedi": [16, 20, 54, 60, 62, 97, 106, 126], "sr_cpump": [16, 20, 97, 101, 106], "ctrl": [16, 20, 45, 60, 72, 73, 79, 97, 106, 124, 135, 137], "sigint": [16, 47, 49, 60, 81, 83, 97, 124], "sigterm": [16, 60, 97, 124], "addition": [16, 20, 37, 59, 60, 124], "perspiciati": [16, 97], "und": [16, 97], "omni": [16, 97], "ist": [16, 97], "natu": [16, 97], "voluptatem": [16, 97], "accusantium": [16, 97], "doloremqu": [16, 97], "laudantium": [16, 97], "totam": [16, 97], "rem": [16, 97], "aperiam": [16, 97], "eaqu": [16, 97], "ipsa": [16, 97], "quae": [16, 97], "illo": [16, 97], "inventor": [16, 97], "veritati": [16, 97], "quasi": [16, 97], "architecto": [16, 97], "beata": [16, 97], "vita": [16, 97], "dicta": [16, 97], "explicabo": [16, 97], "nemo": [16, 28, 97, 109], "ipsam": [16, 97], "quia": [16, 97], "volupta": [16, 97], "aspernatur": [16, 97], "odit": [16, 97], "fugit": [16, 97], "consequuntur": [16, 97], "magni": [16, 97], "eo": [16, 97], "ration": [16, 97], "sequi": [16, 97], "nesciunt": [16, 97], "nequ": [16, 97], "porro": [16, 97], "quisquam": [16, 97], "dolorem": [16, 97], "adipisci": [16, 97], "numquam": [16, 97], "eiu": [16, 97], "modi": [16, 97], "tempora": [16, 97], "incidunt": [16, 97], "magnam": [16, 97], "aliquam": [16, 97], "quaerat": [16, 97], "minima": [16, 97], "nostrum": [16, 97], "exercitationem": [16, 97], "ullam": [16, 97], "corpori": [16, 97], "suscipit": [16, 97], "laboriosam": [16, 97], "aliquid": [16, 97], "commodi": [16, 97], "consequatur": [16, 97], "autem": [16, 97], "vel": [16, 97], "eum": [16, 97], "iur": [16, 97], "quam": [16, 97], "nihil": [16, 97], "molestia": [16, 97], "illum": [16, 97], "quo": [16, 97], "sr3_report": [16, 97], "sr3_subscrib": [16, 97], "sr3_watch": [16, 97], "backlog": [17, 45, 54, 79], "retransmit": 17, "session": [17, 20, 44, 45, 56, 62, 64, 70, 79, 87, 98, 106, 120, 126, 134], "disconnect": [17, 45, 54], "async": [17, 19, 67, 68, 99, 132], "weight": [17, 68], "on_messag": [17, 19, 20, 38, 45, 47, 49, 50, 53, 57, 79, 81, 83, 84, 86, 98, 99, 106, 116], "handler": [17, 57, 98], "poorli": [17, 31], "on_part": [18, 19, 29, 38, 47, 49, 54, 57, 81, 83, 87, 94, 99, 110, 116], "part_file_assembl": [18, 94], "accept_unmatch": [18, 38, 45, 47, 49, 50, 79, 81, 83, 84, 94, 116], "acccept": [18, 94], "sr_file": [18, 19, 94, 99], "target_fil": [18, 94], "file_insert_part": [18, 94], "portion": [18, 20, 28, 42, 53, 54, 55, 64, 106], "okai": 18, "on_fil": [18, 19, 21, 29, 38, 39, 47, 49, 50, 81, 83, 84, 87, 94, 99, 103, 110, 116], "config_fil": [18, 94], "cfg": [18, 19, 30, 55, 56, 69, 74, 77, 88, 94, 99, 103, 111, 133, 138], "subcrib": 18, "inplac": [18, 19, 32, 33, 64, 67, 94, 99, 113, 114, 128, 131], "typr": 18, "pb": [18, 20, 63, 64, 94, 106, 127, 128], "pbu": [18, 20, 63, 64, 94, 106, 127, 128], "test_fil": [18, 94], "12m": [18, 94], "v3": [19, 20, 21, 26, 27, 34, 47, 50, 56, 57, 62, 63, 64, 77, 84, 85, 96, 99, 103, 105, 106, 108, 115, 126, 127, 128], "familiar": [19, 20, 21, 37, 39, 41, 45, 55, 59], "stablizi": 19, "tracker": [19, 54, 87, 99], "histor": [19, 42], "upward": 19, "readabl": [19, 20, 25, 27, 45, 53, 56, 77], "eleg": [19, 21, 29, 35, 50], "rotat": [19, 20, 45, 54, 62, 79, 87, 99], "cruft": 19, "systemd": [19, 20, 45, 70, 79, 106, 134], "sysv": [19, 45, 79, 99], "camelcas": [19, 50, 55, 84, 88, 99], "sink": [19, 20], "dynam": [19, 31, 44, 53, 62, 99], "407": [19, 99], "compatibilii": 19, "v1": [19, 27, 99, 108], "experiment": [19, 20, 27, 31], "regularli": [19, 22, 41, 45], "388": [19, 99], "4000": [19, 99], "pybuild": [19, 99], "debian": [19, 28, 45, 46, 50, 51, 57, 68, 78, 79, 80, 84, 99, 109, 132], "xarg": [19, 45, 79, 99], "wc": [19, 28, 70, 99, 109, 134], "133": [19, 99, 130], "544": [19, 99], "47": [19, 20, 45, 46, 54, 78, 79, 87, 99, 106, 129, 131], "sr_tailf": [19, 99], "365": [19, 99], "164": [19, 20, 47, 83, 99, 106], "sr_xattr": [19, 99], "1136": [19, 99], "sr_messag": [19, 99], "51": [19, 20, 45, 54, 66, 68, 69, 79, 87, 99, 106, 132, 133], "sr_checksum": [19, 99], "129": [19, 99, 131], "pyad": [19, 99], "306": [19, 99], "2204": [19, 99], "403": [19, 49, 50, 81, 84, 99], "1636": [19, 99], "265": [19, 99], "sr1": [19, 99], "sr_log2sav": [19, 99], "286": [19, 99], "sr_rabbit": [19, 46, 78, 99], "567": [19, 99], "107": [19, 20, 53, 86, 99, 106], "74": [19, 20, 38, 45, 64, 79, 99, 106, 116, 128], "126": [19, 20, 62, 67, 99, 106, 126], "505": [19, 99], "956": [19, 99], "355": [19, 20, 47, 83, 99, 106, 130], "368": [19, 45, 46, 78, 79, 99], "sr_cfg2": [19, 99], "1119": [19, 99], "729": [19, 45, 79, 99], "308": [19, 53, 86, 99], "988": [19, 99], "608": [19, 99], "sr_amqp": [19, 55, 88, 99], "3062": [19, 99], "33": [19, 20, 28, 54, 57, 87, 99, 106, 109], "checksum_": [19, 99], "checksum_d": [19, 99], "26": [19, 20, 27, 45, 49, 54, 71, 79, 81, 85, 87, 99, 106, 108, 130, 136], "checksum_0": [19, 99], "checksum_n": [19, 99], "29": [19, 20, 45, 55, 69, 71, 79, 88, 99, 106, 136], "checksum_a": [19, 99], "19223": [19, 99], "2157": [19, 99], "342": [19, 99], "384": [19, 20, 38, 99, 106, 116, 129], "diskqueu": [19, 57, 58, 65, 66, 67, 99, 130, 131], "183": [19, 99], "filemetadata": [19, 58, 77, 99], "768": [19, 99], "flowcb": [19, 20, 21, 24, 38, 39, 47, 50, 56, 58, 62, 65, 67, 68, 70, 74, 83, 84, 85, 99, 103, 106, 116, 118, 126, 129, 131, 132, 134, 138], "53": [19, 28, 45, 49, 53, 54, 55, 68, 72, 79, 81, 86, 87, 88, 99, 109, 130, 135], "130": [19, 99, 131], "250": [19, 38, 99, 116, 132], "145": [19, 49, 81, 99], "nodup": [19, 20, 21, 24, 38, 48, 50, 54, 58, 62, 66, 70, 82, 87, 99, 103, 106, 116, 118, 126, 130, 134], "345": [19, 20, 32, 33, 64, 99, 106, 113, 114, 128], "454": [19, 99], "117": [19, 20, 62, 99, 106, 126, 132], "461": [19, 99], "v2wrapper": [19, 20, 38, 50, 54, 55, 56, 58, 66, 77, 84, 87, 88, 99, 106, 116, 130], "1617": [19, 99], "80": [19, 28, 45, 53, 79, 86, 99, 109, 130, 131], "793": [19, 99], "226": [19, 38, 54, 87, 99, 116], "93": [19, 20, 99, 106], "md5name": [19, 62, 126, 128], "md5": [19, 20, 38, 58, 62, 63, 64, 67, 68, 99, 106, 116, 126, 127, 128, 131, 132], "random": [19, 20, 28, 31, 38, 58, 63, 64, 99, 106, 127, 128, 129], "sha512": [19, 20, 38, 58, 62, 63, 64, 69, 99, 106, 116, 126, 127, 128, 129, 133], "moth": [19, 20, 45, 48, 50, 55, 57, 58, 65, 66, 67, 69, 70, 74, 79, 82, 84, 88, 99, 106, 130, 131, 133, 134, 138], "amq1": [19, 55, 58, 77, 88, 99], "313": [19, 99], "548": [19, 99, 132], "pika": [19, 58, 77, 99], "135": [19, 41, 46, 78, 99], "349": [19, 99, 130], "rabbitmq_admin": [19, 20, 45, 58, 79, 99, 106], "sr_flow": [19, 99], "2066": [19, 99], "383": [19, 99], "514": [19, 99], "361": [19, 20, 99, 106], "437": [19, 99], "607": [19, 99], "15519": [19, 99], "rudimentari": [19, 31], "harder": [19, 31], "unfriendli": 19, "heck": 19, "caller": [19, 23, 56, 63], "catch": [19, 28, 39, 42], "bizarr": [19, 88, 99], "logger": [19, 20, 38, 39, 48, 55, 56, 57, 66, 77, 82, 88, 99, 106, 116, 130], "wha": 19, "inabl": [19, 27], "ackowledg": 19, "versu": [19, 34], "namespac": [19, 56], "importlib": [19, 38, 57, 77, 99, 116], "regist": [19, 32, 33, 38, 39, 47, 49, 55, 64, 128], "decor": [19, 38, 70, 134], "plural": [19, 38], "singular": [19, 38], "after_accept": [19, 20, 21, 38, 39, 48, 50, 54, 56, 57, 65, 66, 67, 77, 82, 84, 87, 99, 103, 106, 116, 129, 130, 131], "worklist": [19, 20, 21, 39, 50, 55, 56, 57, 74, 77, 84, 85, 88, 99, 103, 106, 130], "after_work": [19, 20, 21, 38, 39, 48, 50, 54, 57, 65, 66, 67, 77, 82, 84, 87, 99, 103, 106, 116, 129, 130, 131], "pro": 19, "soon": [19, 20, 28, 29, 36, 55, 68, 71], "sooner": [19, 23], "fed": [19, 22, 31, 38, 54, 56, 112], "clearli": [19, 31], "argpars": [19, 50, 56, 77, 84, 99], "settl": [19, 28], "abbrev": 19, "obvious": [19, 31, 37], "risk": [19, 20, 27, 29, 31, 54, 62], "throught": 19, "transcript": [19, 99], "mgmt": 19, "proc": [19, 20, 46, 78, 106], "sr_proto": 19, "sr_transport": 19, "user_cache_dir": [19, 38, 55, 99, 116], "cfg_run_dir": [19, 20, 38, 54, 55, 87, 99, 106, 116, 129], "tension": [19, 99], "manipul": [19, 20, 38, 55, 59, 62, 88, 99, 106, 116, 123, 126], "idiom": [19, 99], "reconcil": [19, 50], "resolv": [19, 28, 31, 45, 53, 56, 62, 71, 77, 79, 126], "idiomat": [19, 27], "hasattr": [19, 20, 38, 66, 82, 99, 106, 116, 130], "odd": [19, 27], "getlogg": [19, 20, 38, 39, 48, 55, 66, 82, 88, 99, 106, 116, 130], "__name__": [19, 20, 38, 39, 48, 55, 66, 82, 88, 99, 106, 116, 130], "parse_fil": [19, 20, 56, 77, 99, 106], "tri": [19, 39, 42, 48, 66, 87], "broke": 19, "tmpc": [19, 99], "hmpc": [19, 99], "sr_insect": [19, 57, 62, 96, 99, 126], "static": [19, 21, 31, 32, 33, 44, 53, 56, 77, 99], "transcrib": 19, "recoveri": [19, 21, 28, 29, 68, 132], "flakei": [19, 99], "stub": [19, 20, 56, 62, 106, 126], "inherit": [19, 20, 50, 62], "massiv": [19, 99], "holder": [19, 32, 57], "retir": [19, 92, 127], "prototyp": [19, 27, 28, 29, 31, 99, 108, 109, 110, 112], "visibli": 19, "skeleton": [19, 20], "framework": [19, 99], "213": [19, 99, 131], "wrote": [19, 23, 28, 31, 37, 39, 45, 79], "cast": [19, 37, 55], "v2plugin": [19, 20, 38, 54, 87, 106, 116, 129], "eat": [19, 27], "straightforward": [19, 23, 28, 31, 35, 38, 44, 53, 70], "new_": [19, 38, 56, 77, 116], "reformat": [19, 20, 57, 91, 99, 106], "codebas": 19, "hook": [19, 23, 53, 63, 86, 99, 117], "message_rate_min": [19, 38, 99, 116], "message_rate_max": [19, 38, 99, 116], "post_rate_limit": [19, 50, 55, 84, 88, 99], "bother": 19, "claim": [19, 28, 44], "628": [19, 99], "set_newmessagefield": [19, 99], "new_dir": [19, 38, 39, 48, 55, 56, 57, 66, 69, 77, 82, 88, 99, 116, 130, 133], "tackl": 19, "entry_point": [19, 48, 50, 55, 56, 57, 62, 73, 77, 82, 84, 88, 99], "compatibl": 19, "accel_": [19, 99], "defici": 19, "do_get": [19, 47, 49, 81, 83, 99], "possibi": 19, "idiosyncrat": 19, "accel_scp": [19, 50, 84, 99], "diagnos": [19, 23, 25], "spot": 19, "invoc": [19, 20, 23, 28, 50, 53, 55, 56, 57, 62, 63, 67, 84, 88, 99, 106, 117, 126, 127, 131], "convolut": 19, "getacceler": [19, 99], "accel_threshold": [19, 38, 54, 87, 88, 99, 116, 129], "migrat": [19, 28, 29, 31, 43, 44, 45, 50, 84, 109, 110], "xattr": [19, 38, 69, 70, 99, 116, 134], "friend": 19, "nativ": [19, 28, 35, 50, 51, 99, 107, 109], "extens": [19, 27, 28, 29, 31, 35, 37, 39, 41, 47, 49, 50, 57, 64, 83, 84, 88, 99, 107, 108, 123, 128], "topicprefix": [19, 20, 38, 45, 50, 54, 55, 56, 64, 67, 68, 70, 77, 79, 84, 87, 88, 99, 106, 116, 128, 129, 131, 132], "incoher": 19, "putacc": [19, 99], "putac": [19, 99], "getac": [19, 99], "am": [19, 26, 27, 32, 33, 42, 44, 45, 66, 79, 105, 108, 113, 114, 130], "v03onli": [19, 99], "leftov": 19, "check_undeclared_opt": [19, 67, 99, 131], "exchangesplit": [19, 50, 67, 71, 84, 99, 131, 136], "post_total_maxlag": [19, 99], "exchangesuffix": [19, 20, 99, 106], "report_exchang": [19, 56, 67, 77, 99, 131], "set_password": [19, 99], "declare_exchang": [19, 50, 84, 99], "sanity_log_dead": [19, 99], "report_daemon": [19, 38, 99, 116], "realpathfilt": [19, 67, 99, 131], "reconnect": [19, 56, 67, 72, 77, 99, 131, 135], "cache_stat": [19, 99], "declare_queu": [19, 50, 84, 99], "bind_queu": [19, 50, 84, 99], "dry_run": [19, 57, 68, 77, 99, 132], "sourcefromexchang": [19, 20, 41, 45, 50, 84, 99, 106], "retry_mod": [19, 47, 49, 81, 83, 99], "poll_without_vip": [19, 55, 88, 99], "369": [19, 99], "asyncapi": [19, 99], "401": [19, 99], "396": [19, 99], "on_part_assembli": [19, 99], "poll0": [19, 99], "alarm_set": [19, 56, 77, 99], "setitim": [19, 99], "397": [19, 99], "outlet": [19, 20, 21, 56, 77, 99, 103, 106], "398": [19, 99, 129], "cmoi": [19, 28, 99, 109], "399": [19, 99], "bare": 19, "file_index": [19, 99], "367": [19, 99], "publish_retri": [19, 99], "392": [19, 99], "hostnam": [19, 20, 22, 38, 39, 41, 45, 47, 55, 57, 62, 64, 83, 88, 104, 106, 116, 126, 129], "348": [19, 99], "statehost": [19, 20, 38, 50, 54, 56, 77, 84, 87, 99, 106, 116, 129], "probabl": [19, 38, 42, 45, 54, 56, 57, 65, 70, 79, 86, 87, 88, 89, 90, 92, 93, 99, 102, 104, 105, 112, 115, 116, 120, 126, 129, 134], "dive": 19, "scopabl": [19, 99], "updatefieldsaccept": [19, 56, 99], "verbatim": [19, 31], "hairi": 19, "ugli": 19, "whichev": [19, 21, 22, 29], "cleaner": [19, 69, 133], "mention": [19, 20, 29, 42], "coder": [19, 20], "blocker": [19, 99], "batch": [19, 20, 38, 42, 45, 46, 54, 55, 56, 57, 65, 66, 68, 74, 77, 78, 79, 87, 88, 106, 116, 129, 130, 132, 138], "dump": [19, 28, 42, 49, 56, 65, 67, 77, 109], "wore": 19, "prefetch": [19, 20, 21, 38, 39, 41, 47, 49, 54, 68, 81, 83, 87, 99, 103, 106, 116, 129, 132], "interim": [19, 50, 56, 72, 77], "pretend": [19, 39, 45, 57], "humung": 19, "jsonfil": [19, 99], "_deleteonpost": [19, 38, 48, 55, 56, 66, 67, 68, 69, 77, 82, 88, 99, 116, 130, 131, 132, 133], "skip": [19, 20, 31, 39, 45, 48, 62, 64, 66, 82, 130], "proton": [19, 56, 77, 99], "strai": [19, 20, 54, 65, 70, 87, 106, 129, 134], "gave": [19, 42], "retrench": 19, "Will": [19, 20, 41, 62], "do_": [19, 22, 55, 88, 99, 104], "confin": [19, 21, 31], "demarc": [19, 22, 37], "sarra3": [19, 99], "unchang": [19, 20, 34, 46, 53, 55, 57, 62, 64], "tweak": [19, 45], "python2": [19, 37, 53, 86, 99, 101], "slowli": 19, "facilit": [19, 29, 99, 104, 105, 106, 110], "verif": [19, 45, 53, 78], "appnam": [19, 99], "sr3_": [19, 99], "badli": 19, "parser": [19, 34, 38, 55, 56, 57, 77, 88, 116], "letter": [19, 20, 32, 54, 55, 56, 57, 63, 77], "hoho": [19, 48, 50, 53, 55, 56, 57, 62, 84, 86, 88, 99, 126], "onfig": [19, 50], "gile": 19, "loglevel": [19, 20, 48, 50, 54, 55, 56, 66, 68, 69, 77, 82, 84, 87, 88, 99, 106, 129, 130, 132, 133], "notset": [19, 99], "use_amqplib": [19, 50, 84, 99], "use_pika": [19, 47, 49, 50, 81, 83, 84, 99], "neither": [19, 31, 32, 33, 38, 44, 64], "02fad37b89c2f51420e62f2f883a3828d2056de1": [19, 99], "on_watch": [19, 50, 84, 99], "afaict": 19, "rewritten": 19, "do_download": [19, 29, 39, 47, 49, 56, 57, 81, 83, 85, 99, 110], "do_send": [19, 20, 29, 50, 56, 84, 85, 99, 106, 110], "do_put": [19, 99], "unclear": [19, 31], "anymor": [19, 42, 55], "stack": [19, 22, 26, 27, 29, 30, 46, 49, 54, 57, 68, 89, 105, 111], "src_file": [19, 99], "dst_file": [19, 99], "src_offset": [19, 99], "dst_offset": [19, 99], "fit": [19, 30], "honour": [19, 27, 38, 50, 57], "358": [19, 99], "notic": [19, 20, 22, 23, 28, 30, 38, 39, 41, 45, 47, 49, 50, 53, 54, 55, 56, 57, 62, 63, 64, 71, 72, 79, 81, 83, 84, 86, 88, 106, 119, 126, 135, 136], "surpris": [19, 62], "symlink": [19, 62], "310": [19, 73, 99], "read_writeloc": [19, 99], "util": [19, 56, 77, 79, 81, 86, 89, 90, 92, 93, 99, 103, 109, 112, 115, 116, 118, 120, 121, 126, 128], "writeloc": [19, 99], "mismatch": [19, 24, 99], "fcas31_kwbc_031412___39224": [19, 99], "slink": [19, 99], "114": [19, 44, 53, 54, 86, 87, 99, 120], "suppress": [19, 20, 21, 38, 43, 45, 49, 50, 55, 56, 57, 59, 62, 63, 64, 77, 78, 79, 81, 83, 84, 88, 92, 99, 103, 106, 109, 116, 117, 119, 126, 127, 128], "deriv": [19, 20, 21, 24, 29, 38, 39, 50, 57, 62, 66, 70], "vanilla": [19, 57], "magic": [19, 20, 38, 45, 50, 55, 56, 70, 73, 79, 116, 134], "startup": [19, 20, 23, 28, 31, 38, 42, 47, 49, 50, 53, 56, 57, 59, 62, 73, 74, 77, 81, 83, 112], "pluggabl": [19, 29, 37], "subclass": [19, 20, 21, 24, 38, 47, 50, 56, 57, 62, 66, 77, 88], "hierarch": [19, 21, 31, 56, 64, 77], "inlet": 19, "websit": [20, 30, 49, 57, 62, 67, 69, 81, 131, 133], "classic": 20, "sr3_cpump": [20, 54, 58, 59, 60, 61, 62, 63, 64, 87, 106, 122, 123, 124, 125, 126, 127, 128], "stderr": [20, 28, 59, 106, 109, 123], "gotten": [20, 59], "stuck": [20, 38, 45, 59], "mark": [20, 34, 38, 47, 56, 57, 59, 62, 64, 68, 128], "inelig": [20, 59], "elig": [20, 28, 59], "refin": [20, 47, 57], "fleet": [20, 59], "temporarili": [20, 37], "v2_config": [20, 106], "v3_config": [20, 106], "043": [20, 106, 129], "048": [20, 106, 131], "__putsetup": [20, 45, 69, 79, 106], "049": [20, 106], "053": [20, 106], "xcpublic": [20, 45, 79, 106], "__getsetup": [20, 45, 54, 65, 66, 67, 68, 79, 87, 106, 130, 131, 132], "23011811": [20, 106], "49631644": [20, 106], "pfx": [20, 106], "111": [20, 65, 71, 106, 136], "50074940": [20, 106], "98161482": [20, 106], "211": [20, 45, 79, 106], "ender": [20, 38, 45, 79, 106, 116], "q_ender": [20, 45, 79, 106], "xs_ender": [20, 45, 79, 106], "_ender": [20, 45, 79, 106], "thought": [20, 31, 37, 57], "4238": [20, 106], "cmdline": [20, 106], "puls": [20, 31, 54, 87, 106], "instance_pid": [20, 106], "4251": [20, 106], "instances_expect": [20, 106], "has_stat": [20, 106], "missing_inst": [20, 106], "conjunct": [20, 24], "wmo_mesh_post": [20, 54, 65, 87, 106, 129], "amqp_f30": [20, 106], "49308": [20, 106], "sr3_sender": [20, 106], "58710892": [20, 106], "12372870": [20, 106], "rabbitmqtt_f22": [20, 106], "rabbitmqtt_f31": [20, 106], "nexrad": [20, 47, 54, 55, 58, 65, 66, 83, 87, 88, 106, 129, 130], "pollingest": [20, 47, 54, 83, 87, 106], "pollnoaa": [20, 49, 54, 81, 87, 106], "pollsoapshc": [20, 49, 54, 81, 87, 106], "pollusg": [20, 49, 54, 81, 87, 106], "wmo_mesh": [20, 54, 65, 87, 106, 129], "ec2collab": [20, 54, 65, 87, 106, 129], "pitcher_push": [20, 54, 65, 87, 106, 129], "wmo_sketch_2mqtt": [20, 54, 87, 106], "wmo_sketch_2v3": [20, 54, 87, 106], "wmo_mesh_cmc": [20, 54, 87, 106], "wmo_mesh_p": [20, 54, 87, 106], "dd_2mqtt": [20, 54, 65, 87, 106, 129], "dd_all": [20, 54, 65, 87, 106, 129], "dd_ami": [20, 54, 65, 87, 106, 129], "dd_aqhi": [20, 54, 65, 87, 106, 129], "dd_cacn_bulletin": [20, 54, 65, 87, 106, 129], "dd_citypag": [20, 54, 65, 87, 106, 129], "dd_cmml": [20, 54, 65, 87, 106, 129], "dd_gdp": [20, 54, 65, 87, 106, 129], "dd_ping": [20, 54, 87, 106], "dd_radar": [20, 54, 65, 87, 106, 129], "dd_rdp": [20, 54, 65, 87, 106, 129], "dd_swob": [20, 38, 54, 65, 87, 106, 116, 129], "ddc_cap": [20, 54, 65, 87, 106, 129], "ddc_normal": [20, 54, 65, 87, 106, 129], "downloademail": [20, 47, 54, 65, 83, 87, 106, 129], "ec_ninjo": [20, 54, 65, 87, 106, 129], "hpfx_ami": [20, 54, 65, 66, 87, 106, 129, 130], "local_sub": [20, 54, 65, 87, 106, 129], "pitcher_pul": [20, 54, 65, 87, 106, 129], "sci2ec": [20, 54, 65, 87, 106, 129], "subnoaa": [20, 49, 54, 65, 81, 87, 106, 129], "subsoapshc": [20, 49, 54, 65, 81, 87, 106, 129], "subusg": [20, 49, 54, 65, 81, 87, 106, 129], "pitcher_cli": [20, 54, 65, 87, 106, 129], "pitcher_serv": [20, 54, 65, 87, 106, 129], "57": [20, 28, 45, 47, 49, 66, 79, 81, 83, 106, 109, 132], "018": [20, 106], "507": [20, 67, 106], "1084652": [20, 106], "msg_log": [20, 50, 55, 84, 88, 106], "logev": [20, 50, 54, 57, 67, 84, 87, 106, 129, 131], "508": [20, 106], "msg_rawlog": [20, 45, 50, 79, 84, 106], "_config__admin": [20, 38, 54, 87, 106, 116, 129], "_config__brok": [20, 38, 54, 87, 106, 116, 129], "_config__post_brok": [20, 38, 54, 87, 106, 116, 129], "accelthreshold": [20, 50, 55, 84, 106, 126], "acceptsizewrong": [20, 54, 87, 106, 129], "acceptunmatch": [20, 21, 39, 50, 54, 68, 84, 87, 103, 106, 129, 132], "auto_delet": [20, 38, 45, 54, 68, 79, 87, 106, 116, 129, 132], "basedir": [20, 38, 39, 48, 50, 54, 56, 57, 63, 66, 77, 82, 84, 87, 106, 116, 127, 129, 130], "baseurl_relpath": [20, 54, 87, 106, 129], "bufsiz": [20, 38, 54, 56, 77, 87, 106, 116, 129], "1048576": [20, 38, 54, 87, 106, 116, 129], "byteratemax": [20, 56, 77, 106], "currentdir": [20, 38, 54, 55, 87, 88, 106, 116, 129], "declared_exchang": [20, 38, 54, 87, 106, 116, 129], "declared_us": [20, 38, 106, 116, 129], "eggmeist": [20, 38, 106, 116, 129], "documentroot": [20, 38, 50, 84, 106, 116, 129], "env_declar": [20, 106, 129], "exchangedeclar": [20, 50, 56, 68, 84, 106, 129, 132], "expir": [20, 21, 38, 45, 47, 49, 54, 56, 65, 68, 77, 79, 81, 83, 87, 89, 103, 106, 116, 129, 132, 135], "1800": [20, 69, 106, 133], "netloc": [20, 106], "param": [20, 106], "fileev": [20, 50, 84, 106, 129], "rmdir": [20, 50, 62, 84, 106, 126], "file_total_interv": [20, 106], "fixed_head": [20, 38, 106, 116, 129], "flatten": [20, 38, 47, 49, 56, 67, 77, 81, 83, 106, 116, 129, 131], "hostdir": [20, 38, 56, 77, 106, 116, 129], "inflight": [20, 23, 38, 43, 47, 48, 49, 55, 57, 81, 83, 88, 106, 116, 117, 119, 129], "inlinebytemax": [20, 38, 56, 68, 77, 106, 116, 132], "4096": [20, 38, 45, 56, 68, 77, 79, 106, 116, 129, 132], "inlineencod": [20, 38, 56, 68, 77, 106, 116, 132], "inlineonli": [20, 106], "identity_arbitrary_valu": [20, 106, 129], "identity_method": [20, 57, 106, 129], "on_housekeep": [20, 38, 48, 54, 56, 57, 65, 66, 67, 77, 82, 87, 106, 116, 129, 130, 131], "logformat": [20, 38, 48, 50, 66, 68, 84, 106, 116, 129, 130, 132], "asctim": [20, 38, 68, 106, 116, 132], "levelnam": [20, 38, 68, 106, 116, 132], "funcnam": [20, 38, 68, 106, 116, 129, 132], "logreject": [20, 50, 54, 84, 87, 106], "logrotatecount": [20, 50, 84, 106], "logrotateinterv": [20, 50, 84, 106], "logstdout": [20, 51, 80, 106, 129], "log_flowcb_need": [20, 106, 129], "messageagemax": [20, 106, 129], "messagecountmax": [20, 55, 56, 65, 66, 74, 77, 88, 106, 129, 130, 138], "messagedebugdump": [20, 54, 56, 68, 77, 87, 106, 129, 132], "messageratemax": [20, 50, 55, 84, 88, 106, 129], "messageratemin": [20, 106, 129], "message_strategi": [20, 38, 56, 68, 106, 116, 129, 132], "failure_dur": [20, 38, 56, 68, 77, 106, 116, 129, 132], "5m": [20, 38, 54, 56, 68, 77, 87, 106, 116, 129, 132], "reset": [20, 38, 47, 49, 56, 64, 68, 77, 81, 83, 106, 116, 129, 132], "stubborn": [20, 38, 56, 68, 77, 106, 116, 132], "msg_total_interv": [20, 106], "nodupe_fileagemax": [20, 24, 50, 84, 106, 118, 129], "nodupe_ttl": [20, 21, 24, 50, 55, 56, 77, 84, 88, 103, 106, 118, 129], "permcopi": [20, 50, 56, 77, 84, 106, 129], "permdefault": [20, 50, 56, 57, 77, 84, 106, 129], "permdirdefault": [20, 50, 56, 77, 84, 106, 129], "509": [20, 38, 106, 116, 129, 133], "permlog": [20, 50, 54, 55, 84, 87, 88, 106, 129], "plugins_earli": [20, 106, 129], "plugins_l": [20, 106, 129], "post_documentroot": [20, 38, 50, 84, 106, 116, 129], "post_topicprefix": [20, 45, 50, 55, 64, 79, 84, 88, 106, 128, 129], "pstrip": [20, 38, 56, 67, 106, 116, 129, 131], "queuebind": [20, 50, 56, 68, 84, 106, 129, 132], "queuedeclar": [20, 50, 56, 68, 84, 106, 129, 132], "queuenam": [20, 21, 50, 56, 67, 74, 77, 84, 103, 106, 129, 131, 132], "q_tsource_subscrib": [20, 106], "76359618": [20, 106], "62916076": [20, 106], "queue_filenam": [20, 38, 106, 116, 129], "qname": [20, 38, 62, 106, 116, 126, 129], "randid": [20, 38, 62, 106, 116, 126, 129], "cedf": [20, 106], "realpathpost": [20, 38, 47, 49, 81, 83, 106, 116, 129], "resolved_qnam": [20, 38, 106, 116], "retry_ttl": [20, 47, 49, 56, 81, 83, 106, 129], "timecopi": [20, 25, 50, 56, 77, 84, 106, 129], "timeout": [20, 38, 41, 48, 56, 77, 82, 106, 116, 129], "timezon": [20, 21, 56, 57, 64, 77, 106, 129], "utc": [20, 21, 55, 56, 57, 62, 64, 77, 88, 103, 106, 126, 128, 129], "tls_rigour": [20, 106, 129], "undeclar": [20, 38, 106, 116, 129], "v2plugin_opt": [20, 38, 106, 116, 129], "msg_total_sav": [20, 50, 84, 106], "file_total_sav": [20, 38, 106, 116], "sftp_f62": [20, 106], "762": [20, 106], "1093345": [20, 106], "766": [20, 106, 129], "1093467": [20, 106], "918": [20, 106], "1093655": [20, 106], "lagmax": [20, 65, 106], "lagavg": [20, 65, 106], "rej": [20, 65, 106], "pubsub": [20, 65, 106], "rxdata": [20, 65, 106], "txdata": [20, 65, 106], "84": [20, 106], "kib": [20, 65, 66, 67, 106, 130, 131], "68": [20, 28, 106, 109], "246": [20, 106], "143": [20, 47, 57, 83, 106], "83": [20, 28, 67, 106, 109, 132], "91": [20, 54, 87, 106, 130], "69": [20, 23, 28, 63, 106, 109, 117, 127, 131], "64": [20, 28, 65, 69, 106, 109, 129, 131, 132, 133], "67": [20, 44, 69, 106, 120, 133], "89": [20, 31, 66, 67, 106, 112, 132], "44": [20, 53, 54, 66, 70, 86, 87, 106, 132, 134], "215": [20, 106], "49": [20, 45, 53, 57, 67, 68, 69, 70, 79, 86, 106, 132, 133, 134], "60": [20, 31, 38, 46, 47, 53, 55, 57, 65, 68, 78, 83, 86, 88, 106, 112, 116], "76": [20, 106], "559": [20, 68, 106, 131], "41": [20, 54, 69, 87, 106, 129, 133], "558": [20, 28, 106, 109, 131], "88": [20, 106], "875": [20, 106], "uss": [20, 65, 106], "gib": [20, 106], "vm": [20, 44, 65, 106, 120], "kim": [20, 106], "subbyt": [20, 106], "malform": [20, 22, 106], "pubbyt": [20, 106], "pubmsg": [20, 106], "pubmal": [20, 106], "rxfile": [20, 106], "txfile": [20, 106], "mib": [20, 45, 54, 65, 66, 67, 79, 87, 106, 130, 131], "82": [20, 106], "280": [20, 106], "230": [20, 69, 106, 129, 133], "154": [20, 106, 130], "63": [20, 65, 69, 106, 132, 133], "653": [20, 106, 131], "108": [20, 53, 86, 106], "165": [20, 106, 129], "649": [20, 45, 79, 106], "124": [20, 45, 68, 79, 106], "61": [20, 65, 106], "233": [20, 106, 131], "982": [20, 45, 79, 106], "163": [20, 106], "87": [20, 69, 106, 133], "578": [20, 106], "71": [20, 54, 64, 68, 87, 106, 128], "109": [20, 53, 86, 106], "557": [20, 45, 79, 106], "486": [20, 49, 81, 106], "665": [20, 106], "162": [20, 106], "652": [20, 106, 131], "664": [20, 67, 69, 106, 133], "73": [20, 28, 64, 66, 106, 109, 128], "568": [20, 106, 132], "452": [20, 47, 83, 106], "62": [20, 65, 106, 132], "647": [20, 45, 79, 106], "271": [20, 106], "46": [20, 54, 68, 87, 106, 131], "categori": 20, "health": 20, "experienc": [20, 26], "configuraion": 20, "disa": [20, 106], "wvip": [20, 106], "fore": [20, 106], "percentrag": 20, "ag": [20, 23, 25, 38, 55, 58, 62, 66, 88, 117, 118, 130], "percent": 20, "tune": [20, 23, 28, 31, 38, 45, 62, 79], "resid": [20, 45, 46, 62, 106], "alloc": [20, 45], "bottom": [20, 49, 54, 55, 62, 70], "pend": [20, 68], "brokerus": [20, 45, 62, 79, 106], "programnam": [20, 62, 106], "confignam": [20, 62, 106], "held": 20, "superset": [20, 62], "directory1": [20, 62, 106], "subdirectory3": [20, 62, 106], "subdirectory5": [20, 62, 106], "wild": [20, 62, 126], "card": [20, 62, 126], "asterisk": [20, 31, 54, 62], "directory2": [20, 62, 106], "directory4": [20, 62, 106], "regular_express": [20, 54, 106], "boolean": [20, 38, 48, 50, 54, 56, 57, 66, 77, 116], "orderli": [20, 62], "gif": [20, 31, 32, 33, 39, 45, 46, 57, 62, 64, 66, 78, 79, 106, 112, 113, 114, 126, 128], "statement": [20, 38, 53, 54, 55, 62, 88], "relpath": [20, 23, 32, 33, 34, 38, 39, 48, 55, 56, 57, 62, 63, 66, 67, 68, 69, 77, 82, 88, 106, 113, 114, 115, 116, 117, 118, 126, 127, 130, 131, 132, 133], "prepend": [20, 21, 45, 54, 59, 62, 79], "baseurl": [20, 32, 34, 38, 39, 48, 50, 55, 56, 57, 62, 64, 66, 67, 68, 69, 77, 82, 84, 88, 106, 113, 115, 116, 126, 128, 130, 131, 132, 133], "awar": [20, 28], "amqpusernam": [20, 106], "owner": [20, 21, 44], "underscor": [20, 50, 55, 62], "xr_": [20, 21, 45, 79, 103, 106], "_public": [20, 106], "exhang": [20, 21, 106], "xr_alic": [20, 22, 104, 106], "xs_alice_mydata": [20, 106], "pollurl": [20, 41, 47, 50, 55, 56, 57, 67, 77, 83, 84, 106, 131], "cod": [20, 57, 62, 63, 64, 106, 126, 127, 128], "0o400": [20, 106], "30d": [20, 62, 106, 126], "naef": [20, 45, 46, 78, 79, 106], "grib2": [20, 45, 46, 57, 59, 62, 68, 78, 79, 106, 123, 126, 132], "yyyi": [20, 57, 62, 106, 126], "jjj": [20, 62, 106, 126], "julian": [20, 106, 126], "yyyymmdd": [20, 21, 24, 31, 38, 39, 41, 48, 54, 56, 62, 77, 82, 106, 112, 116, 118, 126], "1d": [20, 45, 54, 79, 106], "mylocaldirectori": [20, 62, 106], "myradar": [20, 62, 106], "mygrib": [20, 62, 106], "reg": [20, 62, 106, 126], "grib": [20, 31, 45, 46, 57, 62, 68, 78, 79, 106, 112, 126, 132], "mydaili": [20, 62, 106, 126], "octal": [20, 62, 64, 72, 106, 126, 128, 135], "040": [20, 62, 106, 126], "week": [20, 29, 38, 48, 56, 62, 66, 77, 116, 130], "sftpattribut": [20, 38, 50, 55, 56, 57, 66, 77, 88, 106, 116, 130], "poller": [20, 88, 92, 106, 123], "on_lin": [20, 38, 47, 48, 49, 57, 81, 82, 83, 85, 106, 116], "builtin": [20, 38, 45, 53, 54, 55, 86, 116], "on_html_pag": [20, 47, 48, 49, 50, 57, 81, 82, 83, 84, 106], "record": [20, 24, 30, 45, 49, 55, 56, 57, 66, 69, 73, 74, 77], "variat": [20, 35, 45, 64, 79, 106, 107], "_suppress_duplicates_": [20, 106], "flowmain": [20, 21, 48, 56, 77, 82, 103, 106], "repost": 20, "myserv": [20, 106], "mypassword": [20, 106], "fill": [20, 38, 45, 53, 55, 56, 57, 70, 73, 77], "contrast": [20, 21, 28, 31, 44, 55, 62, 63, 88, 106, 120, 126], "exit": [20, 55, 62, 63, 65, 70, 72, 134], "detectfilereadi": [20, 106], "grammar": [20, 38, 60, 63], "robin": [20, 22, 63, 104, 106, 127], "path1": [20, 106], "path2": [20, 106], "pathn": [20, 106], "absolute_path_to_th": [20, 63, 106, 127], "relative_path_to_th": [20, 63, 106, 127], "stanlei": [20, 63, 64, 106, 127, 128], "mysftpserv": [20, 63, 64, 106, 127, 128], "foo": [20, 57, 63, 64, 77, 106, 127, 128], "henc": [20, 28, 39, 56, 63, 77], "xs_guest": [20, 53, 63, 86, 106, 127], "20150813161959": [20, 62, 63, 106, 126, 127], "82edc8eb735fd99598a1fe04541f558d": [20, 63, 106, 127], "4574": [20, 63, 106, 127], "slash": [20, 57, 62, 64], "stamp": [20, 32, 33, 53, 56, 62, 63, 64], "files": [20, 32, 33, 63], "public_data": [20, 39, 41, 42, 63, 106, 127], "sacn32_cwao_123456": [20, 63, 106, 127], "concaten": [20, 32, 33, 38, 55, 62, 63, 87], "semant": [20, 24, 34], "reannounc": 20, "preset": 20, "brokersourceusernam": [20, 62, 106], "protect": [20, 44, 62, 92, 120], "nor": [20, 28, 31, 37, 44, 50, 62, 70], "incorrectli": [20, 62], "from_clust": [20, 45, 47, 48, 49, 53, 57, 62, 66, 67, 68, 72, 79, 81, 82, 83, 86, 106, 126, 130, 131, 132, 133, 135], "tolocalfil": [20, 50, 54, 55, 58, 66, 84, 87, 88, 106, 130], "fileop": [20, 38, 50, 84, 106, 116], "sendto": [20, 48, 49, 50, 55, 56, 67, 77, 82, 84, 106, 131], "Its": 20, "myuser": [20, 106], "myhost": [20, 106], "important_product": [20, 106], "pseudo": [20, 106], "kbytes_p": [20, 106], "possibli": [20, 62, 63], "reintroduc": 20, "eas": [20, 31, 45, 64], "my": [20, 39, 41, 42, 44, 73, 106], "important_loc": [20, 106], "for_oth": [20, 106], "reconstruct": 20, "suppress_dupl": [20, 38, 47, 49, 50, 54, 55, 62, 63, 81, 83, 84, 87, 88, 106, 116, 127], "broker_url": [20, 106], "myflow": [20, 54, 59, 87, 106, 123], "xs_stanlei": [20, 106], "256": [20, 45, 64, 79, 106, 128], "fc473c7a2801babbd3818260f50859d": [20, 106], "fbtopic": [20, 106], "suggest": [20, 31, 32, 33, 42, 45, 62, 63, 70, 113, 114, 134], "trail": 20, "sx_guest": [20, 64, 106, 128], "redund": [20, 22, 24, 29, 31, 37, 44, 45, 62, 63, 112], "lifetim": [20, 24, 27, 38, 54, 63], "trim": [20, 60], "sr3_cpost": [20, 23, 54, 59, 60, 61, 62, 63, 64, 87, 106, 123, 124, 125, 126, 127, 128], "all_but_cap": [20, 106], "ami": [20, 54, 57, 65, 87, 99, 106, 129], "aqhi": [20, 106], "citypag": [20, 106], "cmml": [20, 106], "cscn22_bulletin": [20, 106], "gdp": [20, 106], "ninjo": [20, 29, 31, 54, 87, 106, 110, 112], "rdp": [20, 106], "swob": [20, 38, 45, 54, 56, 67, 68, 71, 72, 77, 79, 87, 106, 116, 131, 132, 135, 136], "destfn_am": [20, 106], "destfn_nz": [20, 106], "msg_tarpush": [20, 106], "subscib": [20, 62, 106, 126], "backslash": [20, 62], "gif2": [20, 62, 126], "reus": [20, 29, 45, 49, 79], "includeconfigpath": [20, 106], "dir": [20, 25, 32, 33, 38, 54, 56, 57, 59, 62, 70, 77, 87, 106, 113, 114, 116, 126, 134], "configuraiton": [20, 106], "broker_us": [20, 22, 62, 104, 106, 126], "flow_callback": [20, 50, 54, 56, 84, 85, 87, 106], "child": [20, 56], "syntact": 20, "sugar": 20, "callback_prepend": [20, 54, 87, 106], "torr": [20, 38, 106, 116], "bittorr": [20, 38, 106, 116], "msg_to_clust": [20, 45, 50, 55, 79, 84, 88, 106], "referenc": [20, 62], "cumbersom": [20, 37, 44, 45], "wrap": [20, 48, 55, 57, 62, 77], "incant": [20, 106], "feedback": [20, 29], "http_proxi": [20, 54, 62, 87, 106, 126], "logmessagedump": [20, 54, 57, 67, 87, 106, 131], "on_start": [20, 38, 47, 48, 49, 54, 56, 57, 62, 66, 77, 81, 82, 83, 87, 106, 116, 126, 130], "on_stop": [20, 38, 47, 48, 49, 54, 57, 62, 65, 66, 67, 77, 81, 82, 83, 87, 106, 116, 126, 129, 130, 131], "FOR": [20, 39], "descriptor": [20, 23, 56, 57, 62, 63, 77], "purg": [20, 31, 45, 62], "likelihood": [20, 23, 62], "stdout": [20, 62, 106, 126], "log_reject": [20, 38, 50, 54, 84, 87, 106, 116], "statefil": [20, 54, 56, 62, 67], "goofi": [20, 54, 62, 87, 106, 126], "logrot": [20, 45, 50, 54, 79, 84, 87, 106], "max_log": [20, 54, 87, 106], "logrotate_interv": [20, 50, 54, 84, 87, 106], "time_unit": [20, 54, 87, 106], "2h": [20, 54, 62, 87, 106, 126], "3d": [20, 54, 62, 87, 106, 126], "0600": [20, 54, 72, 87, 106, 135], "how2guid": [20, 106], "techniqu": [20, 28, 31, 53, 86, 91, 106, 109, 112], "user1": [20, 61, 106, 125], "password1": [20, 61, 106, 125], "user2": [20, 61, 106, 125], "password2": [20, 61, 106, 125], "5671": [20, 45, 61, 79, 106, 125], "usern": [20, 61, 106, 125], "passwd": [20, 45, 56, 61, 79, 106, 125], "user5": [20, 61, 106, 125], "password5": [20, 61, 106, 125], "user6": [20, 61, 106, 125], "password6": [20, 61, 106, 125], "user7": [20, 61, 106, 125], "password7": [20, 61, 106, 125], "user8": [20, 61, 106, 125], "password8": [20, 61, 106, 125], "3aiz": [20, 61, 106, 125], "2fdot8": [20, 61, 106, 125], "ladsweb": [20, 61, 106, 125], "modap": [20, 61, 106, 125], "eosdi": [20, 61, 106, 125], "nasa": [20, 38, 47, 54, 55, 61, 65, 83, 87, 88, 106, 116, 125, 129], "gov": [20, 41, 49, 57, 61, 81, 106, 125], "89apcbf0": [20, 61, 106, 125], "febe": [20, 61, 106, 125], "11ea": [20, 61, 106, 125], "a705": [20, 61, 106, 125], "b0qr41911bf4": [20, 61, 106, 125], "keyfil": [20, 45, 61, 79, 125], "bt": [20, 61, 106, 125], "overriden": [20, 61], "explic": [20, 61, 79, 87, 92, 106, 112, 115, 139], "incorrect": [20, 44, 61, 62, 99, 106, 109, 120, 125, 126], "2f": [20, 61, 106, 125], "isi": [20, 61], "dot8": [20, 61, 106, 125], "olon": [20, 61, 106, 125], "3a": [20, 61, 106, 125], "evei": 20, "unattend": [20, 56, 77], "transient": [20, 31, 37, 56, 68, 77], "unsuccess": 20, "retry_expir": [20, 106], "preferenti": 20, "opportunist": [20, 106], "gap": [20, 62], "wors": [20, 31, 44], "exponenti": [20, 31, 37, 44], "overload": [20, 26, 29, 49, 62], "model_gem_glob": [20, 59, 62, 106, 123, 126], "25km": [20, 59, 62, 106, 123, 126], "die": [20, 62], "report_exchangenam": [20, 62, 106, 126], "xreport": [20, 21, 45, 62, 79, 103, 106, 126], "statist": [20, 38, 62, 64], "runtim": [20, 62], "sender_confignam": [20, 62, 106], "sender_configname_": [20, 62, 106], "interfac": [20, 21, 29, 31, 35, 38, 45, 46, 50, 54, 55, 59, 60, 61, 62, 63, 64, 65, 78, 79, 84, 87, 88, 93, 103, 106, 107, 110, 112, 116, 123, 124, 126, 127, 129, 132], "153": [20, 47, 62, 83, 106, 126], "recheck": [20, 57, 62], "autocomput": [20, 62, 63, 127], "1m": [20, 57, 62, 63, 106, 126, 127], "xwinnow": [20, 62, 106, 126], "xwinnow02": [20, 62, 106, 126], "xwinnow03": [20, 62, 106, 126], "xwinnow04": [20, 62, 106, 126], "fifth": [20, 62], "remote_config_url": [20, 59, 106, 123], "file_log": [20, 47, 49, 55, 71, 81, 83, 88, 106, 136], "fcb": [20, 38, 48, 54, 66, 82, 87, 106, 116, 130], "deleteflowfil": [20, 38, 50, 54, 55, 58, 66, 84, 87, 88, 106, 116, 130], "fdelai": [20, 38, 50, 54, 55, 56, 58, 66, 77, 84, 87, 88, 106, 116, 130], "line_log": [20, 38, 54, 87, 106, 116], "line_mod": [20, 38, 47, 49, 81, 83, 106, 116], "rxpipe": [20, 38, 54, 55, 58, 66, 87, 88, 106, 116, 130], "cooki": [20, 45, 46, 78, 79, 106], "cutter": [20, 106], "setlevel": [20, 48, 66, 82, 106, 130], "getattr": [20, 48, 66, 82, 106, 130], "msg_dump": [20, 50, 56, 77, 84, 106], "differenti": [20, 23], "script_gath": [20, 106], "get_weird_data": [20, 106], "_prepend": [20, 106], "variant": [20, 106, 128], "subprocess": [20, 39, 56, 65, 70, 106, 134], "run_script": [20, 106], "err": [20, 65, 70, 106, 134], "exc_info": [20, 39, 48, 66, 82, 106, 130], "registered_a": [20, 48, 49, 55, 56, 77, 81, 82, 88, 106], "post_brokerhost": [20, 106], "acm": [20, 21, 57, 62, 103, 106, 126], "xs_acm": [20, 21, 62, 103, 106, 126], "necessarili": [20, 21, 22, 55, 56, 62], "person": [20, 21, 31, 41, 42, 45, 62], "phone": [20, 21, 62], "xdg": [20, 54, 59, 87, 106, 123], "specic": [20, 59, 106, 123], "userspeterappdatalocalsci": [20, 59, 106, 123], "casarramyflow": [20, 59, 123], "xdg_config_hom": [20, 59, 106, 123], "placement": [20, 48, 50, 54, 56, 59, 66, 77, 82, 84, 85, 87, 106, 130], "config_dir": [20, 59, 106], "remote_config": [20, 59, 106, 123], "new_fil": [20, 38, 39, 48, 49, 55, 56, 57, 62, 66, 69, 77, 81, 82, 88, 106, 116, 126, 130, 133], "fact": [20, 28, 42, 55, 62, 72], "nonesend": [20, 62, 106, 126], "discourag": [20, 31, 62], "headfn": [20, 56, 62, 106, 126], "destfn": [20, 38, 55, 56, 58, 62, 66, 67, 77, 88, 106, 126, 130, 131], "satnet": [20, 62, 106, 126], "destfnscript": [20, 57, 62, 106, 126], "remote_fil": [20, 55, 56, 77, 88, 106], "pli": [20, 130], "preceed": 20, "parenthesi": [20, 62], "enclos": [20, 62], "type1": [20, 62, 106, 126], "type2": [20, 62, 106, 126], "type3": [20, 62, 106, 126], "file_of_type3": [20, 62, 106], "forth": [20, 62], "20160123": [20, 62, 106, 126], "raw_merger_grib": [20, 62, 106, 126], "20160123_product_raw_merger_grib_from_cmc": [20, 62, 106, 126], "strict": [20, 27, 62, 92, 106, 108, 112, 126], "specialis": [20, 62], "meteorolog": [20, 26, 27, 28, 29, 31, 37, 54, 57, 62, 66, 87, 101, 106, 126, 140], "predat": [20, 25, 45, 62], "bear": [20, 37, 62], "abbrevi": [20, 57, 62, 66, 106, 126], "ahl": [20, 31, 48, 57, 62, 66, 82, 106, 112, 126, 130], "blank": [20, 62, 67], "ttaaii": [20, 57, 62, 106, 126], "cccc": [20, 31, 57, 62, 106, 112, 126], "yygggg": [20, 57, 62, 106, 126], "render": [20, 27, 38, 44, 50, 62], "sacn43_cwao_012000_aaa_41613": [20, 62, 106, 126], "ncp1": [20, 62, 106, 126], "20050201200339": [20, 62, 106, 126], "t2": [20, 62, 106, 126], "a1": [20, 62, 106, 126], "a2": [20, 62, 106, 126], "ob": [20, 28, 62, 106, 109, 126], "gg": [20, 31, 57, 62, 106, 112, 126], "ryyyi": [20, 41, 62, 106, 126], "rmm": [20, 41, 62, 106, 126], "rdd": [20, 41, 62, 106, 126], "rhh": [20, 41, 62, 106, 126], "rmn": [20, 62, 106, 126], "sixth": [20, 62], "sundew_extens": [20, 39, 55, 56, 62, 67, 68, 106, 126, 131, 132], "substit": [20, 56, 62, 106, 126], "opposit": [21, 22, 26, 42, 64, 86, 112], "unnecessari": [21, 45, 50, 62], "supplier": [21, 37], "deploymentconsider": 21, "claus": [21, 23, 38, 48, 53, 54, 57, 62, 63, 64, 77, 82, 86, 87, 103, 116, 117, 126, 127], "popul": [21, 55], "Ones": 21, "suppres": [21, 24, 45, 54, 62, 88, 103, 118, 128], "dispos": [21, 41, 88, 90, 92, 106, 112, 118, 126, 128], "flowcallback": [21, 38, 50, 54, 55, 56, 58, 59, 62, 65, 66, 67, 68, 77, 84, 85, 87, 88, 103, 116, 119, 123, 126, 130, 131, 132], "has_vip": [21, 55, 88, 103], "nil": [21, 103], "sendfil": [21, 103], "middl": [21, 44], "hoar": [21, 103], "indefinit": 21, "endpoint": 21, "entireti": [21, 62], "mosquitto": [21, 26, 103, 105], "administrivia": 21, "plenti": 21, "ia": 21, "idl": [21, 28], "mqttv5": [21, 103], "clean_sesss": [21, 103], "qo": [21, 103], "receivemaximum": [21, 26, 103, 105], "v5": [21, 26, 64, 96, 103, 105, 128], "xs_user": [21, 103], "xr_user": [21, 103], "spoof": [21, 103], "wider": [21, 28, 31, 64, 68], "offer": [21, 27, 31, 38, 47, 54], "lastli": [21, 31, 44, 62], "4th": [21, 28, 109], "20160504": [21, 103], "daili": [21, 28, 29, 45, 62, 92, 109], "unus": [21, 45, 46, 56, 77], "hbic": [21, 103], "goldenlab": [21, 103], "hbicpw": [21, 103], "feederpw": [21, 103], "puppypw": [21, 103], "incorpor": [22, 47, 83, 112], "vp": [22, 45, 79, 104], "certif": [22, 45, 62, 79], "mouth": 22, "edm": [22, 41, 45, 79, 104], "dor": [22, 104], "eccc": [22, 28, 104, 109], "nation": [22, 26, 28, 29, 30, 49, 57, 81, 104, 105, 109, 110, 111], "hub": [22, 28, 29, 31, 37, 101, 109, 110], "opportun": [22, 42, 44, 46, 54, 57, 130], "pool": [22, 28, 54, 104, 109], "queue_nam": [22, 38, 41, 50, 68, 84, 104, 116, 138], "insight": 22, "assess": 22, "socket": [22, 26, 27, 31, 37, 56, 57, 62, 68, 69, 77, 101, 104, 105, 108, 112, 126, 132, 133], "strongli": [22, 64], "xs_alice_": 22, "xs_alice_publ": 22, "shown": [22, 38, 68], "q_alic": [22, 45, 79, 104], "q_alice_xspeci": [22, 104], "unrel": [22, 24], "misus": 22, "recompute_checksum": [22, 104], "newli": [22, 29, 31, 35, 39, 70, 72, 134], "agent": [22, 90, 104, 105], "fime": 22, "belong": 22, "interchang": [22, 24, 26, 28, 73, 104, 105, 109], "_report_": [22, 26, 105], "conceptu": [22, 26, 31, 49], "parlanc": 22, "neighbour": [22, 26, 31], "extent": [22, 26, 31], "smallest": [23, 42], "hundredth": 23, "fastest": [23, 28, 54, 62], "implicit": [23, 28, 31, 39, 44, 62, 63, 109, 112, 117, 120, 127], "ld_preload": [23, 53, 63, 86, 117, 127], "libsrshim": [23, 28, 53, 62, 63, 86, 106, 109, 117, 126, 127], "trip": [23, 25, 31, 62], "finest": 23, "grain": [23, 56], "tmp": [23, 25, 38, 46, 47, 49, 54, 65, 66, 67, 69, 70, 71, 72, 78, 81, 83, 87, 102, 116, 117, 129, 130, 131, 133, 135, 136], "workstat": [23, 29], "hide": [23, 25, 62], "mtime": [23, 24, 25, 45, 53, 56, 57, 62, 67, 68, 69, 71, 77, 79, 86, 102, 117, 118, 126, 131, 132, 133, 136], "nodupe_fileagemin": 23, "clock": [23, 25], "uncoop": [23, 25], "smooth": 23, "force_pol": [23, 50, 63, 67, 84, 117, 127, 131], "supercomput": [23, 28, 29, 38, 73, 109], "nf": [23, 28, 109, 117], "recogn": [23, 50, 55, 62, 73], "prime": 23, "instantan": [23, 28], "medium": 23, "tenth": 23, "intial": 23, "incur": [23, 31, 45], "plu": [23, 62, 78, 79, 81, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 115, 116, 117, 118, 119, 123, 124, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137], "timeli": [23, 31, 53], "sr_post_config": [23, 53, 63, 86, 117, 127], "shimpost": [23, 63, 117, 127], "sha": [23, 117], "512": [23, 117], "handi": 23, "neglig": [23, 28, 38, 54], "inexpens": [23, 31], "recalcul": [23, 64, 117], "parallelliz": 23, "intermitt": [23, 25, 117], "intercept": [23, 28, 44, 53, 63, 86, 109, 117, 120, 127], "libc": [23, 63, 117, 127], "expoert": [23, 63, 117, 127], "lc_srshim": [23, 63, 117, 127], "fi": [23, 53, 63, 70, 86, 117, 127, 134], "lc_": [23, 63, 117, 127], "effort": [23, 26, 28, 37, 50, 63, 84, 101, 105, 109, 117, 127], "sshd": [23, 63, 117, 127], "66": [23, 28, 63, 69, 109, 117, 127, 133], "weak": [23, 56, 57, 63, 77], "fortran": [23, 28, 63, 109, 117, 127], "exec": [23, 53, 63, 86, 117, 127], "ot": [23, 63], "tcl": [23, 28, 63, 109, 117, 127], "tk": [23, 28, 63, 109, 117, 127], "fatal": [23, 63, 127], "ignorestderr": [23, 63, 117, 127], "unwarr": [23, 63], "abort": [23, 38, 62, 63], "oxymoron": [23, 63], "tree_with_thousands_of_fil": [23, 63, 117, 127], "new_tre": [23, 63, 117, 127], "sr_shimdebug": [23, 63, 117, 127], "oldnam": [23, 62, 63, 64, 117, 126, 127], "newnam": [23, 62, 63, 64, 117, 126, 127], "mission": [24, 37, 101], "hot": 24, "decept": 24, "pubtim": [24, 34, 38, 48, 55, 57, 64, 66, 67, 68, 69, 82, 88, 115, 116, 118, 128, 130, 131, 132, 133], "mandatori": [24, 33, 42, 50, 55, 56, 62, 64, 70, 77], "derivekei": [24, 118], "helper": [24, 45, 57], "nodupe_basi": [24, 50, 56, 67, 77, 84, 118, 131], "flowcb_prepend": [24, 118], "duplicateion": 24, "mdelai": [24, 57, 118], "wxo": [24, 45, 46, 54, 56, 65, 66, 67, 68, 70, 77, 78, 79, 87, 118, 129, 130, 131, 132], "citypage_weath": [24, 46, 54, 78, 87, 118], "compound": [24, 44], "footer": 24, "invalid": [24, 56, 64, 77, 118], "intermedi": [24, 64], "shim": [24, 26, 29, 31, 53, 86, 110, 112, 118, 119], "quiescent": 24, "your_set": 24, "your_class": 24, "yourclass": 24, "nodupe_overrid": [24, 118], "your_kei": 24, "your_path": 24, "subdir": [25, 56, 77, 102], "correctli": [25, 38, 44, 47, 49, 57, 64], "occasion": [25, 38, 44, 56], "resort": [25, 31, 56, 57, 77], "influenc": [25, 102], "danger": [25, 102], "inappropri": [25, 62], "trade": [26, 45, 105], "2007": [26, 27, 67, 69, 105, 108, 131, 133], "jm": [26, 105], "plumb": 26, "openamq": [26, 105], "gpl": [26, 105], "jpmorganchas": [26, 105], "activemq": [26, 105], "bridg": [26, 45], "openwir": [26, 105], "promin": [26, 29, 31], "refrain": 26, "unseen": 26, "capac": [26, 31, 44, 53], "telemetri": [26, 64, 105, 128], "emqx": [26, 105], "mqttt": 26, "middlewar": [26, 37, 101, 105], "tcp": [26, 27, 28, 31, 37, 44, 45, 62, 101, 105, 108, 109, 112, 120, 126], "histori": [26, 31, 43], "environment": [26, 29, 45, 49], "countri": [26, 31, 53, 54], "member": [26, 31, 42, 56, 77, 99], "decad": [26, 29, 31, 44], "war": 26, "telecommun": [26, 31], "stale": 26, "ongo": 26, "adjac": [27, 108], "staff": [27, 31, 44, 54], "speci": 27, "sara": [27, 70], "highlight": [27, 45, 53], "plight": 27, "furri": 27, "attent": [27, 41, 78, 82, 84, 88, 92, 93, 97, 98, 99, 101, 103, 104, 105, 108, 109, 110, 112, 114, 116, 117, 118, 121, 124, 126, 127, 128, 130, 131, 132, 135, 136], "carnivor": [27, 108], "plant": [27, 108], "registri": 27, "deep": [27, 29, 44, 45, 50, 53, 56, 64], "2009": [27, 57, 108], "dd_": [27, 108], "2013": [27, 31, 32, 33, 45, 46, 78, 79, 108, 112, 113, 114], "ran": [27, 45, 68, 71], "ground": [27, 50], "unburden": 27, "operation": [27, 28, 29], "exp": [27, 31, 32, 33, 45, 46, 54, 65, 70, 78, 79, 87, 108, 112, 113, 114, 129, 134], "v00": [27, 31, 32, 33, 45, 46, 78, 79, 96, 108, 112, 113, 114], "meteorologi": 27, "ruthlessli": 27, "novemb": [27, 28, 29], "blown": [27, 57], "consumpt": [27, 28, 31, 57, 62, 68], "came": [27, 31, 57, 62], "kept": [27, 31, 38, 39, 45, 54, 55], "theme": 27, "chose": [27, 81, 86, 87, 88, 90, 91, 92, 93, 95, 98, 99, 103, 104, 106, 112, 113, 114, 116, 120, 126, 128, 129, 130], "indigen": 27, "insectivor": [27, 108], "pitcher": 27, "meat": 27, "timelin": [27, 31], "acheiv": 27, "promis": 27, "began": [27, 28, 31], "dub": 27, "era": [27, 108], "domest": [27, 108], "500kloc": [27, 108], "30kloc": [27, 108], "2010": [27, 31, 108, 112], "25kloc": [27, 108], "15kloc": [27, 108], "video": [27, 30, 31, 37, 55, 101, 108, 111], "march": [27, 79, 106, 117], "spring": [27, 28, 29], "gitlab": [27, 108], "navig": [27, 49, 54, 87, 108, 109], "index": [27, 29, 31, 54, 56, 87, 108, 110, 112, 140], "380": [27, 53, 86, 108], "useless": [27, 41, 45, 46], "patient": [28, 109], "roughli": [28, 54], "shoulder": [28, 31], "rsync": [28, 31, 32, 33, 53, 64, 86, 109, 112, 113, 114, 128], "mbyte": [28, 45, 46], "sustain": [28, 31, 44], "peaki": 28, "aggreg": 28, "231": [28, 109], "suffer": [28, 44, 45, 62], "lesson": 28, "topologi": [28, 31, 37, 96, 101, 109, 112], "criteria": [28, 37, 64], "deem": 28, "sole": [28, 41, 49], "outset": 28, "close": [28, 31, 34, 37, 38, 44, 48, 53, 55, 56, 62, 63, 65, 66, 67, 68, 69, 73, 77, 82, 86, 88, 129, 130, 131, 132, 133], "partnership": 28, "sophist": [28, 31], "twist": 28, "avenu": [28, 109], "simul": [28, 29, 55, 56, 57, 62, 77, 92, 109, 126], "waterwai": 28, "ocean": [28, 49, 81, 109], "prognost": 28, "schedul": [28, 37, 38, 50, 54, 58, 116], "24hour": 28, "rippl": 28, "expend": 28, "hall": [28, 109], "promptli": 28, "realist": 28, "spare": [28, 55, 88], "aspir": [28, 53], "deadlin": [28, 31], "contract": 28, "retrospect": 28, "u0": [28, 109], "psilva": [28, 109], "eccc1": [28, 109], "ppp1": [28, 109], "sarr111": [28, 109], "hall1": [28, 109], "policy_hall1_admin": [28, 109], "site1": [28, 109], "cmod": [28, 109], "prod": [28, 109], "policy_hall1_archive_dbas": [28, 109], "dbase": [28, 109], "policy_hall1_cmop": [28, 109], "cmop": [28, 109], "maestro": [28, 109], "smco500": [28, 109], "policy_hall1_daily_scor": [28, 109], "daily_scor": [28, 109], "policy_hall1_hub": [28, 109], "policy_hall1_product": [28, 109], "policy_hall1_stat": [28, 109], "policy_hall1_version_control": [28, 109], "version_control": [28, 109], "policy_hall1_work_op": [28, 109], "work_op": [28, 109], "policy_hall1_work_par": [28, 109], "work_par": [28, 109], "tt_walk_hub": [28, 109], "nohup": [28, 109], "sat": [28, 109], "oct": [28, 56, 77, 109], "gmt": [28, 49, 57, 81, 109], "dry": [28, 57, 109], "avi": [28, 79, 84, 101, 102, 103, 104, 106, 109, 111, 116, 117, 119, 126, 127, 128], "site2": [28, 109], "27182247": [28, 109], "believ": [28, 31, 73], "tar": [28, 38, 45, 55, 79, 88, 109, 116], "significantli": 28, "quicker": 28, "gpf": [28, 31, 109, 112], "deamon": 28, "rose": 28, "driven": [28, 35, 37, 54, 56, 68, 132], "ibm": [28, 31, 109, 112], "rhythm": [28, 117], "winter": 28, "juli": 28, "told": 28, "focu": [28, 31, 42, 54, 57], "summer": [28, 29], "secondari": 28, "u1": [28, 109], "onlin": [28, 54], "optimis": [28, 37, 86, 89, 101, 109, 112], "adequ": [28, 45], "earliest": [28, 31, 44], "milit": 28, "frequent": [28, 44, 54, 62, 63], "tactic": 28, "siteio": [28, 109], "infiniband": [28, 109], "proto": [28, 56, 77, 109], "offload": [28, 29, 44], "ppp": [28, 109], "40gige": [28, 109], "bbcp": [28, 109], "tcpip": [28, 109], "ipoib": [28, 109], "ib": [28, 47, 49, 57, 81, 83, 109], "rcp": [28, 109], "sscp": [28, 109], "triall": 28, "strength": 28, "unaffect": 28, "download_cp": [28, 109], "download_rcp": [28, 109], "download_dd": [28, 109], "teardown": 28, "naiv": [28, 55, 56, 77], "wasn": [28, 49], "commiss": 28, "defer": [28, 53, 64], "octob": 28, "overlap": [28, 31], "late": [28, 45, 57], "decemb": [28, 29], "folk": 28, "heartbeat": [28, 47, 49, 50, 53, 54, 55, 81, 83, 84, 86, 87, 88], "garbag": 28, "polic": 28, "precipit": [28, 29], "paramount": 28, "2019": [28, 30, 57, 109, 111, 119, 133], "buggi": 28, "improperli": 28, "treat": [28, 56, 57, 77], "ensu": 28, "metric": [28, 48, 49, 56, 57, 62, 77, 81], "aros": 28, "quantif": [28, 109], "accur": [28, 42, 45, 54, 57, 62, 63], "hall2": [28, 109], "18615163646615": [28, 109], "16t": [28, 109], "1901463": [28, 109], "4421909953006": [28, 109], "4t": [28, 109], "475085": [28, 109], "142000": [28, 109], "1355": [28, 109], "239": [28, 109], "libshim": [28, 109], "144": [28, 109], "264": [28, 109], "1175": [28, 109], "166": [28, 45, 47, 79, 83, 109], "ratio": [28, 109], "jan": [28, 55, 57, 88, 109], "preload": [28, 109], "dracett": [28, 109], "audit_filt": [28, 109], "oprun": [28, 109], "ldpreload": [28, 109], "238": [28, 109], "622": [28, 109], "1176": [28, 109], "sitestor": [28, 109], "ldpreload_test": [28, 109], "par": [28, 56, 59, 77, 78, 80, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137], "wcps_20170501": [28, 109], "wh": [28, 109], "banco": [28, 109], "cutoff": [28, 109], "2018010406_078_prog_gls_rel": [28, 109], "tb0": [28, 109], "min": [28, 55, 88, 109], "0244577": [28, 109], "capa25km_20170619": [28, 109], "gridpt": [28, 109], "qperad": [28, 109], "radprm": [28, 109], "atx_radprm": [28, 109], "142426": [28, 109], "44506": [28, 109], "14666": [28, 109], "ss1": [28, 109], "2943": [28, 109], "201801041500_tt": [28, 109], "93106": [28, 109], "dayfil": [28, 109], "2018010416_opruns_capa25km_rdpa_fin": [28, 109], "98296": [28, 109], "97504": [28, 109], "96136": [28, 109], "3rd": [28, 109], "377": [28, 53, 86, 109], "1498": [28, 109], "capa": [28, 109], "bassin": [28, 109], "6h": [28, 109], "prelim": [28, 109], "2018010312_05me005_1": [28, 109], "dbf": [28, 109], "0178287": [28, 109], "statqp": [28, 109], "xss_0p1_statqp": [28, 109], "144419": [28, 109], "60977": [28, 109], "14185": [28, 109], "2954": [28, 109], "201801032200_tt": [28, 109], "359947": [28, 109], "pa": [28, 42, 46, 56, 59, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 96, 97, 98, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139], "1h": [28, 62, 109, 126], "xti": [28, 109], "201801031300": [28, 109], "pa_precipet": [28, 46, 78, 109], "ee": [28, 109], "urp": [28, 29, 31, 32, 33, 45, 79, 85, 109, 110, 112, 113, 114], "cor1": [28, 109], "106892": [28, 109], "106176": [28, 109], "104755": [28, 109], "hourli": [28, 57, 62, 66, 109], "slice": 28, "boost": 28, "505439": [28, 109], "54261": [28, 109], "xme": [28, 109], "201801040000": [28, 109], "nrml": [28, 109], "0328007": [28, 109], "iwx_0p5_statqp": [28, 109], "847": [28, 109], "883": [28, 109], "1168": [28, 109], "2018010318_078_prog_gls_rel": [28, 109], "025425": [28, 109], "biai": [28, 89, 103, 109, 112], "xpg": [28, 109], "201801031800_xpg_statomr": [28, 109], "24102": [28, 109], "3064": [28, 109], "531483": [28, 109], "73308": [28, 109], "2018010401_opruns_capa25km_rdpa_pr": [28, 109], "0390887": [28, 109], "xmb": [28, 45, 79, 109], "201801031900_xmb_radprm": [28, 109], "774": [28, 109], "669443": [28, 109], "131": [28, 109], "666": [28, 109], "wkr": [28, 45, 79, 109], "201801032000": [28, 109], "cor2": [28, 109], "590": [28, 109], "0324": [28, 109], "236": [28, 66, 109], "029": [28, 109], "wf": [28, 109], "depot": [28, 29, 42, 45, 46, 78, 79, 109], "2018010400": [28, 109], "00016": [28, 109], "672": [28, 109], "033812": [28, 109], "resps_20171107": [28, 109], "products_dbas": [28, 109], "2018010400_resps_en": [28, 109], "etas_239h": [28, 109], "boxplot": [28, 109], "ns_pictou": [28, 109], "001_240": [28, 109], "png": [28, 39, 57, 109], "2297": [28, 109], "60841": [28, 109], "6136": [28, 109], "rewps_20171018": [28, 109], "images_prog": [28, 109], "2018010400_rewps_en": [28, 109], "hs_tp_072h": [28, 109], "45012": [28, 109], "000_072": [28, 109], "0278831": [28, 109], "xsm": [28, 109], "201801032200_xsm_0p2_statqp": [28, 109], "3540": [28, 109], "90411": [28, 109], "5288": [28, 109], "arx_0p5_statqp": [28, 109], "0346384": [28, 109], "201801040600_www_statomr": [28, 109], "757": [28, 109], "262": [28, 109], "338": [28, 109], "2018010400_11aa028_1": [28, 109], "shp": [28, 109], "028173": [28, 109], "dlh": [28, 109], "201801040000_dlh_statomr": [28, 109], "23849": [28, 109], "11596": [28, 109], "spawn": [28, 53, 56, 62, 86, 126], "penalti": [28, 31, 45, 53], "yield": [28, 56, 77], "360": [28, 54, 87, 109], "racett": [28, 109], "lion": 28, "anthoni": [28, 109], "chartier": [28, 109], "donn\u00e9": [28, 78, 82, 83, 84, 85, 88, 92, 93, 95, 97, 98, 99, 101, 102, 103, 104, 106, 108, 109, 110, 111, 113, 114, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 138, 139], "environnemental": [28, 79, 81, 105, 109, 110], "canadian": [28, 31, 44, 54], "doug": [28, 109], "bender": [28, 109], "engag": [28, 31, 42, 92, 99, 109, 112], "daluma": [28, 109], "sen": [28, 82, 86, 87, 89, 90, 92, 93, 95, 99, 103, 104, 109, 110, 112, 120, 127, 128, 129, 130, 132, 134], "dcsb": [28, 109], "picker": 28, "alain": [28, 109], "st": [28, 38, 55, 88, 109, 116, 129], "daniel": [28, 109], "pelissi": [28, 109], "tarak": [28, 109], "patel": [28, 109], "jun": [28, 55, 88, 109], "hu": [28, 109], "noureddin": [28, 109], "habili": [28, 109], "michel": [28, 45, 79, 109], "grenier": [28, 45, 79, 109], "deric": [28, 109], "sullivan": [28, 109], "walter": [28, 109], "richard": [28, 109], "jamal": [28, 109], "ayach": [28, 109], "saraga": [28, 109], "prepar": [28, 57, 70, 72, 134], "suse": [28, 109], "binh": [28, 109], "ngo": [28, 109], "crai": [28, 109], "backend": [28, 31, 109, 112], "oversight": [28, 29], "fran\u00e7ais": [29, 91], "inextric": 29, "emphasi": [29, 31, 54], "board": 29, "vision": [29, 31, 110, 112], "drove": 29, "realiz": 29, "trial": [29, 31], "retest": 29, "mesh": [29, 30, 37, 64, 128], "envis": [29, 31], "unanticip": 29, "nw": [29, 31, 54, 87, 110, 112], "peer": [29, 30, 44], "distil": [29, 110], "seven": [29, 62], "academia": 29, "bullprep": [29, 31, 110, 112], "scribe": [29, 31, 110, 112], "bi": [29, 31], "eastern": 29, "noaa": [29, 47, 54, 55, 57, 65, 83, 87, 88, 110, 129], "pda": [29, 110], "downlink": 29, "western": 29, "visual": 29, "exploratori": 29, "attack": [29, 44, 120], "expert": [29, 44, 110, 120], "viabl": [29, 110], "mvp": [29, 110], "regard": [29, 79, 82, 86, 88, 90, 92, 95, 99, 103, 106, 110, 116, 123, 126, 130, 136], "ownership": [29, 56], "exact": [29, 38, 42, 55, 79, 86, 88, 89, 91, 92, 93, 101, 104, 105, 110, 112, 116, 118], "surprisingli": 29, "nonsens": 29, "begun": 29, "datamart": [29, 31, 46, 54, 78, 87, 110, 112], "compact": [29, 56, 77, 99, 110], "kloc": [29, 30, 110, 111], "on_msg": [29, 110], "arcan": 29, "smarter": 29, "01a5": [29, 110], "pfd": [29, 110], "horizon": [29, 110], "nearlin": 29, "revisit": 29, "sarrasemina": [29, 110], "onboard": 29, "introductori": 29, "gatewai": [29, 44, 110, 120], "quiet": 29, "uncov": 29, "02a1": [29, 110], "rpd": [29, 110], "dm": [29, 41, 57, 67, 110, 131, 132], "flux": [29, 59, 62, 79, 80, 82, 84, 87, 88, 89, 90, 93, 95, 96, 99, 100, 101, 104, 105, 106, 107, 108, 110, 111, 119, 120, 121, 123, 126, 127, 128, 129, 130, 132, 135, 138], "corpor": 29, "fund": 29, "alta": [29, 110], "wi": [30, 48, 62, 66, 82, 111, 119, 126, 130], "inflex": [30, 111], "stateless": 30, "crawlabl": [30, 111], "caveat": [30, 36, 37, 53, 54, 56, 77, 101, 140], "demonstr": [31, 57, 67], "committe": 31, "retain": [31, 45, 55], "catalogu": [31, 54, 87, 112], "dataset": [31, 57], "dar": [31, 112], "discoveri": [31, 112], "agreement": 31, "premis": 31, "particularli": [31, 37, 50, 62, 63], "drive": [31, 36, 37, 112], "technolog": 31, "stringent": 31, "loos": [31, 72], "coupl": [31, 37, 55], "systemat": 31, "circumv": 31, "ill": 31, "dream": 31, "player": 31, "broader": 31, "societi": 31, "asap": [31, 56, 112], "whom": [31, 44], "1940": [31, 112], "telephon": 31, "embodi": 31, "rmdcn": [31, 54, 87, 112], "subsum": 31, "broaden": 31, "deepen": 31, "horizont": 31, "strateg": 31, "unnecessarili": 31, "nmc": [31, 112], "rth": [31, 112], "inspect": [31, 44, 45, 79, 112, 120], "ineffect": [31, 54], "nwp": [31, 112], "im": [31, 48, 66, 82, 130], "visibilti": 31, "blush": 31, "friendlier": 31, "concentr": [31, 112], "gisc": [31, 112], "mental": [31, 92, 112], "devolv": 31, "notat": [31, 55, 62, 88, 112, 126], "school": 31, "datatyp": 31, "invent": [31, 37, 62, 63, 101, 126], "transmisss": 31, "arbitarili": 31, "pratic": 31, "competit": 31, "frequenc": [31, 37, 53, 62, 63], "likewis": 31, "dimens": [31, 112], "characterist": 31, "hidden": [31, 62], "denot": [31, 47, 49, 50, 62, 83], "await": [31, 45, 79], "datum": [31, 49, 54, 64, 81], "squar": 31, "acut": 31, "german": [31, 37], "scrape": [31, 112], "90": [31, 41, 112], "asynchroni": [31, 112], "xmpp": [31, 112], "websocket": [31, 37, 112], "uniform": [31, 112], "invit": [31, 112, 134, 138], "misrout": 31, "myriad": [31, 112], "nich": [31, 112], "pioneer": 31, "institut": [31, 112], "mq": [31, 112], "tibco": [31, 112], "oracl": [31, 112], "soa": [31, 112], "tuxedo": [31, 112], "lo": [31, 112], "alamo": [31, 112], "infrastructur": [31, 112], "openstack": [31, 112], "nc": [31, 112], "dcpc": [31, 112], "supplant": [31, 112], "20180211": [31, 112], "subdirectori": [31, 32, 33, 57, 62, 70], "tt": [31, 57, 112], "sacn31_cwao_111200__cybg_42669": [31, 112], "feb": [31, 112], "sacn31_cwao_111200__cyqq_42782": [31, 112], "sacn31_cwao_111200__cytr_43071": [31, 112], "sacn31_cwao_111200__cyyr_42939": [31, 112], "sacn31_cwao_111200__cyzx_43200": [31, 112], "sacn43_cwao_111200__cwhn_43304": [31, 112], "sacn31": [31, 112], "111200": [31, 112], "cybg": [31, 112], "byqq": [31, 112], "cytr": [31, 112], "pointer": [31, 38, 104], "programmat": [31, 37, 48, 66, 68, 69, 70], "nearest": [31, 56, 77], "wv": [31, 112], "volcan": [31, 112], "ash": [31, 112], "rsmc": [31, 112], "vaac": [31, 112], "exclud": [31, 45, 56, 62], "polici": [31, 54, 112], "behav": 31, "selfishli": 31, "retransmiss": [31, 98, 112, 127], "provis": [31, 37, 53], "compens": [31, 53, 86, 112], "sharpli": 31, "misbehaviour": 31, "unwant": [31, 45], "excel": [31, 88, 112], "attract": 31, "shape": 31, "uncommon": 31, "javascript": [31, 112], "raspberri": [31, 112], "pi": [31, 112], "lightli": 31, "mileston": [31, 112], "nurp": [31, 32, 33, 112, 113, 114], "mutlipl": 31, "cb": [31, 112], "ext": [31, 39, 57, 112], "windhoek": [31, 112], "gen": [31, 45, 46, 78, 79, 86, 88, 92, 93, 99, 101, 108, 109, 112, 116, 129], "tranfer": [31, 37], "panamerican": [31, 112], "game": [31, 112], "acq": [31, 112], "band": [31, 79, 87, 90, 93, 101, 106, 112, 116, 118, 131], "uplink": 31, "12x": [31, 112], "72x": [31, 112], "transact": [31, 57, 112], "profer": 31, "crawl": 31, "readili": [31, 38], "nifi": [31, 112], "declin": 31, "segreg": 31, "transferr": [31, 57], "starv": 31, "infrequ": 31, "rigid": [31, 112], "tempt": [31, 42], "outweigh": 31, "media": 31, "appetit": 31, "overlaid": 31, "gigabyt": [31, 63], "avxml": [31, 112], "odim": [31, 112], "tac": [31, 112], "suspect": [31, 44], "downward": 31, "wil": 31, "sanguin": 31, "obviat": [31, 37], "barrier": 31, "moder": 31, "suitabl": [31, 37, 41, 45, 56, 77], "10k": [31, 112], "20150805": [32, 113], "debat": [32, 33], "pan": [32, 33, 113, 114], "2014": [32, 33, 113, 114], "ann": [32, 33, 113, 114], "ounc": [32, 33, 113, 114], "ifi": [32, 33, 113, 114], "filenam": [32, 33, 38, 39, 45, 46, 49, 53, 55, 56, 57, 63, 67, 68, 72, 77, 78, 79, 88, 116, 127, 129, 131, 132, 135], "md5sum": [32, 33, 46, 50, 53, 62, 63, 64, 78, 86, 113, 114, 126, 127, 128], "flowid": [32, 33, 113, 114], "srcpath": [32, 33, 113, 114], "yyyymmddhhmmss": [32, 33, 56, 77, 113, 114], "decim": [32, 33, 56, 62, 77, 113, 114], "bsz": [32, 33, 64, 113, 114, 128], "fzb": [32, 33, 64, 113, 114, 128], "bno": [32, 33, 64, 113, 114, 128], "brem": [32, 33, 64, 113, 114, 128], "fsz": [32, 33, 64, 113, 114, 128], "uncondit": [32, 64], "unlink": [32, 56, 113], "ddsig": [32, 113], "overridden": [32, 33, 54, 56, 57, 62, 63, 77], "track": [32, 33, 47, 53], "subtli": [32, 33], "afsiext": [32, 33, 64, 113, 114, 128], "cmcdataserv": [32, 33, 64, 113, 114, 128], "nrpd": [32, 33, 64, 113, 114, 128], "nrpds_hires_000": [32, 33, 64, 113, 114, 128], "pathsep": [32, 33, 113, 114], "nrp": [32, 33, 113, 114], "mine": [32, 33, 42, 48, 50, 66, 68, 82, 113, 114, 130], "fsb": [32, 33, 113, 114], "ec_cmc": [32, 33, 64, 113, 114, 128], "nrdp": [32, 33, 64, 113, 114, 128], "nrdps_hires_000": [32, 33, 64, 113, 114, 128], "201506011357": [32, 33, 64, 113, 114, 128], "457": [32, 33, 54, 64, 87, 113, 114, 128, 131], "exp13": [32, 33, 113, 114], "blksz": [32, 113], "blckcnt": [32, 113], "relativeurl": [32, 113], "draft2": [33, 114], "20150825": [33, 114], "whitespac": 33, "srcurl": [33, 114], "relurl": [33, 114], "multipart": 33, "srsig": [33, 114], "proven": [34, 86, 90, 103, 104, 106, 110, 116, 126], "messg": 34, "hex": 34, "base64": [34, 64, 115, 128], "curli": 34, "brace": 34, "quot": 34, "properti": [34, 56, 67, 69, 73, 77, 131, 133], "packet": [34, 44], "tupl": [34, 45, 56, 67, 77, 79, 115, 131], "celebr": 35, "modular": [35, 50, 56], "slight": [35, 38, 54], "mainlin": 35, "clarif": [35, 107], "jpg": 36, "dia": 36, "THE": [36, 39, 54], "repo": [36, 51, 80, 90, 140], "won": [36, 47, 54], "a2b": 36, "gz": 36, "gunzip": 36, "painfulli": 36, "reltiv": 36, "cwd": 36, "wq": 36, "gzip": [36, 64, 128], "upset": 36, "awk": [36, 70, 134], "toolkit": [37, 50, 59, 60, 61, 62, 63, 64, 140], "repeatedli": [37, 56, 62, 63], "identif": [37, 79, 83, 86, 90, 91, 92, 101, 104, 116, 120, 125, 126, 127, 128, 135], "100x": [37, 53, 62, 86, 101, 126], "seamlessli": [37, 49], "daisi": [37, 45], "interlock": 37, "fly": [37, 57], "resembl": [37, 55], "heavi": [37, 38], "adjunct": [37, 62], "civilis": 37, "backoff": [37, 101], "punish": 37, "teleceommun": 37, "libcshim": [37, 101], "tranpar": 37, "libsarra": [37, 101], "impract": [37, 44, 45], "darkskyapp": [37, 101], "embryon": 37, "ecpush": [37, 101], "thetannerryan": [37, 101], "golang": [37, 101], "predecessor": 37, "pysarra": [37, 101], "johnthenerd": [37, 101], "dumb": 37, "fabul": 37, "lsyncd": [37, 101], "zsync": [37, 96, 101], "spirit": 37, "50m": [37, 101], "4k": [37, 101], "amen": 37, "lingua": [37, 101], "franca": [37, 101], "glut": 37, "somewhat": [37, 53], "endors": 37, "judgement": 37, "ldm": [37, 101], "nldm": [37, 101], "distributor": [37, 101], "philosoph": 37, "corobor": [37, 101], "netsi": [37, 101], "iblsoft": [37, 101], "IT": [37, 101], "dmz": [37, 44, 57, 101, 120], "softlink": [37, 101], "fest": [37, 101], "globalscap": [37, 101], "eft": [37, 101], "axwai": [37, 101], "xfb": [37, 101], "primeur": [37, 101], "spazio": [37, 101], "tumblewe": [37, 101], "messagewai": [37, 101], "quantum": [37, 101], "html5": [37, 101], "kaaz": [37, 101], "piec": [37, 53], "disinterest": 37, "wholesal": 38, "concis": 38, "elementari": 38, "suffic": 38, "manner": [38, 44, 55], "fcbdir": [38, 116], "_worklist": [38, 116], "incoming_": [38, 116], "rejected_": [38, 116], "ok_": [38, 116], "failed_": [38, 116], "somewh": 38, "pythonpath": [38, 54, 55, 87, 88, 116], "763": [38, 116], "file_noop": [38, 116], "flowcallbackprepend": [38, 116], "_options_": [38, 116], "add_opt": [38, 48, 55, 56, 66, 67, 77, 82, 88, 116, 130, 131], "accel_wget_command": [38, 50, 84, 116], "default_valu": [38, 55, 56, 77, 88, 116], "quantiti": [38, 48, 56, 62, 66, 77, 116], "001": [38, 48, 56, 62, 66, 71, 77, 82, 116, 126, 130, 136], "milisecond": [38, 48, 56, 62, 66, 77, 82, 116], "caten": [38, 48, 56, 62, 64, 66, 77, 116], "mega": [38, 48, 56, 57, 62, 66, 77, 82, 116], "giga": [38, 48, 56, 57, 62, 66, 77, 82, 116, 126, 130], "wget_": [38, 116], "variableexpans": [38, 56, 77, 116], "expans": [38, 56, 116], "_set_": [38, 116], "_sr3_": [38, 116], "_show_": [38, 116], "announce_list": [38, 116], "tracker1": [38, 116], "tracker2": [38, 116], "tracker3": [38, 116], "bytes_per_second": [38, 54, 87, 116, 129], "bytes_p": [38, 54, 87, 116, 129], "chmod_dir": [38, 50, 62, 84, 116, 126], "chmod_log": [38, 50, 55, 84, 88, 116], "rce": [38, 116], "xflow_publ": [38, 57, 116], "25200": [38, 116], "lr_backupcount": [38, 54, 87, 116, 129], "lr_interv": [38, 54, 87, 116, 129], "lr_when": [38, 116, 129], "midnight": [38, 45, 54, 116, 129], "nia": [38, 116], "compil": [38, 67, 76, 116, 131], "message_count_max": [38, 116], "notify_onli": [38, 50, 67, 84, 116, 131], "post_basedir": [38, 39, 41, 48, 50, 55, 56, 69, 77, 84, 88, 116, 129, 133], "post_baseurl": [38, 39, 41, 50, 55, 56, 57, 69, 77, 84, 88, 116, 129, 133], "8001": [38, 116], "post_exchang": [38, 39, 41, 45, 47, 50, 56, 67, 71, 77, 79, 83, 116, 129, 131, 136], "preserve_mod": [38, 47, 49, 50, 81, 83, 84, 116], "preserve_tim": [38, 41, 47, 49, 50, 81, 83, 84, 116], "program_nam": [38, 55, 88, 116], "q_tfeed_sarra": [38, 116], "65966332": [38, 116], "70396990": [38, 116], "52f9": [38, 116], "resolved_exchang": [38, 116], "suppress_duplicates_basi": [38, 50, 84, 116], "tlsrigour": [38, 56, 68, 77, 116, 132], "verbos": [38, 54, 62], "interop": 38, "silent": [38, 56, 62], "geps_untar": 38, "021": [38, 116], "301": [38, 116], "isretri": [38, 116], "popular": 38, "new_inflight_fil": [38, 48, 57, 77, 116], "new_subtop": [38, 48, 55, 66, 69, 82, 88, 116, 130, 133], "new_relpath": [38, 48, 66, 69, 82, 130, 133], "my_new_field": [38, 55, 88, 116], "my_temporary_st": [38, 116], "data_checksum": [38, 116], "rawish": 38, "name_of_opt": [38, 116], "init": [38, 46, 47, 57, 66, 71, 78, 83, 116, 130, 136], "correspon": 38, "uncondition": 38, "freqent": 38, "msg_": [38, 55, 88, 116], "msg_delai": [38, 50, 55, 84, 88, 116], "msg_download": [38, 50, 84, 116], "component": 38, "mechism": 38, "inventori": [38, 116], "clamd": [38, 57, 70, 116, 134], "modules_need": [38, 116], "pyclamd": [38, 54, 57, 70, 87, 116, 134], "lament": [38, 116], "av": [38, 54, 70, 87, 106, 116, 123, 126, 134], "rejoic": [38, 116], "installet": 38, "219": [38, 53, 72, 86, 116, 135], "1993037": [38, 116], "loadcallback": [38, 54, 65, 66, 67, 70, 87, 116, 129, 130, 131, 134], "dcpflow": [38, 116], "clamav": [38, 54, 58, 66, 87, 116, 130], "224": [38, 116], "lrgs_download_redund": [38, 116], "225": [38, 116], "after_post": [38, 54, 57, 65, 66, 87, 116, 130], "filetyp": [38, 70, 116, 134], "ftppoll": [38, 50, 70, 84, 116, 134], "datepars": [38, 50, 55, 70, 84, 88, 92, 116, 134], "pytz": [38, 57, 70, 116, 134], "absent": [38, 70, 116, 134], "redi": [38, 57, 70, 116, 134], "redis_lock": [38, 70, 116, 134], "bulk": [38, 49], "nasa_mls_nrt": [38, 54, 55, 58, 66, 87, 88, 116, 130], "handle_data": [38, 55, 57, 88, 116], "html_page": [38, 55, 88, 116], "line_": [38, 116], "smc_download_cp": [38, 116], "part_clanav_scan": [38, 116], "poll_email_ingest": [38, 47, 83, 116], "ml": [38, 45, 47, 54, 55, 56, 65, 67, 68, 72, 77, 79, 83, 87, 88, 116, 129, 131, 132, 135], "rxpipe_nam": [38, 54, 57, 87, 116], "do_someth": [38, 57, 66, 116, 130], "file_rxpipe_nam": [38, 116], "sep": [38, 48, 66, 82, 116, 130], "flush": [38, 116], "npipe": [38, 116], "rx": [38, 41, 42, 116], "unwieldi": 38, "urlcr": [38, 116], "hardcod": [38, 116], "reopen": 38, "8192": [38, 116], "unpack": [38, 70, 134], "bucket": 38, "children": 38, "dd_root": [38, 116], "msg_2local": [38, 50, 55, 84, 88, 116], "msg2local": [38, 116], "dosometh": [38, 116], "compress": [38, 116], "uncompressed_s": [38, 116], "uncompressed_sum": [38, 116], "uncompress": 38, "ipf": [38, 55, 88, 116], "dcp": [38, 116], "usg": [38, 47, 54, 55, 58, 65, 66, 83, 87, 88, 116, 129, 130], "sioux": [38, 116], "trailer": 38, "antenna": 38, "wallop": [38, 116], "data_handl": [38, 55, 88, 116], "nowflt": [38, 55, 88, 116], "timestr2flt": [38, 55, 56, 77, 88, 116], "st_mtime": [38, 55, 56, 66, 77, 88, 116, 130], "st_mode": [38, 55, 56, 77, 88, 116], "0o775": [38, 55, 88, 116], "aura": [38, 55, 79, 86, 87, 88, 90, 92, 95, 99, 103, 104, 106, 112, 116, 117, 118, 120, 126, 127, 130], "myfnam": [38, 55, 88, 116], "nrt": [38, 47, 54, 55, 57, 65, 83, 87, 88, 116, 129], "amqplib": [38, 46, 56, 77, 78, 116], "pxfilter": 39, "fx_script": [39, 46, 78], "ukmet": [39, 54, 87], "nice": [39, 49], "me": [39, 42, 48, 56, 77, 82, 129], "Of": [39, 42, 54], "pbd": [39, 41, 62, 126], "datainterchang": [39, 54, 87], "chart": 39, "hh": [39, 41, 57, 62, 126], "imv6": 39, "cvt_topng": 39, "fname": [39, 56], "updatepath": [39, 48, 56, 66, 77, 82, 130], "ipath": 39, "base_dir": [39, 47, 49, 50, 63, 81, 83, 84, 106, 127], "opath": 39, "basenam": [39, 56, 62, 77], "topng": 39, "outp": 39, "check_output": 39, "unabl": [39, 53, 64, 71], "on_file_convert": 39, "new_ok": [39, 66, 130], "lstat": [39, 56, 57, 77], "new_messag": 39, "fromfiledata": [39, 55, 56, 66, 69, 77, 88, 130, 133], "inforem": 39, "correct_extens": [39, 55], "datetim": [39, 57, 62, 126], "whatfn": [39, 56, 57, 129], "constructor": [39, 48, 55, 56, 66, 77], "sarracni": 39, "THAT": 39, "AND": [39, 42], "file_pars": 39, "new_msg": 39, "wont": 39, "republish": 39, "uniq": 39, "filepath": [39, 62], "new_extracted_filenam": 39, "successful": 39, "pxatx": [40, 46, 57, 78], "ONE": 40, "TO": [40, 42], "WITH": 40, "remark": 40, "ON": 40, "methodologi": 40, "annonc": [41, 46, 79, 81, 84, 86, 87, 90, 93, 95, 101, 103, 104, 106, 109, 110, 111, 112, 113, 114, 116, 118, 119, 121, 122, 123, 124, 125, 126, 127, 132], "reveiv": 41, "plai": 41, "role": [41, 45, 56, 60, 70, 79], "fortun": [41, 47], "bash": [41, 45, 53, 79, 86], "pull_2_pollsarra": [41, 42], "pxatx1": 41, "bc": 41, "env_aq": 41, "wamr": 41, "converst": 41, "british": 41, "columbia": 41, "ministri": 41, "moe": 41, "aqhidsi": 41, "victoria1": 41, "routemask": 41, "routing_vers": 41, "routingt": 41, "pdsrout": 41, "fakeus": 41, "fakepass": 41, "timeout_get": 41, "pull_sleep": 41, "outgo": [41, 53, 86], "earthnetworks2": 41, "lsi": 41, "poll_pul": 41, "sarra_get_pul": 41, "bc_env_aq_wamr": 41, "get_bc_env_aq_wamr": 41, "doit": [41, 54, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 99, 102, 103, 104, 105, 106, 109, 112, 113, 114, 117, 120, 123, 124, 126, 127, 128, 129, 130, 131, 132, 134, 136, 137], "avoir": [41, 78, 79, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 99, 101, 103, 104, 106, 109, 110, 112, 116, 117, 118, 120, 126, 127, 128, 129, 131, 132, 134], "le": [41, 45, 54, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 93, 94, 95, 97, 98, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 119, 120, 123, 124, 125, 127, 129, 131, 132, 133, 134, 135, 136, 138, 139], "142": [41, 46, 78], "146": [41, 67], "backward": [41, 56, 77], "fakehost": 41, "rx_pull": 41, "29_05_2019_04_25": 41, "lb": [41, 42], "ops1": [41, 42], "srl": [41, 42], "20190529": 41, "provinci": 41, "leaf": [41, 62], "theses": 41, "xs_provinci": 41, "scruten": 41, "dont": [41, 42, 79, 82, 83, 86, 87, 88, 90, 92, 99, 102, 104, 105, 106, 109, 112, 115, 116, 118, 120, 123, 126, 127, 129, 134, 138], "q_feeder": [41, 45, 79], "mg": 41, "withdrawn": [41, 62, 63, 126], "uncom": 41, "mimic": 41, "informatio": 41, "tx": [41, 42], "conplet": 41, "bc_env_aq_wam": 41, "get_bc_env_aq_wam": 41, "ddsr_dev": 41, "xattr_dis": [41, 50, 84], "lv": [41, 44, 120], "bash_profil": [41, 42], "pxl": [41, 42], "ft": 41, "tx_ddsr": 41, "tx_dm": 41, "op1": 41, "op2": 41, "sr_shovel_copi": 41, "provincial_0001": 41, "pxatx2": 41, "stai": [41, 45, 62], "rft": 41, "px1": [41, 42], "px2": [41, 42], "px3": [41, 42], "px4": [41, 42], "px5": [41, 42], "px6": [41, 42], "px7": [41, 42], "px8": [41, 42], "slowwww": 41, "ddsr_scienc": 41, "announcemenst": [41, 59, 60, 61, 62, 63, 64], "readvertis": 41, "8th": 42, "pxsender_2_sarra": 42, "dummi": 42, "fashion": [42, 44, 62], "troup": 42, "conduct": 42, "blindli": [42, 54], "certainli": 42, "tip": 42, "luck": 42, "journei": 42, "poke": 42, "annoi": 42, "convinc": 42, "strike": 42, "accordingli": [42, 51], "do_this_pul": 42, "do_this_send": 42, "sr_sender_one_dai": 42, "sundew_routing_2_sarra_subtop": 42, "msg_from_fil": 42, "pxsender_log": 42, "fx": 42, "trx": 42, "sr_pxatx": 42, "20190804": 42, "sarracania": 42, "issue199": 42, "yesterdai": 42, "saa": 42, "recommand": [42, 117], "hesit": 42, "box": [42, 44, 47, 49, 57], "sharp": 42, "teeth": 42, "accessdepot": 42, "iml": 42, "simplic": [42, 48], "accessdepot_iml": 42, "info_accessdepot": 42, "msg_file": 42, "BE": [42, 53], "INTO": 42, "sr_accessdepot": 42, "iml_01": 42, "IF": 42, "sr_sender_accessdepot": 42, "problemat": 42, "oven": 42, "enought": 42, "requier": [42, 45, 79], "Or": [42, 44, 53, 54], "glossari": 43, "compet": 44, "vener": 44, "pertin": [44, 82, 84, 90, 92, 93, 106, 112, 120, 126, 130], "misapprehens": 44, "advent": 44, "1971": [44, 120], "devic": 44, "collegi": 44, "thirti": 44, "withstand": 44, "nat": [44, 68, 120], "recal": 44, "pat": [44, 120], "cam": [44, 120], "134": [44, 120], "hypertext": [44, 56, 120], "proactiv": [44, 99, 120], "relationship": 44, "exposur": 44, "f5": [44, 120], "barracuda": [44, 120], "decrypt": 44, "oblig": [44, 79, 126], "oner": [44, 45], "supposit": [44, 120], "arguabl": 44, "pronounc": 44, "bottleneck": [44, 120], "commod": 44, "tout": [44, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, 110, 112, 113, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136], "secret": [44, 120], "intrus": [44, 120], "brute": [44, 110, 120], "workload": 44, "stronger": 44, "compromis": 44, "moot": [44, 55], "2228": [44, 120], "unsecur": [44, 57], "inadvertantli": 44, "chroot": [44, 120], "jail": 44, "commonplac": 44, "evildo": 44, "constantli": [44, 46, 53], "defend": 44, "distinguish": 44, "checkpoint": [44, 120], "smartdefens": [44, 120], "bounc": [44, 120], "NOT": [44, 53, 54, 55, 62, 116, 120], "supportcent": [44, 120], "portal": [44, 120], "eventsubmit_dogoviewsolutiondetail": [44, 120], "solutionid": [44, 120], "sk39793": [44, 120], "vax": [44, 120], "room": [44, 45, 57], "although": 44, "symptom": 44, "lengthen": 44, "habit": 44, "unintention": 44, "unencrypt": [44, 45], "microsoft": [44, 120], "msdn": [44, 120], "powershel": [44, 120], "aspx": [44, 120], "prescript": 45, "explanatori": 45, "ram": [45, 79], "700mb": 45, "brokerag": 45, "aggress": [45, 62], "footprint": [45, 57], "proof": [45, 57], "1gb": 45, "ampl": [45, 106], "revert": 45, "pumpus": [45, 79], "adminus": [45, 79], "boul": [45, 79], "destruct": [45, 46, 62], "reboot": [45, 62], "max_queue_s": [45, 56, 77, 79], "prolong": [45, 56, 77, 106], "soe": 45, "620": [45, 79], "msg_by_sourc": [45, 50, 79, 84], "msg_from_clust": [45, 50, 79, 84], "statis": 45, "speedo": [45, 50, 54, 55, 58, 66, 79, 84, 87, 88, 130], "nagio": [45, 79], "rabbit": [45, 46, 67, 69, 78, 79, 131, 133], "scenario": 45, "upstart": [45, 79], "sarra_system": [45, 79], "sarra_us": [45, 79], "groupadd": [45, 70, 79, 134], "useradd": [45, 70, 79, 134], "briefli": [45, 48, 50, 55, 66], "erlang": [45, 46, 67, 69, 78, 79, 131, 133], "nox": [45, 46, 78, 79], "ui": [45, 68, 70, 79, 134], "letsencrypt": [45, 79], "33423": [45, 79], "delta": [45, 68, 79], "pack": [45, 79], "23745": [45, 79], "certonli": [45, 79], "privileg": [45, 46, 73, 78, 79], "congratul": [45, 79], "fullchain": [45, 79], "cert": [45, 79], "donat": [45, 79], "isrg": [45, 79], "eff": [45, 79], "privkei": [45, 79], "chown": [45, 79], "eot": [45, 70, 79], "tcp_listen": [45, 79], "5672": [45, 46, 53, 78, 79, 86], "ssl_listen": [45, 79], "ssl_option": [45, 79], "cacertfil": [45, 79], "certfil": [45, 79], "verify_p": [45, 79], "fail_if_no_peer_cert": [45, 79], "15671": [45, 79], "ssl_opt": [45, 79], "void": 45, "maestrodelconejito": [45, 79], "usermod": [45, 79], "echo": [45, 53, 65, 66, 71, 79, 86, 92, 129, 130, 136], "enter": [45, 79], "retyp": [45, 79], "chsh": [45, 79], "qualifi": 45, "192": [45, 70, 79, 134], "184": [45, 79], "216": [45, 79], "32406": [45, 79], "32k": [45, 79], "65k": [45, 79], "kb": [45, 70, 79, 134], "863": [45, 79], "sr_admin": [45, 79], "su": [45, 79], "nohaypanduro": [45, 79], "anonyom": [45, 79], "piper": [45, 79], "020": [45, 53, 79, 86], "903": [45, 79], "907": [45, 79], "908": [45, 79], "912": [45, 79], "916": [45, 79], "973": [45, 66, 79], "76069129": [45, 79], "80068939": [45, 79], "01191787": [45, 79], "94585787": [45, 79], "987": [45, 79], "60675197": [45, 79], "29220410": [45, 79], "list_exchang": [45, 79], "amq": [45, 46, 78, 79, 106], "fanout": [45, 79], "xl_peter": [45, 79], "xs_anonym": [45, 72, 79, 135], "xs_peter": [45, 79], "list_us": [45, 46, 71, 78, 79, 136], "list_permiss": [45, 79], "q_peter": [45, 79], "him": [45, 79], "overwhelm": [45, 54, 79], "model_giop": [45, 79], "708": [45, 79], "375": [45, 79], "78321126": [45, 79], "82151209": [45, 79], "933": [45, 79], "20160328130240": [45, 79], "645": [45, 79], "20160328": [45, 79], "cwrm": [45, 79], "1300": [45, 79], "297": [45, 79], "201": [45, 53, 64, 79, 86, 128], "1128": [45, 79], "560235": [45, 79], "6451": [45, 79], "f17299b2afd78ae8d894fe85d3236488": [45, 79], "646": [45, 79], "cwsk": [45, 79], "662": [45, 79], "924688": [45, 79], "7041": [45, 79], "8cdc3420109c25910577af888ae6b617": [45, 79], "765": [45, 79], "cwwa": [45, 79], "045": [45, 79], "1129": [45, 79], "306662": [45, 79], "7027": [45, 79], "aabb00e0403ebc9caa57022285ff0e18": [45, 79], "138": [45, 79], "cxvg": [45, 79], "690082": [45, 79], "7046": [45, 79], "186fa9627e844a089c79764feda781a7": [45, 79], "524": [45, 79], "cacn00_cwao_281300__tbo_05037": [45, 79], "c2016": [45, 79], "692": [45, 79], "693": [45, 79], "semi": [45, 79], "writabl": [45, 53], "604": [45, 79], "172": [45, 47, 79, 83], "ua": [45, 54, 65, 66, 79, 87], "20160328143820": [45, 79], "uant01_cwao_281438___22422": [45, 79], "cfbcb85aac0460038babc0c5a8ec0513": [45, 79], "515": [45, 79], "bsqt": [45, 79], "736602": [45, 79], "517": [45, 53, 79, 86], "602": [45, 79], "648599": [45, 79], "328": [45, 53, 57, 79, 86], "rr_": [45, 79], "2xreport": [45, 79], "rr_xreport2": [45, 79], "tast": [45, 48, 53, 67, 79], "rr_anonymous2xreport": [45, 79], "rr_xreport2tsource2": 45, "tsource2": [45, 79], "xr_tsource2": [45, 79], "boulelog": [45, 79], "722": [45, 79], "484": [45, 79], "06413933": [45, 79], "71328785": [45, 79], "732": [45, 79], "20160328202955": [45, 79], "139": [45, 66, 79, 130], "cappi": [45, 79], "xla": [45, 79], "201603282030_xla_cappi_1": [45, 79], "5_rain": [45, 79], "040751": [45, 79], "393": [45, 79], "20160328202956": [45, 79], "212": [45, 79], "201603282030_xmb_cappi_1": [45, 79], "159043": [45, 79], "479": [45, 65, 79], "0_snow": [45, 79], "143819": [45, 79], "528": [45, 79], "119164": [45, 79], "20160328202957": [45, 79], "sn": [45, 65, 66, 79, 130], "cwvr": [45, 79], "snvd17_cwvr_282000___01910": [45, 79], "161522": [45, 79], "642": [45, 79], "406": [45, 79], "snvd17_cwvr_282000___01911": [45, 79], "089808": [45, 79], "snvd17_cwvr_282000___01912": [45, 79], "043441": [45, 79], "723": [45, 79, 130], "20160328202958": [45, 79], "201603282030_wkr_cappi_1": [45, 79], "131236": [45, 79], "prune": [45, 55], "cron": [45, 50, 79, 84], "sarra_clean": [45, 79], "touch": [45, 71, 72, 79, 120, 135, 136], "mindepth": [45, 79], "maxdepth": [45, 79], "rf": [45, 79], "roll": [45, 46], "repetit": 45, "retent": 45, "oldest": [45, 54, 56], "elabor": [45, 64], "parametr": 45, "stop_app": [45, 46, 78, 79], "join_clust": [45, 46, 78, 79], "start_app": [45, 46, 78, 79], "cluster_statu": [45, 46, 78, 79], "set_polici": [45, 46, 78, 79], "bunny1": [45, 46, 78, 79], "bunny2": [45, 46, 78, 79], "101": [45, 53, 55, 79, 86, 88, 131], "vrrp_script": [45, 46, 78, 79], "chk_rabbitmq": [45, 46, 78, 79], "killal": [45, 46, 78, 79], "vrrp_instanc": [45, 46, 78, 79], "eth0": [45, 46, 78, 79], "virtual_router_id": [45, 46, 78, 79], "247": [45, 46, 78, 79], "track_interfac": [45, 46, 78, 79], "advert_int": [45, 46, 78, 79], "preempt_delai": [45, 46, 78, 79], "auth_typ": [45, 46, 78, 79], "auth_pass": [45, 46, 78, 79], "bunop": [45, 46, 78, 79], "virtual_ipaddress": [45, 46, 78, 79], "track_script": [45, 46, 78, 79], "rabbitmq_auth_backend_ldap": [45, 46, 78, 79], "aaa": [45, 46, 78, 79], "clear_password": [45, 46, 78, 79], "auth_backend": [45, 46, 78, 79], "rabbit_auth_backend_ldap": [45, 46, 78, 79], "rabbit_auth_backend_intern": [45, 46, 78, 79], "user_dn_pattern": [45, 46, 78, 79], "ou": [45, 46, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 101, 102, 103, 105, 106, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 127, 128, 129, 130, 131, 132, 134, 135, 137], "use_ssl": [45, 46, 78, 79], "vhost_access_queri": [45, 46, 78, 79], "in_group": [45, 46, 78, 79], "resource_access_queri": [45, 46, 78, 79], "cn": [45, 46, 57, 78, 79, 112], "tag_queri": [45, 46, 78, 79], "guru": 45, "authentif": [45, 78, 79, 86, 90, 103, 104, 106, 112, 124, 125, 126, 127, 135], "authoris": [45, 79], "modn": [45, 79], "modz": [45, 79], "cheer": [45, 79], "simon": [45, 79], "howto": [45, 140], "rabbitmqtt": [45, 79], "1883": [45, 79], "rabbitmq_mqtt": [45, 79], "default_us": [45, 79], "default_pass": [45, 79], "allow_anonym": [45, 79], "xmqtt_public": [45, 79], "tcp_listen_opt": [45, 79], "nodelai": [45, 79], "rabbit_mqtt": [45, 79], "mosquitto_sub": [45, 79], "_anonym": [45, 79], "myshovel": [45, 79], "afeed": [45, 79], "abrok": [45, 79], "from_exchang": [45, 79], "mysub": [45, 79], "asub": [45, 79], "post_": [45, 55, 79], "dd_notifi": [45, 79], "b1": [45, 46, 78, 79], "send_script": [45, 46, 78, 79], "sftp_amqp": [45, 46, 78, 79], "wxofe": [45, 46, 78, 79], "ftp_mode": [45, 46, 78, 79], "nodupl": [45, 46, 78, 79], "umask": [45, 46, 56, 62, 77, 78, 79, 126], "txq": [45, 46, 78, 79], "exchange_nam": [45, 46, 62, 78, 79, 126], "exchange_kei": [45, 46, 78, 79], "exchange_typ": [45, 46, 78, 79], "ensembl": [45, 46, 54, 78, 79, 82, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 103, 104, 106, 109, 110, 112, 113, 114, 115, 116, 117, 120, 123, 126, 128, 132], "86": [45, 46, 78, 79], "24_hr_accum": [45, 46, 78, 79], "xss": [45, 46, 78, 79], "201306061440_xss_24_hr_accum_mm": [45, 46, 78, 79], "20130606144709": [45, 46, 78, 79], "lat": [45, 46, 64, 68, 78, 79, 128, 132], "368449": [45, 46, 78, 79], "168950": [45, 46, 78, 79], "887119": [45, 46, 78, 79], "jargon": [46, 78], "server_3": [46, 78], "1_all": [46, 70, 78, 134], "homepag": [46, 78], "potato": [46, 78], "list_user_permiss": [46, 78], "takeawai": [46, 78], "change_password": [46, 78], "facil": [46, 50, 53, 78, 79, 81, 83, 86, 87, 88, 89, 90, 91, 93, 99, 100, 101, 103, 104, 105, 106, 108, 109, 110, 112, 115, 116, 117, 120, 123, 124, 126, 128, 131, 133, 137], "opt": [46, 56], "pxsender": [46, 78], "pxreceiv": [46, 78], "attach": [46, 47, 78], "insur": 46, "trick": 46, "wouldn": 46, "newslett": [46, 78], "sender_script": [46, 78], "cl": [46, 78], "offlin": 46, "resumpt": 46, "queue_manag": [46, 78], "cram": 46, "multitud": [46, 78], "50mb": [46, 78], "marine_weath": [46, 54, 78, 87], "amqp_expose_db": [46, 78], "dbname": [46, 78], "a985c32cbdee8af2ab5d7b8f6022e781": [46, 78], "498081": [46, 78], "20150120": [46, 78], "iwa": [46, 78], "201501201810": [46, 78], "mm_hr": [46, 78], "20150120180902": [46, 78], "keepaliv": [46, 78], "dera": [46, 78], "redirect": [46, 53, 86], "md5dum": [46, 78], "pull_urp": [46, 78], "pull_amqp_wget": [46, 78], "prefetch_count": [46, 78], "basic_qo": [46, 78], "prefetch_s": [46, 78], "a_glob": [46, 78], "reb": 46, "ted": 46, "tx_amqp_expose_db": [46, 78], "dd_dispatcher_xxxx": [46, 78], "xxxx": [46, 78], "repair": [46, 65], "pop3": [47, 57, 83], "mail": [47, 54, 55, 58, 65, 66, 85, 87, 88, 95, 106, 126, 129, 130], "airnow": [47, 50, 54, 55, 58, 65, 66, 83, 84, 87, 88, 129, 130], "soapshc": [47, 54, 65, 83, 87, 129], "266": [47, 83], "2785187": [47, 83], "1738": [47, 64, 83, 128], "993": [47, 57, 83], "poplib": [47, 57, 83], "imaplib": [47, 57, 83], "unread": 47, "mailbox": 47, "repli": 47, "inbox": 47, "aspymap": [47, 49, 81, 83], "sarra_test_output": [47, 83], "611": [47, 83, 129], "617": [47, 83], "07b3": [47, 49, 81, 83], "unspecifi": [47, 49, 81, 83], "1200": [47, 83], "nonem": [47, 49, 81, 83], "300000m": [47, 49, 81, 83], "default_mod": [47, 49, 50, 81, 83, 84], "default_mode_dir": [47, 49, 81, 83], "default_mode_log": [47, 49, 81, 83], "follow_symlink": [47, 49, 53, 67, 81, 83, 86, 131], "dfsghfgsdfg24": [47, 83], "hotmail": [47, 83], "outlook": [47, 83], "office365": [47, 83], "z": [47, 49, 57, 62, 81, 83, 126], "209715200": [47, 49, 81, 83], "html_parser": [47, 49, 55, 81, 83, 88], "do_pol": [47, 49, 50, 53, 57, 81, 82, 83, 84, 86], "fetcher": [47, 83], "618": [47, 83], "hb_log": [47, 49, 55, 81, 83, 88], "hb_memori": [47, 49, 55, 81, 83, 88], "hb_puls": [47, 49, 81, 83], "on_report": [47, 49, 81, 83], "log_set": [47, 49, 81, 83], "621": [47, 83], "20181003192459": [47, 83], "452392": [47, 83], "20demo20181003_15241538594699_452125": [47, 83], "c2018": [47, 49, 81, 83], "multipurpos": [47, 83], "mime": [47, 64, 83, 128], "convei": 47, "download_email_ingest": [47, 83], "file_email_decod": [47, 83], "sarra_output_test": [47, 83], "159": [47, 83], "64168876": [47, 83], "31529683": [47, 83], "173": [47, 83], "elaps": [47, 49, 55, 65, 66, 67, 81, 83, 88, 130, 131], "006333": [47, 83], "497": [47, 64, 83, 128], "dad": [47, 49, 81, 83], "sarra_doc_test": [47, 83], "demo20181003_15241538594699_452125": [47, 83], "675": [47, 83], "burst": 47, "fetchmail": [47, 83], "cronjob": [47, 83], "shorthand": [48, 55, 62, 66], "__class__": [48, 82], "__module__": [48, 82], "myclass": [48, 66, 82, 130], "basicconfig": [48, 66, 130], "myoption": [48, 66, 82, 130], "usuallythi": [48, 66, 82, 130], "boiler": [48, 66], "plate": [48, 66, 92, 103], "isreallyneed": [48, 66, 82, 130], "messagelist": [48, 57, 77, 82], "metrics_report": 48, "dict": [48, 50, 55, 56, 57, 69, 77, 84, 88, 133], "stop_request": [48, 56, 57], "new_field": 48, "new_baseurl": [48, 49, 66, 69, 81, 82, 130, 133], "new_inflight_path": [48, 55, 57, 88], "post_vers": 48, "gts2wis2": [48, 82], "gtstowis2": [48, 66, 82, 130], "topic_build": [48, 66, 82, 130], "new_incom": [48, 55, 66, 82, 88, 130], "type_suffix": [48, 66, 82, 130], "mapahltoextens": [48, 66, 82, 130], "tpfx": [48, 66, 82, 130], "new_basesubdir": [48, 66, 82, 130], "new_basedir": [48, 56, 66, 77, 82, 130], "new_reldir": [48, 66, 82, 130], "mapahltotop": [48, 66, 82, 130], "outer": [48, 66], "gtstowi": [48, 66, 82, 130], "prescrib": [48, 50, 62, 66], "retrievepath": [48, 55, 57, 64, 88, 116, 128], "cgi": 48, "param1": 48, "nasa_ml": 48, "succinct": [48, 66, 82, 130], "on_data": [48, 56, 77, 82], "scr": [48, 82], "carriag": 48, "mycompon": 48, "ghost": [49, 81], "lake": [49, 68], "reservoir": 49, "cochran": [49, 81], "alberta": [49, 81], "basin": [49, 81], "river": [49, 68, 81], "abriv": [49, 81], "stationdata": [49, 81], "l_hg_05be005_tabl": [49, 81], "abid": 49, "tide": [49, 81], "honolulu": [49, 81], "tidesandcurr": [49, 57, 81], "datagett": [49, 57, 81], "1612340": [49, 81], "water_temperatur": [49, 57, 81], "time_zon": [49, 57, 81], "web_servic": [49, 57, 81], "csv": [49, 57, 62, 81], "woke": 49, "misguid": 49, "bargain": 49, "shini": 49, "poll_noaa": [49, 55, 81, 88], "download_noaa": [49, 55, 81, 88], "704": [49, 81], "noaapol": [49, 81], "706": [49, 81], "709": [49, 81], "1611400": [49, 81], "20180926192658": [49, 81], "403634": [49, 81], "ops__1611400__wt": [49, 81], "554": [49, 81], "water_level": [49, 81], "stnd": [49, 81], "554364": [49, 81], "ops__1611400__wl": [49, 81], "691": [49, 81], "691466": [49, 81], "ops__1612340__wt": [49, 81], "833": [49, 81], "834": [49, 72, 81, 135], "833992": [49, 81], "ops__1612340__wl": [49, 81], "965": [49, 81], "473": [49, 81], "baseurldownload": [49, 81], "478": [49, 65, 66, 81], "90449861": [49, 81], "55888967": [49, 81], "488": [49, 81], "007632": [49, 81], "751": [49, 81], "noaa_20180926_1926_1611400_tp": [49, 81], "hydro_examples_sarra": [49, 81], "888": [49, 81], "noaa_20180926_1926_1611400_wl": [49, 81], "889": [49, 69, 81], "026": [49, 81], "noaa_20180926_1926_1612340_tp": [49, 81], "170": [49, 81], "noaa_20180926_1926_1612340_wl": [49, 81], "171": [49, 81], "597": [49, 81], "wdsl": [49, 81], "hydrographiqu": [49, 81], "du": [49, 54, 78, 79, 80, 81, 82, 84, 86, 88, 89, 91, 93, 94, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 115, 117, 119, 120, 122, 123, 124, 126, 127, 130, 131, 132, 135, 138], "datanam": [49, 81], "latitudemin": [49, 81], "latitudemax": [49, 81], "longitudemin": [49, 81], "longitudemax": [49, 81], "depthmin": [49, 81], "depthmax": [49, 81], "datemin": [49, 81], "datemax": [49, 81], "sizemax": 49, "metadataselect": [49, 81], "acadia": [49, 81], "cove": [49, 81], "nunavut": [49, 81], "wl": [49, 81], "station_id": [49, 81], "4170": [49, 81], "asc": [49, 81], "deciph": 49, "poll_shc_soap": [49, 81], "download_shc_soap": [49, 81], "parametercd": [49, 57, 81], "discharg": [49, 57], "vermilion": [49, 81], "bismarck": [49, 81], "il": [49, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137], "waterservic": [49, 57, 81], "nwi": [49, 57, 81], "iv": [49, 57, 81], "waterml": [49, 57, 81], "03338780": [49, 81], "pt3h": [49, 57, 81], "00060": [49, 57, 81], "00065": [49, 57, 81], "00011": [49, 57, 81], "tailor": [49, 57], "poll_usgs_nb_stn": [49, 81], "poll_usg": [49, 55, 81, 88], "download_usg": [49, 81], "canhi": [49, 81], "toggl": 49, "disclaim": 49, "realtim": 49, "heed": 50, "seriou": 50, "entitl": 50, "postformat": [50, 84], "messsag": [50, 84], "is_subsubscrib": [50, 84], "pubfactori": [50, 56, 69, 77, 84, 133], "subfactori": [50, 56, 68, 77, 84, 132], "is_subscrib": [50, 56, 77, 84], "669": [50, 130], "union": [50, 56, 62, 77, 110], "prefac": 50, "strftime": [50, 55, 62, 66, 88, 126], "please_stop_immedi": 50, "v2compatrenamedoublepost": 50, "547": 50, "dataless": [50, 54, 119], "instat": [50, 63], "singleton": [50, 53, 62, 84, 86, 119, 126], "tz": [50, 84], "launchpad": [50, 70, 84, 134], "harmon": 50, "cmqb": [50, 84], "dash": 50, "ls_file": 50, "file_time_limit": [50, 84], "rewrit": 50, "accel_scp_threshold": [50, 84], "accel_wget_threshold": [50, 84], "cache_basi": [50, 84, 126], "default_dir_mod": [50, 84], "default_log_mod": [50, 84], "exchange_split": [50, 84], "hb_memory_baseline_fil": [50, 84], "memorybaselinefil": [50, 57, 67, 84, 131], "hb_memory_max": [50, 84], "memorymax": [50, 57, 67, 84, 131], "hb_memory_multipli": [50, 84], "memorymultipli": [50, 57, 67, 84, 131], "log_format": [50, 84], "logdai": [50, 84], "no_dupl": [50, 84], "post_document_root": [50, 84], "post_exchange_split": [50, 79, 84], "post_topic_prefix": [50, 84], "report_back": [50, 79, 84, 129], "source_from_exchang": [50, 79, 84], "on_": [50, 55, 84, 88], "nov": [50, 54, 84, 87], "gcc": [50, 54, 55, 84, 87, 88], "copyright": [50, 54, 55, 67, 69, 84, 87, 88, 131, 133], "credit": [50, 54, 55, 84, 87, 88], "licens": [50, 54, 55, 67, 69, 73, 76, 84, 87, 88, 131, 133], "pprint": [50, 84], "pp": [50, 84], "prettyprint": [50, 84], "convert_to_v3": [50, 55, 84, 88], "file_email": [50, 55, 84, 88], "ls_file_index": [50, 84], "no_download": [50, 84], "msg_2http": [50, 55, 57, 84, 88], "tohttp": [50, 54, 55, 58, 66, 84, 87, 88, 130], "toloc": [50, 54, 58, 66, 84, 87, 130], "msg_2localfil": [50, 55, 84, 88], "msg_wmo_type_suffix": [50, 55, 84, 88], "wmotypesuffix": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_by_us": [50, 84], "messagedelai": [50, 84], "msg_delet": [50, 55, 84, 88], "msg_download_baseurl": [50, 84], "downloadbaseurl": [50, 54, 58, 66, 84, 87, 130], "msg_fdelai": [50, 55, 84, 88], "msg_gts2wistop": [50, 55, 84, 88], "msg_hour_tre": [50, 84], "hourtre": [50, 54, 58, 66, 84, 87, 130], "msg_http_to_http": [50, 84], "httptohttp": [50, 54, 58, 66, 84, 87, 130], "msg_overwrite_sum": [50, 84], "msg_print_lag": [50, 84], "printlag": [50, 54, 58, 66, 84, 87, 130], "msg_rename4jicc": [50, 55, 84, 88], "rename4jicc": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_rename_dmf": [50, 55, 84, 88], "renamedmf": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_rename_whatfn": [50, 55, 84, 88], "renamewhatfn": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_renam": [50, 84], "msg_save": [50, 84], "msg_skip_old": [50, 84], "skipold": [50, 84], "msg_speedo": [50, 55, 84, 88], "msg_stdfile": [50, 84], "msg_stopper": [50, 55, 84, 88], "msg_sundew_pxrout": [50, 55, 84, 88], "sundewpxrout": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_test_retri": [50, 84], "testretri": [50, 54, 58, 66, 84, 87, 130], "toclust": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_total": [50, 84], "post_hour_tre": [50, 66, 84, 130], "posthourtre": [50, 54, 58, 66, 84, 87, 130], "post_long_flow": [50, 84], "longflow": [50, 54, 58, 66, 84, 87, 130], "post_overrid": [50, 84], "postoverrid": [50, 54, 58, 66, 84, 87, 130], "post_tot": [50, 84], "post_total_sav": [50, 84], "wmo2msc": [50, 54, 55, 58, 66, 84, 87, 88, 130], "msg_pclean_f90": [50, 55, 57, 84, 88], "msg_pclean_f92": [50, 55, 84, 88], "windows_run": [50, 84], "superced": 50, "entrypoint": [50, 51, 56, 84], "accel_scp_command": [50, 84], "accel_ftpget_command": [50, 84], "accel_ftpput_command": [50, 84], "fqdn": [50, 84], "container": 51, "orchestr": [51, 80], "norm": [51, 79, 80, 82, 89, 90, 92, 93, 96, 101, 105, 106, 112, 120, 126, 128], "administ": [52, 68], "adddendum": [52, 85], "grab": [52, 57], "hydrometr": [52, 54, 57, 87], "immatur": 52, "tight": 53, "disappoint": 53, "i_notifi": [53, 86], "neccessari": 53, "indirect": [53, 62, 86, 126], "utf8": [53, 64, 86, 128], "classif": [53, 82, 84, 86, 88, 99, 106, 107, 116], "rnd": [53, 86], "rndpw": [53, 86], "grumpi": [53, 86], "frog": [53, 86], "dna": [53, 86], "014": [53, 86], "019": [53, 54, 86, 87], "20160120145349": [53, 86], "d108dcff28200e8d26d15d1b3dfeac1c": [53, 86], "418": [53, 86], "20160120": [53, 86], "419": [53, 86], "420": [53, 86], "424": [53, 86], "404653": [53, 86], "test_clust": [53, 86], "376": [53, 86], "360282": [53, 86], "381": [53, 86], "treefrog": [53, 86], "dissem": [53, 86], "costli": 53, "somehow": [53, 65], "sr_sender2": [53, 86], "poll_script": [53, 86], "afterward": 53, "part_threshold": [53, 86], "fiction": [53, 86], "algo": [53, 55, 86, 88], "uninterest": 53, "harm": 53, "supplement": 53, "cap_provinc": [53, 86], "ontario": [53, 86], "cap_area": [53, 86], "desc": [53, 86], "uxbridg": [53, 86], "20beaverton": [53, 86], "20northern": [53, 86], "20durham": [53, 86], "20region": [53, 86], "cap_polygon": [53, 86], "9984": [53, 86], "79": [53, 86], "2175": [53, 86], "9988": [53, 86], "2212": [53, 86], "3158": [53, 86], "4664": [53, 86], "2343": [53, 54, 86, 87], "5121": [53, 86], "1451": [53, 86], "5135": [53, 86], "1415": [53, 86], "5136": [53, 86], "1411": [53, 86], "5137": [53, 86], "1407": [53, 86], "5138": [53, 86], "5169": [53, 86], "0917": [53, 86], "0879": [53, 86], "0823": [53, 86], "218": [53, 86], "7659": [53, 86], "0832": [53, 86], "7047": [53, 86], "artifici": 53, "whera": [53, 55], "recipi": [53, 62], "opppos": 53, "represent": [53, 55, 56, 77], "somepost": [53, 86], "pyiotest": [53, 86], "hello": [53, 86], "test2": [53, 86], "pwd": [53, 86], "test_post": [53, 86], "hoho_my_darl": [53, 86], "lacklab": [53, 86], "092": [53, 86], "log_level": [53, 86], "cache_fil": [53, 86], "094": [53, 86], "xs_tsource_cpost_watch": [53, 86], "ismatchingpattern": [53, 86], "096": [53, 86], "file2messag": [53, 86], "sb": [53, 86], "0x7ffef2aae2f0": [53, 86], "islnk": [53, 86], "isdir": [53, 86], "isreg": [53, 86], "20171021202044": [53, 86], "a0bcb70b771de1f614c724a86169288ee9dc749a6c0bbb9dd0f863c2b66531d21b65b81bd3d3ec4e345c2fea59032a1b4f3fe52317da3bf075374f7b699b10aa": [53, 86], "20171021202002": [53, 86], "304": [53, 64, 67, 69, 86, 128, 133], "atim": [53, 56, 62, 67, 68, 69, 71, 77, 86, 126, 131, 132, 133, 136], "0644": [53, 86], "0x7ffeb02838b0": [53, 86], "9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043": [53, 86], "320": [53, 86], "0x7ffc8250d950": [53, 86], "116": [53, 86], "f5595a47339197c9e03e7b3c374d4f13e53e819b44f7f47b67bf1112e4bd6e01f2af2122e85eda5da633469dbfb0eaf2367314c32736ae8aa7819743f1772935": [53, 86], "15117": [53, 86], "WILL": 53, "kk": [53, 62, 86, 126], "night": 53, "20151105": [54, 87], "20151106": [54, 87], "20151107": [54, 87], "20151108": [54, 87], "20151109": [54, 87], "20151110": [54, 87], "unidata": [54, 57, 87], "ucar": [54, 57, 87], "noaaport": [54, 87], "opsnet": [54, 87], "icon": [54, 87], "about_dd_apropo": [54, 87], "0k": [54, 87], "air_qual": [54, 87], "barometri": [54, 87], "meteocod": [54, 87], "model_gdsp": [54, 87], "model_gdwp": [54, 87], "sought": 54, "ae": [54, 87], "broadcast": 54, "4800": [54, 87], "bp": [54, 87], "14000": [54, 87], "maritim": [54, 87], "047": [54, 87], "10m": [54, 63, 65, 87, 127, 129], "clutter": 54, "3h": [54, 87], "former": [54, 64, 81, 90, 113, 114, 126], "priorit": 54, "citi": 54, "attend": [54, 79, 86, 87, 88, 90, 92, 99, 103, 104, 109, 112, 123, 126, 135], "sur": [54, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 116, 117, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 139], "serveur": [54, 79, 81, 83, 84, 86, 88, 89, 90, 93, 96, 97, 101, 103, 105, 106, 109, 110, 111, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 132, 134, 138], "exc\u00e8der": 54, "la": [54, 59, 78, 79, 80, 81, 82, 83, 84, 85, 86, 89, 91, 93, 94, 96, 97, 98, 100, 101, 103, 104, 105, 107, 108, 110, 111, 113, 114, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139], "dur\u00e9": [54, 87, 89, 92, 99, 103, 106, 110, 116, 118, 126, 127], "maximal": [54, 80, 86, 87, 88, 89, 90, 92, 93, 95, 101, 106, 112, 117, 126, 128], "pann": [54, 79, 90, 93, 101, 102, 106, 117, 123, 126, 132], "qu": [54, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134], "veut": [54, 79, 82, 87, 90, 92, 104, 105, 106, 120, 124, 126, 127, 130, 134], "tol\u00e9rer": 54, "san": [54, 78, 79, 85, 86, 87, 89, 90, 92, 93, 95, 99, 101, 102, 103, 104, 106, 109, 110, 112, 117, 119, 120, 126, 127, 128, 129, 130, 131, 134, 135, 138], "pert": [54, 78, 106, 117, 126], "jour": [54, 79, 82, 86, 87, 88, 90, 91, 92, 95, 99, 101, 103, 106, 109, 110, 112, 118, 120, 123, 126, 128, 130], "datamartclon": [54, 87], "captur": [54, 56, 57, 137], "ddc_hipri": [54, 87], "AS": 54, "interspers": 54, "ddi_ninjo_part1": [54, 87], "abfs_1": [54, 87], "aqhi_1": [54, 87], "amdar_1": [54, 87], "catalog_common": [54, 87], "scit_sac": [54, 87], "sac": [54, 87], "sac_maxr": [54, 87], "scit_track": [54, 87], "track_maxr": [54, 87], "catalog": 54, "perceiv": 54, "amserv": [54, 65, 66, 87, 130], "am_send": [54, 65, 87], "hpfxwis2downloadal": [54, 65, 87, 129], "hpfx_citypag": [54, 65, 87], "ping": [54, 65, 87, 129], "513": 54, "3286889": 54, "977": [54, 87], "3286919": [54, 87], "194": [54, 87], "q_anonymous_subscrib": [54, 65, 66, 87, 130], "67711727": [54, 87], "37906289": [54, 87], "241": [54, 87], "564": [54, 70, 87, 134], "20221207": [54, 87], "kwal": [54, 65, 66, 87, 129, 130], "srwa20_kwal_071739___7440": [54, 87], "srmn70_kwal_071739___39755": [54, 87], "srcn40_kwal_071739___132": [54, 87], "srmn20_kwal_071739___19368": [54, 87], "sx": [54, 65, 66, 87, 129, 130], "sxak50_kwal_071739___15077": [54, 87], "957": [54, 87], "227": [54, 87], "srcn40_kwal_071739___40860": [54, 87], "knka": [54, 87], "saak41_knka_071739___36105": [54, 87], "srcn40_kwal_071739___19641": [54, 87], "srcn40_kwal_071739___44806": [54, 87], "uant01_cwao_071739___24012": [54, 87], "098": [54, 87], "unreason": 54, "rapidli": 54, "rougli": 54, "oflload": 54, "accel_cp": [54, 87], "optimi": 54, "transer": 54, "amortis": 54, "plateau": 54, "satur": [54, 87], "haven": [54, 57], "slip": 54, "redud": 54, "quorum": [54, 87], "viewabl": 54, "v2p": [54, 87], "hk_police_queu": [54, 87], "mdelaylatest": [54, 58, 66, 87, 119, 130], "noaa_hydrometr": [54, 55, 58, 66, 87, 88, 130], "shiftdir2baseurl": [54, 58, 66, 87, 130], "wistre": [54, 55, 58, 66, 87, 88, 130], "recap": 54, "_use": 54, "interpretr": 54, "anyther": 54, "mknod": [54, 87], "topicpredix": [54, 87], "29823": [54, 87], "clam_scan": [54, 87], "865": [54, 87], "866": [54, 69, 87], "easter1": [54, 87], "dangerwillrobinson": [54, 87, 129], "022": [54, 68, 87], "867": [54, 87], "140": [54, 65, 87], "dd4": [54, 87], "20220312": [54, 87], "cogi": [54, 87], "2344": [54, 87], "347": [54, 87], "30992": [54, 87], "2347": [54, 87], "cvpx": [54, 87], "avscan_hit": [54, 87], "part_clamav_scan": [54, 87], "00579023": [54, 87], "virus": [54, 87], "385": [54, 87], "695": [54, 87], "cotr": [54, 87], "2348": [54, 87], "571": [54, 87], "596": [54, 87], "0243611": [54, 87], "637": [54, 67, 87, 130], "cwgd": [54, 87], "844": [54, 69, 87, 133], "809": [54, 87], "30070": [54, 87], "cwjx": [54, 87], "930": [54, 87], "cajt": [54, 87], "104": [54, 87, 131], "0003829": [54, 87], "myconfig": [54, 87], "sr_subscribe_myflow_01": [54, 87], "xdg_cache_hom": [54, 87], "alia": [54, 56, 62, 77, 87, 126], "judici": 54, "cpu_tim": [54, 65, 66, 67, 87, 130, 131], "97": [54, 87], "housekeeping_stat": [54, 87], "242": [54, 87], "778": [54, 87], "931": [54, 87], "yourproxi": [54, 87], "https_proxi": [54, 87], "4_api_moth_sub_demo": [54, 87], "5_api_moth_post_demo": [54, 87], "introduct": [55, 65, 85, 88, 96, 110, 129], "bolt": 55, "stilt": 55, "oh": [55, 88], "gee": [55, 88], "callabl": 55, "walkthrough": 55, "glob": [55, 88], "centric": 55, "accept_scp_threshold": [55, 88], "crutch": 55, "pluginnam": [55, 88], "violat": 55, "myfavouriteclass": [55, 88], "myfavoriteclass": 55, "myplugin": [55, 88], "har": 55, "clue": 55, "_import_": [55, 88], "dunno": 55, "mess": 55, "optionnam": [55, 88], "defaultvalu": [55, 88], "myconf": [55, 88], "custom_setting_th": [55, 88], "customsettingth": [55, 88], "untouch": 55, "writen": 55, "sumflg": [55, 88], "sumstr": [55, 88], "sumstrfrommessag": [55, 57], "my_new_valu": [55, 88], "local_fil": [55, 56, 77, 88], "post_hc": [55, 88], "hostconnect": [55, 88], "cocorahs_precip": 55, "set_notic": 55, "somet": 55, "old_list": [55, 88], "simialr": 55, "partstr": [55, 62, 88, 126], "sample_filenam": [55, 66, 69, 88, 130, 133], "sumalgo": [55, 88], "builder": 55, "smtp": [55, 88], "fileish": 55, "webdav": [55, 57, 88], "obei": 55, "l144": [55, 88], "declare_opt": [55, 88], "poll_usgs_stn_fil": [55, 57, 88], "l777": [55, 88], "comprehens": 55, "THERE": 55, "NO": 55, "hb_cach": [55, 88], "verison": 55, "download_someth": 55, "unneed": 55, "uptod": [55, 62], "fromfileinfo": [55, 56, 66, 77, 88, 130], "factori": [55, 56, 57, 68, 77, 88, 132], "gathered_messag": [55, 88], "pollmtim": [55, 88], "to_timezon": [55, 88], "mtimestamp": [55, 88], "mktime": [55, 88], "timetupl": [55, 88], "fsize": [55, 88], "info_from_pol": [55, 88], "mtimstamp": [55, 88], "st_atim": [55, 56, 62, 77, 88, 126], "st_size": [55, 56, 66, 77, 88, 130], "0o666": [55, 88], "poll_no_vip": [55, 88], "recent_fil": [55, 88], "nsa_mls_nrt": [55, 88], "htmlparser": [55, 88], "handle_starttag": [55, 88], "attr": [55, 88], "href": [55, 57, 88], "rwxr": [55, 88], "xr": [55, 88], "sdate": [55, 88], "strptime": [55, 88], "60min": [55, 88], "24hr": [55, 88], "31dai": [55, 88], "epochf": [55, 88], "month_in_sec": [55, 88], "mydat": [55, 88], "mysiz": [55, 88], "maniupul": [55, 88], "parseabl": [55, 57], "retrievalurl": [55, 88], "awcn70_cwul": [55, 88], "sender_renamer_add_d": [55, 88], "aacn01_cwao_160316___00009": [55, 88], "cmcin": [55, 88], "aa": [55, 57, 88], "20170316031754": [55, 88], "aacn01_cwao_160316___00009_20170316031254": [55, 88], "tok": [55, 88], "datestr": [55, 66, 88], "gmtime": [55, 66, 88], "valeur_path": [55, 88], "datstr": [55, 88], "new_path": [55, 56, 57, 88], "destfn_script": [55, 88, 116, 129], "fb": [55, 88], "txt_20220725130328": [55, 88], "dupe": [55, 88], "file_": [55, 88], "poll_": [55, 88], "hb_": [55, 88], "treeifi": [55, 88], "data_": [55, 88], "destfn_sampl": [55, 88], "file_ag": [55, 88], "file_delet": [55, 88], "file_rxpip": [55, 88], "resmot": 55, "msg_filter_wmo2msc": [55, 88], "msg_pclean": [55, 57, 88], "pcleanf90": [55, 88], "pcleanf92": [55, 88], "hb_retri": [55, 88], "poll_email": [55, 88], "poll_nexrad": [55, 57, 88], "autodoc": 56, "copydict": [56, 77], "__computeident": [56, 69, 77], "__weakref__": [56, 57, 77], "maximum_field_length": [56, 77], "fiven": [56, 77], "fromstream": [56, 77], "getcont": [56, 68, 77, 132], "messat": [56, 77], "ineffici": [56, 77], "untest": [56, 57, 77], "setreport": [56, 77], "msg_set_report": [56, 77], "ommit": [56, 77], "updast": [56, 77], "msg_valid": [56, 77], "factoryi": [56, 77], "q_anonymous_": [56, 68, 77, 132], "getfqdn": [56, 68, 77, 132], "_somethinghelpfultoy": [56, 68, 77], "moth_api_consum": [56, 77], "sftp_attr": [56, 77], "emul": [56, 77], "fmdstat": [56, 77], "utcinteg": [56, 77], "0o644": [56, 77], "size_in_byt": [56, 77], "nameofthefil": [56, 77], "longnam": [56, 77], "lrwxrwxrwx": [56, 77], "anounc": [56, 77], "timeconvers": [56, 77], "epoch": [56, 77], "fraught": [56, 77], "leap": [56, 77], "msec": [56, 77], "2032": [56, 77], "rollov": [56, 77], "time_t": [56, 77], "durationtosecond": [56, 77], "str_valu": [56, 77], "1w": [56, 62, 77, 126], "4d": [56, 77], "12h": [56, 77], "ctime": [56, 77], "subsecond": [56, 77], "accuraci": [56, 77], "immut": [56, 77], "timeflt2str": [56, 77], "yyyymmddthhmmss": [56, 64, 77, 128], "sssss": [56, 77], "20210921t011331": [56, 77], "0123": [56, 77], "sept": [56, 77, 110, 126], "21st": [56, 77], "one_config": [56, 77], "ispost": [56, 77], "configu": [56, 77], "default_config": [56, 69, 77, 133], "no_file_config": [56, 67, 77, 131], "flow_demo": [56, 67, 77, 131], "subscriber_test2": [56, 67, 77, 131], "__deepcopy__": 56, "memo": 56, "1500718": 56, "deepcopi": 56, "7ish": 56, "issue10076": 56, "_build_mask": 56, "_parse_bind": 56, "subtopic_str": 56, "sqwawk": 56, "_parse_set": 56, "_parse_v2plugin": 56, "_resolve_exchang": 56, "_sundew_basename_part": 56, "senderftp": 56, "_validate_urlstr": 56, "expanded_url": 56, "_varsub": 56, "addbind": [56, 77], "option_str": [56, 77], "dest": [56, 77], "narg": [56, 77], "const": [56, 77], "metavar": [56, 77], "__call__": 56, "all_valu": [56, 77], "applycomponentdefault": [56, 77], "overlai": [56, 77], "dictifi": [56, 69, 77, 133], "infer": [56, 77], "mask_ppstr": [56, 77], "oth": [56, 77], "substituion": [56, 77], "parse_arg": [56, 77], "configgur": [56, 77], "placehold": [56, 77], "parsearg": [56, 77], "presenc": [56, 57, 64, 77], "store_tru": [56, 77], "rememb": [56, 67, 77], "sundew_dirpattern": [56, 77], "destdir": [56, 77], "cdir": [56, 77], "substiturion": [56, 77], "70m": [56, 77], "20221107": [56, 77], "timeoffset": [56, 77], "config_path": [56, 77], "ctype": [56, 77], "configish": [56, 77], "path_of_file_found": [56, 77], "config_that_was_not_found": [56, 77], "get_log_filenam": [56, 77], "logfil": [56, 59, 60, 63, 64, 77], "get_pid_filenam": [56, 77], "get_user_cache_dir": [56, 77], "appdir_stuff": [56, 77], "str_option": [56, 77], "exchange_suffix": [56, 67, 77, 131], "post_format": [56, 69, 77], "post_top": [56, 77], "nodupe_driv": [56, 57, 77], "sr_replai": [56, 77], "__str__": 56, "credentialdb": 56, "unused_logg": 56, "theserv": 56, "_pars": 56, "_resolv": 56, "cred": 56, "cache_result": 56, "istru": 56, "safeti": 56, "retry_cach": 56, "retry_path": [56, 129], "diskqueue_": 56, "ack_id": [56, 67, 68, 77, 131, 132], "retreiv": [56, 57], "retry_list": 56, "coarser": 56, "persistentqueu": 56, "__len__": 56, "_count_msg": 56, "file_path": 56, "maximum_messages_to_get": 56, "qty": 56, "in_cach": 56, "is_expir": 56, "msg_get_from_fil": 56, "fp": 56, "needs_requeu": 56, "queue_fil": 56, "unretri": 56, "hk": 56, "message_list": 56, "unlix": 56, "sr_attr": 56, "gracefulli": 56, "dirrectories_ok": 56, "_runcallbackmetr": 56, "metricsreport": [56, 57, 77], "plugin_nam": 56, "file_should_be_download": 56, "warrant": [56, 64], "corrent": 56, "content_should_not_b": 56, "link1fil": 56, "doit_download": 56, "removeonefil": 56, "renameoneitem": 56, "set_local_file_attribut": 56, "sundew_getdestinfo": 56, "currentfileopt": 56, "maskdir": 56, "maskfileopt": 56, "path_strip_count": 56, "toe": 56, "write_inline_fil": 56, "discov": 56, "customiz": [56, 62], "thin": 56, "redirectedtimedrotatingfilehandl": 56, "backupcount": 56, "attim": 56, "timedrotatingfilehandl": 56, "dorollov": 56, "registr": [56, 77, 108], "set_path": [56, 77], "update_fil": [56, 77], "setter": 56, "v2name": 56, "minimalist": 56, "prop": [56, 77], "fran\u00e7ai": [56, 76, 77, 91, 110, 121, 140], "organis\u00e9": [56, 77, 112, 116, 132], "th\u00e8me": [56, 77, 79, 103, 106, 108, 116, 121, 126, 127], "hierarchiqu": [56, 77, 106], "delivery_tag": [56, 77], "default_opt": [56, 68, 77, 132], "newmessag": [56, 67, 68, 77, 131, 132], "putnewmessag": [56, 69, 77, 133], "tear": [56, 77], "amqpv0": [56, 77], "celeri": [56, 77], "mqttv3": [56, 77], "amqpv1": [56, 77], "messaging_strategi": [56, 77], "eras": [56, 77], "tax": [56, 77], "5d": [56, 77], "strive": [56, 77], "recovery_strategi": [56, 77], "sr_broker": [56, 77], "getnewmessag": [56, 67, 68, 77, 131, 132], "rxbytecount": [56, 77], "rxgoodcount": [56, 77], "rxbadcount": [56, 77], "metricsdisconnect": [56, 77], "content_typ": [56, 77], "txbytecount": [56, 77], "txgoodcount": [56, 77], "txbadcount": [56, 77], "__connect": 56, "stubbor": 56, "getsetup": [56, 67, 131], "amqp_ss_maxlen": 56, "libqpid": 56, "broker_get_exchang": 56, "ssl_key_fil": 56, "ssl_cert_fil": 56, "del_us": 56, "exec_rabbitmqadmin": 56, "get_exchang": 56, "get_queu": 56, "get_us": 56, "run_rabbitmqadmin": 56, "user_access": 56, "lox": 56, "loq": 56, "routing_kei": 56, "timeoutexcept": [56, 77], "remote_offset": [56, 77], "local_offset": [56, 67, 68, 69, 77, 131, 132, 133], "getacceller": [56, 77], "putacceler": [56, 77], "perm": [56, 77], "torn": [56, 62, 77], "throttl": [56, 62, 77], "itim": [56, 77], "roud": [56, 77], "hypertext_transfer_protocol": 56, "accelwgetcommand": [56, 62, 67, 126, 131], "datatrack": 56, "rfc959": 56, "accelftpputcommand": [56, 62, 126], "ncftpput": [56, 62, 126], "accelftpgetcommand": [56, 62, 126], "ncftpget": [56, 62, 126], "ftplib": 56, "secsh": 56, "filezilla": 56, "filexf": 56, "accelscpcommand": [56, 62, 126], "class_logg": [57, 77], "on_plugin": [57, 77], "directories_ok": [57, 66, 77, 130], "posess": [57, 77], "futher": [57, 77], "on_cleanup": [57, 77], "on_declar": [57, 77], "tin": [57, 77], "please_stop": [57, 65, 66, 67, 77, 130, 131], "nap": [57, 77], "load_librari": [57, 62, 77, 126], "factory_path": [57, 77], "downlaod": 57, "checksum_method": 57, "imper": 57, "get_sumstr": 57, "toolong": 57, "admz": 57, "postoverridedel": 57, "20151224035429": 57, "21364": 57, "20151224": 57, "eggi": 57, "sauk32_eggy_240350__egaa_64042": 57, "gaug": 57, "cacn00_cwao_081900__wzs_14623": 57, "20081008190602": 57, "datetimestamp": 57, "20081008190612": 57, "compoat": 57, "international_surfac": 57, "mdicp4d": 57, "20160223124648": 57, "restore_to_queu": 57, "msgsavefil": 57, "_9999": 57, "sav": 57, "9999": [57, 64, 128], "sychron": 57, "speedomet": 57, "msgspeedointerv": 57, "msg_speedo_maxlag": 57, "pxrout": 57, "pdspx": 57, "pxclient": 57, "navcan": 57, "membership": 57, "clientalias": 57, "ahls_to_rout": 57, "randomli": 57, "beleiv": 57, "msgtoclust": 57, "tofil": 57, "savedurl": 57, "tolocalurl": 57, "parenthes": 57, "companion": 57, "d1": 57, "d2": 57, "fn": [57, 67, 131], "d3": 57, "saved_baseurl": 57, "saved_relpath": 57, "20171003131233": 57, "494": [57, 133], "20171003": 57, "cmoe": 57, "productx": 57, "giftopng": 57, "gif2png": 57, "gifpath": 57, "pngpath": 57, "recogniz": 57, "prog": 57, "oi": 57, "operational_inform": 57, "wmo_386": 57, "ahlsymbol": 57, "tablea": 57, "discrep": 57, "xw": 57, "ix": 57, "american": 57, "hdf": 57, "unsur": 57, "kosher": 57, "halal": 57, "bless": 57, "iu": 57, "bufr": 57, "anti": 57, "subsscrib": 57, "renamed_": 57, "message_delai": 57, "f31": 57, "input_fil": 57, "output_fil": 57, "dir1": 57, "dir2": 57, "dir3": 57, "newdir4": 57, "cut": 57, "filter_wmo2msc_replace_dir": 57, "filter_wmo2msc_uniquifi": 57, "_yyyymmddhhmmss_99999": 57, "filter_wmo2msc_convert": 57, "charat": 57, "filter_wmo2msc_tre": 57, "sacn37": 57, "300104": 57, "ttaaii_cccc_yygggg_": 57, "uniquifi": 57, "sacn37_cwao_300104_1c699da91817cc4a84ab19ee4abe4e22": 57, "supplementari": 57, "hint": [57, 62], "dospecificprocess": 57, "washington": 57, "bulletinmanagerwmo": 57, "replacechar": 57, "oldchar": 57, "newchar": 57, "bytearrai": 57, "recurs": [57, 62], "horribli": 57, "listdir": 57, "scandir": 57, "post1fil": 57, "is_directori": 57, "signifi": [57, 78, 79, 86, 87, 89, 90, 92, 93, 95, 98, 99, 101, 103, 104, 106, 109, 110, 112, 113, 114, 120, 125, 126, 127, 128, 129, 130, 131, 132], "realpath": [57, 62, 126], "process_ev": 57, "dst": 57, "walk_prim": 57, "simpleeventhandl": 57, "patternmatchingeventhandl": 57, "path_inflight_toonew": 57, "leak": 57, "steadi": 57, "baselin": 57, "heap": 57, "famili": [57, 79, 88, 99, 103, 123], "depdend": 57, "redisqueu": 57, "download_retri": 57, "post_retri": 57, "msgs_in_download_retri": 57, "msgs_in_post_retri": 57, "pclean_f9x": 57, "clean_f91": 57, "build_path_dict": 57, "fxx_dir": 57, "fxx": 57, "dictionnari": 57, "get_extens": 57, "scheduled_interv": 57, "scheduled_hour": 57, "4z": 57, "9z": 57, "scheduled_minut": 57, "preced": [57, 62], "wait_until_next": 57, "readthedoc": 57, "wait_second": 57, "sleepfor": 57, "shift": 57, "decypher": 57, "20230113t00z_msc_reps_hgt_isbl": 57, "0850_rlatlon0": 57, "09x0": 57, "09_pt000h": 57, "2m": 57, "cosmic": 57, "suominet": 57, "ncconu": 57, "y2023": 57, "csupwvh_2023": 57, "011": 57, "0060_nc": 57, "47k": 57, "tabular": 57, "apache2": 57, "airnowtech": 57, "imap": 57, "protocol_tl": 57, "op_no_sslv2": 57, "op_no_sslv3": 57, "pop": [57, 73], "mail_ingest": [57, 66, 130], "poll_noaa_stn_fil": 57, "9450460": 57, "retrievepathpattern": 57, "stn": 57, "70678": 57, "9751639": 57, "charlott": 57, "amali": 57, "70614": 57, "9440083": 57, "vancouv": [57, 132], "sourceid": 57, "siteid": 57, "sitecod": 57, "sitenam": 57, "countryid": 57, "stateid": 57, "utcoffset": 57, "normalk": 57, "station_chunk": 57, "poll_usgs_st": 57, "osw": 57, "hcdn": 57, "2009_station_info": 57, "xlsx": 57, "70026": 57, "9014087": 57, "dock": 57, "fault": 57, "resist": 57, "portable_cod": 57, "waterdata": 57, "parameter_cd_queri": 57, "fmt": 57, "rdb": 57, "group_cd": 57, "cubic": 57, "feet": 57, "gage": 57, "fahrenheit": 57, "file_email_to": 57, "file_email_relai": 57, "file_email_form": 57, "aacn27": 57, "muhammad": 57, "taseer": 57, "relai": [57, 110], "file_email_from": 57, "santa": 57, "wahaj": 57, "june": 57, "named_pip": 57, "run_entri": 57, "on_tim": 57, "ep": 57, "inquir": 59, "g\u00e9n\u00e9riqu": [59, 87, 89, 103, 106, 108, 112, 116, 123, 126, 128], "valeur": [59, 82, 83, 84, 86, 87, 88, 89, 92, 95, 97, 99, 102, 103, 104, 106, 110, 112, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 127, 129, 130, 131, 132], "d\u00e9faut": [59, 80, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 95, 99, 102, 103, 104, 107, 110, 113, 114, 116, 117, 120, 123, 125, 127, 128, 130, 131, 132], "bonn": [59, 79, 82, 86, 87, 88, 89, 91, 92, 95, 99, 101, 106, 112, 123, 126, 130], "pour": [59, 79, 80, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139], "personalis\u00e9": 59, "value_": 62, "importantli": 62, "just_flat_files_here_pleas": [62, 126], "flaton": [62, 126], "fully_mirror": [62, 126], "directoi": 62, "tak": 62, "d_": [62, 126], "04_17h36": [62, 126], "014412": 62, "bd": [62, 112, 126], "bup": [62, 126], "baseurlpath": [62, 126], "bupl": [62, 126], "baseurlpathlast": [62, 126], "escap": [62, 64], "precent": 62, "defaul": 62, "accelcpcommand": [62, 126], "4096k": [62, 126], "localfil": 62, "implementedin": 62, "kilobyt": [62, 63], "irreversibli": 62, "unexpect": 62, "wreak": 62, "closest": 62, "minu": 62, "_kk": [62, 126], "redeclar": 62, "nullifi": 62, "lat_lon": [62, 126], "015": [62, 71, 126, 136], "cmc_glb_tmp_tgl_2_latlon": [62, 126], "24x": [62, 126], "24_2013121612_p015": [62, 126], "manyfold": 62, "houskeep": 62, "mid": 62, "betweeen": 62, "conform": [62, 126], "md5_checksum_on_data": [62, 126], "precip": [62, 126], "wgj": [62, 126], "201312141900_wgj_precip_snow": [62, 126], "deactiv": 62, "hearbeat": [62, 126], "geojson": [62, 64, 126, 128], "haul": [62, 126], "posit": 62, "neg": 62, "shut": [62, 69, 71], "cleanli": [62, 65, 66, 67, 69, 73, 129, 130, 131], "postpon": [62, 63], "shim_skip_ppid_open_fil": [62, 63, 126, 127], "circumst": [62, 63], "mainli": 62, "commend": 62, "st_ctime": [62, 126], "struct": [62, 126], "elid": 62, "lax": [62, 126], "negoti": 62, "cipher": 62, "due": 62, "complianc": 62, "rigour": 62, "nevertheless": 62, "7m": [62, 126], "postbaseurl": [63, 127], "dr": [63, 127], "broker_usernam": [63, 127], "announcememet": 63, "shim_": [63, 127], "ss": [64, 128], "base_url": [64, 128], "hlink": [64, 128], "hardlink": 64, "presend": 64, "geometri": [64, 128], "7946": [64, 128], "geograph": 64, "envelop": 64, "contenttyp": [64, 128], "addtion": 64, "switchov": [64, 128], "Their": 64, "pare": [64, 79, 103], "unwis": 64, "que": [64, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 113, 114, 115, 116, 117, 118, 119, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137], "iso": [64, 128], "69466": [64, 128], "firstli": 64, "decimalsecond": [64, 128], "datestamp": 64, "relativepath": [64, 128], "blktot": [64, 128], "sizeonli": [64, 128], "1321": [64, 128], "6234": [64, 128], "troubleshoot": 64, "elapsedtim": [64, 128], "report_tim": [64, 128], "resultcod": [64, 128], "report_host": [64, 128], "report_us": [64, 128], "w3": [64, 128], "2616": [64, 128], "2xx": [64, 128], "3xx": [64, 128], "4xx": [64, 128], "5xx": [64, 128], "incid": 64, "203": [64, 66, 128], "authorit": 64, "205": [64, 128], "307": [64, 128], "417": [64, 67, 128], "496": [64, 128], "499": [64, 128], "503": [64, 128], "unsupport": 64, "xxx": [64, 128], "report_messag": [64, 128], "amplifi": [64, 128], "printer": [64, 128], "name_of_corporate_print": [64, 128], "geograpicboundingbox": [64, 128], "top_left": [64, 128], "lon": [64, 68, 128, 132], "bottom_right": [64, 128], "20150813": [64, 128], "20150813t161959": [64, 128], "25d231ec0ae3c569ba27ab7a74dd72c": [64, 128], "readabilti": 64, "7159": [64, 128], "unicod": [64, 70, 128, 134], "10646": [64, 128], "prohibit": 64, "bom": [64, 128], "3629": [64, 128], "unsaf": 64, "526": 65, "1914254": 65, "749": 65, "1914255": 65, "config_nam": [65, 129], "821": 65, "1914260": 65, "928": 65, "1914261": 65, "934": 65, "69643324": 65, "61538382": 65, "147": 65, "168": [65, 70, 134], "332": 65, "20230528": [65, 66, 130, 131, 132], "sazz40_cwao_281900_rrw_efou_64642": 65, "333": 65, "sxvx40_kwal_281923___12624": 65, "kwnb": [65, 66, 129, 130], "snvd20_kwnb_281900_rrl__24342": 65, "kwbc": 65, "saus70_kwbc_281924_rra__30100": 65, "srcn40_kwal_281923___8005": 65, "srnd20_kwal_281923___24712": 65, "uant01_cwao_281924___00310": 65, "saus80_kwbc_281924___64946": 65, "949": [65, 67], "118": 65, "sxus23_kwnb_281900_rrx__36309": 65, "sp": 65, "spus80_kwbc_281924___40647": 65, "srcn40_kwal_281923___38440": 65, "sovd83_kwnb_281800_rrx__64658": 65, "fz": 65, "kcar": 65, "fzus51_kcar_281923___54451": 65, "srcn40_kwal_281923___2520": 65, "snvd20_kwnb_281900_rrm__27859": 65, "790": 65, "791": [65, 68], "work_retry_00": [65, 66, 67, 130, 131], "000105": 65, "post_retry_000": [65, 66, 67, 130, 131], "000077": 65, "mem": [65, 66, 67, 130, 131], "last_housekeep": [65, 66, 67, 130, 131], "816": 65, "1914273": 65, "252": 65, "specifc": 65, "_sr3": [65, 129], "1914274": 65, "subscribe_hpfx_amis_01": 65, "run_command": [65, 70, 134], "occasionali": 66, "1920436": 66, "354": 66, "1920437": 66, "730": 66, "1920439": 66, "dateappend": [66, 130], "pathreplac": [66, 130], "s3bucket": [66, 130], "rootchown": [66, 130], "rxqueue_gzip": [66, 130], "trace_on_stop": [66, 130], "citypage_check": [66, 130], "send_egc_l": [66, 130], "1920493": 66, "221": [66, 70, 129, 134], "1920494": 66, "222": 66, "02779585": 66, "71440157": 66, "uant01_cwao_282043___27297": 66, "089": 66, "035": 66, "uant01_cwao_282044___42712": 66, "uant01_cwao_282044___34692": 66, "190": 66, "464": 66, "uant01_cwao_282044___04359": 66, "539": 66, "202": 66, "uant01_cwao_282044___56279": 66, "snvd22_kwnb_282000_rrv__45798": 66, "srcn40_kwal_282043___8574": 66, "srcn40_kwal_282043___52966": 66, "snvd22_kwnb_282000_rru__45934": 66, "sxcn40_kwal_282043___18272": 66, "sxcn40_kwal_282043___29007": 66, "sxcn40_kwal_282043___53298": 66, "srcn40_kwal_282043___43630": 66, "snvd22_kwnb_281900_rrx__25714": 66, "952": 66, "953": 66, "000109": 66, "000082": 66, "77": [66, 68], "wrinkl": 66, "name_": [66, 130], "externam": 66, "yyyymmddthhmm": [66, 130], "vagu": 66, "msg_fromfiledata": [66, 130], "fake_stat_info": [66, 130], "fake_stat": [66, 130], "to_match": [67, 131], "write_to_dir": [67, 131], "regex_to_match": [67, 131], "pattern_str": [67, 131], "patterm": 67, "char": [67, 73, 131], "ordinarili": 67, "retry_queu": [67, 131], "031": [67, 72, 135], "_on_start": [67, 69, 131, 133], "publisher_confirm": [67, 69, 131, 133], "exchange_exchange_bind": [67, 69, 131, 133], "nack": [67, 69, 131, 133], "consumer_cancel_notifi": [67, 69, 131, 133], "consumer_prior": [67, 69, 131, 133], "authentication_failure_clos": [67, 69, 131, 133], "per_consumer_qo": [67, 69, 131, 133], "direct_reply_to": [67, 69, 131, 133], "cluster_nam": [67, 69, 131, 133], "vmware": [67, 69, 131], "affili": [67, 69, 131], "mpl": [67, 69, 131, 133], "otp": [67, 69, 131, 133], "en_u": [67, 69, 131, 133], "066": [67, 68], "channel_id": [67, 69, 131, 133], "084": 67, "_on_open_ok": [67, 69, 131, 133], "148": 67, "149": 67, "retry_driv": [67, 131], "181": 67, "post_on_start": [67, 131], "1682497": 67, "199": 67, "_format": [67, 68, 69, 131, 132], "wxo_renamed_swob2": [67, 131, 132], "20230527153757": 67, "msg_ddsr": [67, 68, 131, 132], "dd_553d269d71c2c2d52a9b4968e509fef5": 67, "20230527t153759": 67, "475": 67, "20230527": [67, 68], "ctnk": 67, "1537": 67, "ykkeewfkyti": 67, "uoip7feuag": 67, "9597": 67, "1520": 67, "277": 67, "dd_4e7603f7cb74d0193e5456a61042fca5": 67, "cwst": 67, "kaitx64i5bxpnipeluq7": 67, "9824": 67, "305": [67, 69, 133], "390": 67, "416": 67, "dd_4ab40f078eb13197b272abb84cac6888": 67, "cwkh": 67, "r1e": 67, "zsg4n8pab81mnq6pow": 67, "6125": 67, "94": [67, 129], "530": 67, "dd_575c5ec63a2fe354c27ff82f3cf9181f": 67, "476": 67, "cvsj": 67, "h2impfuvhcmp39iegnwx9g": 67, "9440": 67, "1521": 67, "630": 67, "631": 67, "632": 67, "584": 67, "633": 67, "634": 67, "000592": 67, "635": [67, 72, 135], "000487": 67, "636": [67, 130], "759": [67, 131], "638": [67, 130], "663": 67, "0x7fd5fa4000a0": 68, "q_anonymous_fractal_somethinghelpfultoy": 68, "20210213": [68, 132], "ctzr": [68, 132], "televis": 68, "promulg": 68, "560": 68, "20230527145518": 68, "dd_34df392aeffc9c678011f3fd30193bb6": 68, "20230527t145520": 68, "model_gem_region": 68, "037": 68, "cmc_reg_wind_isbl_30_ps10km_2023052712_p037": 68, "u1vvznatrcek3blrxshb2g": 68, "554100": 68, "x00": [68, 132], "x02": [68, 132], "x08tt": 68, "x15": [68, 132], "x01": [68, 132], "x006": [68, 132], "x04": [68, 132], "x07": [68, 132], "xe7": [68, 132], "x05": [68, 132], "x1b": 68, "x0c": [68, 132], "x00a": [68, 132], "x03": [68, 132], "x0b": [68, 132], "xc1": 68, "x88": 68, "20230527145519": 68, "dd_752eb4e8803503704990563d84030e67": 68, "292": 68, "cmc_reg_hgt_isbl_250_ps10km_2023052712_p037": 68, "j6bh9dbe4qbjaxeoejw0tw": 68, "377005": 68, "xc0": 68, "xad": 68, "dd_55f121bb28e822cffb6e61196cd924eb": 68, "20230527t145521": 68, "260": 68, "cmc_reg_rh_isbl_700_ps10km_2023052712_p037": 68, "v7goi": 68, "dol6gle68s1zovea": 68, "808438": 68, "x0cu": 68, "xf6": 68, "dd_dac300cf33756ba816e030f99fc9dc22": 68, "20230527t145519": 68, "586": 68, "cmc_reg_ugrd_isbl_225_ps10km_2023052712_p037": 68, "mi8xzt1uam5ouf7qldz4fa": 68, "487411": 68, "x07o": 68, "xf3": 68, "dd_c5e84748169e0a6dce8f3b884ffdf059": 68, "651": 68, "cmc_reg_rh_isbl_550_ps10km_2023052712_p037": 68, "zukdtksa5i0c5oq": 68, "ieixbq": 68, "774394": 68, "getcleanup": [68, 132], "xd0": 68, "xfa": 68, "retpath": [68, 132], "etre": [68, 132], "elementtre": [68, 132], "dataurl": [68, 132], "vxml": [68, 132], "xmldata": [68, 132], "fromstr": [68, 132], "stn_name": [68, 132], "tc_id": [68, 132], "air_temp": [68, 132], "stn_nam": [68, 132], "elif": [68, 132], "655": [68, 131], "656": [68, 131], "cmth": 68, "1459": 68, "thetford": 68, "mth": 68, "049134": 68, "266448": 68, "cwpz": 68, "burn": 68, "decker": 68, "wpz": 68, "383092": 68, "95879": 68, "cwrk": 68, "bancroft": 68, "wrk": 68, "071498": 68, "879936": 68, "cwsv": 68, "wsv": 68, "128917": 68, "289848": 68, "cwsl": 68, "salmon": 68, "arm": 68, "wsl": 68, "290677": 68, "cprj": 68, "yorkton": 68, "prj": 68, "260003": 68, "461318": 68, "cwfe": 68, "elk": 68, "island": 68, "park": 68, "wfe": 68, "682619": 68, "868105": 68, "cwqc": 68, "alberni": 68, "wqc": 68, "316698": 68, "926912": 68, "cvbb": 68, "vbb": 68, "125992": 68, "002436": 68, "cwxa": 68, "bow": 68, "vallei": 68, "wxa": 68, "0831": 68, "cwjl": 68, "fort": [68, 104, 120], "liard": 68, "wjl": 68, "235775": 68, "472672": 68, "960": 68, "hyper": [68, 132], "lightest": 68, "posting_engin": [69, 133], "890": 69, "891": [69, 132], "putsetup": 69, "892": 69, "sample_fil": [69, 133], "cacn00": [69, 133], "161800": [69, 133], "pmn": [69, 133], "228": [69, 133], "1065": [69, 133], "6999": [69, 133], "323": [69, 133], "1740": [69, 133], "317": [69, 133], "609": [69, 133], "3473": [69, 133], "msg_init": [69, 133], "868": 69, "20230527t150241": 69, "865911961": 69, "335": [69, 133], "20230527t150237": 69, "927556038": 69, "20230525t031938": 69, "0635721684": 69, "w5zwut1imajnqt6tlr9nslzg5rkijhxq46fjmx5uwtshm": [69, 133], "fnoaynrmgwonipfnhe5xuorf3z5dryi6zdl6ygnw": [69, 133], "avial": [70, 134], "pypi": [70, 134], "complement": 70, "venv": [70, 134], "complain": [70, 72], "551": [70, 134], "2428565": [70, 134], "protocolpres": [70, 134], "2428564": [70, 134], "font": [70, 81, 87, 89, 90, 92, 93, 99, 104, 105, 106, 112, 116, 118, 126, 134], "lyx": [70, 134], "libblosc1": [70, 134], "libgdk": [70, 134], "pixbuf": [70, 134], "xlib": [70, 134], "pixbuf2": [70, 134], "libj": [70, 134], "jqueri": [70, 134], "liblbfgsb0": [70, 134], "libnetplan0": [70, 134], "libqhul": [70, 134], "r8": [70, 134], "libstdc": [70, 134], "babel": [70, 134], "localedata": [70, 134], "alabast": [70, 134], "brotli": [70, 134], "cycler": [70, 134], "xmlfile": [70, 134], "images": [70, 134], "jdcal": [70, 134], "kiwisolv": [70, 134], "lz4": [70, 134], "mpmath": [70, 134], "numexpr": [70, 134], "openpyxl": [70, 134], "panda": [70, 134], "protobuf": [70, 134], "pymacaroon": [70, 134], "pymeeu": [70, 134], "scipi": [70, 134], "sip": [70, 134], "smartyp": [70, 134], "snowballstemm": [70, 134], "sympi": [70, 134], "tornado": [70, 134], "unicodedata2": [70, 134], "xlrd": [70, 134], "xlwt": [70, 134], "autoremov": [70, 134], "unselect": [70, 134], "460430": [70, 134], "amqp_5": [70, 134], "writeabl": [70, 134], "paho_mqtt": [70, 134], "setuptool": [70, 134], "boot": 70, "ipalia": [70, 134], "sbin": [70, 134], "addr": [70, 134], "eq": [70, 134], "old_hour_dir": [70, 134], "web_root": [70, 134], "forget": 70, "anaconda": [70, 134], "conda": [70, 134], "sarracenia_env": [70, 134], "wheel": [70, 73], "05b3": [70, 134], "05b4": [70, 134], "5b4": [70, 134], "prebuilt": 70, "alongsid": 70, "backport": 70, "robert": [71, 136], "list_vhost": [71, 136], "sett": 71, "tab": 71, "xs_bob": [71, 136], "q_bob": [71, 136], "test_subscrib": [71, 136], "testfile1": [71, 136], "078": [71, 136], "612": [71, 136], "20200820212920": [71, 136], "611807823": [71, 136], "0259232521": [71, 136], "644": [71, 136], "d41d8cd98f00b204e9800998ecf8427": [71, 136], "testfil": [71, 136], "trickl": 71, "subscribe_directori": [72, 135], "swob_download": [72, 135], "010": [72, 135], "currrent": 72, "251": [72, 132, 135], "268": [72, 135], "user_config": [72, 135], "269": [72, 135], "270": [72, 135], "21096474": [72, 135], "62787751": [72, 135], "835": [72, 135], "191": [72, 135], "20151203": [72, 135], "cmed": [72, 135], "20151203223214": [72, 135], "699": [72, 135], "2200": [72, 135], "3738": [72, 135], "157a9e98406e38a8252eaadf68c0ed60": [72, 135], "ed": [72, 135], "cxfb": [72, 135], "6791": [72, 135], "786": [72, 129, 135], "787": [72, 135], "couldn": [72, 135], "fulfil": [72, 135], "al": [72, 135], "rw": [72, 135], "7875": [72, 135], "dec": [72, 135], "2236": [72, 135], "cl3d": [72, 135], "7868": [72, 135], "cl3g": [72, 135], "7022": [72, 135], "ctry": [72, 135], "6876": [72, 135], "cypi": [72, 135], "6574": [72, 135], "cyzp": [72, 135], "7871": [72, 135], "2237": [72, 135], "7873": [72, 135], "7037": [72, 135], "ctbf": [72, 135], "122140": [72, 135], "sr_subscribe_dd_swob_0001": [72, 135], "008": [72, 135], "weatheer": [72, 135], "lessen": 72, "novic": [73, 137], "screenshot": 73, "2012": [73, 137], "r2": [73, 137], "aliv": 73, "silvap2": 73, "cmdlet": 73, "spell": 73, "categoryinfo": 73, "objectnotfound": 73, "commandnotfoundexcept": 73, "fullyqualifiederrorid": 73, "gplv2": 73, "appdata": 73, "pythonsoftwarefound": 73, "10_qbz5n2kfra8p0": 73, "localcach": 73, "python310": 73, "humanfriendli": 73, "sr3_tailf": 73, "__editable__": 73, "metpx_sr3": 73, "pth": 73, "__editable___metpx_sr3_3_0_42_find": 73, "__pycache__": 73, "cpython": 73, "pyc": 73, "direct_url": 73, "top_level": 73, "documentswindowspowershellmicrosoft": 73, "powershell_profil": 73, "ps1": 73, "s3r": [73, 137], "panel": 73, "wizard": 73, "dialog": 73, "prerequisit": 74, "starter": 74, "pid_filenam": [74, 129, 138], "tweedlede": 76, "tweedledum": 76, "guidelin": 76, "ancienn": [78, 88, 92, 93, 99, 102, 105, 106, 110, 127, 134], "voulaient": 78, "garder": [78, 89, 90, 92, 93, 99, 101, 109, 120, 128], "d\u00e9finit": [78, 84, 86, 87, 88, 89, 90, 92, 99, 101, 103, 106, 116, 118, 125, 127, 128, 129, 132], "vient": [78, 106, 130], "n\u00e9cessit\u00e9": [78, 90, 100, 109, 116], "standardis": [78, 89, 90, 105], "syst\u00e8m": [78, 79, 81, 82, 86, 87, 89, 90, 92, 93, 99, 101, 102, 103, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 126, 127, 130, 137], "changement": [78, 79, 84, 85, 87, 92, 96, 99, 101, 103, 106, 108, 109, 110, 115, 116, 117, 118, 120, 126, 127, 128, 130], "dan": [78, 79, 80, 82, 83, 84, 85, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 139], "nou": [78, 79, 83, 86, 87, 89, 90, 91, 92, 93, 96, 99, 100, 101, 103, 105, 106, 107, 108, 109, 110, 112, 116, 117, 120, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136], "parleron": 78, "producteur": [78, 86, 101, 118], "consommateur": [78, 79, 86, 87, 88, 89, 90, 92, 93, 99, 101, 103, 104, 105, 106, 112, 116, 117, 118, 126, 128], "courtier": [78, 80, 84, 86, 87, 89, 92, 93, 98, 99, 102, 103, 105, 106, 107, 110, 112, 115, 116, 121, 124, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136], "nos": [78, 92, 93, 101, 106, 110, 112], "doivent": [78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 103, 105, 106, 109, 112, 116, 120, 123, 126, 128, 129, 132, 134], "traiter": [78, 81, 82, 86, 87, 97, 98, 99, 101, 106, 108, 109, 110, 112, 116, 118, 120, 126, 128, 129, 130, 132], "installon": 78, "paquet": [78, 79, 84, 87, 88, 90, 92, 99, 101, 106, 109, 110, 115, 116, 117, 120, 123, 132], "se": [78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 132, 134, 135], "fait": [78, 79, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 101, 102, 103, 104, 105, 106, 109, 110, 112, 116, 117, 120, 123, 124, 126, 127, 128, 129, 130, 132, 134, 135], "comm": [78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 100, 101, 103, 104, 105, 106, 108, 109, 112, 113, 114, 116, 117, 118, 120, 123, 124, 126, 127, 128, 129, 130, 131, 132, 134, 137], "avon": [78, 79, 83, 86, 87, 92, 93, 95, 99, 101, 106, 108, 109, 110, 112, 116, 120, 127, 128, 129, 135, 136], "opt\u00e9": 78, "ce": [78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 137, 139], "suivon": [78, 91], "suivant": [78, 79, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 94, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 126, 127, 128, 130], "o\u00f9": [78, 79, 81, 82, 83, 84, 86, 87, 88, 90, 91, 93, 98, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 126, 127, 128, 129, 130, 131, 134, 135, 137], "voulon": [78, 79, 93, 95, 100, 105, 109, 112, 117, 127, 132], "configuron": 78, "fichier": [78, 79, 81, 83, 84, 85, 89, 90, 91, 92, 93, 96, 97, 99, 100, 101, 102, 103, 104, 105, 108, 110, 111, 113, 114, 115, 119, 120, 122, 123, 124, 128, 129, 131, 132, 133, 134, 135, 136, 138], "ne": [78, 79, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135], "fonctionnait": [78, 109, 110], "voulion": 78, "impl\u00e9ment": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 92, 97, 99, 100, 103, 104, 105, 106, 107, 109, 110, 112, 115, 116, 118, 119, 123, 124, 125, 126, 127, 128, 130, 134], "utilison": [78, 79, 89, 91, 95, 103, 110, 112, 127], "biblioth\u00e8qu": [78, 84, 86, 88, 92, 97, 98, 99, 105, 106, 110, 117, 118, 124, 126, 127, 132, 134, 137], "fonctionnalit\u00e9": [78, 81, 82, 84, 88, 91, 92, 93, 96, 101, 105, 106, 107, 108, 109, 110, 112, 115, 116, 119, 128, 130, 131, 134], "n\u00e9cessair": [78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 99, 103, 104, 105, 106, 108, 110, 112, 116, 117, 120, 124, 125, 126, 127, 128, 130, 131, 133, 134], "ainsi": [78, 79, 81, 82, 86, 87, 88, 89, 90, 92, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 120, 125, 126, 127, 130, 132], "d\u00e9velopp\u00e9": [78, 81, 83, 92, 108, 110], "sert": [78, 92, 106, 118, 126], "tant": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 92, 95, 97, 99, 100, 103, 104, 105, 106, 108, 109, 112, 116, 117, 123, 126, 127, 128, 129, 130, 132, 134], "lit": [78, 79, 89, 90, 92, 95, 103, 104, 106, 127, 128], "contenu": [78, 79, 86, 87, 89, 90, 91, 92, 106, 113, 115, 116, 120, 126, 127, 128, 135], "fil": [78, 82, 84, 87, 88, 89, 90, 92, 93, 95, 98, 99, 101, 103, 104, 105, 108, 112, 116, 118, 120, 121, 126, 127, 128, 135, 136], "cr\u00e9e": [78, 79, 84, 86, 89, 90, 92, 95, 97, 103, 104, 106, 116, 118, 120, 123, 124, 126, 127, 128, 133, 135], "auquel": [78, 89, 90, 104, 126, 127, 132], "joint": [78, 83], "envoi": [78, 79, 82, 87, 88, 89, 90, 93, 95, 99, 101, 102, 103, 106, 109, 112, 116, 117, 118, 126, 127, 128, 130], "au": [78, 79, 81, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 101, 102, 103, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 137], "annoncera": [78, 93, 101, 106], "lequel": [78, 79, 81, 87, 88, 92, 95, 106, 109, 113, 114, 116, 126, 127, 128], "int\u00e9ress\u00e9": [78, 86, 87, 89, 90, 103, 112, 128, 132], "recevoir": [78, 83, 87, 89, 90, 92, 98, 102, 103, 106, 117, 120, 126, 128, 132, 135], "lui": [78, 79, 82, 86, 87, 88, 89, 90, 92, 95, 103, 104, 106, 108, 109, 112, 116, 117, 120, 123, 126, 130, 132], "enverra": [78, 86, 98, 103, 106, 126], "chaqu": [78, 79, 81, 82, 86, 87, 88, 89, 90, 91, 92, 93, 96, 99, 101, 104, 105, 106, 108, 109, 110, 112, 115, 116, 117, 118, 120, 123, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135], "son": [78, 79, 80, 81, 82, 86, 87, 90, 92, 97, 104, 106, 108, 109, 112, 116, 123, 124, 125, 126, 128, 138], "choix": [78, 79, 86, 89, 90, 95, 99, 101, 102, 103, 106, 112, 116, 117, 118, 120, 126], "peut": [78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 97, 98, 99, 101, 102, 103, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136], "\u00eatre": [78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137], "quoi": [78, 79, 88, 89, 92, 95, 103, 106, 112, 120, 126, 130, 135], "niveau": [78, 79, 81, 82, 85, 86, 90, 91, 92, 99, 101, 103, 104, 106, 109, 112, 118, 120, 126, 130, 134], "\u00e9galement": [78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 103, 104, 106, 108, 109, 110, 112, 116, 117, 118, 120, 123, 124, 126, 127, 128, 129, 132, 134, 136, 137], "nom": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 95, 99, 102, 103, 104, 106, 108, 112, 113, 114, 115, 116, 117, 119, 120, 121, 123, 127, 128, 130, 131, 132, 133, 134, 136, 137], "provient": [78, 90, 103, 108, 112, 126], "notr": [78, 79, 89, 91, 106, 116, 120, 128, 132], "pouvon": [78, 92, 101, 109, 112], "cett": [78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 115, 116, 117, 120, 123, 126, 127, 128, 130, 134, 137], "astuc": 78, "inutil": [78, 79, 84, 101, 108, 112, 116, 126, 127], "entr": [78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 92, 93, 98, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 115, 116, 117, 118, 120, 126, 127, 128, 130, 131], "exp\u00e9diteur": [78, 79, 86, 88, 99, 101, 102, 106, 126], "r\u00e9cepteur": [78, 99, 101, 109, 120, 126, 128], "trouv\u00e9": [78, 79, 81, 83, 88, 91, 106, 108, 123, 124, 126, 127, 135], "opportunit\u00e9": [78, 112, 120], "lorsqu": [78, 79, 82, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 97, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136], "utilisateur": [78, 80, 81, 82, 83, 84, 87, 89, 91, 92, 93, 97, 101, 104, 105, 106, 109, 110, 112, 116, 117, 119, 120, 123, 124, 126, 127, 128, 130, 132, 133, 134, 135, 136, 138, 139], "lieu": [78, 79, 84, 86, 87, 88, 89, 90, 92, 95, 99, 101, 103, 105, 106, 108, 109, 110, 113, 116, 120, 126, 128, 130, 132], "v\u00e9rifier": [78, 81, 88, 90, 92, 94, 99, 104, 106, 116, 123, 126], "constam": [78, 86, 120], "si": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 137], "pr\u00e9sent": [78, 82, 84, 86, 88, 89, 90, 92, 99, 101, 103, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 123, 126, 127, 128, 129, 130], "pouvait": [78, 88, 107, 112], "abonn": [78, 86, 87, 88, 89, 90, 92, 95, 96, 99, 101, 103, 104, 106, 109, 110, 112, 124, 126, 128, 129, 132, 135, 136], "serait": [78, 79, 81, 82, 86, 88, 90, 92, 95, 99, 103, 104, 106, 109, 112, 116, 117, 120, 126, 127, 128, 130, 137], "omi": [78, 88, 99, 110, 128], "livraison": [78, 86, 89, 90, 93, 95, 101, 103, 106, 116, 117, 119, 126], "ferion": 78, "cet": [78, 79, 81, 84, 86, 89, 90, 92, 93, 99, 101, 103, 106, 109, 112, 117, 120, 126, 128, 132, 133, 135, 136], "exercic": 78, "autr": [78, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 95, 97, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 129, 130, 132, 134], "mettr": [78, 79, 81, 82, 84, 86, 87, 88, 90, 91, 92, 99, 101, 106, 109, 110, 112, 116, 120, 123, 124, 126, 128, 130, 131, 134], "cela": [78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 115, 116, 117, 120, 123, 125, 126, 127, 128, 129, 130, 132, 134, 135, 136, 137], "\u0153uvr": [78, 79, 84, 86, 87, 90, 91, 92, 93, 95, 96, 99, 100, 101, 104, 106, 108, 109, 110, 112, 114, 116, 117, 120, 127, 128, 130, 134], "utilis\u00e9": [78, 79, 80, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135], "possibilit\u00e9": [78, 79, 84, 86, 87, 88, 89, 90, 92, 94, 99, 104, 106, 110, 112, 120, 126, 130, 131], "\u00e9crit": [78, 86, 87, 90, 95, 99, 100, 101, 104, 105, 106, 109, 110, 112, 116, 117, 126, 127], "effectu": [78, 79, 81, 82, 84, 86, 88, 90, 91, 92, 97, 103, 104, 106, 109, 112, 116, 117, 120, 126, 130], "conten": [78, 81, 88, 92, 106, 112, 116, 126, 127, 132], "sou": [78, 79, 81, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 95, 99, 101, 102, 103, 104, 106, 107, 109, 112, 113, 114, 116, 117, 118, 120, 123, 124, 126, 127, 128, 134, 138], "laquel": [78, 79, 87, 95, 101, 103, 105, 106, 109, 112, 116, 120, 126, 128, 130, 135], "sera": [78, 79, 82, 83, 84, 86, 87, 88, 89, 92, 99, 103, 104, 106, 110, 112, 113, 114, 116, 117, 118, 120, 123, 125, 126, 127, 128, 130], "voici": [78, 79, 86, 87, 88, 92, 99, 103, 104, 106, 109, 112, 116, 123, 129, 132, 135, 137], "d\u00e9but": [78, 81, 86, 87, 88, 89, 92, 101, 109, 110, 112, 113, 116, 126], "voyon": [78, 79, 109], "sont": [78, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 99, 101, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134], "l\u00e0": [78, 79, 81, 86, 87, 90, 92, 93, 99, 101, 105, 106, 112, 113, 116, 118, 120, 123, 126, 130], "parc": [78, 86, 87, 88, 89, 91, 92, 95, 99, 102, 103, 106, 108, 109, 112, 116, 118, 120, 126, 128, 136], "fourni": [78, 80, 83, 84, 87, 88, 89, 90, 92, 93, 101, 106, 109, 112, 116, 118, 120, 123, 125, 126, 127], "somm": [78, 79, 82, 84, 87, 88, 90, 94, 95, 99, 101, 104, 106, 107, 108, 109, 110, 112, 113, 114, 116, 117, 118, 121, 126, 127, 128, 130, 132, 136], "mesur": [78, 86, 87, 89, 90, 91, 92, 99, 101, 103, 109, 110, 112, 117, 120, 126, 127, 128], "plac\u00e9": [78, 79, 82, 87, 88, 91, 92, 99, 101, 102, 104, 106, 112, 115, 116, 120, 123, 125, 126, 128, 129, 130, 135], "soit": [78, 79, 82, 84, 86, 87, 88, 90, 92, 93, 94, 95, 98, 99, 102, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 124, 126, 127, 128, 129, 130, 132, 134, 137], "effectu\u00e9": [78, 79, 82, 84, 86, 87, 88, 89, 90, 92, 99, 101, 103, 106, 108, 109, 110, 112, 120, 126, 127, 128, 130, 131], "envoy": [78, 79, 80, 86, 88, 89, 90, 92, 94, 95, 97, 99, 101, 102, 103, 104, 105, 106, 110, 112, 118, 120, 123, 124, 126, 127, 128, 132], "configur\u00e9": [78, 79, 81, 83, 84, 86, 87, 90, 92, 93, 101, 103, 104, 106, 110, 120, 123, 126, 134, 135], "encor": [78, 79, 83, 86, 87, 90, 93, 99, 103, 105, 106, 108, 109, 110, 112, 113, 117, 120, 126, 127, 128, 130], "foi": [78, 79, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 101, 103, 105, 106, 109, 110, 112, 113, 116, 117, 118, 120, 124, 126, 127, 128, 130, 132, 134, 136], "contient": [78, 79, 81, 87, 88, 90, 91, 92, 94, 95, 99, 106, 112, 113, 116, 123, 125, 128], "programm\u00e9": 78, "arboresc": [78, 79, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 99, 101, 103, 105, 106, 108, 110, 111, 116, 117, 121, 123, 126, 127, 128, 130, 131, 132], "exempl": [78, 79, 83, 84, 85, 86, 87, 89, 90, 91, 92, 94, 97, 98, 99, 101, 102, 103, 104, 105, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 124, 125, 126, 127, 129, 133, 134, 135, 136, 138], "lign": [78, 79, 82, 83, 84, 85, 86, 87, 91, 92, 93, 99, 101, 107, 109, 110, 113, 114, 116, 118, 119, 123, 124, 125, 126, 127, 128, 129, 130, 131, 135, 136, 139], "emplac": [78, 79, 87, 88, 103, 106, 109, 112, 116, 126, 127, 129, 135], "compl\u00e8t": [78, 79, 84, 88, 89, 90, 91, 92, 99, 101, 104, 110, 112, 113, 114, 116, 117, 123, 126, 127, 128, 130, 131], "cr\u00e9er": [78, 79, 80, 82, 84, 87, 88, 90, 91, 92, 94, 99, 103, 104, 105, 106, 108, 110, 111, 112, 113, 114, 116, 119, 123, 126, 128, 129, 130, 131, 132, 134, 135, 137], "\u00e9chang": [78, 79, 81, 87, 92, 95, 97, 103, 104, 105, 106, 108, 110, 111, 116, 119, 120, 124, 126, 127, 128, 132, 133, 136], "donner": [78, 90, 104, 106, 109, 112, 126, 135], "ell": [78, 79, 81, 82, 86, 87, 88, 90, 91, 92, 93, 99, 101, 102, 103, 104, 105, 106, 109, 110, 112, 114, 116, 117, 118, 120, 123, 124, 126, 127, 128, 130, 131, 134, 136], "autod\u00e9truit": 78, "conserv\u00e9": [78, 87, 106, 112], "empil": [78, 99], "hor": [78, 79, 87, 90], "g\u00e9n\u00e9ral": [78, 84, 86, 88, 92, 99, 101, 103, 109, 112, 120, 123, 124], "aimerion": 78, "pr\u00e9serv\u00e9": [78, 99], "repris": [78, 106, 126, 127, 135], "connexion": [78, 79, 89, 90, 103, 104, 106, 109, 112, 116, 117, 120, 125, 126, 127, 133], "red\u00e9marr": [78, 86, 87, 99, 106, 123, 126, 134, 137], "d\u00e9truira": [78, 79], "jamai": [78, 79, 90, 92, 93, 98, 99, 100, 101, 109, 112, 126, 128], "cr\u00e9\u00e9e": [78, 79, 82, 87, 92, 97, 117, 127, 130, 136], "automatiqu": [78, 79, 84, 86, 87, 88, 90, 91, 92, 99, 106, 112, 116, 123, 125, 126, 127, 128, 134, 135], "moin": [78, 79, 84, 86, 88, 89, 91, 92, 93, 95, 98, 99, 101, 102, 103, 105, 106, 109, 110, 111, 112, 117, 120, 124, 126, 128], "durabilit\u00e9": 78, "causer": [78, 95, 115, 117, 120], "probl\u00e8m": [78, 79, 84, 87, 88, 90, 91, 92, 95, 96, 102, 104, 105, 106, 108, 110, 111, 115, 116, 117, 120, 126, 127, 128], "d\u00e9velopp": [78, 79, 89, 90, 91, 96, 99, 106, 107, 108, 109, 110, 112, 126, 128, 134, 139], "processu": [78, 79, 83, 84, 86, 88, 89, 90, 94, 96, 97, 98, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 118, 120, 123, 124, 126, 127, 128, 129, 132, 134, 137], "changer": [78, 79, 82, 87, 88, 90, 92, 99, 112, 116, 117, 126, 130], "plusieur": [78, 79, 81, 82, 83, 84, 86, 89, 90, 91, 92, 93, 94, 95, 97, 99, 101, 103, 104, 105, 106, 109, 110, 112, 114, 117, 118, 120, 124, 125, 126, 127, 128, 131, 132, 135, 137], "entass": 78, "seront": [78, 79, 82, 84, 86, 87, 88, 90, 91, 92, 98, 99, 102, 103, 105, 106, 110, 112, 116, 117, 118, 120, 123, 126, 127, 128, 130, 134, 135], "cr\u00e9\u00e9": [78, 79, 86, 89, 91, 92, 95, 99, 103, 105, 106, 109, 113, 114, 117, 124, 126, 127, 128, 130, 134, 135, 136], "v\u00e9rifi": [78, 91, 95, 99, 106, 123, 126, 127, 128], "inutilis\u00e9": [78, 79, 103], "ont": [78, 79, 81, 83, 84, 86, 87, 88, 90, 92, 93, 94, 95, 99, 100, 101, 103, 104, 105, 106, 108, 109, 110, 112, 113, 115, 116, 117, 118, 120, 126, 127, 128, 129, 130, 132, 135, 136, 137], "prennent": [78, 84, 88, 89, 90, 106, 108, 126], "mo": [78, 79, 95, 109], "d\u00e9truit": [78, 92, 106, 126, 128], "r\u00e9daction": [78, 89, 90, 109], "provienn": [78, 103, 106, 126], "partir": [78, 79, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 96, 97, 99, 101, 103, 104, 105, 106, 107, 108, 109, 110, 112, 118, 119, 120, 123, 124, 126, 127, 128, 129, 130, 131, 132, 134, 138], "eux": [78, 79, 81, 86, 87, 88, 89, 90, 91, 92, 93, 99, 104, 106, 109, 110, 112, 116, 120], "r\u00e9pertoir": [78, 79, 81, 82, 84, 86, 87, 88, 91, 92, 94, 95, 97, 99, 101, 102, 103, 106, 108, 109, 111, 113, 114, 116, 117, 118, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135], "surmont": [78, 92], "d\u00e9mon": [78, 79, 87, 92, 97, 106, 109, 123, 126, 127], "\u00e9t\u00e9": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 116, 117, 120, 123, 126, 127, 128, 130, 134, 135, 136, 137], "surveil": [78, 79, 82, 86, 87, 88, 89, 90, 94, 97, 101, 103, 105, 106, 109, 110, 116, 117, 120, 126, 130, 131, 135, 136], "leur": [78, 79, 81, 82, 83, 86, 87, 88, 89, 90, 92, 93, 95, 99, 101, 103, 104, 105, 106, 107, 109, 110, 112, 116, 120, 126, 127, 128, 130, 132, 135], "modifi\u00e9": [78, 79, 81, 83, 84, 85, 86, 87, 90, 93, 99, 101, 103, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 118, 126, 128, 130], "ajout\u00e9": [78, 79, 81, 82, 87, 88, 89, 90, 92, 95, 99, 106, 108, 109, 110, 112, 116, 120, 124, 125, 126, 127, 128, 129, 130], "envoy\u00e9": [78, 79, 81, 86, 87, 89, 98, 102, 103, 106, 110, 112, 116, 120, 126, 127, 128, 133], "tou": [78, 79, 81, 82, 84, 86, 87, 88, 89, 90, 92, 95, 99, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 117, 120, 123, 125, 126, 127, 128, 130, 132, 134, 136, 137], "couvert": [78, 79, 92, 104, 113, 114, 128], "appliqu": [78, 82, 86, 87, 88, 90, 99, 103, 105, 106, 109, 115, 116, 126, 127, 128, 130], "roul": [78, 123], "cl\u00e9": [78, 79, 86, 87, 89, 90, 92, 99, 103, 104, 112, 114, 115, 118, 120, 121, 125, 127, 129, 132], "commenc": [78, 79, 82, 87, 88, 89, 90, 91, 92, 101, 103, 106, 112, 117, 123, 126, 127, 128, 129, 130, 132], "suivi": [78, 83, 91, 97, 103, 109, 110, 113, 114, 118, 124, 126, 127, 128, 132], "chemin": [78, 79, 82, 86, 87, 88, 89, 90, 92, 93, 94, 96, 99, 101, 103, 106, 109, 112, 113, 114, 116, 119, 120, 121, 123, 125, 127, 128, 130, 131, 132, 135], "remplac\u00e9": [78, 79, 81, 84, 87, 88, 91, 92, 99, 103, 106, 110, 112, 113, 114, 115, 116, 120, 125, 126, 127, 128], "ex\u00e9cut": [78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 96, 97, 99, 103, 104, 105, 106, 109, 110, 112, 116, 117, 121, 123, 124, 126, 127, 129, 131, 132, 134, 138], "trouv": [78, 82, 86, 87, 88, 91, 92, 100, 103, 106, 109, 116, 123, 126, 129], "vit": 78, "assuron": 78, "r\u00e9side": [78, 126], "teston": 78, "fonctionn": [78, 79, 80, 81, 84, 86, 87, 88, 90, 91, 92, 93, 98, 99, 101, 103, 104, 105, 106, 109, 110, 112, 116, 117, 118, 120, 123, 124, 126, 127, 128, 131, 132, 134], "m\u00eame": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 112, 113, 114, 115, 116, 117, 118, 120, 123, 124, 126, 127, 128, 130, 132, 134, 136], "trait": [78, 82, 84, 88, 90, 99, 101, 106, 116, 117, 124, 126, 127, 130, 136], "metton": [78, 79], "haut": [78, 84, 86, 88, 89, 90, 93, 97, 99, 101, 104, 106, 109, 110, 112, 116, 117, 118, 120, 124, 126, 127, 128, 130, 134], "disponibilit\u00e9": [78, 81, 84, 86, 87, 90, 93, 97, 101, 103, 104, 106, 107, 109, 118, 122, 124, 126, 128, 132, 134], "commen\u00e7": [78, 106, 130, 132], "chacun": [78, 79, 86, 87, 90, 91, 92, 101, 104, 106, 109, 112, 120, 128], "ex\u00e9cutez": [78, 79, 81, 83, 91, 92, 97, 106, 108, 134, 137], "travail": [78, 79, 80, 82, 83, 86, 87, 88, 90, 91, 93, 99, 101, 103, 104, 106, 109, 110, 112, 113, 114, 117, 119, 120, 126, 129, 132, 138], "commutateur": [78, 79, 95, 96, 101, 108, 113, 114, 116], "d\u00e9tection": [78, 88, 90, 92, 101, 106, 119], "restent": [78, 93, 106, 117, 126, 127], "inchang\u00e9": [78, 86, 88, 99, 115, 128], "redirig": [78, 90], "op\u00e9rationnel": [78, 79, 87, 90, 108, 109, 110, 112, 126, 134], "premier": [78, 83, 87, 90, 91, 92, 93, 95, 99, 100, 101, 102, 103, 104, 106, 110, 112, 116, 120, 124, 126, 128, 129, 138], "exp\u00e9di\u00e9": 78, "ignor\u00e9": [78, 87, 88, 89, 106, 112, 116, 124, 126], "annonc\u00e9": [78, 81, 86, 87, 88, 89, 90, 104, 106, 110, 114, 117, 126, 127, 128, 132], "repr\u00e9sent": [78, 79, 86, 87, 88, 90, 99, 102, 103, 104, 106, 117, 120, 126, 128], "premi\u00e8r": [78, 79, 81, 87, 88, 92, 94, 95, 99, 105, 106, 107, 108, 109, 110, 112, 116, 117, 120, 124, 126, 127, 128], "arriv\u00e9": [78, 86, 87, 90, 101, 112, 116, 124, 126, 129, 132], "r\u00e9parti": [78, 89, 90, 112], "garantisson": 78, "traction": 78, "distribu\u00e9": [78, 89, 90, 92, 99, 112, 117, 126], "formulair": [78, 88], "rebut": 78, "dernier": [78, 79, 81, 82, 90, 92, 95, 99, 102, 106, 113, 114, 117, 125, 126, 127, 128, 130], "champ": [78, 79, 82, 83, 84, 87, 88, 89, 90, 95, 99, 105, 106, 112, 113, 114, 115, 117, 118, 126, 127, 130, 131, 132, 134], "ensuit": [78, 79, 81, 83, 86, 87, 91, 92, 94, 95, 104, 105, 106, 109, 110, 112, 118, 123, 126, 127, 128, 129, 130, 132, 133, 137], "achemin\u00e9": [78, 79, 86, 87, 89, 90, 103], "mani\u00e8r": [78, 79, 81, 82, 86, 87, 88, 89, 90, 91, 92, 93, 97, 99, 100, 101, 103, 104, 105, 106, 109, 110, 112, 116, 117, 118, 120, 124, 126, 128, 129, 130, 134, 137], "ordinair": [78, 90, 92, 99, 104, 106, 109, 116, 126, 128, 130], "ordr": [78, 86, 88, 92, 93, 95, 101, 102, 106, 109, 112, 117, 120, 126, 128], "v\u00e9rifiez": [78, 86, 90, 92, 113, 114, 117, 126], "g\u00e9n\u00e9r\u00e9": [78, 88, 90, 91, 92, 106, 109, 116, 118, 126, 127, 128], "g\u00e9n\u00e9r\u00e9e": [78, 82, 90, 92, 106, 126], "journaux": [78, 80, 84, 87, 92, 93, 99, 104, 105, 106, 109, 111, 116, 121, 126, 128, 129, 131, 135], "r\u00e9parat": 78, "devrait": [78, 79, 83, 84, 87, 88, 89, 90, 92, 93, 95, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 126, 129, 132, 134, 135], "r\u00e9soudr": [78, 92], "d\u00e9tail": [78, 79, 84, 88, 92, 93, 103, 106, 110, 112, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 130, 134], "ici": [78, 79, 81, 84, 87, 88, 89, 90, 91, 92, 102, 103, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 123, 127, 128, 131, 132], "fur": [78, 89, 90, 91, 92, 101, 109, 112, 116, 117, 126, 128], "rencontr\u00e9": [78, 92, 106, 109], "corrig\u00e9": [78, 90, 92, 99], "manquant": [79, 86, 92, 93, 99, 106, 109, 112, 116, 118, 126, 129, 134], "mise": [79, 82, 85, 86, 87, 90, 91, 92, 93, 95, 96, 99, 100, 101, 104, 105, 106, 110, 111, 114, 116, 117, 118, 119, 120, 126, 127, 128, 131, 138, 139], "\u00e9videnc": 79, "d\u00e9crit": [79, 82, 88, 92, 94, 97, 99, 103, 104, 105, 106, 109, 112, 116, 117, 118, 120, 126, 128], "plupart": [79, 81, 84, 87, 88, 89, 90, 92, 93, 95, 99, 102, 103, 106, 109, 110, 112, 115, 116, 120, 126, 127, 128], "t\u00e2che": [79, 84, 89, 99, 101, 104, 109, 110, 116, 117], "diff\u00e9rent": [79, 80, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 97, 99, 100, 102, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 123, 124, 126, 127, 128, 129, 130, 132, 136, 137], "selon": [79, 81, 82, 83, 84, 90, 92, 94, 95, 104, 106, 109, 113, 114, 116, 120, 123, 126, 128, 129, 130], "vou": [79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 99, 101, 103, 106, 108, 110, 112, 116, 117, 118, 120, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138], "utilisez": [79, 84, 86, 87, 88, 89, 90, 91, 92, 95, 99, 106, 109, 112, 113, 114, 116, 117, 124, 126, 127, 128, 132, 135], "id\u00e9al": [79, 84, 88, 91, 92, 98, 103, 105, 112, 118, 120], "faut": [79, 82, 84, 86, 87, 88, 89, 90, 92, 93, 95, 99, 103, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 126, 127, 128, 132, 134], "avec": [79, 81, 82, 84, 85, 86, 87, 88, 89, 90, 91, 93, 95, 97, 99, 101, 102, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 138], "acc\u00e8": [79, 82, 84, 92, 95, 99, 101, 103, 106, 107, 109, 112, 113, 114, 119, 120, 121, 126, 128, 129, 132, 133, 134], "existant": [79, 87, 88, 93, 99, 106, 110, 112, 116, 123, 126, 132], "avant": [79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 95, 99, 102, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 125, 126, 127, 129, 130, 135], "passer": [79, 81, 86, 90, 92, 93, 99, 120, 127, 128], "prescriptif": 79, "plut\u00f4t": [79, 86, 87, 88, 89, 90, 91, 92, 95, 99, 103, 104, 106, 108, 109, 110, 112, 115, 116, 117, 120, 123, 125, 126, 127, 128, 129, 131, 132, 134, 135, 139], "explicatif": 79, "raison": [79, 86, 87, 88, 89, 90, 92, 93, 101, 106, 109, 112, 120, 126, 128, 134], "lesquel": [79, 82, 84, 88, 90, 92, 99, 101, 103, 104, 106, 112, 116, 120, 129, 134], "construit": [79, 82, 84, 86, 88, 89, 92, 95, 99, 104, 105, 106, 108, 112, 116, 126, 130, 132], "vue": [79, 87, 90, 99, 104, 112, 120, 127, 136], "extr\u00eamement": [79, 109, 120, 128], "l\u00e9ger": [79, 89, 98, 103, 116, 132], "aujourd": [79, 88, 108, 112], "hui": [79, 88, 108, 112], "impl\u00e9ment\u00e9": [79, 82, 84, 87, 88, 91, 93, 98, 99, 102, 104, 105, 106, 109, 110, 112, 115, 116, 117, 126], "priv\u00e9": [79, 86, 92, 101, 120, 126, 135], "virtuel": [79, 86, 103, 106, 112, 120, 126], "700": 79, "disqu": [79, 86, 88, 90, 92, 104, 109, 110, 126, 127], "tel": [79, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 103, 104, 105, 106, 108, 109, 112, 115, 116, 117, 120, 126, 127, 128, 129, 130, 132, 134], "minuscul": [79, 93, 106, 126], "suivr": [79, 89, 90, 108, 109, 126, 127], "aliment": [79, 90, 99, 104, 109, 110, 112], "presqu": [79, 88, 90, 99, 102, 103, 106, 109, 112, 126, 127], "comprend": [79, 87, 88, 89, 92, 99, 101, 103, 106, 112, 116, 127], "m\u00e9t\u00e9orologiqu": [79, 86, 87, 93, 101, 105, 108, 109, 111, 112, 120, 126, 136, 139], "environn": [79, 80, 81, 83, 86, 87, 93, 96, 101, 106, 108, 109, 110, 116, 117, 120, 124, 126, 127, 129, 134, 135, 136], "climatiqu": [79, 87, 109], "gro": [79, 87, 90, 95, 99, 101, 109, 111, 117, 127], "pr\u00e9diction": [79, 81, 109], "num\u00e9riqu": [79, 106, 109, 110, 112, 116, 126, 128], "exclu": 79, "r\u00e9duir": [79, 87, 89, 90, 101, 103, 105, 106, 107, 117, 118, 126, 128, 135], "utilis": [79, 84, 85, 86, 88, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 102, 104, 105, 106, 109, 110, 111, 115, 117, 118, 120, 123, 124, 125, 126, 128, 130, 131, 134, 138], "passant": [79, 87, 89, 90, 93, 101, 106, 112, 118], "assez": [79, 87, 89, 91, 92, 95, 99, 106, 109, 110, 112, 116, 117, 118, 120, 126, 127], "bien": [79, 84, 86, 87, 89, 90, 91, 92, 93, 99, 101, 103, 104, 106, 108, 109, 110, 112, 116, 117, 118, 120, 126, 132], "m\u00e9moir": [79, 84, 86, 89, 92, 99, 106, 109, 110, 112, 117, 120, 124, 127, 128, 132], "seulement": [79, 85, 87, 90, 92, 93, 95, 102, 103, 106, 109, 110, 116, 117, 123, 126, 128, 134], "r\u00e9sident": 79, "avez": [79, 82, 83, 86, 87, 88, 89, 92, 98, 99, 103, 106, 129, 130, 132, 133, 138], "besoin": [79, 83, 84, 86, 87, 88, 90, 91, 92, 93, 95, 99, 101, 103, 104, 106, 108, 109, 110, 112, 116, 117, 118, 120, 126, 127, 128, 129, 130, 132, 133, 134], "suffisam": [79, 86, 87, 89, 90, 92, 93, 95, 99, 101, 110, 112, 115, 116, 126], "petit": [79, 84, 86, 87, 89, 90, 91, 93, 95, 99, 104, 106, 109, 110, 112, 116, 117, 118, 120, 126, 128, 136], "m\u00e9gaoctet": [79, 95, 112, 127], "r\u00e9ellement": [79, 86, 88, 92, 99, 101, 106, 116, 120, 126], "d\u00e9termin": [79, 81, 83, 86, 87, 88, 89, 90, 92, 93, 99, 102, 103, 104, 105, 106, 110, 112, 113, 114, 116, 117, 120, 126, 127, 128], "nombr": [79, 81, 82, 86, 87, 89, 92, 93, 94, 95, 96, 98, 99, 101, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 116, 117, 119, 126, 127, 128, 129, 130, 131], "peuvent": [79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 132, 134], "servi": [79, 90, 112], "lent": [79, 87, 98, 101, 102, 109, 117, 126], "occup": [79, 89, 90, 99, 101, 104, 106, 126], "courtag": [79, 89, 90, 103], "agressif": 79, "empreint": [79, 86, 90, 106, 112, 127, 128], "\u00e9tait": [79, 84, 86, 87, 88, 89, 90, 92, 93, 94, 95, 99, 100, 101, 102, 108, 109, 110, 112, 118, 120, 126, 128], "moteur": [79, 87, 89, 90, 93, 101, 103, 104, 105, 108, 112], "pr\u00e9c\u00e8de": [79, 86, 102, 109, 112, 118, 120, 129], "ad\u00e9quat": [79, 109], "preuv": [79, 90], "soutenu": [79, 101], "limit\u00e9": [79, 86, 87, 89, 90, 92, 93, 95, 99, 101, 103, 105, 106, 108, 109, 111, 115, 117, 120, 126, 128, 131], "relatif": [79, 82, 88, 89, 105, 106, 108, 112, 113, 114, 116, 118, 126, 127, 128, 130], "activit\u00e9": [79, 84, 90, 93, 99, 103, 106, 109, 116, 117, 120, 123, 126, 127, 135], "devraient": [79, 86, 88, 91, 92, 99, 104, 105, 106, 110, 112, 128, 139], "suffisant": [79, 90, 93, 101, 117], "nombreux": [79, 84, 86, 87, 88, 89, 90, 91, 92, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 118, 120, 126, 127, 128, 134], "d\u00e9sign\u00e9": 79, "administrateur": [79, 87, 90, 93, 101, 103, 104, 106, 108, 109, 110, 112, 120, 126, 132, 137, 138], "surtout": [79, 110, 112, 126], "autoris": [79, 87, 88, 89, 90, 93, 99, 103, 106, 120, 126, 128, 136], "accord\u00e9": [79, 92], "arbitrair": [79, 82, 86, 87, 89, 90, 101, 110, 112, 113, 114, 116, 120, 128, 130], "capacit\u00e9": [79, 80, 84, 86, 105, 109, 112, 117, 120, 126], "envoient": 79, "acc\u00e9der": [79, 81, 86, 87, 90, 92, 93, 103, 104, 105, 106, 109, 132, 133], "propr": [79, 86, 87, 88, 90, 92, 95, 99, 104, 105, 106, 110, 112, 116, 120, 126, 129, 132, 138], "ressourc": [79, 82, 86, 88, 89, 90, 92, 97, 104, 105, 106, 110, 112, 116, 123, 124, 126, 127, 130, 132], "administratif": [79, 92, 104, 105, 106, 126, 134], "quel": [79, 81, 86, 87, 88, 90, 93, 94, 95, 99, 101, 104, 106, 109, 110, 112, 116, 120, 123, 126, 128, 132, 134], "nomm\u00e9": [79, 81, 82, 87, 88, 92, 103, 104, 106, 108, 113, 114, 115, 116, 126, 127, 128, 130], "apr\u00e8": [79, 82, 83, 84, 86, 87, 88, 89, 90, 92, 94, 95, 96, 100, 102, 103, 106, 107, 108, 109, 112, 113, 114, 116, 117, 123, 125, 126, 127, 128, 131, 132, 134, 135, 136, 138], "\u00e9critur": [79, 85, 86, 88, 90, 93, 95, 99, 109, 112, 116, 117, 126, 127, 128, 130, 133], "valid\u00e9": [79, 104, 128], "transmett": [79, 117, 127], "bours": [79, 112], "publiqu": [79, 86, 90, 92, 101, 112, 120], "abonn\u00e9": [79, 85, 86, 89, 90, 92, 94, 95, 99, 101, 103, 104, 106, 109, 113, 114, 116, 118, 119, 122, 126, 128, 131, 138], "aient": [79, 103, 110, 120], "g\u00e9n\u00e9ralement": [79, 83, 86, 87, 88, 89, 90, 91, 92, 93, 99, 101, 102, 103, 104, 106, 108, 109, 110, 112, 116, 117, 118, 120, 126, 127, 128, 132, 134], "ex\u00e9cut\u00e9": [79, 88, 90, 92, 104, 106, 109, 116, 120, 123, 126, 129, 131, 132], "purger": 79, "d\u00e9finir": [79, 81, 82, 87, 88, 89, 90, 97, 99, 105, 106, 112, 116, 123, 124, 126, 127, 128, 130, 136], "fonction": [79, 81, 82, 83, 87, 88, 89, 90, 91, 92, 95, 101, 103, 106, 112, 116, 117, 118, 126, 130, 132, 133, 134], "r\u00f4le": [79, 89, 106, 119, 124, 134], "produis": [79, 82, 86, 87, 92, 104, 106, 118, 120, 130], "retour": [79, 82, 87, 88, 99, 101, 102, 110, 112, 116, 117, 126, 130, 136], "sondag": [79, 88, 92, 99, 101, 103, 112, 116, 117, 118, 119, 121, 134], "initial": [79, 82, 84, 86, 88, 89, 90, 92, 99, 100, 101, 103, 106, 108, 109, 110, 112, 113, 114, 117, 120, 123, 130, 134], "donne\u00e9": 79, "divers": [79, 86, 90, 106, 120], "extrair": [79, 83, 86, 109, 128], "afin": [79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 120, 126, 127, 128, 129, 130, 131, 132, 135], "rendr": [79, 87, 89, 92, 104, 106, 109, 112, 113, 114, 120, 126, 132], "dispon": [79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 97, 99, 101, 102, 103, 104, 105, 106, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 126, 127, 128, 129, 130, 132, 134], "feu": [79, 103], "redondant": [79, 87, 104, 106, 110, 118, 126, 127], "s\u00e9lectionn": [79, 87, 96, 99, 101, 106, 109, 116, 117, 126, 128], "illimit\u00e9": [79, 115], "courir": 79, "temp": [79, 81, 83, 84, 86, 87, 89, 90, 92, 93, 95, 99, 101, 102, 103, 105, 106, 108, 110, 112, 117, 118, 120, 123, 124, 125, 127, 128, 129, 136, 139], "invoqu": [79, 83, 90, 110, 126, 127, 133], "d\u00e9marrer": [79, 84, 86, 87, 88, 91, 92, 93, 95, 103, 106, 109, 116, 126, 129, 132], "deux": [79, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 99, 103, 104, 105, 106, 107, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 124, 125, 126, 127, 128, 130, 132, 134], "r\u00e9gl\u00e9": [79, 81, 89, 92, 99, 109, 126], "d\u00e9fini": [79, 82, 83, 84, 86, 87, 88, 89, 90, 92, 97, 99, 102, 103, 104, 105, 106, 109, 110, 113, 114, 115, 116, 117, 120, 123, 124, 126, 127, 128, 129, 130, 131], "lanc\u00e9": [79, 92, 106, 126, 128], "int\u00e9rieur": [79, 88, 90, 101, 103, 106, 113, 114], "comptabilis": 79, "ponctuel": [79, 87], "cr\u00e9ation": [79, 84, 86, 87, 90, 91, 96, 106, 109, 112, 113, 114, 116, 117, 126, 127, 128, 131, 133, 137], "li\u00e9e": [79, 89, 103, 106, 109, 113, 114, 116, 120, 126], "choisir": [79, 86, 87, 89, 90, 93, 95, 103, 112, 120, 126, 128, 132], "autodestruct": 79, "d\u00e9connect\u00e9": 79, "sp\u00e9cifier": [79, 81, 84, 89, 90, 92, 99, 106, 116, 123, 125, 126, 127, 132, 134], "rester": 79, "nouveau": [79, 81, 82, 83, 84, 86, 88, 90, 91, 92, 94, 95, 99, 103, 105, 106, 107, 108, 109, 112, 113, 114, 116, 117, 120, 123, 124, 126, 127, 128, 130, 139], "reparti": 79, "veulent": [79, 87, 95, 104, 105, 112, 116], "souvent": [79, 86, 87, 88, 89, 90, 92, 99, 103, 104, 105, 106, 110, 111, 116, 117, 118, 119, 124, 126], "reprendr": [79, 109], "arr\u00eat\u00e9": [79, 87, 92, 106, 109, 116, 120, 131, 134, 136], "accumuleront": 79, "alor": [79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 92, 93, 95, 99, 101, 102, 103, 104, 106, 109, 110, 112, 113, 114, 116, 117, 118, 120, 126, 127, 128, 130, 131, 134], "p\u00e9riodiqu": [79, 87, 109, 112, 119, 126, 130], "recherch": [79, 81, 84, 86, 88, 89, 90, 92, 93, 103, 104, 106, 108, 109, 110, 112, 116, 120, 124, 126], "nettoy": [79, 92, 103, 104, 116, 134, 135], "actuel": [79, 84, 87, 88, 89, 90, 92, 99, 101, 103, 105, 106, 109, 110, 112, 113, 114, 116, 117, 120, 126, 127, 128, 134, 135, 139], "ayant": [79, 82, 88, 90, 99, 104, 106, 110, 112, 120, 126, 130, 134], "supprim\u00e9": [79, 82, 83, 87, 88, 89, 92, 95, 99, 100, 101, 103, 105, 106, 109, 113, 116, 118, 126, 127, 128, 130, 132, 136], "centain": [79, 87, 88, 91, 101, 108, 109, 112, 118, 120, 129, 132], "millier": [79, 87, 106, 108, 117, 120, 126, 132], "souffrir": [79, 109], "produir": [79, 82, 89, 92, 106, 110, 112, 126, 127, 130], "p\u00e9riod": [79, 82, 87, 106, 109, 118, 126], "prolong\u00e9": [79, 87], "quelconqu": [79, 86, 92, 95, 106, 112], "simplement": [79, 82, 84, 86, 87, 88, 89, 90, 92, 93, 95, 97, 99, 103, 104, 106, 108, 109, 112, 116, 117, 118, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132], "fermer": [79, 120, 133, 137], "supprim": [79, 82, 84, 86, 87, 89, 90, 92, 94, 99, 103, 106, 116, 117, 118, 123, 124, 126, 128, 130, 131, 135], "r\u00e9sout": [79, 126], "recevra": [79, 106, 126, 135], "c\u00f4t\u00e9": [79, 81, 89, 90, 92, 95, 99, 103, 106, 109, 112, 120, 126, 128, 134], "laisser": [79, 104, 131], "tranquil": 79, "relanc": 79, "essentiel": [79, 86, 89, 90, 91, 99, 102, 108, 109, 112, 117, 120, 128, 134], "stockera": 79, "enregistr": [79, 81, 83, 88, 99, 106, 111, 116, 117, 118, 126, 130, 133, 138], "li\u00e9": [79, 87, 91, 104, 106, 109, 110, 112, 126, 128], "transfert": [79, 81, 82, 84, 86, 87, 88, 89, 92, 93, 95, 99, 101, 102, 103, 104, 106, 108, 109, 110, 112, 116, 117, 118, 119, 126, 127, 128, 130, 132, 134], "\u00e9chou\u00e9": [79, 82, 88, 99, 101, 106, 116, 130], "r\u00e9essayez": [79, 99], "interval": [79, 87, 93, 101, 106, 109, 112, 116, 118, 120, 127], "raisonn": [79, 88, 89, 92, 93, 95, 99, 106, 110, 112, 113, 114, 116, 117, 120, 126, 127], "bloqu\u00e9": [79, 92, 106, 116], "\u00e9l\u00e9ment": [79, 81, 82, 84, 86, 88, 89, 90, 92, 93, 99, 105, 106, 112, 116, 120, 123, 126, 128, 130, 132], "particuli": [79, 86, 89, 90, 91, 92, 99, 101, 104, 105, 106, 109, 112, 120, 126, 127, 132, 134], "revient": [79, 86, 99, 106], "priorit\u00e9": [79, 87, 89, 90, 93, 106, 109, 111, 116, 117, 126, 127], "\u00e9lev\u00e9": [79, 84, 87, 89, 93, 95, 101, 104, 105, 106, 109, 110, 112, 115, 117, 120, 126, 127, 137], "d\u00e9j\u00e0": [79, 86, 87, 88, 92, 95, 99, 101, 105, 106, 109, 110, 112, 116, 117, 118, 120, 123, 124, 126, 128, 133, 138], "retard": [79, 87, 90, 98, 99, 102, 109, 112, 117, 118, 126, 128], "anglai": [79, 82, 87, 88, 91, 92, 101, 106, 119, 126, 134], "trafic": [79, 84, 90, 98, 101, 104, 106, 109, 110, 112, 120, 126, 128], "traver": [79, 87, 90, 93, 101, 104, 105, 106, 109, 110, 112, 116, 117, 118, 119, 120, 128], "excessif": 79, "seul": [79, 81, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 98, 99, 103, 104, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 123, 124, 126, 127, 128, 131, 132, 134], "partag": [79, 86, 87, 88, 89, 90, 95, 103, 104, 106, 112, 116, 123, 124, 125, 126, 127, 128, 132, 139], "desservir": [79, 101], "heurter": 79, "am\u00e9lior": [79, 88, 90, 91, 92, 95, 96, 104, 107, 109, 110, 112, 126], "d\u00e9bit": [79, 87, 90, 92, 99, 103, 106, 117], "processeur": [79, 86, 87, 101, 109, 110, 120], "servir": [79, 82, 88, 97, 99, 102, 104, 105, 106, 109, 110, 112, 117, 134], "divis": [79, 89, 90, 95, 101, 106, 132], "permettra": [79, 80, 86, 117], "doublon": [79, 82, 86, 88, 103, 106, 109, 116, 119, 123, 126, 127, 130], "notez": [79, 86, 87, 92, 103, 104, 106, 109, 120, 126, 134, 136], "re\u00e7u": [79, 82, 83, 86, 87, 88, 90, 92, 95, 99, 106, 112, 116, 120, 126, 128, 130, 132, 135], "pourrait": [79, 81, 82, 86, 87, 90, 92, 95, 97, 99, 101, 103, 104, 105, 106, 109, 112, 115, 116, 118, 120, 123, 124, 126, 127, 128, 132, 134, 137], "choisi": [79, 86, 87, 89, 90, 91, 101, 103, 106, 108, 109, 117, 119, 123, 126], "duplicata": [79, 88], "pri": [79, 82, 83, 85, 88, 89, 91, 99, 101, 104, 105, 106, 107, 109, 120, 125, 127, 128], "efficac": [79, 84, 86, 89, 90, 93, 101, 102, 103, 105, 106, 109, 110, 112, 117, 126, 127, 128, 129, 132], "d\u00e9ployer": [79, 110, 117, 120, 126], "couch": [79, 87, 89, 90, 92, 95, 99, 101, 103, 104, 112, 126, 128], "d\u00e9sactiv\u00e9": [79, 84, 106, 109, 116, 120, 126], "jusqu": [79, 81, 86, 90, 93, 95, 98, 99, 101, 104, 105, 106, 109, 110, 112, 116, 117, 123, 126, 127, 128, 135, 137], "interconnexion": [79, 104, 105, 112], "cha\u00eenag": 79, "guirland": 79, "t\u00eate": [79, 81, 83, 88, 89, 90, 91, 92, 95, 103, 104, 106, 114, 115, 116, 118, 126, 127, 132], "d\u00e9cision": [79, 86, 90, 93, 112, 117, 126, 128], "respectiv": [79, 84, 88, 126, 127], "\u00e9metteur": 79, "gamm": [79, 92, 120], "\u00e9tat": [79, 81, 82, 84, 87, 88, 90, 92, 106, 108, 110, 112, 113, 114, 116, 123, 126, 128, 130, 131, 134, 137], "interpr\u00e9t\u00e9": [79, 84, 92, 99, 106, 113, 114, 123, 126, 128], "\u00e9mi": [79, 90, 92, 101, 113, 128], "fin": [79, 81, 84, 87, 88, 90, 92, 95, 97, 99, 101, 102, 104, 106, 109, 110, 112, 113, 114, 116, 118, 120, 124, 125, 126, 127, 128, 131], "destin\u00e9": [79, 86, 88, 89, 90, 91, 92, 93, 101, 106, 112, 126, 128, 129, 132], "rout\u00e9": [79, 93], "ver": [79, 81, 82, 84, 85, 86, 87, 89, 90, 91, 93, 96, 99, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 117, 120, 123, 126, 127, 130, 132], "voir": [79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 103, 104, 106, 109, 110, 112, 116, 117, 118, 121, 126, 129, 131, 132, 134, 135, 136], "invoqu\u00e9": [79, 88, 91, 99, 104, 106, 123, 127], "lier": [79, 90, 104, 106, 126], "obtenir": [79, 81, 82, 84, 86, 88, 89, 90, 92, 93, 95, 99, 101, 103, 104, 105, 106, 109, 112, 113, 114, 116, 120, 123, 126, 127, 128, 129, 130, 132, 134], "recueillir": [79, 81], "statistiqu": [79, 88, 106, 109, 116, 126, 128, 130, 133], "taux": [79, 86, 87, 89, 93, 106, 109, 126], "poteaux": 79, "aussi": [79, 86, 87, 88, 90, 92, 93, 99, 101, 103, 106, 108, 109, 112, 117, 120, 126, 134], "aller": [79, 81, 87, 90, 93, 101, 102, 112, 117, 126, 129, 139], "devon": [79, 86, 87, 92, 99], "trouver": [79, 87, 94, 95, 103, 105, 106, 110, 112, 120, 123, 124, 126, 130, 136], "va": [79, 86, 87, 89, 90, 95, 99, 104, 106, 114, 117, 118, 123, 125, 126, 128], "graphiqu": [79, 87, 112], "lapin": 79, "install\u00e9": [79, 80, 84, 86, 87, 92, 99, 106, 116, 129, 132, 134], "agit": [79, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 99, 103, 104, 105, 106, 112, 116, 117, 118, 120, 126, 134], "outil": [79, 84, 86, 87, 88, 90, 91, 92, 93, 95, 101, 103, 106, 108, 109, 110, 116, 123, 124, 125, 126, 127, 128, 129, 131, 139], "\u00e9chell": [79, 86, 87, 90, 99, 101, 103, 104, 110, 112, 120, 134], "permet": [79, 82, 83, 86, 87, 88, 89, 90, 92, 93, 95, 99, 101, 106, 107, 109, 110, 112, 115, 116, 118, 120, 123, 126, 128, 131, 132], "sc\u00e9nario": 79, "d\u00e9ploiment": 79, "suppos\u00e9": [79, 90, 102, 106, 126], "compt": [79, 84, 86, 87, 90, 91, 92, 103, 104, 106, 109, 112, 113, 114, 120, 125, 127, 135], "stocker": [79, 86, 87, 88, 92, 95, 101, 106, 112, 115], "orient\u00e9": [79, 90, 91, 99, 101, 105, 110], "personnel": [79, 108, 112, 120], "bas\u00e9": [79, 86, 87, 88, 89, 90, 92, 99, 101, 103, 106, 108, 109, 110, 112, 113, 114, 117, 119, 126, 127, 128, 130, 131], "implant": [79, 101, 110, 128], "tenu": [79, 112, 135], "h\u00f4te": [79, 83, 90, 92, 93, 98, 99, 103, 104, 105, 106, 126, 127, 128], "g\u00e9n\u00e9rale": [79, 88, 89, 90, 92, 103, 105, 110, 120, 128], "dessu": [79, 81, 82, 86, 87, 88, 89, 92, 94, 99, 103, 104, 106, 109, 112, 116, 117, 120, 125, 126, 127, 128, 129, 130, 132, 133, 136], "bri\u00e8vement": [79, 84], "pouvez": [79, 81, 84, 86, 88, 89, 90, 91, 92, 94, 95, 99, 101, 106, 118, 120, 127, 129, 131, 132, 133, 134, 136, 137], "prendr": [79, 81, 86, 87, 88, 89, 90, 92, 103, 104, 105, 106, 110, 112, 117, 120, 126, 128], "fondamental": [79, 88, 99, 101, 120], "activera": [79, 86], "emp\u00eacher": [79, 106, 126], "ind\u00e9sir": [79, 92, 112, 120], "\u00e9cout": 79, "sugg\u00e9r\u00e9": [79, 134], "crypter": [79, 101], "obtent": [79, 112], "certificat": [79, 104, 126], "discut\u00e9": [79, 106, 116], "m\u00e9thode": [79, 81, 83, 86, 87, 89, 90, 92, 93, 95, 98, 99, 101, 102, 103, 104, 105, 106, 110, 112, 116, 117, 118, 120, 125, 126, 127, 128, 129, 131, 134], "produit": [79, 82, 84, 86, 87, 89, 90, 91, 92, 93, 95, 99, 101, 103, 104, 105, 106, 108, 110, 112, 113, 114, 116, 117, 118, 119, 126, 127, 128, 130, 132], "lisibl": [79, 86, 99, 102, 106], "ajust": [79, 84, 87, 92, 99, 109, 111, 118, 120, 124, 126], "permettr": [79, 86, 88, 89, 92, 103, 104, 105, 106, 108, 109, 110, 112, 116, 120, 126, 128, 134, 135], "lire": [79, 86, 88, 90, 91, 92, 95, 101, 104, 116, 120, 129, 130], "fa\u00e7on": [79, 81, 86, 88, 90, 91, 92, 95, 99, 102, 103, 104, 105, 106, 109, 110, 111, 115, 116, 117, 120, 129, 132, 134, 137, 138], "copier": [79, 86, 88, 90, 92, 97, 99, 100, 104, 106, 108, 109, 110, 116, 118, 123, 124, 127, 130], "ailleur": [79, 95, 99, 112, 113, 114, 116, 126, 128], "cha\u00een": [79, 81, 82, 86, 88, 90, 93, 99, 101, 106, 110, 113, 114, 116, 120, 121, 125, 126, 127, 128, 130, 131, 132], "configurez": [79, 92, 129, 136], "\u00e9couteur": 79, "crypt\u00e9": [79, 104], "cryptag": [79, 101, 120, 126], "sinon": [79, 89, 91, 94, 95, 106, 123, 125, 127], "r\u00e9glage": [79, 82, 88, 90, 99, 102, 117, 126, 130], "dire": [79, 86, 87, 88, 90, 91, 92, 93, 95, 99, 102, 103, 105, 106, 109, 110, 112, 126, 132], "contrair": [79, 106, 109, 112, 120, 127, 135], "brisera": [79, 104], "cour": [79, 81, 82, 86, 87, 90, 92, 99, 105, 106, 108, 109, 110, 112, 116, 120, 123, 126, 128, 129, 130, 134], "ancien": [79, 84, 87, 88, 92, 99, 102, 106, 109, 116, 117, 126, 127, 128, 134], "nouveaux": [79, 81, 82, 83, 84, 86, 87, 88, 92, 99, 101, 105, 106, 109, 110, 112, 116, 117, 126, 127, 132, 138], "meilleur": [79, 86, 87, 92, 98, 99, 102, 103, 109, 111, 117, 119, 120, 126, 127, 135], "mot": [79, 83, 84, 87, 89, 90, 91, 92, 99, 103, 104, 105, 120, 121, 123, 125, 129, 136], "annul": [79, 126], "invit\u00e9": [79, 106, 127, 128], "sugg\u00e9ron": 79, "appelon": [79, 120, 132], "fixant": 79, "cr\u00e9ez": [79, 87, 94, 106, 130, 131, 134], "ex\u00e9cuteront": [79, 84], "dison": [79, 86, 95, 109, 126], "stock\u00e9": [79, 82, 83, 86, 87, 88, 92, 99, 104, 106, 112, 116, 120, 123, 125, 126, 127, 128, 130], "maintenu": [79, 88, 89, 103, 120], "humain": [79, 112], "coquil": 79, "interactif": [79, 88, 99, 106], "appropri\u00e9": [79, 81, 82, 86, 87, 88, 90, 91, 92, 99, 101, 103, 104, 106, 109, 112, 117, 126, 127, 128, 130, 134, 135], "peu": [79, 86, 87, 88, 90, 92, 95, 98, 99, 100, 101, 102, 103, 104, 106, 108, 110, 112, 117, 120, 126, 127, 136], "abord": [79, 86, 90, 92, 93, 100, 109, 117, 123, 126, 128, 136], "entr\u00e9": [79, 80, 81, 84, 85, 87, 90, 92, 95, 97, 99, 100, 101, 106, 107, 108, 109, 110, 112, 113, 115, 116, 120, 123, 124, 125, 126, 127, 131, 138], "v\u00e9rific": [79, 86, 88, 90, 99, 106, 120, 126], "emp\u00each": [79, 87, 90, 95, 99, 103, 106, 112, 126], "pleinement": [79, 101], "qualifi\u00e9": 79, "t\u00e9l\u00e9charger": [79, 81, 82, 86, 87, 88, 90, 92, 99, 101, 103, 104, 105, 106, 110, 112, 116, 123, 126, 127, 128, 129, 130, 131, 135, 138], "inclus": [79, 81, 82, 83, 86, 92, 106, 115, 116, 126], "placer": [79, 82, 86, 87, 88, 106, 113, 114, 116, 120, 126, 128], "appel\u00e9": [79, 82, 86, 87, 88, 89, 90, 92, 98, 99, 101, 104, 105, 106, 109, 110, 112, 113, 114, 116, 118, 120, 123, 126, 127, 128, 130, 132], "racin": [79, 87, 88, 89, 90, 92, 103, 106, 108, 110, 116, 117, 127, 128, 129, 131], "car": [79, 84, 86, 87, 88, 89, 90, 92, 95, 99, 101, 103, 104, 106, 109, 110, 112, 116, 117, 120, 124, 126, 127, 128, 131, 132, 134, 135, 136], "privil\u00e9gi\u00e9": 79, "port\u00e9": [79, 82, 84, 88, 89, 99, 103, 106, 112, 117, 121, 126], "pratiqu": [79, 86, 89, 90, 91, 92, 93, 95, 98, 99, 101, 103, 104, 106, 109, 110, 111, 115, 116, 117, 120, 126, 134, 135], "gr\u00e2ce": [79, 83, 89, 107, 112, 116], "administr\u00e9": [79, 132], "\u00e9crivez": [79, 87, 106], "pr\u00e9sent\u00e9": [79, 90, 116], "interm\u00e9diair": [79, 86, 90, 93, 95, 101, 110, 112, 118, 120, 128], "deuxi\u00e8m": [79, 86, 88, 89, 90, 92, 103, 105, 106, 108, 109, 110, 117, 118, 120, 123, 126, 127, 128], "potentiel": [79, 81, 86, 87, 89, 90, 99, 112, 116, 118, 128, 130], "op\u00e8r": 79, "n\u0153ud": [79, 87, 88, 89, 90, 93, 95, 101, 103, 104, 105, 106, 109, 112, 117, 120, 126, 128], "\u00e9tape": [79, 81, 82, 83, 86, 87, 88, 91, 92, 95, 101, 103, 104, 105, 112, 130], "sp\u00e9cifiez": [79, 106, 126, 127], "connu": [79, 84, 86, 92, 96, 101, 104, 105, 106, 112, 116, 126, 134], "voulez": [79, 87, 92, 106, 129, 130, 132], "resultat": 79, "authentifi": [79, 90, 103, 106, 127], "aupr\u00e8": [79, 90, 92, 106, 110, 112, 126, 134], "obtient": [79, 87, 88, 92, 99, 120, 126], "d\u00e9clarer": [79, 82, 88, 89, 90, 99, 106, 110, 116, 124, 126], "d\u00e9clar\u00e9": [79, 82, 88, 90, 106, 116, 126, 130], "ceux": [79, 82, 86, 87, 88, 89, 90, 91, 92, 99, 102, 103, 104, 105, 109, 110, 116, 120, 126, 127, 130, 134], "int\u00e9gr\u00e9": [79, 82, 83, 84, 86, 87, 88, 89, 92, 93, 99, 101, 102, 105, 106, 110, 116, 118, 120, 126, 130, 131], "devait": [79, 99, 108, 109, 110, 112], "sembl": [79, 92, 95, 99, 112, 118, 135], "bref": [79, 82, 88, 130], "g\u00e8re": [79, 87, 90, 93, 101, 104, 105, 106, 120, 134], "ajouterait": 79, "pui": [79, 82, 86, 87, 88, 89, 90, 91, 92, 93, 95, 99, 101, 102, 103, 106, 109, 110, 112, 116, 118, 120, 123, 126, 127, 130, 132, 133, 136], "ajoutez": [79, 81, 82, 86, 87, 88, 91, 92, 99, 126, 127, 132], "lancez": [79, 137], "suffit": [79, 90, 93, 95, 99, 101, 106, 112, 113, 118, 120, 126], "automatis\u00e9": [79, 91, 110, 116], "mod\u00e8l": [79, 82, 84, 87, 89, 91, 94, 96, 99, 105, 106, 109, 110, 112, 116, 117, 121, 127, 128, 131], "lourd": [79, 90, 101, 116, 120], "lor": [79, 82, 84, 87, 88, 89, 90, 92, 93, 95, 97, 99, 102, 103, 104, 106, 108, 109, 112, 113, 114, 116, 118, 120, 124, 126, 127, 128, 129, 130, 131, 132], "r\u00e9gler": [79, 87, 106, 112, 126], "param\u00e9trag": 79, "param\u00e9tr": 79, "param\u00e8tr": [79, 81, 83, 84, 85, 86, 87, 88, 90, 92, 94, 99, 105, 106, 110, 113, 114, 117, 120, 123, 124, 125, 126, 127, 128, 130, 131, 132], "tard": [79, 82, 90, 93, 99, 109, 110, 112, 116, 117, 120, 126], "essay": [79, 88, 89, 92, 101, 106, 126], "amont": [79, 88, 90, 99, 101, 104, 105, 106, 116, 118, 130, 132], "court": [79, 83, 87, 89, 92, 99, 106, 110, 112, 120, 126, 128], "passag": [79, 89, 99, 101, 109, 112, 126], "\u00e7a": [79, 92, 106, 126, 134], "appuyez": 79, "arr\u00eater": [79, 87, 88, 106, 123, 126, 136, 137], "quelqu": [79, 81, 84, 86, 87, 88, 89, 90, 92, 93, 95, 98, 99, 101, 103, 104, 105, 106, 109, 110, 112, 116, 117, 118, 124, 126, 128, 130, 132, 135, 137], "fonctionnel": [79, 87, 88, 90, 92, 103, 106, 126], "allou\u00e9": [79, 106], "continuera": [79, 106, 112, 123], "d\u00e9marr": [79, 92, 117, 129, 135, 137], "tourner": [79, 90, 104, 116, 117], "aval": [79, 86, 88, 90, 93, 101, 113, 114, 116, 117, 128], "r\u00e9": [79, 100, 103, 104, 106], "publier": [79, 81, 82, 86, 88, 89, 90, 92, 95, 97, 99, 103, 106, 112, 117, 121, 126, 127, 128, 130, 133], "supposon": [79, 86, 99, 112, 117], "inscript": 79, "cr\u00e9on": [79, 89, 103, 133], "pr\u00e9c\u00e9dent": [79, 82, 84, 87, 88, 89, 90, 92, 99, 106, 110, 116, 117, 126, 127, 128, 130], "sp\u00e9cialis\u00e9": [79, 103, 106, 112, 120, 124, 126], "\u00e9changexpubl": 79, "sautera": 79, "t\u00e9l\u00e9chargera": [79, 128, 131, 135], "sorti": [79, 80, 81, 82, 83, 86, 87, 88, 91, 92, 93, 97, 99, 101, 103, 104, 106, 107, 109, 112, 116, 117, 123, 124, 126, 127, 128, 129, 136, 138], "r\u00e9v\u00e8le": 79, "grapp": [79, 103, 104, 106, 110, 117, 118], "t\u00e9l\u00e9chargement": [79, 81, 82, 85, 86, 87, 88, 89, 90, 92, 95, 97, 99, 101, 103, 104, 106, 108, 112, 113, 114, 119, 123, 126, 127, 128, 131, 132, 135, 138], "fass": [79, 95, 128], "construir": [79, 81, 87, 88, 91, 92, 95, 99, 116, 120, 123, 132, 134], "locaux": [79, 86, 87, 90, 93, 101, 104, 106, 112, 123, 126], "affich\u00e9": [79, 82, 106, 110, 114, 116, 126, 127], "annonceron": 79, "t\u00e9l\u00e9charg\u00e9": [79, 83, 87, 88, 90, 92, 94, 106, 110, 112, 116, 123, 126, 128, 129, 131, 132, 134, 138], "miroir": [79, 86, 87, 92, 99, 100, 106, 110, 111, 112, 113, 114, 117, 119, 121, 126, 127, 128, 131], "faux": [79, 86, 126, 127, 130], "quand": [79, 82, 86, 87, 88, 89, 90, 93, 95, 101, 102, 106, 109, 116, 117, 118, 120, 123, 126, 127, 128, 130], "cepend": [79, 84, 89, 90, 95, 101, 104, 109, 126, 129, 135], "ant\u00e9rieur": [79, 89, 90, 92, 102, 105, 106, 126, 128, 134], "pr\u00e9fix": [79, 82, 84, 89, 90, 92, 99, 102, 106, 108, 112, 113, 114, 116, 126, 127, 128, 130], "facilit\u00e9": [79, 128], "essayez": [79, 81, 88, 92, 99, 105], "d\u00e9marr\u00e9": [79, 83, 86, 87, 90, 92, 106, 116, 123, 126, 130, 131, 134], "toujour": [79, 81, 83, 84, 87, 88, 90, 92, 95, 98, 99, 101, 103, 104, 106, 109, 112, 118, 123, 126, 127, 128, 130, 135], "sp\u00e9cifiant": [79, 103, 106, 125], "courant": [79, 81, 82, 84, 87, 88, 90, 92, 93, 95, 101, 104, 106, 116, 120, 123, 126, 128, 130], "pendant": [79, 82, 86, 87, 89, 90, 92, 99, 106, 109, 110, 112, 116, 117, 126, 128, 130], "d\u00e9bogag": [79, 88, 92, 97, 99, 106, 109, 116, 124, 126, 129], "renommez": 79, "jeter": [79, 86, 91], "coup": [79, 82, 86, 88, 91, 123], "oeil": [79, 130], "indiqu": [79, 82, 84, 86, 87, 88, 89, 90, 91, 92, 95, 99, 103, 104, 105, 106, 109, 112, 113, 114, 115, 116, 117, 118, 120, 123, 126, 127, 128, 129, 130, 132, 135], "cr\u00e9ant": [79, 82, 92, 106, 116, 120, 127], "post\u00e9": [79, 86, 87, 92, 104, 106, 116, 124, 126], "alimentateur": 79, "achemin": [79, 83, 86, 88, 89, 90, 101, 104, 105, 109, 112, 118, 126], "soumi": [79, 87, 106], "journalis": [79, 85, 86, 88, 90, 95, 99, 106, 126, 130, 137], "d\u00e9sir\u00e9": [79, 101], "comprendr": [79, 86, 88, 89, 90, 103, 106, 109, 112, 116, 120, 128, 130], "pelleteus": 79, "copient": [79, 105, 106, 112, 126], "\u00e9chantillon": [79, 87, 88, 95, 109], "go\u00fbt": [79, 82, 86, 131], "r\u00e9cup\u00e9rer": [79, 85, 86, 89, 92, 100, 103, 106, 112, 113, 114, 120, 126, 128, 131, 132], "supprimez": [79, 82, 88, 90, 99, 130], "attendez": [79, 87, 90, 92, 110, 117, 132], "rr_xreport2tsource2tsource2": 79, "inject\u00e9": [79, 86, 87, 90, 103, 106, 112, 126], "s\u00e9lectionn\u00e9": [79, 87, 90, 106, 109, 112, 125, 126, 128], "copi\u00e9": [79, 101, 105, 109, 112, 128], "trouvera": 79, "affichera": [79, 137], "t\u00e9l\u00e9charg": [79, 86, 87, 90, 92, 97, 99, 103, 106, 110, 112, 116, 124, 126, 131], "depui": [79, 81, 92, 93, 96, 105, 106, 108, 109, 110, 112, 117, 126, 127], "nouvel": [79, 81, 82, 84, 86, 87, 88, 90, 91, 92, 99, 101, 104, 106, 107, 108, 110, 112, 116, 118, 126, 128, 130, 132, 135, 136], "feront": [79, 87, 92, 126], "sein": [79, 87, 90, 101, 109, 112], "\u00e9ch\u00e9ant": 79, "trait\u00e9": [79, 82, 84, 86, 87, 88, 90, 91, 92, 93, 99, 102, 106, 109, 110, 112, 113, 114, 116, 123, 126, 128, 130, 131], "contr\u00f4l": [79, 82, 84, 87, 88, 90, 94, 95, 99, 101, 104, 105, 106, 108, 109, 110, 112, 113, 114, 117, 118, 120, 126, 127, 128, 130], "\u00e9tant": [79, 81, 87, 88, 89, 90, 92, 93, 99, 101, 104, 106, 108, 109, 112, 113, 114, 116, 117, 118, 120, 125, 126, 127, 129, 130, 133], "arbr": [79, 86, 87, 88, 92, 93, 95, 99, 101, 103, 104, 106, 110, 112, 116, 117, 127], "raisonnabl": [79, 103], "\u00e9laguer": 79, "celui": [79, 82, 84, 86, 88, 92, 93, 99, 101, 106, 109, 112, 113, 114, 117, 120, 126, 129, 130, 132, 134], "sembler": [79, 120], "trouvait": [79, 87], "tr\u00e8": [79, 84, 86, 87, 88, 89, 90, 92, 93, 95, 98, 99, 100, 101, 103, 104, 105, 106, 108, 110, 111, 112, 116, 117, 118, 120, 126, 127, 128, 129], "r\u00e9el": [79, 81, 86, 87, 88, 89, 93, 99, 101, 102, 103, 105, 106, 108, 109, 110, 112, 115, 116, 120, 123, 124, 125, 126, 127, 128, 129, 139], "rempli": [79, 88, 103, 116], "grand": [79, 84, 86, 87, 88, 89, 90, 92, 93, 95, 101, 104, 106, 108, 109, 110, 112, 116, 117, 118, 119, 126, 127, 128, 129, 130, 132, 134], "tailler": 79, "r\u00e9guli\u00e8r": [79, 82, 87, 89, 90, 97, 99, 104, 106, 112, 124, 126, 127, 130, 131], "optimal": [79, 86, 90, 111, 117, 120, 126], "taill": [79, 81, 82, 86, 88, 89, 90, 93, 95, 99, 101, 104, 105, 106, 109, 110, 111, 113, 114, 116, 117, 118, 127, 128, 130], "devienn": [79, 88, 90, 93, 95, 99, 112, 116, 117], "trop": [79, 86, 88, 89, 90, 92, 93, 99, 102, 106, 112, 117, 119, 126, 127, 134], "on\u00e9reux": [79, 120], "maintenir": [79, 101, 120], "faisant": [79, 87, 88, 89, 91, 127, 130], "rouler": [79, 123], "espac": [79, 86, 90, 91, 92, 99, 104, 105, 106, 109, 113, 114, 115, 126], "durer": 79, "logiqu": [79, 86, 88, 90, 92, 95, 99, 101, 103, 108, 112, 116, 126, 127, 133], "fonctionnerait": [79, 86, 95, 99], "quotidien": [79, 92, 103, 126], "encourir": 79, "p\u00e9nalit\u00e9": [79, 86, 109, 112], "d\u00e9couvert": [79, 112], "approch": [79, 86, 87, 92, 99, 102, 108, 109, 112, 117, 118, 120], "remplac": [79, 82, 84, 86, 87, 88, 92, 95, 101, 105, 106, 108, 110, 112, 116, 118, 120, 121, 123, 124, 127, 128, 130, 134], "aurait": [79, 87, 90, 116, 127, 128], "pr\u00e9f\u00e9r\u00e9": [79, 92, 126], "semblerait": 79, "inclut": [79, 80, 84, 86, 92, 95, 99, 104, 106, 112, 125, 126, 128], "r\u00e9p\u00e9tition": 79, "noter": [79, 86, 87, 106, 109, 117, 126, 127, 128], "nettoieront": 79, "enlev\u00e9": [79, 117], "minuit": [79, 87], "racourcir": 79, "planter": [79, 86, 127, 129], "red\u00e9marrag": [79, 89, 92, 103, 126, 131, 137], "unit\u00e9": [79, 87, 92, 106, 126, 130, 134], "expliqu\u00e9": [79, 92, 131, 134], "emp\u00eachent": 79, "tirer": [79, 91, 108, 127, 128], "ferait": [79, 95, 137], "invers": [79, 106, 126], "\u00e9labor\u00e9": [79, 128], "\u00e9viter": [79, 87, 88, 90, 95, 99, 101, 103, 104, 106, 109, 112, 120, 126, 127, 128, 134], "contourn": [79, 86, 92, 112], "param\u00e9tr\u00e9": 79, "devez": [79, 81, 86, 88, 89, 92, 94, 106, 131, 132], "requis": [79, 83, 84, 86, 87, 92, 93, 106, 109, 115, 128], "g\u00e9r\u00e9e": [79, 103], "s\u00e9par\u00e9ment": [79, 90, 100, 106, 112, 126, 127], "migr": 79, "d\u00e9place": [79, 106, 130], "fonctionn\u00e9": [79, 86, 99, 108], "test\u00e9": [79, 86, 92, 93, 101, 103, 109, 117, 127], "cherchait": 79, "savoir": [79, 86, 87, 88, 89, 92, 93, 98, 99, 101, 104, 105, 109, 112, 116, 126, 128], "strictement": [79, 91, 106, 120, 126], "r\u00e9pons": [79, 81, 99, 106, 112, 120, 128], "ai": [79, 90, 95, 99, 104, 106, 109, 126], "eue": 79, "gourou": 79, "\u00e9coutant": [79, 95], "activez": [79, 84, 126], "partenair": [79, 90, 109, 110, 112], "votr": [79, 81, 82, 86, 87, 88, 89, 90, 91, 92, 98, 101, 119, 126, 129, 130, 132, 134, 137], "vo": [79, 81, 86, 87, 129, 137, 138], "publi\u00e9": [79, 81, 83, 86, 87, 88, 90, 92, 95, 102, 103, 104, 105, 106, 109, 112, 113, 117, 124, 126, 127, 128, 130], "consomm": [79, 89, 90, 92, 103, 108, 109, 112, 116, 126, 128, 130, 132], "imprim": [79, 80, 87, 92, 106, 116, 126, 129], "ajouton": 79, "mapp": [79, 120], "mappon": 79, "d\u00e9marrez": [79, 94, 126, 129, 135], "testez": 79, "pertinent": [79, 82, 84, 90, 91], "sarrac\u00e9ni": [79, 101, 106, 110], "souhait": [79, 90, 95, 97, 101, 106, 112, 117, 126, 130], "pont": [79, 105], "travaux": [79, 89, 92, 93, 100, 105, 108, 109, 110, 112, 117, 134], "t\u00e9l\u00e9chargeur": [79, 101, 106, 112, 116, 126, 127, 132], "commut": [79, 95, 101, 104], "omm": [79, 114], "avait": [79, 84, 88, 90, 92, 95, 99, 106, 108, 109, 110, 112, 116, 126], "diffus": [79, 87, 101, 104, 110, 112, 124], "coll": [79, 89], "nourrir": 79, "compr\u00e9hens": [79, 88, 91, 99, 103, 104, 105, 110, 112, 116, 120], "profond": [79, 84, 86, 120, 128], "derni\u00e8r": [79, 81, 83, 88, 92, 95, 105, 106, 109, 110, 112, 117, 118, 123, 126, 128, 134], "proprement": [79, 112, 126, 133, 137], "dit": [79, 90, 106, 109, 112, 120], "mettant": [79, 82, 104, 105, 112], "sujet": [79, 89, 90, 92, 93, 103, 104, 105, 106, 110, 112, 113, 114, 115, 120, 126, 127, 128, 132], "balis": [79, 92, 99, 113, 114, 136], "\u00e0": [80, 81, 82, 83, 84, 85, 90, 91, 93, 94, 97, 98, 100, 101, 102, 104, 105, 107, 109, 111, 113, 114, 117, 118, 119, 120, 123, 124, 125, 127, 128, 129, 130, 131, 132, 134, 135, 136, 138, 139], "appui": [80, 92, 105, 110, 128], "conteneuris": 80, "natif": [80, 84, 85, 109], "offrir": [80, 93, 112], "flexibilit\u00e9": [80, 86, 88, 93, 106], "davantag": [80, 83, 87, 90, 106, 112, 116], "d\u00e9ploiement": [80, 84, 90, 99, 103, 105, 109, 110, 111, 112, 119, 126], "cons\u00e9quenc": [80, 84, 88, 92, 101, 110], "trouverez": [80, 92, 116], "dessou": [80, 84, 87, 88, 91, 92, 93, 94, 99, 103, 104, 106, 109, 110, 115, 116, 117, 123, 126, 127, 132], "mond": [80, 88, 89, 93, 100, 112, 132], "conteneur": [80, 92], "pr\u00e9vu": [80, 84, 92, 101, 109, 128, 135], "communiqu": [81, 84, 92, 103, 104, 112, 120], "publicit\u00e9": [81, 90, 104, 105, 112, 121, 126], "int\u00e9grer": [81, 89, 112, 116], "transparent": [81, 89, 92, 93, 101, 103, 120], "\u00e9tendr": [81, 93, 99, 108, 110, 116], "pr\u00eat": [81, 86, 87, 92, 99, 101, 104, 105, 106, 109, 116, 120, 126, 130, 132, 133, 135, 137], "emploi": [81, 86, 106], "prend": [81, 83, 84, 86, 87, 89, 90, 91, 92, 97, 98, 99, 101, 103, 104, 106, 108, 112, 113, 114, 116, 117, 118, 120, 124, 125, 126, 128, 131, 132], "interrog": [81, 84, 90, 92, 93, 101, 103, 106, 109, 112, 116, 130], "eau": 81, "r\u00e9servoir": 81, "lac": 81, "pr\u00e8": [81, 90, 98, 104, 120], "auxquel": [81, 105, 106, 132], "navigu": [81, 112, 129], "consid\u00e9r\u00e9": [81, 84, 86, 88, 90, 91, 92, 101, 102, 103, 104, 106, 113, 114, 117, 120, 126, 127, 128], "vouliez": 81, "localisateur": 81, "puisqu": [81, 87, 88, 99, 101, 103, 104, 106, 109, 112, 117, 127], "devrez": [81, 88, 106, 125, 132, 134], "saurait": 81, "localis": [81, 96], "inclu": [81, 82, 83, 86, 87, 88, 89, 99, 105, 106, 110, 116, 126, 128, 134], "ba": [81, 87, 88, 92, 106, 116, 121, 126, 134], "surchargerait": 81, "utiliserait": 81, "d\u00e9crite": [81, 89, 90, 92, 103, 108, 124], "d\u00e9partement": [81, 90], "mar\u00e9": 81, "publi": [81, 87, 90, 92, 103, 104, 106, 112, 117, 122, 128], "coop\u00e9ratif": [81, 90, 103], "adress": [81, 83, 87, 88, 89, 99, 103, 104, 106, 110, 117, 120, 126], "souhaitez": [81, 90, 92, 99, 112, 116, 117, 126, 127, 129, 131, 132, 133], "temp\u00e9ratur": 81, "heur": [81, 82, 86, 87, 88, 92, 105, 106, 108, 109, 110, 112, 116, 126, 127, 128, 130, 134], "enregistr\u00e9": [81, 86, 93, 99, 104, 113, 114, 126, 128], "configureriez": 81, "veill": [81, 126], "requ\u00eat": [81, 83, 90, 109, 112, 123, 126], "r\u00e9veill": 81, "hypoth\u00e8s": [81, 92, 96], "erron\u00e9": 81, "maintienn": [81, 88, 105, 109], "r\u00e9cup\u00e9rerait": 81, "saisit": 81, "publient": [81, 88, 90, 101, 103, 104, 106, 126, 136], "aid": [81, 82, 86, 87, 88, 89, 90, 91, 92, 93, 99, 101, 103, 106, 109, 110, 112, 116, 117, 118, 120, 123, 126, 128, 129, 130, 131, 132, 134], "modifiez": [81, 82, 92, 116], "pollingurl": 81, "contibut": 81, "ressemblez": 81, "messageri": [81, 83, 87, 89, 90, 99, 101, 112, 115, 116, 128, 132], "fournir": [81, 84, 86, 87, 88, 89, 90, 91, 92, 93, 103, 104, 105, 106, 108, 109, 112, 116, 120, 126, 127, 128, 131, 132], "demand\u00e9": [81, 106, 109, 110], "r\u00e9seau": [81, 85, 87, 90, 93, 101, 102, 103, 104, 106, 109, 112, 113, 114, 116, 117, 118, 119, 120, 126, 127, 128], "op\u00e9rat": [81, 82, 85, 86, 88, 90, 91, 92, 93, 99, 106, 108, 109, 110, 112, 113, 114, 116, 117, 120, 126, 127, 128, 129], "prise": [81, 84, 88, 89, 92, 99, 100, 103, 106, 107, 109, 110, 112, 113, 114, 116, 119, 126, 128, 130, 131, 137], "not\u00e9": [81, 106], "renverra": [81, 93, 133], "taillemax": 81, "1er": [81, 90, 99], "septembr": [81, 92, 109], "converti": [81, 84, 88, 99, 106, 126], "vid\u00e9": 81, "rapport": [81, 87, 88, 92, 95, 97, 99, 100, 101, 103, 104, 106, 107, 108, 109, 110, 111, 112, 116, 119, 120, 123, 126, 131, 132, 136], "remarquez": [81, 99], "d\u00e9chiffrer": [81, 120], "plage": [81, 95, 101, 119], "demi": [81, 109], "renvoy\u00e9": [81, 93, 106, 126, 128], "agissait": [81, 90, 109, 112, 115], "appel": [81, 84, 86, 87, 88, 89, 90, 92, 99, 103, 105, 107, 109, 112, 116, 117, 120, 126, 127, 129, 130, 131, 132, 134], "annon\u00e7": [81, 103, 105, 106, 120], "pass\u00e9": [81, 87, 88, 90, 92, 99, 106, 108, 112, 114, 116, 126, 127], "extrait": [81, 82, 93, 106, 109, 112, 116, 126], "filtrer": [81, 86, 87, 88, 101, 106, 126], "renvoi": [81, 88, 98, 99, 106, 120, 123, 127, 128, 131, 132], "bloc": [81, 86, 89, 90, 91, 94, 96, 101, 106, 113, 114, 126, 127, 128, 129, 131], "consult\u00e9": [81, 112, 116, 117, 126, 127], "longu": [81, 88, 89, 92, 106, 110, 112, 118, 120, 126], "chercher": [81, 86, 106, 113, 116, 130], "\u00e9vacuat": 81, "nivelez": 81, "troi": [81, 87, 92, 106, 108, 109, 110, 112, 115, 118, 123, 126, 127, 128, 132], "utiliseriez": 81, "personnalis": [81, 87, 88, 97, 106, 107, 112, 124, 126, 127, 131], "r\u00e9sultat": [81, 82, 84, 87, 88, 89, 90, 91, 92, 106, 109, 112, 116, 118, 121, 123, 127, 128, 130], "g\u00e9n\u00e9ralis\u00e9": 81, "r\u00e9utilis\u00e9": [81, 120], "transmettr": [81, 86, 90, 116, 118, 126, 127, 128, 132], "diff\u00e8r": 81, "conceptuel": [81, 104, 105], "transmettez": 81, "remplaceriez": 81, "rend": [81, 87, 90, 93, 101, 104, 106, 108, 110, 116, 120, 128], "formatag": [81, 91], "int\u00e9ress": [81, 84, 86, 87, 89, 95, 103, 104, 105, 112, 132], "transmi": [81, 86, 88, 90, 128], "sp\u00e9cifi\u00e9": [81, 83, 102, 103, 106, 110, 112, 113, 114, 116, 123, 125, 126, 127, 128], "s\u00e9par\u00e9": [81, 83, 84, 89, 90, 92, 95, 99, 101, 103, 104, 106, 108, 109, 112, 113, 114, 116, 125, 126, 127, 128, 133], "virgul": [81, 82, 90, 106, 113, 115, 125, 126, 127, 130], "faudra": [81, 99, 112, 117], "r\u00e9duit": [81, 89, 110, 112, 115, 120, 129], "acc\u00e9l\u00e8r": 81, "trouvent": [81, 99, 103, 104, 106, 109, 112, 117, 125, 126, 129, 132], "ins": [81, 87, 99, 109], "m\u00e9tadonn\u00e9": [81, 83, 86, 88, 93, 100, 109, 110, 112, 116, 126, 127, 128], "seraient": [81, 88, 99, 109, 112, 116, 131], "g\u00e9n\u00e9rant": [81, 84, 90, 109], "autorit\u00e9": 81, "branchement": 81, "bascul\u00e9": 81, "omett": 81, "sp\u00e9cifierait": 81, "autrement": 81, "renom": [81, 138], "sp\u00e9cifiqu": [81, 82, 86, 87, 88, 89, 90, 92, 97, 99, 103, 108, 109, 110, 112, 115, 116, 117, 120, 123, 125, 126, 128, 129, 130, 131], "avertiss": [81, 82, 86, 87, 93, 106, 110, 112, 116, 117, 126], "qualit\u00e9": [81, 92], "assur\u00e9": [81, 89, 112], "rassembl\u00e9": 81, "principal": [82, 84, 87, 88, 91, 96, 99, 103, 106, 107, 109, 110, 112, 116, 120, 123, 124, 125, 126, 127, 128, 129, 130, 134], "ajout": [82, 83, 84, 86, 87, 88, 90, 91, 92, 93, 95, 99, 100, 101, 106, 107, 108, 109, 110, 112, 113, 115, 118, 120, 124, 126, 127, 129, 130, 132, 134], "traitement": [82, 83, 84, 86, 87, 89, 90, 92, 99, 101, 103, 104, 105, 107, 108, 109, 110, 112, 113, 116, 118, 119, 120, 123, 126, 128, 129, 130, 131, 132], "personnalis\u00e9": [82, 86, 87, 92, 103, 116, 123, 126, 127, 130, 131], "d\u00e9taill\u00e9": [82, 86, 87, 90, 91, 92, 106, 107, 109, 116, 119, 126, 127, 128, 130], "jetez": [82, 88, 123, 130], "\u0153il": [82, 86, 88, 91, 123], "manuel": [82, 86, 87, 88, 90, 91, 95, 103, 104, 105, 106, 110, 112, 114, 116, 117, 123, 126, 127, 128, 130, 131, 134, 138], "diver": [82, 104, 106, 123, 130], "classant": [82, 83, 84, 99, 106, 116, 126], "comport": [82, 84, 88, 90, 92, 99, 103, 106, 112, 116, 123, 126, 130], "programmeur": [82, 88, 92, 93, 99, 105, 116, 130], "soient": [82, 84, 86, 89, 92, 93, 95, 99, 102, 103, 104, 106, 109, 112, 116, 118, 126, 127, 128, 130], "fa\u00e7onn": 82, "z\u00e9ro": [82, 88, 92, 95, 100, 106, 126], "suivez": [82, 92, 130, 134], "majuscul": [82, 88, 90, 106, 126, 130], "raccourci": [82, 88, 126, 130], "constructeur": [82, 88, 130], "objet": [82, 83, 88, 90, 91, 92, 99, 115, 126, 130, 131, 132], "stockent": [82, 93], "instanci\u00e9": [82, 99, 106, 126, 130], "hi\u00e9rarchi": [82, 86, 87, 88, 89, 91, 99, 103, 106, 112, 116, 117, 126, 127, 128, 130, 132], "contiendra": [82, 88, 106, 116, 127, 130], "aucun": [82, 83, 84, 86, 87, 88, 89, 90, 92, 93, 97, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 113, 116, 117, 118, 120, 124, 126, 127, 128, 130, 131, 134], "outr": [82, 95, 112, 120], "princip": [82, 84, 99, 101, 103, 104, 106, 108, 109, 110, 112, 120, 123, 130], "succ\u00e8": [82, 88, 92, 99, 103, 106, 112, 116, 123, 126, 130, 132], "ult\u00e9rieur": [82, 83, 84, 87, 88, 90, 92, 95, 99, 101, 102, 103, 104, 106, 110, 116, 126, 128, 130, 131], "r\u00e9essay\u00e9": [82, 101, 126, 130], "d\u00e9cide": [82, 90, 99, 130], "d\u00e9plac\u00e9": [82, 88, 90, 102, 106, 108, 116, 117, 126, 127, 130], "rejet\u00e9": [82, 87, 88, 99, 104, 106, 116, 126, 127, 130, 131], "suppl\u00e9mentair": [82, 86, 87, 88, 89, 95, 99, 102, 106, 108, 109, 110, 112, 116, 118, 120, 125, 126, 128, 131, 134], "d\u00e9placez": [82, 116, 130], "passez": [82, 92, 137], "reconnu": [82, 88, 95, 116, 126, 130], "accus\u00e9": [82, 93, 99, 105, 106, 130], "r\u00e9ception": [82, 83, 85, 88, 89, 90, 93, 98, 99, 102, 103, 105, 106, 112, 117, 119, 120, 124, 126, 128, 130, 131, 132], "excellent": [82, 130], "pythoniqu": [82, 84, 87, 88, 99, 107, 130], "d\u00e9finissez": [82, 87, 88, 90, 92, 95, 106, 126, 130, 132, 137], "enregistreur": [82, 88, 99, 130], "pr\u00e9c\u00e9d\u00e9": [82, 106, 126, 130], "\u00e9mettant": [82, 130], "niveaux": [82, 92, 99, 112, 116, 126], "inclur": [82, 84, 86, 88, 89, 90, 94, 106, 109, 112, 118, 126, 127, 128, 130], "manqu": [82, 86, 92, 99, 103, 117, 120, 127, 130, 134], "permett": [82, 84, 88, 90, 92, 99, 101, 106, 107, 109, 112, 116, 120, 126, 128, 130, 131], "partout": [82, 90, 130], "termin\u00e9": [82, 86, 87, 89, 90, 92, 93, 95, 99, 110, 113, 114, 116, 118, 126, 130, 133, 135, 136, 137], "analys": [82, 83, 84, 86, 88, 90, 99, 104, 106, 109, 110, 112, 115, 116, 117, 128, 130, 132], "entier": [82, 86, 93, 95, 99, 101, 102, 106, 112, 113, 114, 126, 127, 128, 130], "flottant": [82, 126, 130], "quantit\u00e9": [82, 112, 115, 126, 130, 134], "unitair": [82, 92, 99, 126], "semain": [82, 106, 110, 126, 130], "bool\u00e9en": [82, 84, 87, 106], "cat\u00e9nat": 82, "enti\u00e8r": [82, 84, 87, 88, 90, 92, 99, 101, 103, 104, 105, 106, 109, 110, 112, 116, 120, 126, 128, 130], "multiplicateur": [82, 95, 126, 130], "new_data": 82, "renomm": [82, 102, 117, 126, 127, 130], "\u00e9volut": [82, 90, 111, 130], "boucl": [82, 88, 92, 95, 99, 103, 104, 106, 118, 128, 130], "parcourt": [82, 130], "entrant": [82, 86, 88, 90, 94, 116, 120, 130], "dictionnair": [82, 88, 91, 92, 103, 116, 130, 132], "duquel": [82, 86, 116, 128, 130], "obtenu": [82, 83, 87, 90, 103, 112, 126, 130, 134], "refl\u00e9teront": [82, 130], "mirroir": 82, "t\u00e9l\u00e9chargez": [82, 83, 87, 92, 130, 134], "prescrit": [82, 84, 126, 130], "beaucoup": [82, 84, 86, 87, 88, 89, 90, 91, 92, 93, 99, 100, 101, 106, 109, 110, 112, 116, 117, 118, 120, 124, 126, 127, 128, 130], "pr\u00e9f\u00e9rabl": [82, 87, 92, 102, 105, 106, 116, 126, 129, 130, 132], "mettra": [82, 105, 106, 126, 130], "affichag": [82, 86, 88, 92, 106, 108, 110, 117, 126, 128], "id\u00e9": [82, 88, 90, 92, 95, 96, 99, 109, 120, 130], "r\u00e9pertori": [82, 88, 99, 101], "rappel": [82, 87, 88, 99, 100, 106, 107, 120, 126, 129, 131, 132, 138], "fournit": [82, 84, 86, 89, 90, 93, 101, 103, 104, 106, 109, 112, 114, 116, 118, 126, 127, 128, 130, 131, 132, 134], "lisant": [82, 130], "int\u00e9grit\u00e9": [82, 99, 103, 112, 116, 126, 127, 128, 130], "\u00e9choue": [82, 88, 90, 92, 101, 104, 109, 116, 130, 135], "pourra": [82, 92, 112, 126, 130], "durant": [82, 87, 126], "vol": [82, 88, 93, 102, 116, 126], "classer": [82, 88, 106, 126], "chariot": 82, "dossier": [82, 83, 84, 86, 87, 88, 93, 95, 96, 101, 102, 103, 106, 109, 110, 113, 114, 116, 120, 126, 136], "r\u00e9cup\u00e9rat": [82, 83, 88, 89, 90, 99, 103, 109, 110, 112, 113, 114, 119, 126, 128, 132], "sch\u00e9ma": [82, 83, 87, 89, 90, 91, 99, 112], "utiliseront": [82, 87, 92, 106, 126, 127, 128], "souhait\u00e9": [82, 87, 92], "copiez": [82, 92, 109, 116], "macompos": 82, "courrier": 83, "\u00e9lectroniqu": [83, 139], "moyen": [83, 86, 88, 90, 92, 93, 95, 97, 99, 101, 102, 103, 104, 106, 109, 110, 112, 116, 124, 126, 129, 132], "diffus\u00e9": 83, "\u00e9tendant": 83, "s\u00e9rie": [83, 84, 86, 91, 92, 106, 114, 126], "sonder": [83, 101, 104, 121, 126], "heureus": 83, "commencez": [83, 99], "\u00e9num\u00e9rer": [83, 106], "analys\u00e9": [83, 87, 88, 89, 91, 92, 99, 106, 115, 116, 126], "connect\u00e9": [83, 86, 90, 104, 106, 112, 120, 126, 132, 137], "indicateur": [83, 84, 87, 90, 92, 113, 126, 128], "vu": [83, 86, 87, 90, 95, 99, 106, 117, 118, 126, 127, 128], "lu": [83, 86, 87, 88, 106, 123, 126, 128, 132], "r\u00e9cup\u00e9rant": 83, "marqu\u00e9": [83, 92, 103, 106, 132], "repri": 83, "offr": [83, 87, 102, 103, 108, 112, 128], "gestion": [83, 84, 87, 89, 90, 92, 93, 99, 101, 103, 106, 109, 112, 123, 124, 125, 126, 127, 128, 131, 138, 139], "d\u00e9placement": [83, 90], "g\u00e9n\u00e9ration": [83, 88, 92, 106, 108, 110, 118, 126, 127], "bo\u00eet": [83, 84, 101, 120, 123, 124, 125, 126, 127, 128, 137, 139], "lettr": [83, 88, 99, 104, 106, 113, 127], "r\u00e9pondu": [83, 120], "r\u00e9cup\u00e8r": [83, 86, 116], "marqu": [83, 126, 128], "r\u00e9cup\u00e9r\u00e9": [83, 112, 126, 127], "publiera": [83, 86], "horodatag": [83, 106, 113, 114, 126, 127, 128], "connectez": [83, 132, 136], "individuel": [83, 87, 88, 89, 90, 92, 95, 99, 106, 112, 115, 116, 120, 128], "sortir": [83, 99, 126], "ouvrir": [83, 92, 120], "ressembl": [83, 88, 89, 101, 105, 106, 116, 126, 135], "format\u00e9": [83, 88, 91], "brut": [83, 86, 87, 89, 106, 116, 126, 128], "indiqu\u00e9": [83, 86, 88, 92, 104, 109, 123, 134, 137], "transmis": [83, 87, 88, 90, 101, 104, 116], "pi\u00e8c": [83, 86, 93, 94, 95, 99, 101, 106, 114, 116, 117, 126, 127, 128], "corp": [83, 86, 89, 90, 95, 99, 106, 113, 114, 115, 128], "codag": [83, 85, 92, 93, 115, 128], "r\u00e9cup\u00e9r": 83, "affin": [83, 116], "ouvrez": [83, 136, 137], "rafal": 83, "auparav": [83, 92, 109, 110, 112, 128], "\u00e9taient": [83, 88, 93, 99, 100, 101, 105, 109, 110, 112, 115, 126, 127], "ex\u00e9cuterait": 83, "d\u00e9tecter": [83, 90, 92, 95, 103, 106, 109], "d\u00e9coder": [83, 87, 92], "d\u00e9sormai": [83, 84, 88, 99], "routag": [83, 85, 86, 93, 96, 100, 101, 103, 105, 106, 110, 112, 126, 130], "parall\u00e9lis": [83, 117, 120], "conseil": [84, 87, 92, 93, 109, 130], "personn": [84, 86, 88, 89, 90, 95, 99, 100, 103, 105, 106, 111, 120, 126, 130], "intitul\u00e9": 84, "tenir": [84, 91, 128], "int\u00e9rim": 84, "stabilit\u00e9": [84, 92, 109], "langag": [84, 91, 103, 104, 112, 116, 117, 127, 130, 131], "important": [84, 86, 91, 92, 95, 99, 101, 105, 109, 110, 128], "\u00e9vit\u00e9": [84, 116], "posent": 84, "cadr": [84, 92, 104, 108, 109, 110, 116], "grave": 84, "recommand\u00e9": [84, 86, 92, 101, 104, 106, 124, 126, 128], "percept": 84, "pr\u00e9occup": [84, 92, 96, 101, 109, 117, 118], "obligatoir": [84, 88, 99, 114, 126, 128, 134], "effet": [84, 86, 87, 88, 90, 92, 104, 106, 109, 112, 117, 120, 126, 127, 128, 131], "gaspillag": [84, 118], "g\u00e9n\u00e9rer": [84, 86, 95, 103, 106, 116, 126, 128], "intervenu": 84, "renamd": 84, "subit": [84, 90, 120], "ruptur": [84, 110], "commen": 84, "interpol": 84, "pou": 84, "composant": [84, 100, 103, 106, 113, 114], "\u00e9v\u00e9nement": [84, 87, 92, 99, 106, 109, 112, 116, 126, 127, 132], "etaient": 84, "uni": [84, 105], "pr\u00e9facer": 84, "requi": [84, 85, 88, 90, 92, 99, 106, 108, 116, 120, 126, 134], "vrai": [84, 86, 96, 103, 106, 117, 120, 126, 127, 130, 131], "affect\u00e9": [84, 86, 109, 116], "charact\u00e8r": 84, "chang\u00e9": [84, 100, 106, 117, 126, 127], "platteform": 84, "encodag": [84, 89, 95, 115], "rendu": [84, 93, 108], "optionnel": [84, 87, 88, 106, 123, 126, 134], "rajout\u00e9": [84, 88, 112, 123, 126], "s\u00e9parer": [84, 99], "comprenn": [84, 92, 112, 114], "lien": [84, 88, 89, 90, 91, 99, 103, 105, 106, 108, 109, 110, 116, 126], "symboliqu": [84, 90, 99, 106, 109, 110, 116, 126], "renommag": [84, 99, 111, 126, 128], "d\u00e9di\u00e9": [84, 90, 92, 104, 109], "r\u00e9tablir": 84, "exig": [84, 90, 104, 110, 112, 120, 128, 134], "mat\u00e9riel": [84, 89, 103, 112], "difficil": [84, 88, 89, 90, 98, 99, 102, 106, 109, 110, 112, 117, 120, 128], "satisfair": [84, 112, 134], "d\u00e9pendanc": [84, 90, 95, 106, 124, 134], "modulair": [84, 107], "quatr": [84, 92, 99, 110, 114, 116, 117, 118, 120, 126, 127, 128], "installez": [84, 92, 134], "correspondant": [84, 87, 104, 106, 112, 125, 126, 132], "d\u00e9marrag": [84, 86, 87, 99, 106, 110, 116, 117, 123, 126, 137, 138], "ajoutait": 84, "routini\u00e8r": 84, "b\u00eata": [84, 92, 107, 110], "ni": [84, 99, 101, 112, 113, 114, 116, 120, 126, 134], "refacteur": 84, "allez": [84, 131, 132], "\u00e9crite": [84, 87, 88, 91, 103, 106, 116], "naturel": [84, 86, 92, 99, 101, 109, 112, 116, 120, 126], "compl\u00e8tement": [84, 87, 88, 90, 92, 99, 101, 106, 109, 110, 112, 116, 126], "devra": [84, 90, 99, 132], "examin\u00e9": [84, 92, 120], "fonctionneront": [84, 86, 88, 92], "repos": [84, 109], "n\u00e9cessiteront": 84, "portag": [84, 85, 89], "similair": [84, 86, 87, 88, 89, 92, 99, 101, 103, 106, 112, 120, 123, 126, 128, 129, 132], "plateform": [84, 92, 123, 126], "tiret": [84, 106], "r\u00e9serv\u00e9": [84, 99, 113], "caract\u00e8r": [84, 86, 87, 89, 91, 92, 95, 103, 106, 109, 112, 115, 116, 121, 125, 126, 128], "charger": [84, 99, 106], "soulign": [84, 88, 106, 108, 126], "renomm\u00e9": [84, 99, 101, 102, 106, 113, 114, 116, 117, 126, 128, 130], "compris": 84, "regroup": [84, 87, 90, 126, 127, 128, 132], "honor\u00e9": [84, 99], "reconna\u00eet": 84, "visualis\u00e9": [84, 120], "d\u00e9marrant": [84, 88], "interpr\u00e9teur": [84, 88, 99, 106], "r\u00e9pertori\u00e9": [84, 90, 92, 106, 116, 132], "obsol\u00e8t": [84, 102, 105, 108, 113, 114], "r\u00e9dacteur": [84, 103, 117], "acc\u00e9l\u00e9rateur": [84, 99], "r\u00e9\u00e9crit": [84, 99, 109], "compatibilit\u00e9": [84, 92, 95, 99, 102, 108, 116, 126, 128], "\u00e9tudier": [84, 126], "devient": [84, 87, 88, 89, 92, 99, 106, 112, 116, 117, 118, 126], "disparu": [84, 99, 120], "planifi\u00e9": [84, 101, 110], "soumettez": 84, "devenu": [84, 99, 108, 110], "acc\u00e9dant": 84, "d\u00e9placer": [84, 99, 103, 126], "num\u00e9ro": [84, 86, 92, 94, 99, 103, 106, 109, 113, 114, 117, 120, 126, 128], "pomp": [85, 88, 89, 90, 93, 99, 101, 102, 110, 112, 116, 119, 121, 123, 126, 128, 129, 132, 134], "initialis": [85, 116, 130, 135], "flot": [85, 103, 111, 118], "hydrom\u00e9triqu": 85, "int\u00e9grat": [85, 89, 92, 99, 101, 106, 109, 110, 112, 115, 132, 134], "aper\u00e7u": [85, 88, 90, 92, 104, 112, 119], "pr\u00e9": [85, 88, 89, 92, 99, 106, 109, 110, 112], "avanc\u00e9": [85, 92, 93], "crochet": [85, 127], "ldap": 85, "diff\u00e9renc": [85, 86, 93, 99, 104, 106, 111, 126, 127, 129], "fonctionnera": [85, 87, 92, 99, 106, 117, 126], "mappag": [85, 96, 103, 112, 120], "classement": [85, 130], "surbril": 86, "vraiment": [86, 88, 90, 95, 99, 112, 113, 117], "gard": [86, 87, 111, 139], "strat\u00e9gi": [86, 90, 106, 109, 110, 112, 113, 114, 118, 119, 126, 127, 128], "\u00e9mettr": [86, 87, 92, 103, 106, 112, 113, 114, 126], "sachent": [86, 87], "quell": [86, 87, 88, 90, 92, 93, 95, 99, 103, 106, 108, 110, 112, 114, 116, 117, 126, 128, 132, 134], "affichez": 86, "navigateur": [86, 87, 90, 91, 92, 116, 126, 136], "imm\u00e9diat": [86, 87, 90, 91, 99, 104, 106, 112, 116, 120, 126, 131, 137], "habituel": [86, 87, 92, 103, 105, 106, 109, 112, 116, 120, 126, 127], "voulu": 86, "logiciel": [86, 87, 89, 90, 92, 93, 101, 102, 103, 104, 106, 109, 112, 116, 120, 126], "puissent": [86, 88, 90, 91, 92, 99, 101, 103, 104, 105, 109, 112, 126], "contraint": [86, 96, 109, 112], "rapidit\u00e9": [86, 101, 112, 117, 135], "serr\u00e9": 86, "d\u00e9cevant": 86, "bass": [86, 92, 116, 117, 126], "fr\u00e9quenc": [86, 101, 112, 126, 127], "volumineus": [86, 93], "parcourir": [86, 88, 92, 109, 112, 126], "r\u00e9solut": [86, 89, 99, 103], "temporel": [86, 110, 126], "moyenn": [86, 87, 106, 109, 117], "produira": [86, 99, 110], "promenad": [86, 101], "instantan\u00e9": [86, 90, 92, 109, 117], "inh\u00e9rent": [86, 99, 109, 112, 120], "espoir": [86, 99, 112], "pla\u00eet": 86, "consultez": [86, 87, 88, 106, 130], "indiquera": 86, "craindr": 86, "inf\u00e9rieur": [86, 88, 95, 109, 112, 117, 120, 126, 127, 128, 129], "ayez": [86, 99, 137], "donniez": 86, "d\u00e9crivon": 86, "ait": [86, 92, 106, 110, 112, 118, 120, 126, 130], "profondeur": 86, "delimit": 86, "cod\u00e9": [86, 89, 92, 106, 113, 115], "longueur": [86, 88, 91, 95, 99, 106, 115, 120, 126, 128], "vise": [86, 128], "grossi\u00e8r": [86, 127], "appuient": 86, "objectif": [86, 90, 91, 92, 93, 101, 106, 109, 112, 128], "acc\u00e8d": [86, 106, 126], "s\u00e9curit\u00e9": [86, 93, 96, 101, 112, 119], "associ\u00e9": [86, 88, 92, 108, 132], "semblabl": [86, 89, 118], "vari\u00e9t\u00e9": [86, 87, 90, 92, 101, 103, 106, 108, 110, 112, 120], "truc": [86, 95], "invent\u00e9": [86, 112], "transf\u00e9r\u00e9": [86, 87, 90, 92, 95, 99, 101, 104, 112, 117, 120, 126, 128, 130], "s\u00fbr": [86, 88, 92, 93, 99, 103], "ramass\u00e9": [86, 102, 117], "co\u00fbteux": [86, 112, 117, 120], "g\u00e9nial": [86, 91], "prenon": [86, 87, 95], "acqu\u00e9rir": [86, 106, 110, 112], "affich": [86, 87, 88, 90, 99, 103, 104, 106, 110, 116, 117, 123, 126, 127, 132, 136], "traduit": [86, 90, 91, 92, 106, 112], "cens\u00e9": [86, 90, 92, 99, 116], "d\u00e9clench": [86, 94, 106], "pourront": [86, 89, 92, 93, 106, 127], "cass\u00e9": [86, 91, 92, 99], "\u00e9x\u00e9cuter": [86, 103], "vraie": [86, 134], "d\u00e9mo": [86, 90], "diff\u00e9r\u00e9": [86, 96, 109, 112, 128], "intrins\u00e8qu": [86, 101, 120], "\u00e9loign\u00e9": 86, "incap": 86, "nouveaut\u00e9": 86, "pourquoi": [86, 87, 88, 90, 93, 95, 99, 112, 119, 126], "accept\u00e9": [86, 87, 90, 93, 103, 106, 112, 116, 117, 126, 127, 130, 131, 135], "vont": [86, 87, 90, 92, 93, 98, 108, 113, 117, 123, 126, 127], "signal\u00e9": [86, 87, 88, 126], "ins\u00e9r\u00e9": [86, 90, 94, 103, 112, 116, 126], "d\u00e9clencher": [86, 88, 94, 103, 106, 109, 126], "digital": [86, 90, 112, 128], "seuil": [86, 87, 90, 93, 95, 112], "partitionn\u00e9": [86, 99, 128], "ajust\u00e9": [86, 106], "parcour": 86, "erreur": [86, 88, 90, 91, 99, 103, 104, 108, 109, 116, 117, 119, 126, 127, 128, 129, 132], "transf\u00e9rer": [86, 93, 95, 101, 106, 109, 112, 113, 114, 116, 120, 126, 128, 135], "pompag": [86, 87, 90, 93, 101, 104, 108, 110, 112, 119, 128], "circuleront": 86, "ind\u00e9pendant": [86, 90, 101, 103, 104, 110], "provisionn\u00e9": [86, 112], "identiqu": [86, 87, 88, 92, 99, 103, 104, 106, 110, 117, 118, 127], "re\u00e7oit": [86, 88, 90, 95, 101, 103, 106, 112, 116, 126], "examineront": [86, 126], "t\u00e9l\u00e9chargeront": [86, 127], "r\u00e9appliqueront": 86, "impos\u00e9": [86, 109, 112, 117, 120], "c\u00e9l\u00e8bre": 86, "parall\u00e8l": [86, 87, 89, 95, 99, 101, 106, 109, 110, 112, 116, 117, 120, 126, 127, 128], "pr\u00e9f\u00e9renc": [86, 92, 102, 106, 126, 129, 134], "appliqu\u00e9": [86, 87, 89, 90, 92, 106, 112, 118, 126, 128], "binair": [86, 87, 89, 90, 92, 95, 99, 101, 106, 112, 116, 118, 120, 125, 126, 134], "fabriqu\u00e9": [86, 108, 112], "\u00e9quivalent": [86, 88, 90, 126, 128], "d\u00e9pendent": [86, 90, 99, 128], "parlon": 86, "incluon": 86, "r\u00e9ell": [86, 89, 90, 106, 112, 120, 126, 128, 129], "entra\u00eenera": [86, 87, 90, 106, 112, 126, 127, 130], "r\u00e9exp\u00e9dit": 86, "int\u00e9gralit\u00e9": [86, 91, 93, 113, 114, 116, 123, 126], "conna\u00eetr": [86, 103, 106, 128], "pai": [86, 87, 105, 110, 112], "accompagn": [86, 89, 103], "pr\u00e9judic": 86, "autant": [86, 92, 99, 112, 117, 133], "compl\u00e9ter": [86, 89, 106, 110, 134], "inclura": 86, "artificiel": 86, "statiqu": [86, 99, 103, 112, 113, 114, 120], "pr\u00e9ci": [86, 109, 126, 127, 128], "titr": [86, 89, 91, 108, 112, 120], "extr\u00eam": [86, 106], "affectera": [86, 90], "l\u00e9g\u00e8rement": [86, 99, 106, 112, 120, 124, 127, 131], "ralentira": [86, 132], "grandeur": [86, 101, 112, 120], "surmont\u00e9": 86, "consid\u00e9ron": 86, "d\u00e9passent": 86, "ko": [86, 93], "octet": [86, 87, 93, 95, 99, 101, 106, 109, 112, 113, 114, 115, 116, 118, 119, 126, 127, 128, 132], "destinatair": [86, 102, 103, 106, 126], "r\u00e9pliqu\u00e9": 86, "endroit": [86, 88, 90, 99, 103, 106, 110, 112, 116, 120, 126, 134], "pac": 86, "signifierait": [86, 112, 120], "additionn": [86, 113, 114, 117], "minimal": [86, 95, 116, 117, 126, 128], "convient": [86, 92, 105, 109, 112, 117, 126], "trouvez": [86, 99], "surcharg": [86, 87, 89, 93, 95, 101, 105, 106, 109, 110, 112, 120, 128], "m\u00e9canism": [86, 88, 89, 90, 92, 93, 99, 103, 106, 108, 110, 112, 113, 114, 116, 117, 120, 126, 127, 128], "travers\u00e9": [86, 95, 109, 126], "intercept\u00e9": [86, 120], "v\u00e9rifiera": [86, 103, 106, 123], "appliquera": [86, 126], "remarqu": [86, 87, 91, 92, 95, 101, 103, 109, 112, 117, 124, 126, 127, 128], "r\u00e9sultant": [86, 90, 91, 106, 109, 116, 127, 128], "chargement": [86, 87, 99, 109], "dynamiqu": [86, 92, 99, 112, 120, 126], "r\u00e9solu": [86, 88, 92, 96, 109, 112, 126, 136], "nuit": 86, "ambitieux": [86, 109], "cinq": [86, 93, 101, 106, 109, 112, 127, 129], "veuillez": [87, 88, 92, 104, 106, 120, 127, 133], "pilot\u00e9": [87, 101, 109], "pr\u00e9cis\u00e9ment": [87, 88], "impliqu": [87, 88, 90, 92, 99, 120, 126], "\u00e9diteur": [87, 89, 112, 129, 135], "accent": [87, 110, 112], "ax\u00e9": [87, 91], "r\u00e9f\u00e9renc": [87, 88, 90, 92, 99, 103, 105, 106, 108, 110, 111, 126, 127, 128, 139], "traditionnel": [87, 88, 90, 93, 101, 112, 128, 129, 130], "choisiss": [87, 88], "conventionnel": [87, 88, 99, 103, 106, 132], "exposera": 87, "aaaammjj": [87, 103], "rien": [87, 90, 103, 104, 106, 117, 118, 120, 127, 128, 130], "coordonn\u00e9": [87, 92, 131], "universel": [87, 89, 90], "correspondr": [87, 88, 106, 112], "mettent": [87, 93, 104, 105, 112, 120], "fiabl": [87, 89, 90, 91, 92, 93, 102, 109, 112, 117, 120, 126], "tol\u00e9r\u00e9": 87, "nombreus": [87, 89, 90, 92, 103, 105, 106, 109, 112, 116, 120, 126, 128], "d\u00e9p\u00f4t": [87, 92, 110], "apparaiss": [87, 88, 106, 109], "recherch\u00e9": [87, 92, 106, 112, 125, 131], "lister": [87, 123, 124], "atmosph\u00e9riqu": 87, "ann\u00e9": [87, 92, 101, 105, 106, 108, 109, 110, 112, 117, 126], "a\u00e9rienn": 87, "receivoir": 87, "donnez": [87, 133], "pr\u00e9vue": [87, 109, 110, 112, 116], "967": 87, "tutoriel": [87, 88, 116, 139], "mettre_en_place_un_subscriber_dist": 87, "entra\u00een": [87, 89, 90, 92, 109, 112, 113, 114, 116, 117, 120, 126, 127], "d\u00e9clarat": [87, 88, 89, 92, 99, 106, 126], "vie": [87, 89, 99, 103, 106, 108, 110, 116, 126, 127, 137], "contr\u00f4l\u00e9": [87, 105, 106, 109, 112, 126], "encombr": [87, 106], "exp\u00e9r": 87, "rencontr": [87, 90, 99, 120], "d\u00e9sallouera": 87, "liaison": [87, 89, 92, 95, 97, 99, 103, 106, 110, 112, 116, 124, 126, 131, 138], "rubriqu": [87, 89, 90, 99, 103, 112, 126, 127, 130, 132], "finit": [87, 99], "arr\u00eat": [87, 99, 105, 106, 126, 130], "red\u00e9marr\u00e9": [87, 92, 104, 106, 126], "fixat": [87, 103], "obtiendra": [87, 117, 127], "exp\u00e9riment": [87, 99, 106, 108, 112, 126], "longtemp": [87, 89, 92, 111], "conseill\u00e9": [87, 92], "d\u00e9saffect": 87, "placez": [87, 88], "passera": 87, "d\u00e9marrera": [87, 137], "fera": [87, 88, 95, 101, 106, 116, 137], "fourniss": [87, 88, 89, 90, 91, 93, 106, 110, 112, 116, 128], "hi\u00e9rarchis": 87, "avantag": [87, 89, 90, 95, 101, 109, 112, 126, 127, 128], "regroupez": 87, "d\u00e9lai": [87, 89, 92, 102, 106, 109, 112, 117, 118, 120, 126], "faibl": [87, 89, 90, 93, 101, 108, 109, 112, 120], "passent": [87, 90, 118, 120], "r\u00e9sumer": [87, 90, 92], "\u00e9tablir": [87, 89, 102, 104, 106, 109, 112, 117, 126, 128, 133], "distribu": [87, 90, 112, 120, 132], "quadrill\u00e9": 87, "pr\u00e9vision": [87, 104, 105, 109, 110, 112], "urbain": 87, "m\u00e9t\u00e9o": [87, 89, 93, 101, 110, 135], "absolu": [87, 93, 106, 112, 126, 127], "journ\u00e9": [87, 92, 109], "arri\u00e9r\u00e9": [87, 98], "relativ": [87, 89, 90, 101, 103, 112, 120, 126], "troisi\u00e8m": [87, 89, 90, 92, 95, 99, 106, 126, 134], "utilisera": [87, 106, 112, 118, 130], "contr": [87, 88, 96, 99, 106, 109, 115, 116, 119, 120, 126, 127, 128], "auront": [87, 90, 93, 103, 104, 106, 116, 120, 126], "partageront": [87, 106, 132], "rejet": [87, 88, 90, 92, 106, 116, 117, 126, 127, 130, 131], "voudrait": 87, "survivr": 87, "d\u00e9v\u00e9loppement": 87, "vraisemblabl": 87, "conna\u00eetra": 87, "choisissez": [87, 90, 91, 95, 137], "\u00e9valu\u00e9": [87, 116, 126], "filtrag": [87, 88, 89, 90, 103, 106, 112, 116, 126, 128, 131], "enfin": [87, 103, 106, 112, 120, 123, 126], "regardez": [87, 99, 136], "transform\u00e9": [87, 89, 103, 128], "\u00e9crire": [87, 88, 90, 91, 93, 99, 101, 102, 104, 106, 107, 109, 112, 117, 118, 126, 128, 138], "mauvai": [87, 90, 99, 106, 108, 111], "livrera": 87, "toutefoi": [87, 88, 92, 106, 109, 126], "transf\u00e9rera": [87, 93], "consommera": 87, "minimis": [87, 95, 105, 106, 109, 112, 120], "intercal": 87, "entra\u00eeneront": 87, "combien": [87, 89, 103, 106, 126], "conservera": [87, 126, 132], "d\u00e9connexion": 87, "submerg": 87, "politiqu": [87, 109, 112], "mal": [87, 90, 98, 99, 102, 112, 120], "percevra": 87, "examinez": 87, "d\u00e9calag": [87, 95, 109, 112, 126], "anciennet\u00e9": 87, "voyez": [87, 93, 126], "d\u00e9raisonn": 87, "aborderon": 87, "ramass": [87, 90], "strategiedetectionfichi": 87, "livr\u00e9": [87, 89, 93, 101, 102, 106, 108, 112, 126, 134], "assurerlalivraison": 87, "r\u00e9\u00e9critur": [87, 109], "fr\u00e9quent": [87, 109, 112, 119, 120], "planifi": 87, "augment\u00e9": [87, 112], "acc\u00e9l\u00e9rer": [87, 101, 112, 128], "lentement": [87, 99], "sp\u00e9cifient": [87, 106, 126, 128, 132], "rendez": 87, "suntop": 87, "t\u00f4t": [87, 99, 102, 106, 112, 117, 126, 132], "co\u00fbteus": [87, 112, 126], "\u00e9valuat": [87, 104, 109, 112], "cher": [87, 101, 106, 117, 120, 127], "compliqu\u00e9": [87, 90, 92, 99, 100, 112, 132], "moiti\u00e9": [87, 88, 90, 92, 117, 127], "vitess": [87, 106, 109, 110, 112, 117, 118, 126, 129], "risqu": [87, 99, 103, 106, 108, 110, 112, 126], "fassent": 87, "transf\u00e9rez": 87, "volumineux": [87, 89, 90, 93, 95, 104, 112, 116, 117, 118, 126, 127, 128], "m\u00e9lang": [87, 99, 112], "vite": [87, 93, 102, 117], "amorti": 87, "pr\u00e9lu": 87, "am\u00e9lior\u00e9": [87, 108, 110, 126], "contr\u00f4lez": 87, "voudront": [87, 106, 126], "envisagez": [87, 134], "productif": [87, 88, 99, 127], "signifiera": 87, "ralentiss": 87, "optimis\u00e9": [87, 89, 90, 106, 115, 117, 126, 127], "augmenteront": 87, "plafonnera": 87, "n\u00e9gocier": 87, "pr\u00e9lectur": 87, "semblent": [87, 93, 99, 109], "attendr": [87, 90, 95, 117, 118, 126], "pu": [87, 99, 106, 134, 136], "atteindr": [87, 101, 103, 104, 109], "satur\u00e9": 87, "partitionn": [87, 90, 95, 101, 112, 126, 127, 128], "all\u00e9": 87, "savon": [87, 95, 99, 109], "couron": 87, "\u00e9voluer": [87, 100, 132], "inefficac": [87, 112, 118], "passeront": [87, 102, 126], "retrouv": [87, 93, 99], "piscin": 87, "aveugl\u00e9": 87, "r\u00e9ductric": 87, "n\u00e9cessit": [87, 88, 89, 90, 92, 93, 99, 101, 106, 109, 112, 117, 120, 125, 127, 133], "recevon": 87, "\u00e9vite": [87, 90, 101, 106, 117, 126, 127], "complexit\u00e9": [87, 89, 90, 103, 112, 117, 119, 128], "appara\u00eetr": [87, 126, 137], "supprimerlesdoublon": 87, "pr\u00e9d\u00e9fini": [87, 90, 134], "plugun": 87, "auteur": 87, "m\u00e9chanism": 87, "pythjon": 87, "ajoutera": 87, "reportez": [87, 92, 123], "r\u00e9capitul": 87, "acced": 87, "canal": [87, 88, 90, 112, 116, 120], "r\u00e9alis": [87, 90, 104, 108, 109, 134], "mauvais": [87, 99, 104, 108, 112, 120, 126], "r\u00e9sum\u00e9": [87, 92, 96, 111, 119], "sauf": [87, 88, 90, 92, 99, 106, 112, 113, 117, 126, 127, 131, 135], "d\u00e9roul": 87, "conform\u00e9": [87, 113, 114, 128], "sp\u00e9cific": [87, 88, 90, 95, 106, 110, 113, 114, 115, 120, 125, 126, 128, 132], "d\u00e9finiss": [87, 89, 90, 92, 103, 106, 109, 116, 126, 127, 128, 131], "exprim\u00e9": [87, 106, 112, 126, 128], "pivot\u00e9": 87, "atteint": [87, 93, 99, 106, 109, 110, 116, 123], "poursuit": [87, 92, 95, 106, 110], "tourneront": 87, "annuair": [87, 103, 106, 110], "partag\u00e9": [87, 89, 92, 96, 103, 104, 106, 108, 109, 110, 112, 116, 120, 126, 128], "archiv\u00e9": [87, 90, 106, 126], "imprim\u00e9": [87, 106, 123, 132], "d\u00e9boguer": [87, 88, 91, 106], "excessiv": [87, 90, 112], "rendra": [87, 103], "verbeus": 87, "parfoi": [87, 88, 89, 90, 92, 99, 102, 103, 104, 105, 106, 109, 116, 120, 126], "interop\u00e9rabilit\u00e9": [87, 89, 90, 105, 111, 116], "mieux": [87, 88, 89, 90, 99, 106, 109, 112, 116, 117, 118, 123, 126, 127], "judicieus": [87, 124], "donnent": [87, 106], "fiabilit\u00e9": [87, 89, 90, 93, 101, 112, 119], "obtienn": [87, 92, 93], "garantit": [87, 92, 102, 106, 112, 116, 126], "apport": [87, 92, 93, 99, 107], "abnonn": 87, "porter": [88, 99], "\u00eate": [88, 92, 94, 98, 123, 132, 134], "exp\u00e9rienc": [88, 89, 90, 95, 110, 112, 120], "lisez": [88, 90], "confondr": 88, "feriez": 88, "d\u00e9routant": [88, 99, 116], "devriez": [88, 92, 93], "avaient": [88, 109, 110, 120], "utilisai": 88, "piloti": 88, "compos\u00e9": [88, 101, 103, 118, 127, 128], "puissant": [88, 106, 126], "\u00e9trang": [88, 92, 95, 99, 108, 116], "d\u00e9tect\u00e9": [88, 90, 99, 106, 116, 126], "con\u00e7u": [88, 90, 99, 106, 111, 132, 134], "dehor": [88, 104, 109], "class\u00e9": [88, 92, 129], "vid\u00e9o": [88, 101, 110, 112], "montrant": [88, 101], "\u00e9valuer": [88, 104, 116], "analyseur": [88, 99, 115], "\u00e9quival": [88, 90, 99, 106, 109, 116, 120, 125, 128], "pourrai": 88, "doiv": 88, "b\u00e9quill": 88, "utilisait": [88, 100], "commodit\u00e9": [88, 120], "nommer": [88, 89, 90, 108], "diff\u00e9rem": [88, 103, 115, 120], "violer": 88, "d\u00e9clarez": [88, 116, 126], "demandez": [88, 92, 99, 132, 135], "contenir": [88, 106, 116, 128], "d\u00e9clarerait": 88, "normaux": [88, 101, 106, 120, 136], "magi": 88, "attribu": [88, 131], "na\u00efv": [88, 109], "\u00e9chouerait": 88, "invariabl": [88, 89, 112], "harnai": 88, "enroul\u00e9": 88, "autour": [88, 89, 92, 103, 105, 126], "situ\u00e9": 88, "entra\u00een\u00e9": [88, 109], "boulonn\u00e9": 88, "donn": [88, 90, 99, 106, 107, 113, 116, 127, 128], "sarrac\u00e9nia": [88, 96, 101, 103, 116], "import\u00e9": [88, 99, 106, 116], "interagir": [88, 89], "assurez": [88, 91, 92, 99, 116], "je": [88, 90, 91, 95, 99, 113, 114, 120], "g\u00e2chi": 88, "variait": 88, "trouvaient": 88, "recherchez": [88, 118], "stockait": 88, "ressemblera": 88, "loin": [88, 118], "concat\u00e9n\u00e9": [88, 113, 114, 128], "canoniqu": [88, 126], "calcul\u00e9": [88, 104, 106, 112, 113, 114, 116, 128], "journeaux": [88, 106], "oubli": 88, "temporair": [88, 90, 101, 106, 113, 114, 116, 126, 128, 132], "supprimera": [88, 92, 126], "repr\u00e9sentai": 88, "couvrir": [88, 89, 90, 110, 120, 123], "s\u00e9parat": [88, 106, 109, 112, 126], "r\u00e9f\u00e9renc\u00e9": [88, 90, 106], "soi": [88, 89, 103, 126], "d\u00e9pend": [88, 89, 90, 92, 99, 101, 112, 126, 127], "ivaleur": 88, "m\u00e9moris": [88, 131], "ressai": [88, 110], "dizain": [88, 92, 105, 106, 109, 112, 126, 132], "d\u00e9veloppeur": [88, 96, 99, 101, 106, 108, 116, 126], "pr\u00e9dire": 88, "attendait": [88, 109, 134], "fix\u00e9": [88, 128], "organis": [88, 90, 99, 103, 105, 106, 108, 112, 120, 126, 134], "transfor": [88, 101, 110, 126], "regroup\u00e9": [88, 90, 112, 116], "r\u00e9ussi": [88, 99, 116, 128], "modifierait": [88, 99], "contienn": [88, 89, 90, 99, 106, 116], "collectif": 88, "faudrait": [88, 92, 99, 112, 120, 127], "n\u00e9cessitait": [88, 126], "signifiait": 88, "rarement": [88, 93, 99, 120], "incluent": [88, 89, 92, 101, 112, 113, 126, 127, 134], "original": [88, 105], "d\u00e9clare": [88, 92, 106, 126], "continuit\u00e9": 88, "abr\u00e9g\u00e9": [88, 90], "ob\u00e9it": 88, "reconnaiss": 88, "voit": [88, 90, 103], "mentionn\u00e9": [88, 99, 106, 110], "rempla\u00e7": [88, 97, 126], "nettoi": 88, "appelez": 88, "identifi\u00e9": [88, 92, 118], "inqui\u00e9t": [88, 93], "d\u00e9cider": [88, 89, 103, 106, 112, 126, 128], "discut": [88, 91, 112, 120, 132], "rassembl": [88, 99, 103, 106, 116], "g\u00e9n\u00e8re": [88, 90, 106, 116], "simul\u00e9": [88, 110], "usin": 88, "convertir": [88, 90, 99, 106, 108, 123, 127], "vigueur": 88, "remplir": [88, 106, 116, 134], "apport\u00e9": [88, 91, 92, 108, 110, 111, 119, 126, 127, 128, 131, 136], "s\u00e9l\u00e9ction": 88, "pollent": 88, "huit": [88, 93, 112], "trist": [88, 90], "peux": [88, 120, 126, 134], "construis": [88, 92, 116, 130], "progressiv": [88, 105, 109, 112, 116], "remplissag": 88, "d\u00e8": [88, 99, 106, 109, 110, 132], "concernai": [88, 95], "reformatag": 88, "fallait": [88, 107, 110], "renvoy": [88, 101, 106, 126, 127, 128], "autonom": [88, 89, 93, 126], "r\u00e9ussit": [88, 99, 116, 128], "\u00e9chec": [88, 90, 92, 99, 110, 116, 126, 128, 131, 135], "\u00e9limin": [88, 89, 95, 101, 106, 107, 112, 126], "refondu": 88, "statut": [88, 93, 106, 123], "secondair": [88, 92, 109], "inconnu": [88, 126, 128], "examen": [88, 92, 104], "tableau": [88, 90, 91, 92, 119, 120, 128], "arbo": 88, "d\u00e9nomin": [88, 106, 126], "mapp\u00e9": [88, 89, 103, 120], "droit": [88, 103, 106, 109, 110, 126, 129, 137], "incorpor\u00e9": [88, 89, 104, 128], "incopor\u00e9": 88, "expliqu": [89, 92, 99, 103, 106, 124, 135, 136], "r\u00e9v\u00e9lera": 89, "richess": [89, 103], "sp\u00e9cifi": [89, 90, 106, 126, 127], "parmi": [89, 90, 100, 103, 110, 120, 123, 126, 130, 132], "maximis": [89, 90, 110], "insuffis": [89, 90], "del\u00e0": [89, 90, 93, 101, 106, 109, 116, 120, 128, 130, 132], "authentifi\u00e9": [89, 90, 106, 120], "nommag": [89, 90, 103, 106], "convenu": [89, 90, 111], "proc\u00e9dur": [89, 90, 91, 92, 134], "incompl\u00e8t": [89, 90], "superpos\u00e9": 89, "montant": [89, 106, 109], "significatif": [89, 103], "normalis": [89, 105, 106, 112], "fondament": [89, 90, 117], "controvers\u00e9": [89, 90], "gratuit": [89, 90, 101, 105, 108], "pourraient": [89, 92, 103, 106, 113, 120, 126, 137], "acteur": [89, 90, 112], "d\u00e9clarent": 89, "abandonn\u00e9": [89, 93, 99, 126], "fondement": 89, "travailleur": [89, 109], "\u00e9quilibr\u00e9": [89, 112], "attribu\u00e9": [89, 99, 126], "exclusiv": [89, 90, 99], "refl\u00e9ter": [89, 90, 92, 99, 109, 131], "it\u00e9rat": [89, 90, 110, 128], "simultan\u00e9": [89, 90, 99, 112], "accommod": [89, 90, 102], "cr\u00e9erait": [89, 90], "n\u00e9cessiterait": [89, 90], "in\u00e9vitabl": [89, 90], "ind\u00e9pendam": [89, 90, 93, 101, 106, 109, 128], "unidirectionnel": 89, "forcer": [89, 90, 92, 127], "grossi\u00e8ret\u00e9": 89, "d\u00e9chet": 89, "\u00e9tablit": [89, 95], "atteindra": 89, "\u00e9conomi": [89, 112, 128], "r\u00e9alis\u00e9": [89, 93, 99, 104, 106, 109, 110, 112], "facteur": [89, 117], "judicieux": 89, "vieux": [89, 106, 119], "\u00e9ternel": [89, 129], "r\u00e9glabl": [89, 101, 102, 127], "d\u00e9signer": [89, 112, 113], "diagramm": [89, 109, 110, 120], "vocabulair": [89, 103], "bleu": [89, 103], "diff\u00e8rent": [89, 99, 102, 103, 116, 118], "principaux": [89, 101, 103, 109, 112], "entremetteur": 89, "suppriment": [89, 92], "tour": [89, 103], "fortement": [89, 101, 103, 105, 108, 109, 112, 128], "meurt": [89, 126], "revenez": 89, "aurez": 89, "manqu\u00e9": 89, "exchangess": 89, "s\u00e9parateur": [89, 103, 106, 112, 113, 114, 126, 127, 128], "grossier": [89, 103], "filtr\u00e9": [89, 103, 106, 109], "commen\u00e7on": [89, 90, 92, 110], "rev\u00eatement": [89, 103], "retravaill\u00e9": 89, "pilot": [89, 101, 132], "coordonn": [89, 90, 103], "conna\u00eet": [89, 99, 103, 105], "r\u00e9duisent": [89, 112], "\u00e9crivon": 89, "faison": [89, 90, 96], "compri": [89, 90, 99, 106, 109, 113, 114, 126], "h\u00e9berg": 89, "tandi": [89, 92, 99, 101, 106, 109, 112, 116, 126, 134], "naviguez": 89, "visitez": 89, "ouvert": [89, 104, 111, 115, 116, 120, 126, 127], "libr": [89, 112], "langu": [89, 91, 92, 110, 124], "fournisseur": [89, 90, 105, 120, 128], "neutr": [89, 105], "propri\u00e9tair": [89, 101, 103, 106, 112, 120], "\u00e9chapper": [89, 126, 128], "verrouillag": 89, "couliss": 89, "entrepris": [89, 106, 112], "obtenez": [89, 103, 104, 132], "peintur": 89, "incertain": 89, "communiqueront": 89, "imagin": 89, "form\u00e9": [89, 104], "consid\u00e9r": [89, 90, 93, 96, 99, 101, 103, 109, 112, 113, 114, 117, 119, 128, 132], "couleur": 89, "r\u00e9tr\u00e9cissement": 89, "refl\u00e8t": [90, 120], "r\u00e9flexion": [90, 95, 99], "esquiss": 90, "\u00e9quip": 90, "vouloir": [90, 95, 106, 116, 126], "difficult\u00e9": [90, 106, 108, 112, 116, 120, 126], "subiss": 90, "effectuez": [90, 95, 134], "re\u00e7oiv": [90, 116], "gouvernemental": 90, "r\u00e9seaux": [90, 101, 103, 104, 109, 118, 126, 128], "scientifiqu": [90, 93], "acc\u00e8dent": [90, 99, 101], "restreint": [90, 106, 120, 126, 128], "cnrc": 90, "laboratoir": 90, "\u00e9quipement": [90, 109, 120], "entretenu": 90, "corrig": [90, 91, 99, 117, 120, 127], "vuln\u00e9rabilit\u00e9": [90, 119], "divulgu\u00e9": [90, 120], "agitateur": 90, "collaborateur": 90, "entit\u00e9": [90, 112, 120, 128], "universitair": [90, 110], "gouvern": [90, 91, 110], "commerciaux": 90, "\u00e9changent": 90, "r\u00e9serv": 90, "initi\u00e9": [90, 109, 112, 131], "exceptionnel": 90, "stockag": [90, 99, 104, 109, 110, 112, 116, 126, 128, 129, 132, 135], "isol\u00e9": 90, "r\u00e9server": 90, "imperm\u00e9": 90, "intemp\u00e9ri": [90, 104, 110], "ins\u00e9rez": 90, "r\u00e8gle": [90, 92, 103, 105, 106, 112, 120], "cr\u00e9ent": [90, 103, 106, 117, 120, 126, 127, 128, 138], "vaux": 90, "physiqu": [90, 106, 109, 112], "connectivit\u00e9": [90, 110, 112, 116], "puiss": [90, 99, 101, 112, 126], "sait": [90, 101, 118, 126], "soin": [90, 93, 103, 104, 106, 126], "r\u00e9plicat": [90, 101, 108, 110, 112, 128], "centralis\u00e9": 90, "escalad\u00e9": 90, "confier": 90, "responsabilit\u00e9": [90, 104, 106, 109, 126], "instar": 90, "c\u00e2ble": 90, "laiss": [90, 93, 135], "recour": [90, 102], "interop\u00e9r": [90, 112, 115], "refl\u00e8tent": [90, 126], "compl\u00e9t\u00e9": [90, 92, 106, 112, 117], "caract\u00e9ristiqu": [90, 101, 110, 112], "d\u00e9finisson": [90, 95, 131], "imposon": [90, 95], "identit\u00e9": [90, 103, 106, 109, 120], "f\u00e9d\u00e9ration": 90, "confianc": [90, 92, 104], "transf\u00e9rant": [90, 112, 128], "entrer": 90, "collis": 90, "confidentialit\u00e9": 90, "\u00e9mettent": 90, "assurerait": 90, "permettrait": [90, 98, 128], "survienn": 90, "chiffr\u00e9": [90, 120], "tier": [90, 95, 101, 109, 112], "contr\u00f4ler": [90, 116, 126, 129], "extr\u00e9mit\u00e9": [90, 93, 102, 104, 120], "finaux": [90, 101, 104], "soutenir": [90, 92, 101, 105, 112, 120], "clair": [90, 99, 106, 108, 112, 125], "provisoir": [90, 99], "drapeau": 90, "interpomp": 90, "suivent": [90, 106, 109, 112, 126, 128], "s\u00e9quenc": [90, 92, 106, 112, 118, 126], "saut": [90, 93, 95, 101, 104, 106, 112, 128], "oui": [90, 99, 103, 120], "pens": [90, 99, 112], "autoris\u00e9": [90, 103, 106, 112, 120, 126, 128, 133], "moindr": [90, 109], "d\u00e9truir": [90, 104], "g\u00e9r\u00e9": [90, 104, 108, 110], "agira": 90, "testeur": [90, 92], "laissant": [90, 93, 99, 110, 120], "exactitud": [90, 109], "nettoyag": [90, 99, 106, 109, 126, 130, 134, 138], "malveillant": [90, 104, 120], "ind\u00e9fini": [90, 103], "varient": [90, 106], "\u00e9crase": 90, "chargeur": [90, 104, 106], "\u00e9craser": [90, 104, 106, 118, 127], "mensong": 90, "d\u00e9pass": 90, "d\u00e9passement": 90, "acceptez": [90, 131], "copiant": [90, 92], "quitt": [90, 126, 127], "dormez": 90, "d\u00e9faillanc": [90, 93, 99, 101, 106, 109, 110, 112, 120, 128], "pr\u00e9traitement": 90, "r\u00e9cup\u00e9rera": [90, 103], "antiviru": 90, "\u00e9ventuel": [90, 106, 109, 117, 123, 126, 127, 132], "quarantain": 90, "granularit\u00e9": [90, 104], "usurp": [90, 109, 120], "lecteur": [90, 101, 116, 126], "canaux": 90, "recev": [90, 95], "rejetez": 90, "d\u00e9ni": 90, "tourbi\u00e8r": 90, "infini": [90, 92, 118, 132], "cuit": [90, 96], "autorisez": [90, 99], "pouvoir": [90, 92, 93, 101, 126, 132], "volont\u00e9": 90, "enfer": 90, "g\u00e9rer": [90, 93, 95, 97, 103, 104, 106, 112, 116, 120, 123, 124], "parler": [90, 132], "gar": 90, "actif": [90, 92, 99, 103, 106, 113, 114, 116, 118, 120, 125, 126, 128, 129], "passif": [90, 99, 103, 106, 120, 125], "\u00e9quilibreur": [90, 104, 120], "pomp\u00e9": 90, "serpent": 90, "rongeur": 90, "d\u00e9form": 90, "\u00e9quilibrag": [90, 98, 101, 106, 121, 127, 128], "pic": 90, "ralentit": [90, 112], "vannag": 90, "pr\u00e9f\u00e9reraient": [90, 128], "dispara\u00eet": [90, 128], "fraich": 90, "nul": [90, 128], "prenant": [90, 109, 112, 116, 128, 132], "repomp": 90, "battant": 90, "impass": [90, 108], "\u00e9loigner": 90, "clusteris\u00e9": 90, "routeur": [90, 120], "cocher": 90, "\u00e9tendu": [90, 93, 95, 101, 104, 105, 112, 128, 132], "confirm\u00e9": [90, 136], "conservez": 90, "vis\u00e9": 90, "subdivis\u00e9": 90, "pr\u00e9alabl": [90, 92], "produirait": 90, "robustess": [90, 101], "atterriss": 90, "confirmez": 90, "canalis\u00e9": 90, "d\u00e9clencheront": 90, "d\u00e9m\u00e9nageur": 90, "obten": 90, "minimis\u00e9": [90, 109, 112, 126], "d\u00e9m\u00e9nagement": 90, "segment\u00e9": [90, 93, 100, 101, 112], "r\u00e9assemblag": [90, 93, 96, 101, 112], "terminaison": [90, 103, 112, 120], "unifi\u00e9": [90, 110], "r\u00e9assembl\u00e9": [90, 104], "fragment\u00e9": [90, 95], "compromi": [90, 117, 120], "devant": [90, 120], "transmet": 90, "standalone_": 90, "\u00e9tabli": [90, 92, 99, 106, 112, 120], "communiquera": 90, "partagez": 90, "cess": [90, 118], "provenir": [90, 99], "poss\u00e8d": [90, 91, 106, 112, 123, 127], "annoncez": 90, "t\u00e9l\u00e9chargent": [90, 92, 93, 99, 101, 104, 105, 106, 110, 112, 124], "\u00e9changer": [90, 101, 105, 106, 112], "voient": [90, 93, 101, 106, 109], "pur": [90, 128], "observateur": [90, 120], "offrent": [90, 106, 120], "barr": [91, 106, 126, 128], "lat\u00e9ral": 91, "gauch": [91, 103, 106, 109, 131], "prendra": [91, 99, 112], "obtiendrez": [91, 98], "attendu": [91, 106, 110, 126], "regardon": [91, 130], "pointez": 91, "validez": [91, 92], "typiqu": [91, 92, 101, 112, 117, 120, 126, 127], "apprentissag": 91, "apprendr": [91, 120], "permettez": 91, "reproduct": [91, 92], "concr\u00e8t": [91, 109], "abstrait": [91, 99, 112], "didacticiel": 91, "veux": [91, 95], "d\u00e9butant": 91, "connaiss": [91, 93, 99, 103, 110, 116, 130], "expliquez": 91, "\u00e9corcher": 91, "chat": 91, "restez": 91, "nommez": [91, 99], "d\u00e9tendu": [91, 104], "explor\u00e9": [91, 109, 110, 117], "sup\u00e9rieur": [91, 92, 103, 106, 109, 112, 118, 126, 127, 134], "d\u00e9termin\u00e9": [91, 106, 125, 126], "projet": [91, 109, 110, 111, 112], "cherchent": 91, "d\u00e9part": [91, 101, 104, 105, 106, 109, 112], "\u00e9dit\u00e9": 91, "r\u00e9vis\u00e9": 91, "commentair": [91, 106, 126], "d\u00e9crivant": [91, 116], "vide": [91, 92, 94, 126, 127, 131], "indent\u00e9": 91, "retrait": 91, "carr\u00e9ment": 91, "omis": [91, 106], "respectez": 91, "lue": [91, 117, 124], "credneti": 91, "additionel": 91, "propo": [91, 93, 99, 101, 103, 106, 116, 118, 123, 126], "mati\u00e8r": [91, 101, 104, 110, 117], "tableaux": [91, 120], "litt\u00e9raux": 91, "malheureus": [91, 92, 109], "officiel": 91, "anglais": 91, "traduct": [91, 110, 120, 122], "pirat": 92, "confort": 92, "aidera": [92, 99], "soumettr": 92, "ta": [92, 95], "perturbera": 92, "clon\u00e9": 92, "document\u00e9": [92, 95, 99, 102, 116, 128], "alphab\u00e9tiqu": 92, "valait": 92, "pein": [92, 93, 101, 112], "ordinateur": [92, 99, 106, 112, 117, 126], "engag\u00e9": 92, "fusionn": 92, "d\u00e9cidon": [92, 99], "satisfait": [92, 134], "correctif": 92, "\u00e9tiquet\u00e9": [92, 99, 108, 117, 127], "prochain": [92, 101, 103, 110, 112, 116, 120, 128, 134], "refactoris": [92, 96, 100], "majeur": [92, 109, 110, 112], "restant": [92, 99, 106, 116, 126, 127, 128], "constructif": 92, "r\u00e9gression": 92, "crit\u00e8r": [92, 101, 109, 128], "fusion": 92, "fusionn\u00e9": 92, "recett": 92, "encourag\u00e9": 92, "pr\u00e9f\u00e9reront": 92, "exploit": [92, 93, 101, 103, 104, 106, 109, 110, 112, 117, 120, 126, 127, 134], "p\u00e9nibl": [92, 95], "bruyant": 92, "t\u00e9l\u00e9chargeon": 92, "roue": [92, 134], "tirerait": 92, "invitez": 92, "fournira": [92, 99, 106, 126], "initialis\u00e9": [92, 133], "automatis": 92, "d\u00e9tecteront": 92, "testera": 92, "r\u00e9cent": [92, 106, 120, 123, 126, 134], "installera": 92, "signeront": 92, "accomplit": 92, "empaquetag": [92, 109], "adress\u00e9": [92, 103], "abandonnon": 92, "incluez": [92, 94], "arrivon": [92, 120], "autotest": 92, "sant\u00e9": 92, "testant": 92, "monothread": 92, "lin\u00e9air": 92, "avanc": [92, 95, 109, 112], "uniform\u00e9": 92, "pr\u00eate": [92, 106], "r\u00e9p\u00e9ter": 92, "ralenti": [92, 109], "durent": 92, "anc\u00eatr": [92, 105, 108], "simplifi\u00e9": [92, 93, 99, 101], "aveugl": 92, "pr\u00e9venu": 92, "essai": [92, 93, 99, 109, 110, 112], "r\u00e9pliquer": [92, 95, 112], "couvertur": [92, 116], "montr": [92, 106, 109, 112, 116], "utilisatu": 92, "troncatur": [92, 112], "localhst": 92, "repertoir": [92, 106], "appara\u00eet": [92, 126], "plafond": 92, "reconvers": 92, "post_exchange_suffix": 92, "pla\u00e7ant": 92, "abonnez": 92, "nettoyez": 92, "bureau": [92, 112, 135, 136], "travaillez": 92, "falloir": 92, "\u00e9chouent": [92, 106, 109], "r\u00e9ex\u00e9cutez": 92, "resteront": 92, "ex\u00e9cutera": [92, 103, 126, 137], "convertissez": [92, 128], "focntionn": 92, "r\u00e9ussiss": 92, "adopt\u00e9": [92, 108, 109, 112, 128], "\u00e9chantillonnag": [92, 104], "qualitatif": 92, "approfondi": [92, 110, 112, 128], "v\u00e9rifi\u00e9": [92, 106], "t\u00e9l\u00e9chargeant": [92, 103, 112], "d\u00e9nombrement": 92, "cinquant": 92, "mill": 92, "entretien": [92, 99, 120], "tuera": [92, 137], "montrer": [92, 116], "raccourcir": [92, 112, 117], "lendemain": 92, "matin": 92, "motiv\u00e9": [92, 110], "surpass": 92, "changez": 92, "permanent": [92, 118, 128], "r\u00e9ussiron": 92, "vidang": 92, "r\u00e9essay": [92, 94, 99, 106, 126, 131], "tomb": [92, 93, 99, 106, 126], "proc\u00e9dez": 92, "d\u00e9pit": 92, "r\u00e9silier": 92, "indiquerait": 92, "clart\u00e9": [92, 99], "d\u00e9pendant": [92, 106, 126], "frapp": 92, "incr\u00e9ment": [92, 113], "r\u00e9ussir": [92, 126], "jug\u00e9": [92, 109, 118], "examinera": [92, 118], "r\u00e9viseur": 92, "d\u00e9cidera": 92, "approuv": 92, "malgr\u00e9": [92, 126], "plaint": 92, "wip": 92, "vivr": [92, 126], "rasoir": 92, "d\u00e9clenchent": 92, "souscrit": [92, 95, 106], "pr\u00e9liminair": 92, "packag\u00e9": 92, "versionn\u00e9": 92, "pr\u00e9fix\u00e9": 92, "chiffr": [92, 106, 109, 113, 118, 126, 128], "moi": [92, 106, 109, 112, 126], "avril": 92, "stabilis\u00e9": [92, 99, 109], "incr\u00e9mentiel": [92, 99], "reprenion": 92, "esp\u00e9ron": [92, 99, 110], "garanti": [92, 93, 112], "partiel": [92, 95, 106, 112, 116, 128, 132, 134], "bri": 92, "survenir": [92, 126], "bout": [92, 93, 99, 101], "bogu": [92, 99], "blocag": [92, 95], "pr\u00e9c\u00e9demment": [92, 106, 120], "gardez": [92, 99, 137], "esprit": [92, 101, 109, 110, 120], "\u00e9choueront": 92, "pr\u00e9server": 92, "vider": 92, "enqu\u00eat": 92, "recr\u00e9at": 92, "janvier": [92, 102, 109, 111, 119], "lib\u00e9rat": 92, "\u00e9cras\u00e9": 92, "ao\u00fbt": 92, "promouvoir": 92, "restructur\u00e9": 92, "souhaiterez": 92, "d\u00e9conseill\u00e9": [92, 99, 126], "v\u00e9rifiant": [92, 106], "acc\u00e9dez": [92, 99], "cliquez": [92, 136, 137], "bouton": [92, 137], "bioniqu": 92, "v03_launchpad": 92, "rebas\u00e9": 92, "rebas": 92, "souc": 92, "cibl": [92, 94, 95, 103, 110], "override_dh_auto_test": 92, "dep": 92, "mineur": [92, 106, 110], "chez": [92, 93], "mettez": 92, "g\u00e9n\u00e9rez": 92, "signez": 92, "bord": [92, 112], "maladroit": 92, "\u00e9chouera": 92, "incompatibilit\u00e9": [92, 96, 118], "commentez": 92, "terminera": [92, 129], "r\u00e9p\u00e9tez": 92, "corrigez": 92, "collez": 92, "attirera": 92, "in\u00e9l\u00e9gant": 92, "devrion": [92, 93, 99, 116, 126], "coller": [92, 100, 116], "glissez": 92, "d\u00e9posez": 92, "donnera": [92, 127], "guider": [92, 93], "contribu": [92, 139], "signalez": 92, "\u00e9met": [92, 104], "listant": 92, "bloqu": 92, "constat\u00e9": 92, "d\u00e9ploy\u00e9": [92, 103, 104, 108, 109, 110, 112, 120], "g\u00eanant": [92, 99], "valent": [92, 112], "d\u00e9gradat": 92, "d\u00e9grad\u00e9": 92, "aider": [92, 99, 101, 110, 129], "disant": 92, "plein": [92, 118, 126], "pr\u00e9voir": [92, 112], "d\u00e9grader": 92, "\u00e9l\u00e9ganc": [92, 112], "\u00e9tabliss": [93, 112, 120], "douc": 93, "tron\u00e7on": 93, "comptent": [93, 101], "consom": [93, 101, 106], "v\u00e9ritabl": [93, 106, 113, 114], "extraient": [93, 101, 112], "emprunt\u00e9": 93, "tra\u00e7ag": [93, 101], "grandement": [93, 101], "vaill": [93, 101], "remontag": [93, 95], "ramassera": 93, "parall\u00e9lism": [93, 101, 112], "pouvant": [93, 105, 126, 127], "maximis\u00e9": [93, 101], "feron": 93, "r\u00e9f\u00e9rer": [93, 99, 116, 126, 127], "r\u00e9fl\u00e9chir": 93, "d\u00e9barrass": [93, 99, 103, 109], "transf\u00e8rent": [93, 101, 112, 126], "gommageront": 93, "int\u00e9ressant": [93, 95, 99, 112], "genr": [93, 101, 106, 126], "per\u00e7u": 93, "noyer": 93, "r\u00e9plicateur": 93, "poss\u00e9dait": 93, "soucion": 93, "portabilit\u00e9": [93, 95], "douteux": 93, "\u00e9volutivit\u00e9": 93, "vaut": [93, 118, 123, 126, 131], "prouver": 93, "mobil": 93, "revenir": [93, 104, 105, 126], "aill": 93, "interconnecton": 93, "primair": [93, 109, 110], "essayon": [93, 103], "emballag": [93, 109, 134], "brise": 93, "perdu": [93, 103, 105, 109, 123, 126, 131], "pire": [93, 95, 112, 120], "minuteri": 93, "cro\u00eetr": 93, "capteur": 93, "satellitair": [93, 110, 112], "critiqu": [93, 101, 112, 118], "koctet": 93, "relev\u00e9": 93, "mesur\u00e9": [93, 106, 126], "t\u00e9raoctet": [93, 109, 110, 112, 128], "penser": [93, 96, 117], "\u00e9norm": [93, 99, 106, 112, 116], "int\u00e9grant": 93, "subtil": [93, 113, 114], "soupless": 93, "av\u00e8r": [93, 109, 112, 118], "assembleur": 94, "d\u00e9clench\u00e9": [94, 99, 110], "ins\u00e8r": 94, "tapant": 94, "pr\u00e9coce": [95, 110], "substantiel": [95, 103, 110, 116], "met": [95, 99, 103, 106, 108, 109, 112, 120, 123, 124, 126, 128], "envoyon": 95, "divis\u00e9": [95, 106, 127], "morceaux": 95, "appuy": 95, "multithread": 95, "morceau": 95, "v\u00e9rifion": 95, "notant": [95, 99, 126], "bloquant": 95, "calculez": 95, "envoyez": [95, 126], "cass": 95, "fractionnair": 95, "clairsem\u00e9": 95, "causerait": 95, "diriez": 95, "suffix\u00e9": 95, "contigu\u00eb": 95, "inhabituel": [95, 108], "sp\u00e9ciaux": [95, 117], "affront": [95, 106, 109, 126], "ravag": [95, 126], "\u00e9crivant": [95, 106, 116], "\u00e9criront": 95, "manquez": 95, "arr\u00eatez": [95, 131, 135], "ach\u00e8vement": [95, 102], "n\u00f4tre": 95, "fixon": 95, "arrivion": 95, "morcel": 95, "largeur": 95, "\u00e2ge": [95, 102, 116], "esp\u00e9rer": 95, "frai": [95, 101, 103, 112, 115, 126, 128], "g\u00e9n\u00e9raux": [95, 101, 112, 115, 119, 126, 128], "deviendront": 95, "esth\u00e9tiqu": 95, "\u00e9clips": 95, "r\u00e9sument": 95, "0\u00e8me": 95, "compt\u00e9": 95, "fichiersz": 95, "d\u00e9sactiv": [95, 106, 120, 124], "r\u00e9f\u00e9rentiel": [95, 96, 108, 134], "inconv\u00e9ni": 95, "soupir": 95, "forker": 95, "pourrion": 95, "1\u00e8re": [95, 113, 114], "2e": 95, "changent": [95, 99, 106, 126, 127, 128, 138], "voyag": [95, 101, 102], "outillag": 96, "sr3_titr": 96, "sr_titr": 96, "douloureux": 96, "navir": 96, "th\u00e9s\u00e9e": 96, "parit\u00e9": 96, "s\u00e9lection": [96, 99, 101, 104, 106, 112, 123, 126, 128, 132], "r\u00e9vision": [96, 110, 138], "annex": 96, "pression": [96, 112, 116, 119], "chunksiz": 96, "cksum": 96, "digress": 96, "sr_titl": 97, "concern\u00e9": [97, 124], "cesserait": [97, 124], "agiss": [97, 101, 106, 109, 124, 127], "chronom\u00e9tr\u00e9": 98, "temp\u00eat": 98, "croissant": 98, "rejoint": 98, "mort": [98, 101], "d\u00e9connectez": 98, "empilera": 98, "accus": [98, 116, 132], "limitez": 98, "appelait": [99, 108, 116], "cart": [99, 104, 119, 120], "\u00e9tiquett": 99, "historiqu": [99, 108], "\u00e9l\u00e9gant": [99, 103, 107, 110], "terminez": 99, "cro\u00fbt": 99, "coh\u00e9rent": 99, "appri": 99, "rudimentair": [99, 112], "accomplir": 99, "hostil": 99, "\u00e9vident": [99, 104, 109, 110, 112, 137], "r\u00e9f\u00e8re": [99, 112], "fourr": 99, "impossibilit\u00e9": [99, 108], "incapacit\u00e9": [99, 108], "\u00e9volu\u00e9": [99, 120], "d\u00e9corat": [99, 116], "pluriel": [99, 116], "singuli": [99, 116], "d\u00e9placent": [99, 116, 117, 127, 128], "tent\u00e9": [99, 116, 126], "cadrag": 99, "aliment\u00e9": [99, 104, 116], "s\u00e9pare": [99, 113], "clairement": [99, 112], "abr\u00e9viat": [99, 129], "aboutiss": 99, "vaisseau": 99, "\u00e9videm": [99, 101], "ayon": 99, "concili": 99, "impress": [99, 132], "idiomatiqu": [99, 108], "essay\u00e9": 99, "refactorisez": 99, "remani\u00e9": 99, "remplacez": [99, 116], "internalis": 99, "g\u00e9n\u00e9ralis": [99, 120], "r\u00e9sume": 99, "entra\u00eenez": 99, "poursuivr": [99, 112], "fini": [99, 109, 113, 117, 118, 137], "suffisammen": 99, "te": 99, "d\u00e9l\u00e9gu\u00e9e": 99, "reproduit": [99, 112], "transcrit": 99, "talon": 99, "h\u00e9ritent": [99, 106, 126], "cassera": [99, 120], "exer\u00e7": 99, "retir\u00e9": [99, 126, 127], "squelett": [99, 106], "refondr": 99, "mang": 99, "r\u00e9impl\u00e9ment\u00e9": [99, 112], "impliquait": 99, "nouveaux_": 99, "permi": [99, 107, 109, 120], "reform": 99, "noyau": [99, 106, 109, 110, 127], "d\u00e9pr\u00e9cient": 99, "pr\u00e9tendr": [99, 109], "h\u00e9rit\u00e9": [99, 108, 128], "attaqu": [99, 120], "concr\u00e8tement": 99, "\u00e9tude": [99, 101, 111, 119], "d\u00e9cid\u00e9": [99, 105, 109, 110], "r\u00e9\u00e9crire": [99, 117, 127], "lacun": [99, 106], "soulev": 99, "pr\u00e9f\u00e9rerait": 99, "tracer": 99, "idiosyncratiqu": 99, "\u00e9xecut": [99, 126], "diagnostiqu": [99, 102, 117], "rep\u00e9rer": 99, "alambiqu\u00e9": 99, "pareil": [99, 106], "2\u00e8me": [99, 132], "migrer": [99, 112], "poir": 99, "r\u00e9ussis": 99, "forfait": [99, 112], "interactivit\u00e9": 99, "\u00e9gal": [99, 106, 113], "ajustez": 99, "incoh\u00e9r": [99, 102], "migr\u00e9": [99, 120], "stade": [99, 106, 109, 126], "sui": [99, 120], "pump_flag": 99, "tronqu": 99, "structurel": 99, "r\u00e9gl\u00e9e": [99, 106, 109, 126], "plong": 99, "d\u00e9monstrat": [99, 112, 131], "textuel": [99, 112], "poilu": [99, 108], "dispara\u00eetra": 99, "laid": 99, "re\u00e7evoir": 99, "vivant": 99, "pensez": [99, 129], "codeur": [99, 106], "assign\u00e9": [99, 126], "laiss\u00e9": 99, "jett": 99, "it\u00e9rateur": 99, "analysera": 99, "pr\u00e9sentera": 99, "proc\u00e9der": 99, "tendanc": [99, 112, 120, 126], "devenir": [99, 110, 127], "euh": 99, "\u00e9gar\u00e9": 99, "renonc\u00e9": 99, "retranch": 99, "viendra": 99, "subtilit\u00e9": 99, "\u00e9gale": [99, 126], "d\u00e9marcat": [99, 101, 104], "savez": 99, "gagner": 99, "maturit\u00e9": [99, 111], "conflit": [99, 103, 127], "finira": 99, "interpr\u00e8t": [99, 128], "tomber": 99, "sach": 99, "int\u00e8gr": 99, "surpren": 99, "tir\u00e9": [99, 101, 106, 113, 114, 135], "pensant": [99, 108], "recr\u00e9ez": 99, "remarqu\u00e9": [99, 117], "d\u00e9riv\u00e9": [99, 106, 110, 116, 118, 126, 130, 134], "magiqu": [99, 106], "enfich": 99, "hi\u00e9rarchiqu": [99, 103, 112, 128], "op\u00e9rer": 99, "typag": 99, "r\u00e9ins\u00e9r\u00e9": 100, "fantastiqu": 100, "th\u00e9ori": [100, 106, 112, 126], "devion": [100, 109], "g\u00ean\u00e9": 100, "aid\u00e9": 100, "apparu": [100, 105], "f\u00e9d\u00e9rateur": 100, "envisag\u00e9": [100, 109, 112], "savion": 100, "fonctionnerai": [100, 106], "relier": 101, "\u00e9vitent": 101, "gagnant": 101, "nettement": [101, 109], "exploit\u00e9": 101, "famili\u00e8r": [101, 106], "activ\u00e9": [101, 104, 120, 126, 134], "partagera": 101, "encha\u00een": 101, "redond": [101, 104, 106, 112, 120], "d\u00e9coupl\u00e9": 101, "imbriqu\u00e9": 101, "forment": [101, 103], "maill": 101, "parvenir": 101, "pousser": [101, 109], "augmentat": 101, "24h": [101, 108, 109], "7j": [101, 108, 109], "civilis\u00e9": 101, "exponentiel": [101, 106, 112, 120], "poursuiv": 101, "transitoir": [101, 106, 112, 132], "mondial": [101, 105, 108, 112, 126], "t\u00e9l\u00e9commun": [101, 105, 112], "soupl": [101, 112], "pr\u00e9cise": 101, "pouss": 101, "maillon": 101, "commutaiton": 101, "prendront": 101, "transf\u00e9reront": 101, "parall\u00e8lism": 101, "embryonnair": 101, "archi": 101, "pr\u00e9d\u00e9cesseur": 101, "bienvenu": 101, "largement": [101, 106], "fabuleux": 101, "comparaison": [101, 106, 109, 112], "traitant": [101, 109], "multidiffus": 101, "synchronis": [101, 109, 113, 120], "marchant": 101, "r\u00e9duisant": [101, 110, 120], "axkib": 101, "transitivit\u00e9": 101, "proch": [101, 110, 112, 126], "facon": 101, "propic": 101, "acc\u00e9l\u00e9rat": [101, 109], "agnostiqu": [101, 104], "rajout": [101, 104, 110, 117, 126], "substitu": 101, "acc\u00e9l\u00e9r\u00e9": 101, "accellerateur": 101, "\u00e9chang\u00e9": [101, 112, 120], "simplicit\u00e9": 101, "dans": 101, "noyaux": 101, "surabond": 101, "endoss": 101, "jugement": 101, "instructif": 101, "mettait": 101, "allemand": [101, 112], "philosophiqu": 101, "horribl": 101, "webocket": 101, "efficacit\u00e9": [101, 109, 112, 117, 120, 128], "compagni": 101, "derri\u00e8r": [101, 104, 108, 120], "d\u00e9sint\u00e9ress\u00e9": 101, "compl\u00e9tion": [102, 117], "intermittent": 102, "entend": [102, 106, 117], "repertoi": 102, "masquer": [102, 126], "pr\u00e9fixer": 102, "compl\u00e8t\u00e9": 102, "vuln\u00e9rabl": [102, 117], "horlog": [102, 117], "d\u00e9saccord": 102, "coop\u00e8rent": [102, 106], "support\u00e9": [102, 117, 127], "r\u00e9seautag": 102, "interromp": 102, "informera": 102, "publiant": [102, 106], "mod\u00e9r\u00e9": [103, 112, 117], "oppos\u00e9": [103, 104, 105, 128], "g\u00e9rant": 103, "r\u00e9current": 103, "amen\u00e9": 103, "remi": [103, 106, 126], "entendu": 103, "implant\u00e9": [103, 106, 110, 118, 126], "considerationdeploy": 103, "reglag": 103, "filtrez": [103, 116], "accompli": [103, 110, 112, 116], "agir": [103, 104, 106, 116, 124, 126], "traitez": 103, "tach": [103, 126], "d\u00e9river": [103, 118, 126], "equiv": 103, "faculatif": 103, "pompl": 103, "t\u00e9l\u00e9charer": 103, "manutent": 103, "boug": 103, "enovoy": 103, "facultatif": [103, 116, 126, 128, 134], "colonn": [103, 106, 129, 134], "milieu": [103, 110, 120], "exprim": [103, 106, 112], "s\u00e9quentiel": [103, 106, 112, 126, 132], "csp": 103, "revanch": 103, "coop\u00e9rent": 103, "d\u00e9tect": 103, "restera": 103, "algorithmiqu": [103, 112, 120], "introduit": [103, 109, 110, 117, 127, 128], "r\u00e9v\u00e8lera": 103, "entremeteur": 103, "pr\u00e9l\u00e8ve": 103, "th\u00e9matiqu": [103, 105], "jacent": [103, 104, 112, 117, 127], "ressenti": 103, "encod\u00e9": [103, 125, 126, 128], "inact": 103, "repr\u00e9sent\u00e9": [103, 126], "rompu": 103, "signif": [103, 106, 126, 128, 131], "lient": [103, 106], "lira": [103, 106], "charg\u00e9": [103, 112, 116, 128], "\u00e9vitera": 103, "combin\u00e9": [103, 106, 109, 126, 127], "portant": 103, "interdict": 103, "recueil": [103, 106, 110, 126], "dix": [103, 106, 109, 112, 120, 126], "interlocuteur": 103, "t\u00e9l\u00e9phone": [103, 106, 126], "recouvr": 103, "visualis": [103, 106, 110], "pr\u00e9parer": [103, 109], "utilisatric": 103, "fuseau": [103, 128], "horair": [103, 109, 128], "verront": 103, "incluront": 103, "sage": [103, 109, 127], "ressemblerait": [103, 106, 130], "visibilit\u00e9": [104, 112, 120], "interrog\u00e9": [104, 116], "lisent": [104, 110, 117, 128], "r\u00e9cup\u00e8rent": 104, "additionnel": [104, 128], "lointain": 104, "travaill\u00e9": [104, 109, 110, 116], "s\u00e9curis": [104, 120], "noeud": [104, 117], "pomper": [104, 106, 126], "verra": [104, 127], "miroit": 104, "gueul": 104, "m\u00e9diateur": [104, 105], "pr\u00e9senter": [104, 112], "configurerait": 104, "\u00e9coutez": 104, "cibler": [104, 128], "nom_de_fil": 104, "acquis": [104, 110], "coutier": 104, "princiap": 104, "forc\u00e9": [104, 106, 128], "s\u00fbre": 104, "s\u00e9curis\u00e9": [104, 106, 120, 125], "cr\u00e9anc": 104, "xs_alice_alic": 104, "reconna\u00eetr": [104, 117, 126], "r\u00e9f\u00e9rera": 104, "restreindr": 104, "abus": 104, "\u00e9crasera": 104, "malform\u00e9": 104, "recalcul\u00e9": [104, 128], "varier": [104, 123], "\u00e9crasez": 104, "privil\u00e8g": [104, 137], "v\u00e9rifiabl": 104, "appartiendront": 104, "particuli\u00e8r": [104, 105, 106, 109, 110, 112, 125], "disent": 104, "pr\u00e9servent": [104, 105], "r\u00e9achemin\u00e9": [104, 105], "\u00e9coulent": [104, 105], "d\u00e9di\u00e9e": [104, 105], "voisin": [104, 105, 112], "servent": [104, 106], "\u00e9merg\u00e9": [105, 112], "m\u00fbri": 105, "plomberi": 105, "cale": [105, 117], "linguistiqu": 105, "pr\u00e9f\u00e8rent": 105, "occupai": 105, "esp\u00e8r": 105, "r\u00e9introduit": 105, "appuiera": 105, "rythm": [105, 109, 126], "aggrav": 105, "abstenir": 105, "occup\u00e9": 105, "lenteur": 105, "absenc": 105, "voie": [105, 108, 126], "invis": [105, 112], "obtiendrait": 105, "\u00e9coul\u00e9": 105, "publicitair": 105, "histoir": [105, 112, 119], "membr": [105, 112], "d\u00e9cenni": [105, 110, 112, 120], "guerr": 105, "couvrent": 105, "p\u00e9rim\u00e9": [105, 126], "collectiv": 105, "cgv": 105, "modernis": 105, "fournitur": 106, "redirig\u00e9": 106, "filtr": [106, 118, 126], "classiqu": 106, "republi": [106, 123], "plant\u00e9": [106, 129], "g\u00e8rent": 106, "interpret\u00e9": 106, "marquer": [106, 116, 123], "\u00e9ligibl": [106, 109, 123], "version2": 106, "version3": 106, "servant": [106, 116, 117], "tuer": [106, 134], "affin\u00e9": 106, "lanc": 106, "arri\u00e8r": [106, 129], "flott": [106, 123], "roulent": 106, "meme": [106, 120], "traduir": 106, "etr": [106, 118], "r\u00e9portoir": 106, "serai": 106, "conjonct": 106, "lancer": [106, 109, 112, 126, 131], "rang\u00e9": 106, "cat\u00e9goris": 106, "manquent": 106, "s\u00e9v\u00e9rit\u00e9": 106, "exp\u00e9rienc\u00e9": 106, "m\u00e9triqu": [106, 109, 126], "communiqu\u00e9": 106, "compteur": [106, 132], "r\u00e9initialis": [106, 128], "cat\u00e9gori": 106, "list\u00e9": 106, "d\u00e9taillant": 106, "ent\u00eat": [106, 128, 134], "pourcentag": 106, "int\u00e9r\u00eat": [106, 109, 112, 116, 124, 126, 128], "d\u00e9livr": 106, "retenir": 106, "mett": 106, "retourn": [106, 116], "fournissez": 106, "int\u00e9r\u00easseant": 106, "outrepass": 106, "devin": 106, "domestiqu": [106, 126], "apparaitr": 106, "apr": 106, "\u00e9conomis": [106, 112, 115, 126, 128], "parcourez": 106, "marchera": [106, 117, 126], "motif": 106, "utiliseron": [106, 112], "joker": [106, 132], "ast\u00e9risqu": [106, 112, 126], "dedan": 106, "implantaion": 106, "renseign": [106, 123], "traitent": [106, 112, 126, 138], "consomm\u00e9": [106, 110, 116, 126, 128], "abandonn": [106, 116, 126, 135], "relient": 106, "r\u00e9pond": [106, 112], "r\u00e9f\u00e9rez": [106, 126], "averti": [106, 109], "r\u00e9sidenc": [106, 126], "d\u00e9crire": [106, 126, 128], "masqu": [106, 126, 131], "wu": 106, "definir": 106, "listent": 106, "refair": 106, "combinaison": [106, 132], "informatiqu": [106, 109, 112], "protocl": 106, "r\u00e9cemment": [106, 109], "verifi\u00e9": 106, "dupliqu\u00e9": 106, "polller": 106, "alternatif": [106, 112, 130], "grammair": [106, 124, 127], "lise": [106, 127], "obliqu": [106, 126, 128], "constitu\u00e9": [106, 127], "concat\u00e9n": [106, 116, 126, 127], "redeviendra": 106, "avenir": [106, 112, 115, 123, 126, 128], "s\u00e9mantiqu": [106, 115], "acquiert": 106, "r\u00e9annonc": 106, "reproduir": 106, "pr\u00e9r\u00e9glage": 106, "prot\u00e9ger": [106, 126], "malveil": [106, 126], "bool\u00e9an": 106, "d\u00e9finira": 106, "convertira": 106, "livrer": [106, 109, 110, 126], "fournirait": 106, "poursuivra": 106, "aurion": 106, "repost\u00e9": 106, "r\u00e9introduison": 106, "ordonn\u00e9": [106, 126], "exigerait": 106, "reconstruirait": 106, "pellet": 106, "connectera": [106, 123], "mentionn": 106, "alphanum\u00e9riqu": [106, 112], "sacn32_cwao_cwao_123456": 106, "r\u00e9enregistr": 106, "compren": 106, "ficher": [106, 118], "cherch": [106, 123], "couper": [106, 124, 133], "\u00e9dition": [106, 137], "r\u00e9utili\u00e9": 106, "group\u00e9": 106, "al\u00e9atoir": [106, 109, 112, 116, 126, 127, 128], "enfant": [106, 116], "d\u00e9crivent": 106, "sp\u00e9cial": [106, 125, 126, 132], "fournisson": 106, "sucr": 106, "syntaxiqu": 106, "conclur": 106, "d\u00e9boggag": 106, "descripteur": [106, 117, 126, 127], "tournant": [106, 110, 126], "purgeant": [106, 126], "soie": 106, "probabilit\u00e9": [106, 116, 117], "limitera": [106, 126], "habitud": [106, 117, 120], "debogag": 106, "identifc": 106, "confidentiel": [106, 125], "justificatif": 106, "jeton": [106, 125], "porteur": 106, "facult": [106, 125], "cherchera": [106, 125], "vieillit": 106, "expir\u00e9": [106, 126], "\u00e9l\u00e9gamment": 106, "essaient": 106, "ralentir": [106, 109, 112], "empir": 106, "recomm": 106, "r\u00e9pondr": [106, 112, 120], "reviendront": 106, "choisit": [106, 117, 126], "perd": [106, 117], "parall\u00e9lis\u00e9": 106, "t\u00e9l\u00e9chargeron": 106, "gardent": [106, 126], "nettoy\u00e9": [106, 126, 127], "acc\u00e9d\u00e9": 106, "meurent": [106, 126], "substitu\u00e9": [106, 126], "indiquez": 106, "mouvement": 106, "dort": 106, "r\u00e9essai": [106, 110, 116], "rev\u00e9rifi": [106, 126], "cloison": 106, "omettez": [106, 126, 127], "r\u00e9partir": [106, 112, 126], "traduira": [106, 126], "cinqui\u00e8m": [106, 126], "xinnow01": 106, "comparera": [106, 123], "remote_config_url_config_url": 106, "pendu": 106, "diff\u00e9renci\u00e9": 106, "cibl\u00e9": [106, 110, 126], "casarrasarramyflow": 106, "sommet": 106, "recherchera": [106, 123], "remote_config_config_url": 106, "essaiera": [106, 123], "chercheront": 106, "regardera": [106, 123], "changera": [106, 126], "d\u00e9courag": [106, 112, 126], "tete": [106, 126], "parenth\u00e8s": [106, 126], "guillemet": [106, 115, 126], "remplaceront": [106, 126], "inalt\u00e9r\u00e9": [106, 126], "fichier_de_type3": [106, 126], "quatri\u00e8m": [106, 126], "nomin": [106, 126], "approuv\u00e9": [106, 126], "blanc": [106, 126], "sixi\u00e8m": [106, 126], "viennent": [106, 126], "heureux": [107, 120], "c\u00e9l\u00e9brer": 107, "l\u00e9g\u00e8re": [107, 116], "centr\u00e9": 107, "communaut\u00e9": [107, 109, 112], "d\u00e9but\u00e9": 108, "faisait": 108, "honneur": 108, "loi": 108, "esp\u00e8c": 108, "p\u00e9ril": 108, "lep": 108, "disparit": 108, "fourrur": 108, "attir": [108, 112], "trouveront": 108, "commenc\u00e9": [108, 109, 110, 112, 128, 136], "initiaux": [108, 110, 112], "tiraient": 108, "commut\u00e9": 108, "soutien": [108, 109, 110], "automn": 108, "heurt\u00e9": 108, "lib\u00e9r\u00e9": 108, "subi": 108, "m\u00e9t\u00e9orologi": 108, "\u00e9loign": 108, "impitoyabl": 108, "novembr": [108, 109, 110], "conduit": [108, 112], "venu": 108, "gard\u00e9": 108, "indig\u00e8n": 108, "r\u00e9gion": [108, 110], "pichet": 108, "aimon": 108, "mangent": 108, "viand": 108, "calendri": [108, 109], "av\u00e9r\u00e9": [108, 109, 110], "prometteur": 108, "surnomm\u00e9": 108, "mar": 108, "printemp": [108, 109, 110], "accueil": [108, 125, 126, 139], "lisibilit\u00e9": [108, 128], "disaient": 108, "souhaitiez": 108, "probl\u00e9matiqu": 109, "concevoir": 109, "sauvegard": [109, 110, 115], "sp\u00e9cificit\u00e9": 109, "pointu": 109, "agr\u00e9g\u00e9": 109, "d\u00fb": [109, 112], "le\u00e7on": 109, "appris": 109, "\u00e9volutif": 109, "savait": 109, "faill": 109, "partenariat": 109, "\u00e9troit": [109, 132], "sophistiqu\u00e9": [109, 112], "rebondiss": 109, "atmosph\u00e8r": 109, "voi": [109, 110, 113, 114], "oc\u00e9an": 109, "terr": 109, "ing\u00e9rant": 109, "mapper": [109, 120], "grill": 109, "pronost": 109, "r\u00e9percut": 109, "r\u00e9alist": 109, "boutiqu": 109, "magasin": [109, 110, 112], "sall": 109, "rechang": 109, "supercalculateur": [109, 110, 117], "rattrap": 109, "contractuel": 109, "r\u00e9trospectiv": 109, "connaissait": 109, "jeu": [109, 127], "impliquerait": 109, "douzain": [109, 110], "fonctionnai": 109, "abouti": 109, "croir": 109, "d\u00e9clencheur": [109, 137], "moniteur": 109, "\u00e9tion": 109, "confront\u00e9": [109, 120], "hiver": 109, "juillet": 109, "strat\u00e9giqu": [109, 112], "progressait": 109, "d\u00e9veloppai": 109, "\u00e9poqu": [109, 120], "concentr\u00e9": 109, "constitu": [109, 112], "aimerai": 109, "\u00e9mission": 109, "fermetur": [109, 137], "organisera": 109, "travaillion": 109, "tactiqu": 109, "d\u00e9charger": [109, 110, 120], "degr\u00e9": [109, 110], "retrouv\u00e9": 109, "tirant": [109, 110], "computationnel": [109, 112, 120], "produirai": 109, "r\u00e9partissait": 109, "entra\u00eenait": 109, "d\u00e9montag": 109, "octobr": 109, "continu\u00e9": 109, "devaient": 109, "chevauch": [109, 112], "demandait": 109, "manquait": 109, "d\u00e9cembr": [109, 110], "ferm\u00e9": [109, 115, 116, 120, 126, 127], "avan\u00e7ait": 109, "pulsat": 109, "voyant": 109, "inactif": [109, 118], "pr\u00e9cipit\u00e9": [109, 110], "primordial": 109, "semblait": 109, "poursuivi": 109, "rapproch": 109, "bogu\u00e9": 109, "ferm": [109, 126], "provoqu": [109, 118, 126], "pos\u00e9": 109, "parcouru": 109, "obtenon": 109, "pr\u00e9cision": 109, "transf\u00e9rait": 109, "prenait": 109, "accumul\u00e9": 109, "apparem": 109, "revenon": 109, "pr\u00e9voyon": 109, "pr\u00e9chargement": 109, "ex\u00e9cuton": 109, "faussaient": 109, "tranch": 109, "n\u00e9gligeabl": [109, 116, 117], "r\u00e9coltant": 109, "d\u00e9favor": 109, "reformul": 109, "reposait": 109, "vari\u00e9": [109, 120], "s\u00e9ri": 109, "canadienn": [109, 112], "sensibilis": 109, "s\u00e9lecteur": 109, "propos\u00e9": [109, 112, 116], "assum\u00e9": [109, 123], "chef": 109, "pirat\u00e9": 109, "b\u00e9n\u00e9fici\u00e9": 109, "it\u00e9r": 110, "inextricabl": 110, "it\u00e9ratif": 110, "c\u0153ur": [110, 112], "mouvant": 110, "embarqu": 110, "g47drwzwckk": 110, "trac\u00e9": 110, "d\u00e9roul\u00e9": 110, "progr\u00e8": [110, 112], "nationaux": [110, 112], "pr\u00e9visionnist": [110, 112], "achev\u00e9": 110, "s\u00e9quenceur": 110, "minutieux": 110, "impr\u00e9vu": 110, "smt": [110, 112], "edan": 110, "suivront": 110, "quotidienn": 110, "europ\u00e9enn": 110, "chantier": 110, "\u00e9crivent": [110, 117, 118, 126, 127], "bureaux": [110, 112], "entent": 110, "bilat\u00e9ral": 110, "conclu": 110, "plaqu": 110, "oriental": 110, "descendant": 110, "acronym": 110, "nourrit": 110, "consid\u00e9rabl": [110, 112], "ouest": 110, "d\u00e9rivent": 110, "r\u00e9gionaux": 110, "national": [110, 112], "concentrateur": 110, "obtiendront": 110, "poursuivai": 110, "superordinateur": 110, "bascul": [110, 112], "miroitag": 110, "exploratoir": 110, "attaqu\u00e9": 110, "acqu\u00e9r": 110, "\u00e9largi": [110, 112], "\u00e9gard": 110, "propri\u00e9t\u00e9": [110, 115, 137], "\u00e9tonnam": 110, "absurd": 110, "sarraenia": 110, "refactoris\u00e9": 110, "uniformit\u00e9": 110, "r\u00e9utilis": [110, 120], "co\u00fbt": [110, 112, 117, 119, 127], "revenu": 110, "v\u00e9cu": 110, "d\u00e9ploient": [110, 120], "cassant": 110, "n\u00e9cessitai": 110, "coh\u00e9renc": 110, "cloisonn": 110, "obscur": 110, "intelligent": 110, "restaur": [110, 126], "r\u00e9duira": [110, 112], "prix": 110, "sem\u00e9": 110, "soulev\u00e9": 110, "r\u00e9examineron": 110, "mat\u00e9riaux": 110, "reportag": 110, "calment": 110, "d\u00e9couvrir": 110, "progressif": 110, "approb": 110, "financ": 110, "venir": 111, "maill\u00e9": [111, 119], "homologu": 111, "apatridi": 111, "programmabilit\u00e9": 111, "comit\u00e9": 112, "proposit": [112, 113, 114], "retenu": 112, "pr\u00e9exist": 112, "rest\u00e9": [112, 126], "bilat\u00e9raux": 112, "pr\u00e9miss": 112, "sio": 112, "favoris": 112, "sugg\u00e8r": [112, 126, 127], "technologiqu": 112, "imposai": 112, "l\u00e2che": 112, "syst\u00e9matiqu": [112, 120], "\u00e9labor": 112, "multilat\u00e9raux": 112, "contourn\u00e9": 112, "adapt\u00e9": 112, "r\u00eave": 112, "normalis\u00e9": 112, "cartographi": [112, 120], "soci\u00e9t\u00e9": 112, "convienn": 112, "parfait": [112, 130], "entendr": 112, "consisterait": 112, "exp\u00e9rimental": 112, "cercl": [112, 132], "pr\u00e9\u00e9tabli": 112, "a\u00e9rien": 112, "t\u00e9l\u00e9phoniqu": 112, "puissanc": [112, 120, 127], "incarn\u00e9": 112, "r\u00e9gional": 112, "absorb\u00e9": 112, "march\u00e9": 112, "ch\u00e8re": [112, 120], "nuag": 112, "multipoint": 112, "existait": 112, "horizontal": 112, "abord\u00e9": 112, "vtm": 112, "cng": 112, "stm": 112, "th\u00e9oriqu": 112, "exclut": 112, "pnt": 112, "bilat\u00e9r": 112, "sie": 112, "formul\u00e9": 112, "rem\u00e9dier": 112, "opacit\u00e9": 112, "introduis": 112, "gi": 112, "publion": 112, "mondiaux": 112, "pr\u00e9occup\u00e9": 112, "persist\u00e9": 112, "convivi": 112, "veuill": 112, "conceptualis\u00e9": 112, "minutieus": [112, 120], "d\u00e9volu": 112, "trie": 112, "\u00e9cole": 112, "pens\u00e9": [112, 113], "tenaient": 112, "relationnel": 112, "atteign": [112, 116], "stock": [112, 130], "index\u00e9": 112, "sif": 112, "comp\u00e9tit": 112, "pointent": 112, "dite": 112, "stockant": 112, "pr\u00e9voient": 112, "cach\u00e9": [112, 126], "inspect\u00e9": [112, 120], "quiconqu": 112, "transf\u00e8r": [112, 115, 120, 126], "structur\u00e9": 112, "carr\u00e9": 112, "aigu": 112, "pouss\u00e9": 112, "connex": 112, "majorit\u00e9": [112, 116, 123], "canadien": [112, 120], "optimisera": 112, "secteur": 112, "b\u00e9n\u00e9ficier": 112, "\u00e9troitement": 112, "atomis\u00e9": 112, "dominant": 112, "financi\u00e8r": 112, "dpcc": 112, "\u00e9quilibr": 112, "collect\u00e9": 112, "unicit\u00e9": 112, "simplifiera": 112, "r\u00e9sultent": 112, "assurerai": 112, "pointeur": [112, 116], "recourir": 112, "hachag": [112, 120, 126], "s\u00e9lectiv": 112, "poul": 112, "exclur": [112, 126], "intervenant": [112, 120], "d\u00e9cident": 112, "maillag": 112, "recevront": 112, "pr\u00e9sentent": 112, "jugent": 112, "\u00e9go\u00efstement": 112, "retransmis": 112, "faciliteront": 112, "supran": 112, "aident": 112, "ins\u00e9rer": [112, 116], "ais": [112, 116], "m\u00e8ne": [112, 126], "arriveront": 112, "contournera": 112, "cesser": 112, "corrompu": [112, 120, 128], "industriel": 112, "comprendrait": 112, "inspir\u00e9": 112, "contribu\u00e9": 112, "manifest": 112, "ind\u00e9pend": [112, 116], "h\u00e9berg\u00e9": 112, "\u00e9volueront": 112, "extrant": 112, "bcp": 112, "baser": 112, "reli\u00e9": [112, 128], "balayag": [112, 117], "pr\u00e9f\u00e9r\u00e9e": 112, "d\u00e9sir": 112, "poign\u00e9": 112, "d\u00e9montr\u00e9": 112, "refus\u00e9": 112, "hautement": 112, "prioritair": 112, "finir": 112, "affam": 112, "tentant": 112, "\u00e9vition": 112, "incluant": 112, "compar\u00e9": [112, 126, 131], "rep\u00e8r": 112, "emport": 112, "troncat": 112, "sugg\u00e9reront": 112, "m\u00e9dia": 112, "garantir": 112, "correspondrai": 112, "imposerion": 112, "troubl\u00e9": 112, "purg\u00e9": 112, "app\u00e9tit": 112, "superpos": 112, "gigaoctet": [112, 127], "seuillag": 112, "rentreront": 112, "d\u00e9pass\u00e9": 112, "croissanc": 112, "suffis": [112, 116], "soup\u00e7onn": 112, "d\u00e9passera": 112, "baiss": 112, "\u00e9viton": 112, "choisisson": [112, 129], "\u00e9conomis\u00e9": 112, "maintient": [112, 120], "quant": 112, "r\u00e9introduir": 112, "\u00e9vitant": [112, 126, 134], "vaudront": 112, "barri\u00e8r": 112, "d\u00e9bat": [113, 114], "d\u00e9compos": [113, 114], "inconditionnel": [113, 128], "analogu": [113, 114, 128], "formant": [113, 114], "mienn": [113, 114], "octeta": 113, "dana": 113, "embas": 114, "d\u00e9crivez": 114, "prouv\u00e9": 115, "couram": [115, 120, 126, 130], "standardis\u00e9": 115, "hexad\u00e9cimal": 115, "marquant": 115, "accolad": 115, "incluait": 115, "conci": 116, "\u00e9l\u00e9mentair": 116, "suffir": 116, "c\u00e9dul\u00e9": 116, "visualisez": 116, "inger": 116, "rassemblez": 116, "publiez": [116, 127], "\u00e9num\u00e9rant": 116, "am\u00e8n": 116, "imprimera": 116, "honor": 116, "imprimez": 116, "g\u00e9n\u00e8rent": [116, 118], "silencieus": 116, "commencerait": 116, "copierait": 116, "construirez": 116, "trouverait": [116, 123], "attendrait": [116, 129], "imprimerait": 116, "populair": 116, "donnant": [116, 134], "dur": 116, "corr\u00e9l": 116, "vieilliss": 116, "interpr\u00e9tera": 116, "fr\u00e9quemment": [116, 126, 127], "ira": 116, "exaepl": 116, "gout": [116, 119], "messaf": 116, "occasionnel": [116, 130], "utlis\u00e9": 116, "retourn\u00e9": 116, "corrompr": 116, "mutuel": 116, "rempliront": 116, "encombrant": 116, "causent": 116, "arr\u00eatera": [116, 126, 137], "r\u00e9initialis\u00e9": 116, "rouvert": 116, "autrefoi": [116, 126], "d\u00e9compress": 116, "d\u00e9compress\u00e9": 116, "arrivera": 116, "seau": 116, "refont": 116, "supercalcul": 116, "correspondra": [116, 126], "pyclam": 116, "n\u00e9cessari": 116, "amusant": 116, "auraient": [116, 134], "compress\u00e9": 116, "remorqu": 116, "antenn": 116, "gardera": 117, "minimisera": 117, "centi\u00e8m": 117, "marchent": 117, "biblio": 117, "thque": 117, "accru": [117, 120], "publieur": 117, "retouer": 117, "vive": 117, "marcher": 117, "sue": 117, "defaut": 117, "pr\u00e9sumer": 117, "convents": 117, "cacher": 117, "compatabilit\u00e9": 117, "tol\u00e9rent": 117, "nodupe_": 117, "fileagemin": 117, "d\u00e9synchr": 117, "oniz\u00e9": 117, "coop\u00e9r": 117, "valabl": 117, "pr\u00e9cedent": 117, "compatbil": 117, "boucler": 117, "amorc\u00e9": 117, "amor\u00e7ag": 117, "sommeil": [117, 127], "dixi\u00e8m": 117, "encouru": 117, "franchiss": 117, "surveill\u00e9": [117, 118, 126, 129, 135], "ampleur": 117, "augmentera": 117, "librairi": 117, "totalit\u00e9": 117, "diff\u00e9renci": 117, "lancement": [117, 127], "faibless": [117, 127], "bloquer": 117, "consid\u00e8r": [117, 127], "irr\u00e9cup\u00e9r": 117, "avort": 117, "injustifi\u00e9": [117, 127], "d\u00e9mesur\u00e9": [117, 127], "oxymor": [117, 127], "pr\u00e9caution": [117, 126, 127], "atomiqu": [117, 127], "gardant": 117, "d\u00e9clenchera": [117, 127], "orag": 118, "caus\u00e9": 118, "envoit": 118, "renvoit": 118, "d\u00e9rangeant": 118, "requiert": 118, "duplicat": [118, 128], "fl\u00e9xibilit\u00e9": 118, "supress": 118, "pr\u00e9f\u00e9rablement": 118, "fie": 118, "mandatoir": 118, "allum": 118, "configura": 118, "nodup_ttl": 118, "souvient": 118, "aven": 118, "integr\u00e9": 118, "acc": 118, "conjoint": 118, "durera": 118, "d\u00e9clenchant": 118, "exemplair": 118, "notificationsfichi": 118, "ag\u00e9": 118, "reexamin": 118, "vos_parametr": 118, "votre_class": 118, "votreclass": 118, "votre_cl\u00e9": 118, "votre_chemin": 118, "d\u00e9rivera": 118, "corr\u00e9spond": [119, 126], "ceuillett": 119, "changeant": 119, "glossair": 119, "\u00e9changeur": 119, "concurrent": 120, "v\u00e9n\u00e9rabl": 120, "ma": 120, "malentendu": 120, "serion": 120, "av\u00e8nement": 120, "datant": 120, "appareil": 120, "coll\u00e9gial": 120, "existai": 120, "trent": 120, "r\u00e9alit\u00e9": 120, "r\u00e9sister": 120, "para\u00eetr": 120, "\u00e9tranger": 120, "mappera": 120, "rappelon": 120, "revendiqu": 120, "adressag": 120, "r\u00e9p\u00e9t\u00e9": 120, "p\u00e9riph\u00e9riqu": 120, "rappelez": 120, "exposit": 120, "doubler": 120, "dispositif": 120, "chiffrement": [120, 126], "rechiffr\u00e9": 120, "d\u00e9crypter": 120, "rechiffr": 120, "d\u00e9chiffrerait": 120, "intercepterait": 120, "oblig\u00e9": 120, "homm": 120, "r\u00e9servent": 120, "r\u00e9servant": 120, "r\u00e9servat": 120, "superfici": 120, "compliqu": 120, "bidirectionnel": 120, "dout": 120, "offert": 120, "pr\u00e9f\u00e8re": 120, "d\u00e9chiffr\u00e9": 120, "baie": 120, "prononc\u00e9": 120, "\u00e9gal\u00e9": 120, "d\u00e9chargement": 120, "vanter": 120, "\u00e9ventail": 120, "d\u00e9cryptag": 120, "uen": 120, "aggrav\u00e9": 120, "forcent": 120, "gagn\u00e9": 120, "inadvert": 120, "prison": 120, "malfaiteur": 120, "emp\u00eachant": 120, "d\u00e9fendr": 120, "distinguera": 120, "impliqu\u00e9": 120, "causant": 120, "ignorez": [120, 126, 128], "fallu": 120, "\u00e9chouait": 120, "confond": 120, "correspondrait": [120, 132], "correspondait": 120, "suspect\u00e9": 120, "sympt\u00f4m": 120, "d\u00e9chiffrement": 120, "casser": 120, "refuseront": 120, "banal": 120, "laissent": 120, "monnai": 120, "allong": 120, "secour": 120, "involontair": 120, "r\u00e9v\u00e9lation": 120, "parcourra": 120, "sond": 121, "verb": 121, "552": 121, "cherchez": 123, "d\u00e9not\u00e9": 123, "compsant": 123, "disbal": 123, "revienn": 123, "coinc\u00e9": 123, "contr\u00f4lent": 123, "convenir": 123, "employ\u00e9": 123, "introuv": 123, "repertoire_config": 123, "recharg": [123, 127, 128], "acceuil": [123, 124, 127], "gourmand": 124, "autod\u00e9crit": 124, "valeur_": 126, "\u00e9x\u00e9cution": [126, 129], "cr\u00e9eront": 126, "atterrira": 126, "monr\u00e9pertoireloc": 126, "lala_": 126, "patron": 126, "123479": 126, "d\u00e9cod\u00e9": 126, "d\u00e9viation": 126, "interpr\u00e9t": [126, 128], "doublag": 126, "cess\u00e9": 126, "ands": 126, "bool\u00e9enn": [126, 130], "d\u00e9cimal": 126, "assortiss": 126, "unionis": 126, "m\u00e9ga": [126, 130], "\u00e9num\u00e9r\u00e9": 126, "m\u00e9lang\u00e9": 126, "tenter": [126, 135], "entrain": 126, "d\u00e9moli": 126, "r\u00e9tabli": [126, 127], "implement\u00e9": 126, "hoteducourti": 126, "fixent": 126, "tentera": 126, "pr\u00e9c\u00e9der": 126, "instanci": [126, 131, 133], "instanciera": 126, "irr\u00e9versibl": 126, "destructeur": 126, "inattendu": 126, "surprendr": 126, "mesradar": 126, "mesgrib": 126, "comparez": 126, "utilisatueur": 126, "red\u00e9clar": 126, "sens\u00e9": 126, "subir": 126, "surcharg\u00e9": 126, "entra\u00eenerait": 126, "vanner": 126, "d\u00e9pendr": 126, "parcimoni": 126, "r\u00e9duction": 126, "attendra": 126, "notifi\u00e9": 126, "inappropri\u00e9": 126, "d\u00e9pendam": 126, "nomdeconfig": 126, "sender_nomdeconfig": 126, "sender_nomdeconfig_": 126, "litt\u00e9ral": [126, 127], "d\u00e9bugger": 126, "d\u00e9buter": 126, "soustract": 126, "silenc": 126, "dormir": 126, "neuf": 126, "modifiera": 126, "grandit": 126, "\u00e9teint": 126, "\u00e9valu": [126, 127], "r\u00e9cursiv": 126, "scann\u00e9": 126, "d\u00e9terminera": 126, "hote": 126, "hachant": 126, "d\u00e9duit": 126, "utilisateurdecourti": 126, "nomduprogramm": 126, "restrictif": 126, "randomis\u00e9": 126, "bibliotech": 126, "comptant": 126, "positif": 126, "n\u00e9gatif": 126, "dispara\u00eetr": 126, "sugg\u00e9rer": [126, 127], "nomutilisateur": 126, "recr\u00e9\u00e9": 126, "refusera": 126, "expos\u00e9": [126, 128], "quitter": [126, 135], "jet\u00e9": 126, "prudent": 126, "fixer": [126, 127], "respect\u00e9": [126, 127], "circonst": [126, 127], "modificateur": 126, "nomutilisateursourceducourti": 126, "manquer": [126, 127], "utilsateurducourti": 126, "repertoire1": 126, "repertoire3": 126, "repertoire5": 126, "repertoire2": 126, "repertoire4": 126, "\u00e9limin\u00e9": [126, 128], "interrompr": 126, "encapsul": 126, "n\u00e9gociat": 126, "s\u00e9curitair": 126, "\u00e9volu": 126, "conformit\u00e9": 126, "rigoureux": 126, "compl\u00e9ment": 126, "ex\u00e9cuterai": 126, "surl": 127, "meteo": 127, "kilooctet": 127, "teraoctet": 127, "filetag": 127, "purement": 127, "repouss": 127, "r\u00e9enregistr\u00e9": 127, "produisez": 127, "\u00e9vitez": [127, 132], "inverv": 127, "variera": [127, 132], "grandiss": 127, "r\u00e9sultera": 127, "inventez": 127, "transmettra": 127, "consist\u00e9": 127, "op\u00e9rateur": 127, "pointant": [127, 132], "menant": 128, "op\u1e83er": 128, "fiera": 128, "sugger\u00e9": 128, "fragilis": 128, "g\u00e9ographiqu": 128, "gojson": 128, "rfc7946": 128, "revu": [128, 137], "justifi\u00e9": 128, "transport\u00e9": 128, "transitiv": 128, "oscil": 128, "sp\u00e9cificateur": 128, "d\u00e9code": 128, "cons\u00e9quent": 128, "d\u00e9finiront": 128, "imprud": 128, "d\u00e9scription": 128, "appell\u00e9": 128, "represent\u00e9": 128, "pr\u00e9senc": 128, "t\u00e9l\u00e9m\u00e9trie": 128, "d\u00e9pannag": 128, "emp\u00each\u00e9": 128, "co\u00efncid": 128, "attendon": 128, "autoritair": 128, "tronqu\u00e9": 128, "indispon": 128, "d\u00e9pouill\u00e9": 128, "\u00e9conomiserai": 128, "reliur": 128, "architect": 128, "interdit": 128, "dangereux": 128, "rracenia": 128, "utiliserai": 129, "2724188": 129, "pourriez": 129, "2724487": 129, "fill_missing_opt": 129, "442": 129, "2724489": 129, "444": 129, "803": [129, 130], "oker": 129, "inline_encod": 129, "inline_max": 129, "inline_onli": 129, "ekeep": 129, "ubborn": 129, "subscribe_hpfx_amis_00": 129, "s_subscrib": 129, "81537164": 129, "67226020": 129, "2067": 129, "20220319": 129, "srcn40_kwal_191718___39822": 129, "276": 129, "srwa20_kwal_191718___44601": 129, "srcn40_kwal_191718___38142": 129, "srmt60_kwal_191718___7676": 129, "srcn40_kwal_191718___30876": 129, "sxcn03_cweg_191700___24546": 129, "srnd30_kwal_191718___32815": 129, "sxcn40_kwal_191718___41131": 129, "srcn40_kwal_191718___22785": 129, "592": 129, "2724517": 129, "disposez": 129, "254": 129, "2724529": 129, "282": 129, "sovx45_kwal_191509___38991": 129, "srcn40_kwal_191509___52945": 129, "sxcn40_kwal_191509___11643": 129, "srcn40_kwal_191509___30237": 129, "738": 129, "sovd83_kwnb_191200_rrx__37893": 129, "898": 129, "stop_sign": 129, "562": 129, "577": 129, "2231352": 129, "r\u00e9parer": 129, "tue": 129, "parasit": 129, "voil\u00e0": 129, "vident": 129, "inform\u00e9": 129, "couvriron": 129, "492": 130, "1919860": 130, "493": 130, "1919863": 130, "1919870": 130, "1919873": 130, "1919874": 130, "670": 130, "33557703": 130, "14415188": 130, "009": 130, "cacn45_cwao_281300__obq_20965": 130, "677": 130, "srcn40_kwal_282035___1729": 130, "796": 130, "314": 130, "srwa20_kwal_282035___43515": 130, "snvd15_kwnb_282000_rro__50372": 130, "sxak50_kwal_282035___51354": 130, "srcn40_kwal_282035___32251": 130, "srcn40_kwal_282035___62598": 130, "951": 130, "kkci": 130, "waus41_kkci_282045___14468": 130, "srcn40_kwal_282035___20765": 130, "waus46_kkci_282045___65023": 130, "waus44_kkci_282045___40622": 130, "srcn40_kwal_282035___41115": 130, "000117": 130, "000081": 130, "mettrait": 130, "trouvon": 130, "usualthi": 130, "encha\u00een\u00e9": 130, "venon": 130, "modulenotfounderror": 130, "vaguement": 130, "programmatiqu": [130, 132, 134], "puissiez": 131, "laisson": 131, "limiton": 131, "traitera": 131, "compil\u00e9": 131, "videz": 131, "aplatir": 131, "861": 131, "940": 131, "984": 131, "073": 131, "074": 131, "103": 131, "1921103": 131, "20230528202430": 131, "dd_ef8614a54e610cd50588f448a9632244": 131, "20230528t202432": 131, "cwrz": 131, "30k1ltk": 131, "91ned6625tbcg": 131, "7665": 131, "1667": 131, "swob_forestri": 131, "20230528202436": 131, "dd_b82b2479d8c115cf0eb4c82bfcc59981": 131, "20230528t202437": 131, "541": 131, "firewx": 131, "ban": 131, "mnrf": 131, "aff": 131, "qgdx": 131, "gsirc8l8hndfeha1w": 131, "5203": 131, "1662": 131, "311": 131, "336": 131, "dd_b96cfe8f3a477e2c4a39af99a97b6429": 131, "ple": 131, "el80iw": 131, "3macqipwjot7leq": 131, "5091": 131, "433": 131, "456": 131, "20230528202442": 131, "dd_0e2c0d07f3648f9956db0a2b1523e6d7": 131, "20230528t202443": 131, "cxhi": 131, "2024": 131, "bgyymvhkuo3jsrdojic7na": 131, "9353": 131, "1657": 131, "534": 131, "dd_1198e5a492e9a42cd6aadbbe92bcb788": 131, "cwbm": 131, "siqujmwcsx5bvfplkza75q": 131, "9354": 131, "654": 131, "783": 131, "156": 131, "000612": 131, "657": 131, "000450": 131, "1661": 131, "679": 131, "680": 131, "introduir": 131, "pla\u00e7on": 132, "rendon": 132, "informon": 132, "fabriqu": 132, "pourron": 132, "_quelquechosedutil": 132, "0x7f602ee7d780": 132, "q_anonymous_fractal_quelquechosedutil": 132, "acc\u00e9don": 132, "reflet": 132, "t\u00e9l\u00e9vision": 132, "promulgu": 132, "d\u00e9cidez": 132, "seron": 132, "coop\u00e9rant": 132, "devront": 132, "reconnaissez": 132, "r\u00e9exp\u00e9diera": 132, "perdrez": 132, "interrompu": 132, "reconnaisson": 132, "20230528190111": 132, "dd_5eebe93b78f7f20d6c58dff7079f17f8": 132, "20230528t190113": 132, "733": 132, "model_hrdp": 132, "006": 132, "cmc_hrdps_north_hgt_isbl_1000_ps2": 132, "5km_2023052812_p006": 132, "dcez6": 132, "fx637myouf83vydq": 132, "236654": 132, "x9cn": 132, "x1c": 132, "x12q1": 132, "dd_abed0a37b3c8b8511cc78b6f8c5c6a82": 132, "20230528t190114": 132, "cmc_hrdps_north_spfh_isbl_0150_ps2": 132, "omqdwv": 132, "qlf9allgou": 132, "tumw": 132, "330883": 132, "x83": 132, "dd_7af6caa9fd11fae11919525225783fad": 132, "823": 132, "cmc_hrdps_north_depr_isbl_0850_ps2": 132, "zsw": 132, "zw6p1xlqayi": 132, "cjolag": 132, "194315": 132, "xf7": 132, "20230528190112": 132, "dd_e02209b0564eb4b19dd746af9eb5ee9c": 132, "cmc_hrdps_north_wdir_tgl_40_ps2": 132, "gppl5qqeon0alfuozqrihw": 132, "529466": 132, "x08": 132, "x14": 132, "20230528190109": 132, "dd_0926936c6c7b2968e12487b5e10b3bc9": 132, "20230528t190111": 132, "364": 132, "cvku": 132, "1900": 132, "weesvb9": 132, "bkqc1pv9hgo3la": 132, "6426": 132, "combinez": 132, "parlant": 132, "r\u00e9cup\u00e9rez": 132, "cwzu": 132, "shearwat": 132, "jetti": 132, "wzu": 132, "628055": 132, "5225": 132, "cyvr": 132, "19470": 132, "18400": 132, "cahk": 132, "halifax": 132, "kootenai": 132, "ahk": 132, "5875": 132, "cpcn": 132, "cappon": 132, "pcn": 132, "066947": 132, "796689": 132, "cwmt": 132, "1901": 132, "whati": 132, "wmt": 132, "1343": 132, "244497": 132, "cwpo": 132, "mound": 132, "wpo": 132, "187933": 132, "9064": 132, "cvoc": 132, "1858": 132, "whistler": 132, "nester": 132, "voc": 132, "1289": 132, "9546": 132, "cxcp": 132, "champion": 132, "agdm": 132, "xcp": 132, "281945": 132, "113": 132, "350278": 132, "cyzg": 132, "salluit": 132, "17940": 132, "66720": 132, "cnz": 132, "coral": 132, "harbour": 132, "nz": 132, "187831": 132, "347054": 132, "illustr\u00e9": 132, "477": 133, "pivot": 133, "529": 133, "20220204t205638": 133, "499809504": 133, "20220204t205635": 133, "203999996": 133, "20220204t195639": 133, "0199999809": 133, "inventair": 134, "fonctionalit\u00e9": 134, "fonctionallit\u00e9": 134, "gestionnair": 134, "pacquet": 134, "amwp": 134, "d\u00e9tectera": 134, "plaindra": 134, "courier": 134, "optio": 134, "pr\u00e9fixez": 134, "jouer": 134, "iront": 134, "errant": 134, "mourir": 134, "oubliez": 134, "r\u00e9troport\u00e9": 134, "plaindr": 135, "omettr": 135, "\u00e9crira": 135, "soyez": 135, "d\u00e9faillant": 135, "perdr": 135, "effac": 135, "onglet": 136, "tomb\u00e9": 136, "ruissel": 136, "recoit": 136, "enseign": 137, "\u00e9cran": 137, "h\u00e9sitez": 137, "croyez": 137, "enrichi": 137, "fen\u00eatr": 137, "taper": 137, "tapez": 137, "s\u00e9lectionnez": 137, "panneau": 137, "lancera": 137, "remplissez": 137, "consol": 138, "pr\u00e9requi": 138, "personnalisez": 138, "d\u00e9mareur": 138, "microsecond": [139, 140], "electron": 140}, "objects": {"": [[56, 0, 0, "-", "sarracenia"]], "sarracenia": [[56, 1, 1, "", "Message"], [56, 1, 1, "", "Sarracenia"], [56, 1, 1, "", "TimeConversions"], [56, 0, 0, "-", "config"], [56, 0, 0, "-", "credentials"], [56, 0, 0, "-", "diskqueue"], [56, 4, 1, "", "durationToSeconds"], [56, 0, 0, "-", "filemetadata"], [56, 0, 0, "-", "flow"], [57, 0, 0, "-", "flowcb"], [56, 0, 0, "-", "identity"], [56, 0, 0, "-", "instance"], [56, 0, 0, "-", "moth"], [56, 0, 0, "-", "rabbitmq_admin"], [56, 4, 1, "", "stat"], [56, 4, 1, "", "timeflt2str"], [56, 0, 0, "-", "transfer"]], "sarracenia.Message": [[56, 2, 1, "", "__computeIdentity"], [56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "copyDict"], [56, 2, 1, "", "dumps"], [56, 2, 1, "", "fromFileData"], [56, 2, 1, "", "fromFileInfo"], [56, 2, 1, "", "fromStream"], [56, 2, 1, "", "getContent"], [56, 2, 1, "", "setReport"], [56, 2, 1, "", "updatePaths"], [56, 2, 1, "", "validate"]], "sarracenia.Sarracenia": [[56, 3, 1, "", "__weakref__"]], "sarracenia.TimeConversions": [[56, 3, 1, "", "__weakref__"]], "sarracenia.config": [[56, 1, 1, "", "Config"], [56, 4, 1, "", "config_path"], [56, 4, 1, "", "get_log_filename"], [56, 4, 1, "", "get_pid_filename"], [56, 4, 1, "", "get_user_cache_dir"], [56, 5, 1, "", "logger"], [56, 4, 1, "", "no_file_config"], [56, 4, 1, "", "one_config"], [56, 5, 1, "", "str_options"]], "sarracenia.config.Config": [[56, 2, 1, "", "__deepcopy__"], [56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "_build_mask"], [56, 2, 1, "", "_parse_binding"], [56, 2, 1, "", "_parse_setting"], [56, 2, 1, "", "_parse_v2plugin"], [56, 2, 1, "", "_resolve_exchange"], [56, 2, 1, "", "_sundew_basename_parts"], [56, 2, 1, "", "_validate_urlstr"], [56, 2, 1, "", "_varsub"], [56, 1, 1, "", "addBinding"], [56, 2, 1, "", "add_option"], [56, 2, 1, "", "applyComponentDefaults"], [56, 2, 1, "", "dictify"], [56, 2, 1, "", "dump"], [56, 2, 1, "", "finalize"], [56, 2, 1, "", "mask_ppstr"], [56, 2, 1, "", "merge"], [56, 2, 1, "", "override"], [56, 2, 1, "", "parse_args"], [56, 2, 1, "", "parse_file"], [56, 2, 1, "", "sundew_dirPattern"], [56, 2, 1, "", "variableExpansion"]], "sarracenia.config.Config.addBinding": [[56, 2, 1, "", "__call__"]], "sarracenia.credentials": [[56, 1, 1, "", "Credential"], [56, 1, 1, "", "CredentialDB"]], "sarracenia.credentials.Credential": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "__str__"], [56, 3, 1, "", "__weakref__"], [56, 3, 1, "", "bearer_token"], [56, 3, 1, "", "binary"], [56, 3, 1, "", "login_method"], [56, 3, 1, "", "passive"], [56, 3, 1, "", "prot_p"], [56, 3, 1, "", "ssh_keyfile"], [56, 3, 1, "", "tls"], [56, 3, 1, "", "url"]], "sarracenia.credentials.CredentialDB": [[56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "_parse"], [56, 2, 1, "", "_resolve"], [56, 2, 1, "", "add"], [56, 3, 1, "", "credentials"], [56, 2, 1, "", "get"], [56, 2, 1, "", "has"], [56, 2, 1, "", "isTrue"], [56, 2, 1, "", "isValid"], [56, 2, 1, "", "read"]], "sarracenia.diskqueue": [[56, 1, 1, "", "DiskQueue"]], "sarracenia.diskqueue.DiskQueue": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "__len__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "_count_msgs"], [56, 2, 1, "", "cleanup"], [56, 2, 1, "", "close"], [56, 2, 1, "", "get"], [56, 2, 1, "", "in_cache"], [56, 2, 1, "", "is_expired"], [56, 2, 1, "", "msg_get_from_file"], [56, 2, 1, "", "needs_requeuing"], [56, 2, 1, "", "on_housekeeping"], [56, 2, 1, "", "put"]], "sarracenia.filemetadata": [[56, 1, 1, "", "FileMetadata"]], "sarracenia.filemetadata.FileMetadata": [[56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "get"], [56, 2, 1, "", "list"], [56, 2, 1, "", "persist"], [56, 2, 1, "", "set"]], "sarracenia.flow": [[56, 1, 1, "", "Flow"], [56, 0, 0, "-", "poll"], [56, 0, 0, "-", "post"], [56, 0, 0, "-", "report"], [56, 0, 0, "-", "sarra"], [56, 0, 0, "-", "sender"], [56, 0, 0, "-", "shovel"], [56, 0, 0, "-", "subscribe"], [56, 0, 0, "-", "watch"], [56, 0, 0, "-", "winnow"]], "sarracenia.flow.Flow": [[56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "_runCallbackMetrics"], [56, 2, 1, "", "do"], [56, 2, 1, "", "do_download"], [56, 2, 1, "", "do_send"], [56, 2, 1, "", "download"], [56, 2, 1, "", "file_should_be_downloaded"], [56, 2, 1, "", "link1file"], [56, 2, 1, "", "mkdir"], [56, 2, 1, "", "reject"], [56, 2, 1, "", "removeOneFile"], [56, 2, 1, "", "renameOneItem"], [56, 2, 1, "", "run"], [56, 2, 1, "", "set_local_file_attributes"], [56, 2, 1, "", "sundew_getDestInfos"], [56, 2, 1, "", "updateFieldsAccepted"], [56, 2, 1, "", "write_inline_file"]], "sarracenia.flow.poll": [[56, 1, 1, "", "Poll"]], "sarracenia.flow.poll.Poll": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "do"]], "sarracenia.flow.post": [[56, 1, 1, "", "Post"]], "sarracenia.flow.post.Post": [[56, 2, 1, "", "__init__"]], "sarracenia.flow.report": [[56, 1, 1, "", "Report"]], "sarracenia.flow.report.Report": [[56, 2, 1, "", "__init__"]], "sarracenia.flow.sarra": [[56, 1, 1, "", "Sarra"]], "sarracenia.flow.sarra.Sarra": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "do"]], "sarracenia.flow.sender": [[56, 1, 1, "", "Sender"]], "sarracenia.flow.sender.Sender": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "do"]], "sarracenia.flow.shovel": [[56, 1, 1, "", "Shovel"]], "sarracenia.flow.shovel.Shovel": [[56, 2, 1, "", "__init__"]], "sarracenia.flow.subscribe": [[56, 1, 1, "", "Subscribe"]], "sarracenia.flow.subscribe.Subscribe": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "do"]], "sarracenia.flow.watch": [[56, 1, 1, "", "Watch"]], "sarracenia.flow.watch.Watch": [[56, 2, 1, "", "__init__"]], "sarracenia.flow.winnow": [[56, 1, 1, "", "Winnow"]], "sarracenia.flow.winnow.Winnow": [[56, 2, 1, "", "__init__"]], "sarracenia.flowcb": [[57, 1, 1, "", "FlowCB"], [57, 0, 0, "-", "accept"], [57, 0, 0, "-", "clamav"], [57, 0, 0, "-", "download"], [57, 0, 0, "-", "filter"], [57, 0, 0, "-", "gather"], [57, 0, 0, "-", "housekeeping"], [57, 4, 1, "", "load_library"], [57, 0, 0, "-", "log"], [57, 0, 0, "-", "mdelaylatest"], [57, 0, 0, "-", "nodupe"], [57, 0, 0, "-", "pclean"], [57, 0, 0, "-", "poll"], [57, 0, 0, "-", "post"], [57, 0, 0, "-", "retry"], [57, 0, 0, "-", "sample"], [57, 0, 0, "-", "scheduled"], [57, 0, 0, "-", "send"], [57, 0, 0, "-", "shiftdir2baseurl"], [57, 0, 0, "-", "v2wrapper"], [57, 0, 0, "-", "work"]], "sarracenia.flowcb.FlowCB": [[57, 2, 1, "", "__init__"], [57, 3, 1, "", "__weakref__"], [57, 2, 1, "", "please_stop"]], "sarracenia.flowcb.accept": [[57, 0, 0, "-", "delete"], [57, 0, 0, "-", "downloadbaseurl"], [57, 0, 0, "-", "hourtree"], [57, 0, 0, "-", "httptohttps"], [57, 0, 0, "-", "longflow"], [57, 0, 0, "-", "posthourtree"], [57, 0, 0, "-", "postoverride"], [57, 0, 0, "-", "printlag"], [57, 0, 0, "-", "rename4jicc"], [57, 0, 0, "-", "renamedmf"], [57, 0, 0, "-", "renamewhatfn"], [57, 0, 0, "-", "save"], [57, 0, 0, "-", "speedo"], [57, 0, 0, "-", "sundewpxroute"], [57, 0, 0, "-", "testretry"], [57, 0, 0, "-", "toclusters"], [57, 0, 0, "-", "tohttp"], [57, 0, 0, "-", "tolocal"], [57, 0, 0, "-", "tolocalfile"], [57, 0, 0, "-", "wmotypesuffix"]], "sarracenia.flowcb.accept.delete": [[57, 1, 1, "", "Delete"]], "sarracenia.flowcb.accept.downloadbaseurl": [[57, 1, 1, "", "DownloadBaseUrl"]], "sarracenia.flowcb.accept.hourtree": [[57, 1, 1, "", "HourTree"]], "sarracenia.flowcb.accept.httptohttps": [[57, 1, 1, "", "HttpToHttps"]], "sarracenia.flowcb.accept.longflow": [[57, 1, 1, "", "LongFlow"]], "sarracenia.flowcb.accept.posthourtree": [[57, 1, 1, "", "Posthourtree"]], "sarracenia.flowcb.accept.postoverride": [[57, 1, 1, "", "PostOverride"]], "sarracenia.flowcb.accept.postoverride.PostOverride": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.printlag": [[57, 1, 1, "", "PrintLag"]], "sarracenia.flowcb.accept.rename4jicc": [[57, 1, 1, "", "Rename4Jicc"]], "sarracenia.flowcb.accept.renamedmf": [[57, 1, 1, "", "RenameDMF"]], "sarracenia.flowcb.accept.renamewhatfn": [[57, 1, 1, "", "RenameWhatFn"]], "sarracenia.flowcb.accept.save": [[57, 1, 1, "", "Save"]], "sarracenia.flowcb.accept.save.Save": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.speedo": [[57, 1, 1, "", "Speedo"]], "sarracenia.flowcb.accept.speedo.Speedo": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.sundewpxroute": [[57, 1, 1, "", "SundewPxRoute"]], "sarracenia.flowcb.accept.sundewpxroute.SundewPxRoute": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.testretry": [[57, 1, 1, "", "TestRetry"]], "sarracenia.flowcb.accept.testretry.TestRetry": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.toclusters": [[57, 1, 1, "", "ToClusters"]], "sarracenia.flowcb.accept.toclusters.ToClusters": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.tohttp": [[57, 1, 1, "", "ToHttp"]], "sarracenia.flowcb.accept.tohttp.ToHttp": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.tolocal": [[57, 1, 1, "", "ToLocal"]], "sarracenia.flowcb.accept.tolocal.ToLocal": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.accept.tolocalfile": [[57, 1, 1, "", "ToLocalFile"]], "sarracenia.flowcb.accept.wmotypesuffix": [[57, 1, 1, "", "WmoTypeSuffix"]], "sarracenia.flowcb.clamav": [[57, 1, 1, "", "Clamav"]], "sarracenia.flowcb.clamav.Clamav": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.destfn": [[57, 0, 0, "-", "sample"]], "sarracenia.flowcb.destfn.sample": [[57, 1, 1, "", "Sample"]], "sarracenia.flowcb.filter": [[57, 0, 0, "-", "deleteflowfiles"], [57, 0, 0, "-", "fdelay"], [57, 0, 0, "-", "pclean_f90"], [57, 0, 0, "-", "pclean_f92"], [57, 0, 0, "-", "wmo2msc"]], "sarracenia.flowcb.filter.deleteflowfiles": [[57, 1, 1, "", "DeleteFlowFiles"]], "sarracenia.flowcb.filter.fdelay": [[57, 1, 1, "", "Fdelay"]], "sarracenia.flowcb.filter.fdelay.Fdelay": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.filter.pclean_f90": [[57, 1, 1, "", "PClean_F90"]], "sarracenia.flowcb.filter.pclean_f92": [[57, 1, 1, "", "PClean_F92"]], "sarracenia.flowcb.filter.wmo2msc": [[57, 1, 1, "", "Wmo2msc"]], "sarracenia.flowcb.filter.wmo2msc.Wmo2msc": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "doSpecificProcessing"], [57, 2, 1, "", "replaceChar"]], "sarracenia.flowcb.gather": [[57, 0, 0, "-", "file"], [57, 5, 1, "", "logger"], [57, 0, 0, "-", "message"]], "sarracenia.flowcb.gather.file": [[57, 1, 1, "", "File"], [57, 1, 1, "", "SimpleEventHandler"], [57, 4, 1, "", "path_inflight_tooNew"]], "sarracenia.flowcb.gather.file.File": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "gather"], [57, 2, 1, "", "post1file"], [57, 2, 1, "", "process_event"], [57, 2, 1, "", "walk"], [57, 2, 1, "", "walk_priming"]], "sarracenia.flowcb.gather.file.SimpleEventHandler": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.gather.message": [[57, 1, 1, "", "Message"]], "sarracenia.flowcb.gather.message.Message": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "gather"]], "sarracenia.flowcb.housekeeping": [[57, 0, 0, "-", "resources"]], "sarracenia.flowcb.housekeeping.resources": [[57, 1, 1, "", "Resources"]], "sarracenia.flowcb.housekeeping.resources.Resources": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "restart"], [57, 3, 1, "", "threshold"]], "sarracenia.flowcb.log": [[57, 1, 1, "", "Log"]], "sarracenia.flowcb.log.Log": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.mdelaylatest": [[57, 1, 1, "", "MDelayLatest"]], "sarracenia.flowcb.mdelaylatest.MDelayLatest": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.nodupe": [[57, 1, 1, "", "NoDupe"], [57, 0, 0, "-", "data"], [57, 0, 0, "-", "name"]], "sarracenia.flowcb.nodupe.data": [[57, 1, 1, "", "Data"]], "sarracenia.flowcb.nodupe.name": [[57, 1, 1, "", "Name"]], "sarracenia.flowcb.pclean": [[57, 1, 1, "", "PClean"]], "sarracenia.flowcb.pclean.PClean": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "build_path_dict"], [57, 2, 1, "", "get_extension"]], "sarracenia.flowcb.poll": [[57, 1, 1, "", "Poll"], [57, 0, 0, "-", "airnow"], [57, 0, 0, "-", "mail"], [57, 0, 0, "-", "nasa_mls_nrt"], [57, 0, 0, "-", "noaa_hydrometric"], [57, 0, 0, "-", "usgs"]], "sarracenia.flowcb.poll.Poll": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "handle_data"], [57, 2, 1, "", "on_html_page"], [57, 2, 1, "", "on_line"]], "sarracenia.flowcb.poll.airnow": [[57, 1, 1, "", "Airnow"]], "sarracenia.flowcb.poll.mail": [[57, 1, 1, "", "Mail"]], "sarracenia.flowcb.poll.mail.Mail": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.poll.nasa_mls_nrt": [[57, 1, 1, "", "Nasa_mls_nrt"]], "sarracenia.flowcb.poll.nasa_mls_nrt.Nasa_mls_nrt": [[57, 2, 1, "", "handle_data"]], "sarracenia.flowcb.poll.noaa_hydrometric": [[57, 1, 1, "", "Noaa_hydrometric"]], "sarracenia.flowcb.poll.noaa_hydrometric.Noaa_hydrometric": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.poll.usgs": [[57, 1, 1, "", "Usgs"]], "sarracenia.flowcb.poll.usgs.Usgs": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.post": [[57, 0, 0, "-", "message"]], "sarracenia.flowcb.post.message": [[57, 1, 1, "", "Message"]], "sarracenia.flowcb.post.message.Message": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.retry": [[57, 1, 1, "", "Retry"]], "sarracenia.flowcb.retry.Retry": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "after_accept"], [57, 2, 1, "", "after_post"], [57, 2, 1, "", "after_work"], [57, 2, 1, "", "metricsReport"]], "sarracenia.flowcb.sample": [[57, 1, 1, "", "Sample"]], "sarracenia.flowcb.sample.Sample": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.scheduled": [[57, 1, 1, "", "Scheduled"]], "sarracenia.flowcb.scheduled.Scheduled": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "wait_seconds"]], "sarracenia.flowcb.send": [[57, 0, 0, "-", "email"]], "sarracenia.flowcb.send.email": [[57, 1, 1, "", "Email"]], "sarracenia.flowcb.send.email.Email": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.shiftdir2baseurl": [[57, 1, 1, "", "ShiftDir2baseUrl"]], "sarracenia.flowcb.shiftdir2baseurl.ShiftDir2baseUrl": [[57, 2, 1, "", "__init__"]], "sarracenia.flowcb.v2wrapper": [[57, 1, 1, "", "V2Wrapper"], [57, 4, 1, "", "sumstrFromMessage"]], "sarracenia.flowcb.v2wrapper.V2Wrapper": [[57, 2, 1, "", "__init__"], [57, 2, 1, "", "on_time"], [57, 2, 1, "", "run_entry"]], "sarracenia.flowcb.work": [[57, 0, 0, "-", "age"], [57, 0, 0, "-", "rxpipe"]], "sarracenia.flowcb.work.age": [[57, 1, 1, "", "Age"]], "sarracenia.flowcb.work.rxpipe": [[57, 1, 1, "", "Rxpipe"]], "sarracenia.flowcb.work.rxpipe.Rxpipe": [[57, 2, 1, "", "__init__"]], "sarracenia.identity": [[56, 1, 1, "", "Identity"], [56, 0, 0, "-", "arbitrary"], [56, 0, 0, "-", "md5"], [56, 0, 0, "-", "random"], [56, 0, 0, "-", "sha512"]], "sarracenia.identity.Identity": [[56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "update_file"], [56, 6, 1, "", "value"]], "sarracenia.identity.arbitrary": [[56, 1, 1, "", "Arbitrary"]], "sarracenia.identity.arbitrary.Arbitrary": [[56, 2, 1, "", "__init__"], [56, 6, 1, "", "value"]], "sarracenia.identity.md5": [[56, 1, 1, "", "Md5"]], "sarracenia.identity.md5.Md5": [[56, 2, 1, "", "registered_as"]], "sarracenia.identity.random": [[56, 1, 1, "", "Random"]], "sarracenia.identity.random.Random": [[56, 6, 1, "", "value"]], "sarracenia.identity.sha512": [[56, 1, 1, "", "Sha512"]], "sarracenia.instance": [[56, 1, 1, "", "RedirectedTimedRotatingFileHandler"], [56, 1, 1, "", "instance"]], "sarracenia.instance.RedirectedTimedRotatingFileHandler": [[56, 2, 1, "", "doRollover"]], "sarracenia.instance.instance": [[56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "start"]], "sarracenia.moth": [[56, 1, 1, "", "Moth"], [56, 0, 0, "-", "amq1"], [56, 0, 0, "-", "amqp"], [56, 0, 0, "-", "pika"]], "sarracenia.moth.Moth": [[56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "ack"], [56, 2, 1, "", "cleanup"], [56, 6, 1, "", "default_options"], [56, 2, 1, "", "getNewMessage"], [56, 2, 1, "", "metricsDisconnect"], [56, 2, 1, "", "newMessages"], [56, 2, 1, "", "putNewMessage"]], "sarracenia.moth.amq1": [[56, 1, 1, "", "AMQ1"]], "sarracenia.moth.amq1.AMQ1": [[56, 2, 1, "", "__init__"]], "sarracenia.moth.amqp": [[56, 1, 1, "", "AMQP"], [56, 5, 1, "", "logger"]], "sarracenia.moth.amqp.AMQP": [[56, 2, 1, "", "__connect"], [56, 2, 1, "", "__init__"], [56, 2, 1, "", "ack"], [56, 2, 1, "", "getNewMessage"], [56, 2, 1, "", "getSetup"], [56, 2, 1, "", "newMessages"], [56, 2, 1, "", "putNewMessage"]], "sarracenia.moth.pika": [[56, 1, 1, "", "PIKA"]], "sarracenia.moth.pika.PIKA": [[56, 2, 1, "", "__init__"]], "sarracenia.rabbitmq_admin": [[56, 4, 1, "", "add_user"], [56, 4, 1, "", "broker_get_exchanges"], [56, 4, 1, "", "del_user"], [56, 4, 1, "", "exec_rabbitmqadmin"], [56, 4, 1, "", "get_exchanges"], [56, 4, 1, "", "get_queues"], [56, 4, 1, "", "get_users"], [56, 4, 1, "", "run_rabbitmqadmin"], [56, 4, 1, "", "user_access"]], "sarracenia.transfer": [[56, 7, 1, "", "TimeoutException"], [56, 1, 1, "", "Transfer"], [56, 4, 1, "", "alarm_set"], [56, 0, 0, "-", "file"], [56, 0, 0, "-", "ftp"], [56, 0, 0, "-", "https"], [56, 0, 0, "-", "sftp"]], "sarracenia.transfer.TimeoutException": [[56, 3, 1, "", "__weakref__"]], "sarracenia.transfer.Transfer": [[56, 2, 1, "", "__init__"], [56, 3, 1, "", "__weakref__"], [56, 2, 1, "", "on_data"]], "sarracenia.transfer.file": [[56, 1, 1, "", "File"]], "sarracenia.transfer.file.File": [[56, 2, 1, "", "__init__"], [56, 2, 1, "", "cd"]], "sarracenia.transfer.ftp": [[56, 1, 1, "", "Ftp"]], "sarracenia.transfer.ftp.Ftp": [[56, 2, 1, "", "__init__"]], "sarracenia.transfer.https": [[56, 1, 1, "", "Https"]], "sarracenia.transfer.https.Https": [[56, 2, 1, "", "__init__"]], "sarracenia.transfer.sftp": [[56, 1, 1, "", "Sftp"]], "sarracenia.transfer.sftp.Sftp": [[56, 2, 1, "", "__init__"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:data", "6": "py:property", "7": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"], "6": ["py", "property", "Python property"], "7": ["py", "exception", "Python exception"]}, "titleterms": {"amqp": [0, 2, 20, 21, 26, 31, 38, 45, 46, 56, 62, 64, 78, 79, 89, 90, 103, 105, 106, 112, 116, 126, 128], "primer": 0, "sarracenia": [0, 3, 7, 8, 11, 13, 21, 27, 29, 38, 39, 41, 42, 47, 53, 54, 56, 57, 59, 64, 68, 70, 73, 76, 77, 83, 86, 87, 89, 92, 96, 103, 108, 110, 116, 123, 128, 132, 134, 137], "content": [0, 2, 13, 15, 29, 30, 31, 39, 40, 41, 42, 43, 47, 55, 56, 57, 58, 74, 85, 89, 90, 110, 112, 122, 138, 139, 140], "featur": [0, 2, 19], "select": [0, 2, 14, 54], "analogi": [0, 89], "ftp": [0, 37, 44, 56, 89, 101, 120], "1": [0, 2, 9, 11, 20, 21, 46, 62, 78, 89, 90, 103, 106, 126], "0": [0, 20, 22, 50, 62, 84, 89, 104, 106, 126], "8": [0, 2, 89, 90], "9": [0, 2, 89, 90], "name": [0, 20, 24, 57, 62, 63, 106, 118, 126, 127], "exchang": [0, 2, 20, 31, 44, 62, 63, 106, 126, 127], "queue": [0, 2, 20, 45, 54, 62, 106, 126], "topic": [0, 62, 64, 126, 128], "base": [0, 70, 93, 112], "littl": 0, "data": [0, 2, 24, 29, 31, 45, 49, 53, 54, 57, 62, 68, 90, 118], "other": [0, 48, 64, 66, 130], "paramet": 0, "map": [0, 19, 21, 26, 55, 64, 105], "concept": [0, 21, 89, 90, 100, 103], "i": [0, 7, 14, 28, 31, 44, 45, 46, 66], "an": [0, 3, 31], "mqp": [0, 89], "applic": [0, 2, 29, 89, 90, 110], "review": 0, "appendix": 0, "A": [0, 3, 68, 71, 84, 89, 118], "background": 0, "why": [0, 4, 37, 38, 44, 91], "us": [0, 11, 21, 27, 31, 37, 38, 45, 46, 47, 48, 49, 54, 65, 68], "where": [0, 3], "doe": [0, 28], "come": [0, 29], "from": [0, 14, 34, 38, 45, 46, 54, 69, 73], "intel": [0, 89], "crai": [0, 89], "hpc": [0, 24, 28, 29, 89, 109, 110], "stack": [0, 31, 112], "openstack": [0, 89], "how": [0, 14, 21, 66, 72], "adopt": [0, 89], "basic": 1, "idea": [1, 38], "strawman": [2, 90], "design": [2, 5, 9, 11, 12, 13, 22, 31], "assumpt": [2, 9], "constraint": 2, "2": [2, 20, 21, 46, 78, 90, 103, 106], "number": [2, 7, 20, 44, 106], "switch": [2, 22], "3": [2, 19, 45, 50, 62, 79, 84, 90, 99, 126, 140], "4": [2, 90], "5": [2, 20, 21, 62, 90, 103, 106, 126], "rout": [2, 9, 11, 12, 22, 45], "post": [2, 20, 26, 55, 56, 57, 62, 69, 88, 90, 92, 105, 106, 126], "log": [2, 12, 20, 32, 38, 48, 51, 54, 57, 59, 66, 87, 123], "6": [2, 90], "secur": [2, 22, 44], "model": 2, "user": [2, 21, 45, 53, 62, 73, 126], "pre": [2, 12, 45], "valid": [2, 22, 90, 104], "privat": 2, "v": [2, 17, 55, 88, 90, 98], "public": [2, 90, 106, 133], "transfer": [2, 20, 26, 38, 44, 56, 105, 106, 116], "http": [2, 53, 56, 86, 90], "access": [2, 22, 38, 54], "7": [2, 90], "topologi": [2, 90], "standalon": [2, 22], "ddsr": [2, 90], "configur": [2, 16, 20, 25, 31, 54, 55, 59, 60, 61, 62, 79, 82, 87, 88, 90, 92, 97, 102, 106, 112, 123, 124, 125, 126, 130, 135], "independ": 2, "share": [2, 8, 17, 90], "broker": [2, 3, 20, 22, 45, 62, 63, 90, 92, 106, 126, 127], "dd": [2, 45, 46, 78, 79, 90], "dissemin": [2, 20], "aka": [2, 90], "mart": [2, 90], "sep": [2, 90], "end": [2, 90], "point": [2, 19, 38, 48, 55, 82, 88, 90, 99, 116], "metpx": [3, 20, 51, 53, 54, 70, 76, 80, 86, 87, 92, 106, 134], "develop": [3, 76], "": [3, 6, 7, 22, 79, 104, 139], "guid": [3, 4, 20, 38, 40, 50, 54, 84, 87, 91, 92, 106, 116], "tool": 3, "you": [3, 70], "need": [3, 7, 38], "document": [3, 4, 77, 91, 92], "put": 3, "option": [3, 20, 38, 55, 59, 62, 63, 64, 88, 92, 106, 116, 123, 126, 127], "v2": [3, 20, 47, 49, 50, 55, 84, 88, 92, 106], "workflow": 3, "v3": [3, 17, 38, 55, 88, 92, 98, 116], "sr_insect": [3, 92], "local": [3, 4, 71, 92, 136], "instal": [3, 45, 46, 50, 70, 78, 79, 84, 92, 134], "prepar": 3, "vanilla": [3, 92], "vm": 3, "python": [3, 12, 38, 68, 69, 92, 116, 132, 133], "wheel": [3, 92], "pip": [3, 70, 92, 134], "debian": [3, 70, 92, 134], "ubuntu": [3, 70, 92, 134], "commit": [3, 92], "code": [3, 4, 19, 55, 56, 69, 91, 92, 99, 133], "test": [3, 18, 41, 92, 94], "descript": [3, 16, 33, 39, 41, 42, 59, 60, 62, 63, 64, 92, 97, 114, 123, 124, 126, 127, 128], "unit": [3, 92], "static": [3, 92], "flow": [3, 20, 21, 29, 38, 48, 56, 66, 67, 92, 106, 116], "flakei": [3, 92], "dynam": [3, 92], "run": [3, 51, 73], "server": [3, 11, 14, 22, 31, 46, 54, 71, 78], "workstat": 3, "setup": [3, 20, 42, 45, 72, 106], "environ": [3, 16, 20, 60, 63, 97, 106], "cleanup": [3, 45, 72, 92], "length": 3, "high": [3, 7, 54], "volum": [3, 92], "sampl": [3, 38, 48, 57, 66, 116], "limit": [3, 31, 92], "stuck": 3, "mqtt": [3, 17, 21, 26, 38, 56, 64, 92, 98, 103, 105, 116, 128], "main": [3, 76], "branch": [3, 92], "repositori": 3, "build": [3, 92], "releas": [3, 92], "version": [3, 19, 21, 64, 92, 99, 103, 128], "scheme": 3, "set": [3, 20, 21, 38, 48, 62, 63, 103, 116], "pypi": [3, 92], "launchpad": [3, 92], "autom": 3, "window": [3, 70, 73, 92, 134, 137], "daili": 3, "manual": [3, 45, 73], "process": [3, 4, 20, 21, 23, 42, 54, 55, 63, 66, 70, 103], "backport": 3, "depend": [3, 92], "rpm": [3, 70, 92, 134], "github": [3, 92], "convent": [3, 92, 106], "when": 3, "report": [3, 20, 26, 45, 53, 56, 62, 64, 105, 106, 126, 128], "ad": [3, 45, 92], "new": [3, 7, 66, 92], "standard": [4, 24, 31, 48, 64, 112, 118, 128], "folder": [4, 11], "structur": [4, 91], "tutori": [4, 74], "how2guid": [4, 91], "explan": [4, 43], "refer": [4, 31, 37, 56, 57, 58, 76], "contribut": [4, 15, 28, 91, 109], "style": [4, 31, 91], "rst": [4, 91], "chang": [5, 19, 24, 29, 34, 45, 55, 66], "sinc": 5, "origin": [5, 100], "2015": [5, 29, 100, 110], "It": 6, "about": [6, 14], "time": [6, 62, 63, 127], "let": 6, "comput": 6, "do": [6, 14, 70], "amdahl": [7, 8], "law": 7, "appli": [7, 8], "speedup": 7, "what": [7, 12, 14, 45, 55], "larg": [7, 31, 44, 53, 54, 86], "processor": 7, "parallel": [7, 19, 99], "serial": 7, "exampl": [7, 8, 20, 48, 49, 55, 59, 64, 66, 67, 68, 130], "flash": 7, "9x": 7, "faster": 7, "than": [7, 44], "summari": [7, 19, 28, 31, 44], "relev": 7, "so": 7, "Not": [7, 19, 31, 37], "app": 7, "ye": 7, "exactli": 7, "thank": [7, 8], "cap": 8, "theorem": 8, "definit": 8, "proof": 8, "storag": 8, "state": [8, 19], "choos": 8, "ca": [8, 81, 83, 108, 109, 118], "quorum": 8, "vote": 8, "ap": 8, "failur": 8, "mode": [8, 64, 81, 128], "cp": 8, "bring": 8, "togeth": 8, "almost": 8, "coher": 8, "file": [8, 11, 14, 18, 20, 23, 24, 28, 31, 38, 48, 53, 54, 55, 56, 57, 61, 62, 63, 66, 87, 89, 90, 106, 117], "system": [8, 22, 70], "db": 8, "perform": [8, 45, 54, 79, 87], "univers": 8, "write": [8, 12, 48, 66], "scale": 8, "non": [8, 48], "approach": 8, "object": 8, "store": [8, 31, 112], "cloud": 8, "solv": [8, 19], "thi": [8, 31], "fly": 8, "format": [8, 32, 33, 61, 62, 64, 113, 114, 125, 126, 128], "pd": [9, 46, 78], "algorithm": [9, 11, 12, 18, 21, 38, 94, 103], "receiv": [9, 54], "dispatch": [9, 12, 46], "sender": [9, 20, 41, 42, 56, 106], "decis": 9, "product": [9, 44, 46], "observ": [9, 11], "problem": [11, 19, 28, 31], "weak": 11, "sundew": [11, 12, 20, 26, 39, 40, 41, 42, 45, 62, 79, 105, 106, 126], "directori": [11, 31, 62, 126], "add": 11, "rabbitmq": [11, 21, 45, 46, 78, 79, 103], "The": [11, 21, 27, 38, 116], "cost": [11, 12, 44], "overal": 11, "ceil": 11, "duplic": [11, 24, 54], "suppress": [11, 24, 54, 87, 118], "global": 11, "distribut": [11, 134], "elimin": 12, "lock": 12, "dictionari": [12, 19], "differ": [12, 55], "did": 12, "make": 12, "bonu": 12, "philosophi": 13, "discuss": [14, 95], "modif": [14, 82, 95, 99, 110, 115], "propag": [14, 95], "If": 14, "each": [14, 21], "notif": [14, 26, 38, 45, 46, 64, 78, 79, 95, 105, 116], "block": [14, 64, 128], "sr": [14, 95], "suffix": [14, 95], "chunksiz": [14, 95], "we": 14, "blockwis": 14, "cksum": [14, 95], "path": [14, 20, 24, 62, 63, 64, 106, 126, 127], "v00": [14, 95], "digress": [14, 95], "zsync": [14, 95], "protocol": [14, 33, 47, 49, 64, 81, 83, 95, 114, 128], "consider": [14, 22, 39, 53], "sr3_titl": 16, "sr_titl": 16, "synopsi": [16, 59, 60, 62, 63, 64, 97, 123, 124, 126, 127, 128], "variabl": [16, 20, 60, 62, 63, 97, 106, 124, 126, 127], "see": [16, 41, 59, 60, 61, 62, 63, 64, 126], "also": [16, 41, 59, 60, 61, 62, 63, 64, 126], "implement": [17, 37, 47], "note": [17, 23, 98, 117], "v5": [17, 98], "subscript": 17, "back": [17, 26, 105], "pressur": [17, 26, 105], "re": 18, "assembl": 18, "compon": [18, 20, 21, 59], "refactor": 19, "goal": 19, "opportun": 19, "v02": [19, 33, 34, 99, 114, 115], "plugin": [19, 20, 38, 48, 49, 54, 55, 66, 81, 82, 87, 88, 99, 106, 116, 130], "pain": 19, "done": 19, "address": 19, "ship": 19, "theseu": 19, "member": 19, "properti": 19, "known": 19, "sr3": [19, 20, 35, 50, 55, 59, 61, 62, 65, 84, 88, 99, 106, 107, 123, 125, 126, 129], "concret": [19, 99], "plan": [19, 99, 104], "worri": 19, "accel": [19, 99], "overhaul": 19, "donetodo": 19, "bug": [19, 99], "concern": [19, 95], "issu": 19, "after": [19, 66], "pariti": 19, "true": [19, 62, 126], "improv": 19, "todo": [19, 99], "bake": 19, "think": 19, "fixm": [19, 99], "defer": 19, "transit": [19, 82, 99], "replac": [19, 20, 106], "conclus": [19, 65, 67, 68, 99, 129, 131, 132], "incompat": 19, "command": [20, 55, 65, 73, 88, 106, 137], "line": [20, 55, 65], "everyth": 20, "action": [20, 59, 106, 123], "declar": [20, 62, 106, 126], "dump": [20, 106], "foreground": [20, 106], "show": [20, 106], "convert": [20, 106], "start": [20, 73, 106], "stop": [20, 106], "statu": [20, 29, 64, 106, 128], "messag": [20, 26, 31, 32, 33, 38, 46, 53, 57, 64, 68, 78, 86, 105, 106, 112, 113, 114, 116, 128, 132], "gather": [20, 55, 57, 88], "creat": [20, 34, 66], "queue_nam": [20, 62, 106, 126, 132], "qn": [20, 62, 106, 126], "bind": [20, 68, 106], "subtop": [20, 62, 63, 68, 106, 126, 127], "pattern": [20, 62, 106], "default": [20, 45, 62, 64, 106, 126, 128], "client": [20, 22, 41, 70, 104, 106, 134], "side": [20, 54, 106], "filter": [20, 39, 41, 57, 106], "brief": [20, 106], "introduct": [20, 38, 46, 51, 54, 78, 80, 87, 89, 106, 116], "regular": [20, 106], "express": [20, 106], "accept": [20, 57, 62, 106, 126], "reject": [20, 62, 106, 126], "accept_unmatch": [20, 106], "poll": [20, 38, 47, 49, 53, 55, 56, 57, 81, 83, 88, 106, 116], "advanc": [20, 38, 45, 106], "cpump": [20, 106], "repeat": 20, "scan": [20, 54, 106], "vip": [20, 21, 62, 103, 106, 126], "watch": [20, 56, 106], "partit": 20, "sarra": [20, 45, 56, 79, 106], "specif": 20, "consum": 20, "requir": [20, 45], "pump": [20, 21, 26, 45, 53, 54, 105], "TO": [20, 39], "replic": [20, 140], "destin": [20, 106], "like": 20, "shovel": [20, 56, 106], "subscrib": [20, 26, 45, 54, 56, 71, 72, 105, 106, 140], "winnow": [20, 22, 56, 106], "flowcallback": [20, 48, 57, 82, 106], "callback": [20, 38, 55, 62, 66, 88, 106, 116, 126], "import": [20, 87, 106], "extens": [20, 38, 81, 106, 116], "deprec": 20, "monitor": 20, "credenti": [20, 38, 56, 61, 106, 125], "detail": [20, 61, 106, 125], "period": [20, 70], "sanity_log_dead": [20, 62, 106, 126], "interv": [20, 62, 63, 106, 126, 127], "housekeep": [20, 45, 54, 57, 62, 87, 106, 126], "nodup_ttl": [20, 106], "off": [20, 62, 63, 106, 126, 127], "999": [20, 62, 63, 106, 126, 127], "error": [20, 25], "recoveri": 20, "multipl": [20, 21, 54, 103, 106], "stream": [20, 106], "report_exchang": [20, 62, 106, 126], "instanc": [20, 21, 54, 56, 62, 87, 103, 106, 126], "activ": [20, 62, 106, 126], "passiv": [20, 62, 106, 126], "blocksiz": [20, 62, 63, 106, 126, 127], "valu": [20, 49, 62, 63, 64, 106, 127], "auto": [20, 62, 106, 126], "pbd": [20, 106], "post_basedir": [20, 62, 63, 106, 126, 127], "post_baseurl": [20, 62, 63, 106, 126, 127], "url": [20, 62, 63, 106, 126, 127], "mandatori": [20, 63], "post_exchang": [20, 62, 63, 106, 126, 127], "xpublic": [20, 62, 106, 126], "post_exchangesplit": [20, 62, 106, 126], "remot": [20, 59, 72, 106], "flowcallbackprepend": [20, 106], "class": [20, 38, 48, 66, 82, 106, 116, 130], "ident": [20, 56, 62, 63, 64, 106, 126, 127, 128], "role": [20, 21, 106], "feeder": [20, 106], "admin": [20, 71, 106], "sourc": [20, 26, 45, 53, 70, 79, 86, 105, 106, 134], "compat": [20, 62, 126], "destfn_script": [20, 62, 106, 126], "script": [20, 57, 62, 106, 126], "none": [20, 62, 106, 126], "filenam": [20, 62, 106, 126], "keyword": [20, 62], "whatfn": [20, 62, 106, 126], "field": [20, 38, 48, 64, 106], "gener": 21, "tabl": [21, 23, 25, 55, 88, 140], "all": [21, 38], "singleton": [21, 103], "v09": [21, 103], "through": 21, "deploy": [22, 27], "transport": [22, 104], "engin": [22, 104], "ipv6": [22, 104], "dataless": [22, 26, 104, 105], "With": [22, 31], "sr_poll": [22, 41, 45, 79, 104], "input": 22, "privileg": 22, "glossari": [22, 26], "detect": [23, 28, 117], "strategi": [23, 117], "shim": [23, 28, 63, 109, 117, 127], "librari": [23, 28, 63, 117], "usag": [23, 63, 117, 118], "renam": [23, 27, 48, 62, 63, 64, 66, 126, 127, 128], "orient": 24, "urp": [24, 46, 78, 118], "That": [24, 31, 66], "too": [24, 28, 54], "often": [24, 31, 44], "mdelaylatest": [24, 57, 118], "weatheroffic": 24, "citypag": [24, 118], "mirror": [24, 28, 29, 62, 110, 126], "ar": [24, 31, 45], "old": 24, "roll": 24, "your": [24, 66], "own": [24, 66], "deliveri": [25, 54], "complet": 25, "inflight": [25, 62, 102, 126], "frequent": 25, "latenc": [26, 105], "network": [26, 53, 105], "notic": [26, 31, 105], "advertis": 26, "announc": [26, 35, 46, 53, 86], "wmo": [26, 105], "histori": [27, 30], "context": [27, 89, 108], "dd_subscrib": [27, 108], "fewer": 27, "kloc": [27, 108], "better": [27, 31, 38], "case": [27, 28, 47, 49], "project": 27, "websit": 27, "updat": 27, "sf": [27, 108], "net": [27, 108], "studi": 28, "continu": [28, 109], "27": [28, 109], "million": [28, 109], "tree": [28, 31, 53, 86], "veri": [28, 53, 86], "quickli": [28, 53, 86], "statement": 28, "hpcr": [28, 109], "solut": [28, 31, 109, 112], "overview": [28, 37, 45], "read": 28, "take": 28, "long": [28, 31], "method": [28, 63, 127], "inotifi": [28, 109], "polici": [28, 109], "copi": [28, 109], "necessari": 28, "work": [28, 38, 54, 55, 57], "fast": 28, "overhead": 28, "januari": 29, "2018": [29, 110], "comparison": [29, 110], "video": [29, 110], "central": [29, 110], "weather": 29, "goe": [29, 110], "r": [29, 110], "acquisit": [29, 110], "feed": [29, 31], "radar": [29, 46, 78, 110], "2017": [29, 110], "mesh": 31, "wi": [31, 112], "gt": [31, 112], "2019": [31, 112], "execut": 31, "wa": 31, "ago": 31, "inflex": [31, 112], "databas": 31, "optim": [31, 54, 64], "fix": [31, 64, 112, 128], "size": [31, 62, 64, 126, 128], "record": [31, 38, 53, 54, 70], "No": [31, 37], "One": 31, "them": 31, "wai": 31, "internet": [31, 112], "push": [31, 112], "poor": 31, "fit": 31, "And": [31, 112], "forward": [31, 112], "practic": 31, "agre": 31, "simpl": [31, 112], "scalabl": 31, "peer": 31, "nation": [31, 112], "open": 31, "matur": 31, "stateless": 31, "crawlabl": [31, 112], "programm": [31, 92, 116], "interoper": 31, "prioriti": [31, 54], "inlin": [31, 62, 126], "caveat": 31, "everi": 31, "v01": [32, 113], "cfg": [32, 67, 113, 131], "made": 34, "v03": [34, 62, 64, 115, 126], "longer": 37, "just": 37, "rsync": [37, 101], "link": [37, 64, 128], "program": 38, "revis": [38, 53, 54, 70], "audienc": [38, 116], "worklist": [38, 48, 66, 82, 116], "hierarch": 38, "view": 38, "control": 38, "loglevel": [38, 62, 116, 126], "debug": [38, 54, 62, 116, 126], "moth": [38, 54, 56, 68, 77, 87, 116, 132], "logev": [38, 62, 116, 126], "logmessagedump": [38, 116], "logreject": [38, 62, 116, 126], "messagedebugdump": [38, 116], "extend": [38, 47, 49, 83], "simplest": [38, 116], "flow_callback": [38, 48, 82, 116], "destfnscript": [38, 55, 88], "modul": 38, "custom": [38, 66], "recept": [38, 46, 54], "api": [38, 49, 54, 67, 68, 77, 81, 87, 116, 131, 132], "should": 38, "whenev": 38, "possibl": [38, 64, 116], "without": [38, 55, 73], "download": [38, 47, 48, 55, 57, 62, 65, 66, 67, 68, 88, 126, 131], "migrat": [39, 40, 41, 42], "pxatx": [39, 41, 42], "ONE": 39, "WITH": 39, "final": 39, "remark": 39, "ON": 39, "mani": 39, "pull": 41, "methodologi": 41, "config": [41, 48, 56, 62, 66, 77, 126], "sr_sarra": 41, "relat": 41, "convers": 42, "sftp": [44, 53, 56, 86, 120], "more": [44, 54], "chosen": 44, "support": [44, 45, 49, 79], "function": 44, "byte": 44, "rang": 44, "vulner": 44, "reliabl": [44, 53], "complex": [44, 55, 88], "administ": [45, 46], "requisit": 45, "minimum": 45, "oper": 45, "sr_audit": [45, 79], "excess": 45, "go": 45, "On": [45, 53, 62, 86, 126], "init": [45, 79], "integr": [45, 49], "webui": [45, 79], "tl": [45, 79], "manag": 45, "first": [45, 68], "anoth": [45, 64], "ensur": 45, "thing": 45, "up": 45, "startup": [45, 70, 72], "sr_winnow": [45, 79], "sr_sender": [45, 79], "cluster": [45, 46, 79], "keepaliv": [45, 79], "ldap": [45, 46, 78, 79], "x": [45, 79], "hook": 45, "adddendum": [46, 78], "ddi": [46, 78], "beta": [46, 78], "util": 46, "bunni": [46, 78], "op": [46, 49, 78, 81], "readi": 46, "dd_dispatch": [46, 78], "py": [46, 54, 78, 87], "wget": [46, 78], "verif": 46, "troubleshoot": 46, "email": [47, 57], "ingest": [47, 83], "pop": [47, 83], "imap": [47, 83], "decod": 47, "entri": [48, 55, 66], "initi": 48, "new_": 48, "flowcb": [48, 54, 55, 57, 66, 77, 82, 87, 88, 130], "sub": [48, 66], "web": [48, 49, 54, 81, 87, 108], "site": [48, 108, 118], "list": [48, 116, 130], "modifi": [48, 79], "flight": 48, "subclass": [48, 55], "grab": 49, "hydrometr": 49, "nativ": 49, "noaa": [49, 81], "co": [49, 81], "shc": [49, 81], "soap": [49, 81], "servic": [49, 81], "usg": [49, 57, 81], "instantan": 49, "upgrad": [50, 55], "instruct": [50, 84], "git": [50, 84], "41": 50, "40": [50, 84], "37": 50, "26": [50, 84], "25": [50, 84], "23": 50, "22": [50, 84], "17": [50, 84], "15": [50, 84], "14": [50, 84], "via": [51, 80], "docker": [51, 80], "howto": 52, "inject": [53, 86], "extern": [53, 86], "checksum": 53, "header": [53, 62, 63, 64, 126, 127], "effici": 53, "linux": [53, 86], "resourc": [54, 57], "alloc": 54, "refin": 54, "loss": 54, "outag": 54, "slow": 54, "per": 54, "file_rxpip": [54, 87], "anti": 54, "viru": 54, "tune": 54, "metric": 54, "redund": 54, "proxi": [54, 87], "level": 54, "inform": [54, 87], "port": 55, "placement": [55, 88], "Will": 55, "won": 55, "t": [55, 79, 95], "between": 55, "on_messag": [55, 88], "on_post": [55, 88], "after_accept": [55, 62, 88, 126], "on_fil": [55, 88], "after_work": [55, 62, 88, 126], "on_heartbeat": [55, 88], "on_housekeep": [55, 62, 88, 126], "do_pol": [55, 88], "virtual": 55, "ip": [55, 88], "on_html_pag": [55, 88], "on_lin": [55, 88], "do_send": [55, 88], "send": [55, 57, 88], "do_download": [55, 88], "onli": 55, "nodup": [55, 57, 88], "retri": [55, 57, 88], "equival": [55, 88], "diskqueu": 56, "filemetadata": 56, "arbitrari": 56, "sha512": 56, "md5": 56, "random": [56, 62, 126], "pika": 56, "amq1": 56, "rabbitmq_admin": 56, "delet": [57, 62, 126], "downloadbaseurl": 57, "hourtre": 57, "httptohttp": 57, "longflow": 57, "posthourtre": 57, "postoverrid": 57, "printlag": 57, "rename4jicc": 57, "renamedmf": 57, "renamewhatfn": 57, "save": 57, "speedo": 57, "sundewpxrout": 57, "testretri": 57, "toclust": 57, "tohttp": 57, "toloc": 57, "tolocalfil": 57, "wmotypesuffix": 57, "clamav": 57, "destfn": 57, "deleteflowfil": 57, "fdelai": 57, "pclean_f90": 57, "pclean_f92": 57, "wmo2msc": 57, "pclean": 57, "schedul": [57, 73], "shiftdir2baseurl": 57, "airnow": 57, "mail": [57, 83], "nasa_mls_nrt": 57, "nexrad": 57, "noaa_hydrometr": 57, "wistre": 57, "ag": 57, "rxpipe": 57, "v2wrapper": 57, "cli": [59, 123], "sr_cpump": [60, 124], "sr_shovel": [60, 124], "c": [60, 124], "substituion": 62, "sr_dev_appnam": [62, 126], "type": [62, 106, 112, 126], "accelthreshold": 62, "disabl": 62, "accelxxxcommand": [62, 126], "acceptunmatch": [62, 126], "acceptsizewrong": [62, 126], "boolean": 62, "fals": [62, 126], "attempt": [62, 126], "count": [62, 126], "basedir": [62, 126], "baseurl_relpath": [62, 126], "flag": [62, 126], "batch": [62, 67, 126, 131], "100": [62, 126], "byteratemax": [62, 126], "classspec": 62, "callback_prepend": [62, 126], "dangerwillrobinson": [62, 126], "omit": 62, "discard": [62, 126], "dry_run": [62, 126], "durabl": [62, 126], "fileev": [62, 126], "event": 62, "exchangesuffix": [62, 126], "exchangedeclar": [62, 126], "expir": [62, 126], "durat": [62, 126], "5m": [62, 126], "five": 62, "minut": [62, 126], "recommend": [62, 70, 126], "overrid": 62, "flatten": [62, 126], "string": [62, 126], "flowmain": [62, 126], "follow_symlink": [62, 126], "force_pol": [62, 126], "300": [62, 126], "second": [62, 126], "includ": [62, 126], "tmp": [62, 126], "post_brok": [62, 63, 126, 127], "inlinebytemax": [62, 126], "inlineonli": [62, 126], "inplac": [62, 126], "info": [62, 126], "logmetr": [62, 126], "logstdout": [62, 126], "logrotatecount": [62, 126], "max_log": [62, 126], "logrotateinterv": [62, 126], "time_unit": 62, "1d": [62, 126], "messagecountmax": [62, 67, 126, 131], "messageratemax": [62, 126], "float": [62, 126], "messageratemin": [62, 126], "message_ttl": [62, 126], "nodupe_basi": [62, 126], "nodupe_fileagemax": [62, 126], "nodupe_fileagemin": [62, 126], "nodupe_ttl": [62, 63, 126, 127], "smhdw": [62, 126], "outlet": [62, 126], "json": [62, 64, 126, 128], "overwrit": [62, 126], "permdefault": [62, 126], "permdirdefault": [62, 126], "permlog": [62, 126], "permcopi": [62, 126], "pollurl": [62, 126], "post_format": [62, 126], "post_on_start": [62, 126], "post_top": [62, 126], "post_topicprefix": [62, 126], "topicprefix": [62, 63, 126, 127], "prefetch": [62, 126], "n": [62, 126], "queuenam": [62, 68, 126], "queuebind": [62, 126], "queuedeclar": [62, 126], "realpathadjust": [62, 126], "experiment": [62, 63, 126, 127], "realpathfilt": [62, 126], "realpathpost": [62, 126], "sendto": [62, 126], "reset": [62, 63, 126, 127], "retryemptybeforeexit": [62, 126], "retry_ttl": [62, 126], "same": 62, "shim_defer_posting_to_exit": [62, 63, 126, 127], "shim_post_minterv": [62, 63, 126, 127], "shim_skip_parent_open_fil": [62, 63, 126, 127], "sleep": [62, 63, 126, 127], "statehost": [62, 126], "strip": [62, 126], "regexp": [62, 126], "sourcefromexchang": [62, 126], "timecopi": [62, 126], "timeout": [62, 126], "tlsrigour": [62, 126], "medium": [62, 126], "v2compatrenamedoublepost": [62, 126], "vartimeoffset": [62, 126], "sr3_post": [63, 127], "publish": 63, "avail": 63, "argument": [63, 127], "AND": 63, "path1": [63, 127], "path2": [63, 127], "pathn": [63, 127], "h": [63, 127], "help": [63, 127], "kei": [63, 127], "tip": 63, "sr_post": [64, 128], "stabl": [64, 128], "dir": [64, 128], "bodi": [64, 128], "encod": [64, 128], "THE": 64, "from_clust": [64, 128], "cluster_nam": 64, "fileop": [64, 128], "symbol": 64, "relpath": [64, 128], "report_cod": [64, 128], "atim": [64, 128], "mtime": [64, 128], "prerequisit": 65, "handl": 66, "starter": 67, "mask": [67, 131], "pid_filenam": [67, 131], "ack": [68, 132], "alreadi": 70, "have": 70, "apt": [70, 134], "dpkg": [70, 134], "redhat": [70, 134], "suse": [70, 134], "distro": 70, "shutdown": 70, "cron": [70, 134], "job": 70, "packag": 70, "sarrac": [70, 134], "prompt": 73, "menu": [73, 137], "powershel": [73, 137], "session": [73, 137], "anaconda": [73, 137], "task": 73, "wiki": 76, "administr": [78, 79], "de": [78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 116, 117, 118, 120, 121, 126, 127, 128, 130, 131, 132, 134, 137], "d": [78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 92, 97, 99, 106, 108, 109, 110, 112, 116, 118, 120, 126, 127, 128, 130, 131, 137], "un": [78, 79, 86, 87, 89, 92, 95, 112, 120, 127, 128, 130, 132, 135, 136, 137], "utilis": [78, 81, 82, 83, 87, 89, 101, 103, 108, 112, 116, 127, 129, 132], "l": [78, 79, 86, 87, 89, 92, 99, 100, 103, 109, 116, 132, 134, 137], "sur": [78, 79, 92, 95, 112, 118, 134], "pour": [78, 81, 82, 99, 103, 112, 115], "utilitair": 78, "install\u00e9": 78, "le": [78, 79, 88, 92, 99, 103, 112, 116, 118, 126, 128, 130, 137], "serveur": [78, 87, 92, 95, 104, 112, 136], "avec": [78, 83, 92, 103, 104, 112, 116, 130, 132, 137], "annonc": [78, 105, 107, 128], "\u00e0": [78, 79, 86, 87, 88, 89, 92, 95, 96, 99, 103, 106, 108, 110, 112, 115, 116, 126, 133, 137], "qu": 78, "produit": [78, 120], "est": [78, 89, 109, 112, 120, 126, 130], "pr\u00eat": 78, "et": [78, 82, 86, 87, 89, 90, 101, 103, 106, 112, 118, 125, 126, 127, 130, 134, 139], "r\u00e9ception": [78, 87, 116], "r\u00e9partit": 78, "v\u00e9rific": 78, "d\u00e9pannag": 78, "pomp": [79, 86, 87, 103, 104, 105, 106], "donn\u00e9": [79, 81, 86, 87, 89, 90, 105, 112, 132], "aper\u00e7u": [79, 101], "pr\u00e9": [79, 90], "requi": 79, "exig": [79, 106], "minimal": 79, "op\u00e9rat": 79, "entretien": 79, "m\u00e9nager": 79, "exc\u00e8": 79, "fil": [79, 106], "attent": [79, 87, 89, 90, 106], "routag": [79, 90, 104], "que": [79, 95, 109, 120], "se": [79, 95], "pass": [79, 95], "il": [79, 95, 112], "int\u00e9grat": [79, 81], "valeur": [79, 81, 126, 128], "par": [79, 83, 87, 95, 103, 115], "d\u00e9faut": [79, 106, 126], "gestion": [79, 130], "utilisateur": [79, 86, 90, 103, 137], "aid": 79, "premier": [79, 132], "abonn": [79, 98, 139], "autr": [79, 82, 89, 128], "rapport": [79, 86, 105, 115, 128], "nettoyag": [79, 135], "assur": [79, 102], "chose": 79, "sont": [79, 112], "en": [79, 81, 82, 83, 86, 98, 109, 110, 112, 120, 124, 128, 129, 135], "place": [79, 135], "d\u00e9marrag": [79, 134, 135], "ajout": [79, 116], "manuel": [79, 92, 137], "avanc\u00e9": [79, 106, 116], "courtier": [79, 90, 104], "n\u00e9cessit": 79, "crochet": 79, "ex\u00e9cut": [80, 92, 130, 137], "journalis": [80, 82, 87, 116], "r\u00e9cup\u00e9rer": 81, "hydrom\u00e9triqu": 81, "pri": 81, "charg": [81, 120], "natif": 81, "exempl": [81, 82, 88, 106, 123, 128, 130, 131, 132], "dan": [81, 86, 88, 99, 112, 116, 137], "instantan\u00e9": 81, "\u00e9critur": 82, "entr\u00e9": [82, 88, 104, 130], "fichier": [82, 86, 87, 88, 94, 95, 106, 109, 112, 116, 117, 118, 125, 126, 127, 130], "initialis": 82, "param\u00e8tr": [82, 89, 103, 116], "sou": [82, 88, 130, 132], "flot": [82, 110], "modifi\u00e9": 82, "e": 83, "mise": [83, 84, 88, 98, 108, 109, 112, 135], "\u0153uvr": [83, 98], "t\u00e9l\u00e9chargement": [83, 116, 129, 130], "d\u00e9codag": 83, "du": [83, 87, 90, 92, 99, 108, 109, 113, 114, 116, 118, 125, 128, 133, 134, 136, 137], "contenu": [83, 96, 111, 112, 118, 119], "niveau": [84, 87, 88], "comment": [85, 89, 91, 95, 135], "fair": [85, 91], "r\u00e9seau": [86, 105], "enregistr": [86, 87, 112, 134], "r\u00e9vision": [86, 87, 89, 99, 134], "interrog": 86, "volumineux": 86, "fiabilit\u00e9": [86, 120], "somm": 86, "contr\u00f4l": [86, 92, 116], "t\u00eate": [86, 128], "consid\u00e9r": [86, 95, 104], "rel": [86, 95, 104], "efficacit\u00e9": 86, "abonn\u00e9": [87, 105, 127, 135, 136], "partir": [87, 95, 116, 133, 137], "ressourc": 87, "c\u00f4t\u00e9": 87, "allou\u00e9": 87, "aux": [87, 88, 116, 127], "plusieur": 87, "livraison": [87, 102], "hautement": 87, "prioritair": 87, "affin": 87, "la": [87, 88, 90, 92, 95, 99, 102, 106, 109, 112, 115, 116, 127, 129, 130], "s\u00e9lection": [87, 89, 90], "pert": 87, "pann": 87, "trop": [87, 109, 118], "longu": 87, "optimis": [87, 128], "processu": [87, 91, 92, 117], "doublon": [87, 118], "haut": 87, "analys": 87, "antiviru": 87, "d\u00e9bogag": 87, "r\u00e9glage": [87, 106], "m\u00e9triqu": 87, "redond": 87, "acc\u00e8": [87, 90, 104, 116], "au": [87, 95, 104], "plu": [87, 120], "portag": 88, "ver": [88, 92, 128], "diff\u00e9renc": [88, 115], "lign": [88, 106, 112], "ce": [88, 109, 112], "qui": [88, 130], "fonctionnera": 88, "san": [88, 105, 116, 137], "changement": [88, 100], "ne": [88, 101, 112], "pa": [88, 89, 95, 99, 101, 112], "codag": 88, "entr": 88, "mappag": [88, 89, 99, 128], "traitement": [88, 91, 106, 127, 134], "virtuel": [88, 92], "classement": 88, "seulement": 88, "sarrac\u00e9nia": 89, "fonctionnalit\u00e9": [89, 90, 99, 120], "mai": 89, "\u00e9chang": [89, 90, 112], "nomm\u00e9": 89, "th\u00e9matiqu": 89, "peu": 89, "annex": 89, "pourquoi": [89, 101, 116, 120], "o\u00f9": [89, 92], "vient": 89, "pile": [89, 112], "hypoth\u00e8s": 90, "contraint": 90, "nombr": [90, 120], "commutateur": [90, 104], "journaux": [90, 113], "mod\u00e8l": [90, 126], "s\u00e9curit\u00e9": [90, 104, 120], "journal": [90, 106], "transfert": [90, 105, 120], "priv\u00e9": 90, "autonom": [90, 104], "commut": 90, "ind\u00e9pend": 90, "partag\u00e9": [90, 98], "diffus": [90, 106], "norm": 91, "dossier": 91, "tutoriel": [91, 138], "explic": [91, 119], "r\u00e9f\u00e9renc": [91, 101, 112, 122], "localis": 91, "d\u00e9veloppeur": 92, "outillag": 92, "d\u00e9velopp": 92, "flux": [92, 103, 112, 116, 131], "travail": [92, 116, 130], "pr\u00e9parer": 92, "machin": 92, "environn": 92, "longueur": 92, "\u00e9chantillon": 92, "\u00e9lev\u00e9": 92, "coinc\u00e9": 92, "principal": 92, "r\u00e9f\u00e9rentiel": 92, "cr\u00e9ation": 92, "sch\u00e9ma": 92, "d\u00e9finir": 92, "automatis\u00e9": 92, "18": 92, "04": 92, "quotidienn": 92, "r\u00e9troportag": 92, "d\u00e9pendanc": [92, 116], "quand": 92, "signal": 92, "id\u00e9": [93, 116], "r\u00e9assemblag": 94, "compos": [94, 103, 106, 123], "si": [95, 126], "chaqu": [95, 103], "bloc": 95, "s\u00e9lectionn": 95, "nou": 95, "faison": 95, "chemin": [95, 118, 126], "contribu": 96, "sr3_titr": 97, "sr_titr": 97, "voir": [97, 123, 124, 125, 127, 128], "aussi": [97, 123, 124, 125, 127, 128], "contr": [98, 105], "pression": [98, 105], "refactoris": 99, "r\u00e9sum\u00e9": [99, 109, 112, 120], "objectif": 99, "opportunit\u00e9": 99, "\u00e9tat": 99, "douloureux": 99, "apport\u00e9": [99, 115], "r\u00e9soudr": 99, "probl\u00e8m": [99, 109, 112], "navir": 99, "th\u00e9s\u00e9e": 99, "dictionnair": 99, "ou": [99, 104, 126], "membr": 99, "propri\u00e9t\u00e9": 99, "connu": 99, "r\u00e9solu": 99, "fait": 99, "inqui\u00e9tud": 99, "abord\u00e9": 99, "pr\u00e9occup": 99, "apr\u00e8": [99, 130], "parit\u00e9": 99, "vrai": 99, "am\u00e9lior": 99, "cuit": 99, "penser": 99, "diff\u00e9r\u00e9": 99, "remplac": [99, 126], "incompatibilit\u00e9": 99, "depui": 100, "d\u00e9taill\u00e9": 101, "impl\u00e9ment": 101, "simplement": 101, "lien": [101, 128], "tableau": [102, 103, 117], "erreur": [102, 106], "fr\u00e9quent": 102, "g\u00e9n\u00e9raux": [103, 109], "tou": [103, 112, 116], "corr\u00e9spond": 103, "traver": 103, "r\u00f4le": 103, "d\u00e9ploiement": [104, 108], "vann\u00e9": 104, "syst\u00e8m": [104, 134], "privil\u00e9gi\u00e9": 104, "glossair": [104, 105], "anglai": 105, "cart": 105, "avi": [105, 112], "pompag": 105, "tout": 106, "ceuillett": 106, "appel": 106, "sondag": 106, "r\u00e9p\u00e9t\u00e9": 106, "partitionn": 106, "sp\u00e9cifiqu": 106, "consomm": 106, "r\u00e9plicat": 106, "obsol\u00e8t": 106, "suivi": 106, "identif": 106, "identifi": [106, 116, 125], "p\u00e9riodiqu": [106, 134], "r\u00e9cup\u00e9rat": 106, "facultatif": 106, "obligatoir": [106, 127], "compatibilit\u00e9": 106, "mot": [106, 126], "cl\u00e9": [106, 126], "histoir": [108, 111], "renommag": [108, 117, 127], "moin": 108, "meilleur": [108, 112, 116], "projet": 108, "jour": 108, "\u00e9tude": 109, "miroir": 109, "arboresc": [109, 112], "tr\u00e8": 109, "rapid": 109, "\u00e9nonc\u00e9": 109, "pr\u00e9sentat": 109, "lectur": 109, "arbr": 109, "prend": 109, "temp": [109, 126], "m\u00e9thode": 109, "d\u00e9tection": [109, 117], "biblioth\u00e8qu": 109, "n\u00e9cessair": 109, "\u00e7a": 109, "march": 109, "frai": 109, "janvier": 110, "m\u00e9t\u00e9orologiqu": 110, "venir": 110, "maill\u00e9": 112, "\u00e9t\u00e9": 112, "con\u00e7u": 112, "y": 112, "longtemp": 112, "limit\u00e9": 112, "optimal": 112, "taill": [112, 126], "personn": 112, "cett": 112, "fa\u00e7on": [112, 130], "mauvai": 112, "ajust": 112, "gro": 112, "souvent": [112, 120], "pratiqu": 112, "r\u00e9pertoir": 112, "convenu": 112, "homologu": 112, "\u00e9volut": 112, "ouvert": 112, "maturit\u00e9": 112, "apatridi": 112, "programmabilit\u00e9": 112, "interop\u00e9rabilit\u00e9": 112, "priorit\u00e9": 112, "gard": 112, "cr\u00e9er": 115, "rappel": [116, 130], "hi\u00e9rarchiqu": 116, "affichag": 116, "champ": [116, 128], "personnalis": 116, "doit": 116, "\u00eatre": 116, "utilis\u00e9": 116, "mesur": 116, "strat\u00e9gi": 117, "bas\u00e9": [118, 134], "uniqu": 118, "nom": [118, 126], "changeant": 118, "m\u00e9t\u00e9o": 118, "gc": 118, "miroitag": 118, "chp": 118, "vieux": 118, "votr": 118, "gout": 118, "choisi": 120, "\u00e9changeur": 120, "prise": 120, "grand": 120, "co\u00fbt": 120, "plage": 120, "octet": 120, "vuln\u00e9rabilit\u00e9": 120, "complexit\u00e9": 120, "traduct": 121, "terminologi": 121, "distanc": 123, "environnemental": [124, 127], "substitut": 126, "acceltreshold": 126, "d\u00e9sactiv": 126, "bool\u00e9en": 126, "sp\u00e9ficationdeclass": 126, "sp\u00e9cificationdeclass": 126, "omi": 126, "\u00e9v\u00e8nement": 126, "cinq": 126, "interval": 126, "d\u00e9finit": 126, "unit\u00e9_de_temp": 126, "donn": 126, "compt": 126, "chain": 126, "exp\u00e9rimental": 126, "identiqu": 126, "interva": 126, "publi": 127, "disponibilit\u00e9": 127, "librairi": 127, "truc": 127, "th\u00e8me": [128, 132], "nom_du_clust": 128, "symboliqu": 128, "oldpath": 128, "facult": 128, "possibilit\u00e9": 128, "consol": 129, "pr\u00e9requi": 129, "personnalisez": 130, "\u00e9crire": 130, "vo": 130, "propr": 130, "sorti": 130, "changent": 130, "dont": 130, "t\u00e9l\u00e9charg\u00e9": 130, "traitent": 130, "son": 130, "renom": 130, "cr\u00e9ent": 130, "nouveaux": 130, "d\u00e9mareur": 131, "liaison": 132, "t\u00e9l\u00e9charger": 132, "avez": 134, "vou": 134, "d\u00e9j\u00e0": 134, "recommand\u00e9": 134, "arr\u00eat": 134, "t\u00e2che": [134, 137], "paquet": 134, "distant": 135, "administrateur": 136, "invit": 137, "d\u00e9marrer": 137, "planificateur": 137, "r\u00e9pliquer": 139, "indic": 140}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 3, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 58}, "alltitles": {"AMQP - Primer for Sarracenia": [[0, "amqp-primer-for-sarracenia"]], "Contents": [[0, "contents"], [2, "contents"], [29, "contents"], [31, "contents"], [39, "contents"], [41, "contents"], [42, "contents"], [55, "contents"], [56, "contents"], [57, "contents"], [89, "contents"], [90, "contents"], [110, "contents"], [112, "contents"]], "AMQP Feature Selection": [[0, "amqp-feature-selection"]], "Analogy FTP": [[0, "analogy-ftp"]], "AMQP: not 1.0, but 0.8 or 0.9": [[0, "amqp-not-1-0-but-0-8-or-0-9"]], "Named Exchanges and Queues": [[0, "named-exchanges-and-queues"]], "Topic-based Exchanges": [[0, "topic-based-exchanges"]], "Little Data": [[0, "little-data"]], "Other Parameters": [[0, "other-parameters"]], "Mapping AMQP Concepts to Sarracenia": [[0, "mapping-amqp-concepts-to-sarracenia"], [21, "mapping-amqp-concepts-to-sarracenia"]], "Sarracenia is an MQP Application": [[0, "sarracenia-is-an-mqp-application"]], "Review": [[0, "review"]], "Appendix A: Background": [[0, "appendix-a-background"]], "Why Use AMQP?": [[0, "why-use-amqp"]], "Where does AMQP Come From?": [[0, "where-does-amqp-come-from"]], "Intel/Cray HPC Stack": [[0, "intel-cray-hpc-stack"]], "OpenStack": [[0, "openstack"], [89, "openstack"]], "How to Adopt AMQP": [[0, "how-to-adopt-amqp"]], "Basic Idea": [[1, "basic-idea"]], "1\u00a0\u00a0\u00a0Strawman Design": [[2, "strawman-design"]], "1.1\u00a0\u00a0\u00a0Assumptions/Constraints": [[2, "assumptions-constraints"]], "1.2\u00a0\u00a0\u00a0Number of Switches": [[2, "number-of-switches"]], "1.3\u00a0\u00a0\u00a0AMQP Feature Selection": [[2, "amqp-feature-selection"]], "1.4\u00a0\u00a0\u00a0Application": [[2, "application"], [90, "application"]], "1.5\u00a0\u00a0\u00a0Routing": [[2, "routing"]], "1.5.1\u00a0\u00a0\u00a0Routing Posts": [[2, "routing-posts"]], "1.5.2\u00a0\u00a0\u00a0Routing Logs": [[2, "routing-logs"]], "1.6\u00a0\u00a0\u00a0Security Model": [[2, "security-model"]], "1.6.1\u00a0\u00a0\u00a0Users, Queues & Exchanges": [[2, "users-queues-exchanges"]], "1.6.2\u00a0\u00a0\u00a0Pre-Validation": [[2, "pre-validation"]], "1.6.3\u00a0\u00a0\u00a0Post-Validation": [[2, "post-validation"], [90, "post-validation"]], "1.6.4\u00a0\u00a0\u00a0Log Validation": [[2, "log-validation"]], "1.6.5\u00a0\u00a0\u00a0Private vs. Public Data Transfer": [[2, "private-vs-public-data-transfer"]], "1.6.6\u00a0\u00a0\u00a0HTTPS Private Access": [[2, "https-private-access"]], "1.7\u00a0\u00a0\u00a0Topologies": [[2, "topologies"], [90, "topologies"]], "1.7.1\u00a0\u00a0\u00a0Standalone": [[2, "standalone"]], "1.7.2\u00a0\u00a0\u00a0DDSR: Switching/Routing Configuration": [[2, "ddsr-switching-routing-configuration"]], "1.7.3\u00a0\u00a0\u00a0Independent DDSR": [[2, "independent-ddsr"]], "1.7.4\u00a0\u00a0\u00a0Shared Broker DDSR": [[2, "shared-broker-ddsr"]], "1.7.5\u00a0\u00a0\u00a0DD: Data Dissemination Configuration (AKA: Data Mart)": [[2, "dd-data-dissemination-configuration-aka-data-mart"]], "1.7.6\u00a0\u00a0\u00a0Independent DD": [[2, "independent-dd"]], "1.7.7\u00a0\u00a0\u00a0Shared-Broker DD": [[2, "shared-broker-dd"], [90, "shared-broker-dd"]], "1.7.8\u00a0\u00a0\u00a0Shared-Data DD": [[2, "shared-data-dd"]], "1.7.9\u00a0\u00a0\u00a0SEP: Shared End-Point Configuration": [[2, "sep-shared-end-point-configuration"], [90, "sep-shared-end-point-configuration"]], "MetPX-Sarracenia Developer\u2019s Guide": [[3, "metpx-sarracenia-developer-s-guide"]], "Tools you Need": [[3, "tools-you-need"]], "Documentation": [[3, "documentation"], [92, "documentation"]], "Where to Put Options": [[3, "where-to-put-options"]], "Development": [[3, "development"]], "v2 Workflow": [[3, "v2-workflow"]], "v3 Workflow": [[3, "v3-workflow"]], "sr_insects": [[3, "sr-insects"], [92, "sr-insects"]], "Local Installation": [[3, "local-installation"]], "Prepare a Vanilla VM": [[3, "prepare-a-vanilla-vm"]], "Python Wheel": [[3, "python-wheel"], [92, "python-wheel"]], "Local Pip install": [[3, "local-pip-install"]], "Debian/Ubuntu": [[3, "debian-ubuntu"], [92, "debian-ubuntu"]], "Committing Code": [[3, "committing-code"]], "sr_insects Tests Description": [[3, "sr-insects-tests-description"]], "Unit": [[3, "unit"], [92, "unit"]], "Static Flow": [[3, "static-flow"], [92, "static-flow"]], "Flakey Broker": [[3, "flakey-broker"], [92, "flakey-broker"]], "Dynamic Flow": [[3, "dynamic-flow"], [92, "dynamic-flow"]], "Running Flow Tests": [[3, "running-flow-tests"]], "Install Servers on Workstation": [[3, "install-servers-on-workstation"]], "Setup Flow Test Environment": [[3, "setup-flow-test-environment"]], "Run A Flow Test": [[3, "run-a-flow-test"]], "Flow Cleanup": [[3, "flow-cleanup"], [92, "flow-cleanup"]], "Dynamic Flow Test Length": [[3, "dynamic-flow-test-length"]], "High volume sample": [[3, "high-volume-sample"]], "Limitation": [[3, "limitation"], [92, "limitation"]], "Flow Test Stuck": [[3, "flow-test-stuck"]], "Flow tests with MQTT": [[3, "flow-tests-with-mqtt"]], "Commits to the Main Branch": [[3, "commits-to-the-main-branch"]], "Main Branches": [[3, "main-branches"]], "Repositories": [[3, "repositories"]], "Building a Release": [[3, "building-a-release"]], "Versioning Scheme": [[3, "versioning-scheme"]], "Set the Version": [[3, "set-the-version"]], "Releasing": [[3, "releasing"], [92, "releasing"]], "PyPi": [[3, "pypi"], [92, "pypi"]], "Launchpad": [[3, "launchpad"], [92, "launchpad"]], "Automated Build": [[3, "automated-build"]], "Building a Windows Installer": [[3, "building-a-windows-installer"]], "Daily Builds": [[3, "daily-builds"]], "Manual Process": [[3, "manual-process"]], "Backporting a Dependency": [[3, "backporting-a-dependency"]], "Building an RPM": [[3, "building-an-rpm"]], "github": [[3, "github"], [92, "github"]], "Development Environment": [[3, "development-environment"]], "Local Python": [[3, "local-python"], [92, "local-python"]], "Windows": [[3, "windows"], [70, "windows"], [92, "windows"], [134, "windows"]], "Conventions": [[3, "conventions"], [92, "conventions"]], "When to Report": [[3, "when-to-report"]], "Adding a New Dependency": [[3, "adding-a-new-dependency"], [92, "adding-a-new-dependency"]], "Documentation Standards": [[4, "documentation-standards"]], "Folder Structure": [[4, "folder-structure"]], "Processing": [[4, "processing"]], "Tutorials": [[4, "tutorials"], [74, "tutorials"]], "How2Guides": [[4, "how2guides"]], "Explanation": [[4, "explanation"], [43, "explanation"]], "Reference": [[4, "reference"], [58, "reference"]], "Contribution": [[4, "contribution"], [91, "contribution"]], "Process": [[4, "process"]], "Style Guide": [[4, "style-guide"]], "Code Style": [[4, "code-style"]], "Why rST?": [[4, "why-rst"], [91, "why-rst"]], "Localization": [[4, "localization"]], "Design Changes since Original (2015)": [[5, "design-changes-since-original-2015"]], "It\u00b4s About Time": [[6, "It\u00b4s-About-Time"]], "Let the Computer Do It": [[6, "Let-the-Computer-Do-It"]], "Amdahl\u2019s Law Applied": [[7, "Amdahl\u2019s-Law-Applied"]], "Speedup": [[7, "Speedup"]], "What is Amdahl\u2019s Law?": [[7, "What-is-Amdahl\u2019s-Law?"]], "Large Numbers of Processors Need High Parallelism": [[7, "Large-Numbers-of-Processors-Need-High-Parallelism"]], "Serial Example": [[7, "Serial-Example"]], "NEWS FLASH: Serial 9x Faster than Parallel!": [[7, "NEWS-FLASH:-Serial-9x-Faster-than-Parallel!"]], "Summary": [[7, "Summary"], [19, "summary"], [28, "summary"], [44, "summary"]], "Relevance?": [[7, "Relevance?"]], "So Sarracenia is Not a Parallel App!": [[7, "So-Sarracenia-is-Not-a-Parallel-App!"]], "Yes, Exactly.": [[7, "Yes,-Exactly."]], "THANKS!": [[7, "THANKS!"]], "CAP Theorem Applied": [[8, "CAP-Theorem-Applied"]], "CAP Theorem": [[8, "CAP-Theorem"]], "Definitions": [[8, "Definitions"]], "Cap Theorem": [[8, "Cap-Theorem"]], "Proof": [[8, "Proof"]], "Storage/State": [[8, "Storage/State"]], "Choosing CA:": [[8, "Choosing-CA:"]], "Quorum and Voting:": [[8, "Quorum-and-Voting:"]], "Choosing AP:": [[8, "Choosing-AP:"]], "Voting Failure Modes": [[8, "Voting-Failure-Modes"]], "Choosing CP:": [[8, "Choosing-CP:"]], "Bringing Amdahl & CAP Together": [[8, "Bringing-Amdahl-&-CAP-Together"]], "Almost-Coherent File System or DB Performance": [[8, "Almost-Coherent-File-System-or-DB-Performance"]], "Universal Write Scaling": [[8, "Universal-Write-Scaling"]], "Non-Shared Approaches.": [[8, "Non-Shared-Approaches."]], "Examples of Non-Shared Approaches": [[8, "Examples-of-Non-Shared-Approaches"]], "Object Stores": [[8, "Object-Stores"]], "Cloud Solves This!": [[8, "Cloud-Solves-This!"]], "Sarracenia: File Systems Flying in Formation": [[8, "Sarracenia:-File-Systems-Flying-in-Formation"]], "Thanks!": [[8, "Thanks!"]], "PDS Algorithmic Design": [[9, "PDS-Algorithmic-Design"]], "Receiver": [[9, "Receiver"]], "Dispatcher": [[9, "Dispatcher"]], "Sender": [[9, "Sender"]], "Design Decisions/Assumptions": [[9, "Design-Decisions/Assumptions"]], "Routing 1 Product": [[9, "Routing-1-Product"]], "Observations:": [[9, "Observations:"]], "Sarracenia Algorithmic Design": [[11, "Sarracenia-Algorithmic-Design"]], "Problems/Weaknesses of Sundew:": [[11, "Problems/Weaknesses-of-Sundew:"]], "Use Folders/Directories": [[11, "Use-Folders/Directories"]], "Add RabbitMQ": [[11, "Add-RabbitMQ"], [11, "id1"]], "The Algorithmic Cost to Route 1 File": [[11, "The-Algorithmic-Cost-to-Route-1-File"]], "Overall Server Algorithmic Ceiling": [[11, "Overall-Server-Algorithmic-Ceiling"]], "Duplicate Suppression": [[11, "Duplicate-Suppression"], [24, "duplicate-suppression"]], "Global Duplication Suppression": [[11, "Global-Duplication-Suppression"]], "Distributed Duplicate Suppression": [[11, "Distributed-Duplicate-Suppression"]], "Observations": [[11, "Observations"]], "Sundew Algorithmic Design": [[12, "Sundew-Algorithmic-Design"]], "Eliminate Dispatcher": [[12, "Eliminate-Dispatcher"], [12, "id1"]], "Eliminate Log Locking": [[12, "Eliminate-Log-Locking"]], "Dictionary Pre-Routing": [[12, "Dictionary-Pre-Routing"], [12, "id2"]], "Write it in Python": [[12, "Write-it-in-Python"], [12, "id3"]], "Sundew Routing cost:": [[12, "Sundew-Routing-cost:"]], "What difference did it make?": [[12, "What-difference-did-it-make?"]], "Bonus": [[12, "Bonus"]], "Sarracenia Design Philosophy": [[13, "sarracenia-design-philosophy"]], "Contents:": [[13, null], [15, null], [30, null], [40, null], [43, null], [58, null], [74, null], [85, null], [122, null], [138, null], [139, null], [140, null]], "Discussion of File Modification Propagation": [[14, "discussion-of-file-modification-propagation"]], "What If Each Notification is for a Block, not a File ?": [[14, "what-if-each-notification-is-for-a-block-not-a-file"]], ".sr\u00a7 suffix": [[14, "sr-suffix"]], "How to Select Chunksize": [[14, "how-to-select-chunksize"]], "if we do blockwise cksums, path from v00": [[14, "if-we-do-blockwise-cksums-path-from-v00"]], "Digression about ZSync": [[14, "digression-about-zsync"]], "Server/Protocol Considerations": [[14, "server-protocol-considerations"]], "Contributing": [[15, "contributing"]], "SR3_TITLE": [[16, "sr3-title"]], "sr_title": [[16, "sr-title"]], "SYNOPSIS": [[16, "synopsis"], [59, "synopsis"], [60, "synopsis"], [62, "synopsis"], [63, "synopsis"], [64, "synopsis"], [97, "synopsis"], [123, "synopsis"], [124, "synopsis"], [126, "synopsis"], [127, "synopsis"], [128, "synopsis"]], "DESCRIPTION": [[16, "description"], [39, "description"], [41, "description"], [42, "description"], [59, "description"], [60, "description"], [62, "description"], [63, "description"], [64, "description"], [97, "description"], [123, "description"], [124, "description"], [126, "description"], [127, "description"], [128, "description"]], "CONFIGURATION": [[16, "configuration"], [60, "configuration"], [61, "configuration"], [97, "configuration"], [124, "configuration"], [125, "configuration"]], "ENVIRONMENT VARIABLES": [[16, "environment-variables"], [60, "environment-variables"], [63, "environment-variables"]], "SEE ALSO": [[16, "see-also"], [41, "see-also"], [59, "see-also"], [60, "see-also"], [61, "see-also"], [62, "see-also"], [63, "see-also"], [64, "see-also"], [126, "see-also"]], "MQTT Implementation Notes": [[17, "mqtt-implementation-notes"]], "v3 vs. v5": [[17, "v3-vs-v5"], [98, "v3-vs-v5"]], "Shared Subscriptions": [[17, "shared-subscriptions"]], "Back Pressure": [[17, "back-pressure"], [26, "back-pressure"]], "File Re-assembling": [[18, "file-re-assembling"]], "Components": [[18, "components"]], "Algorithm": [[18, "algorithm"]], "Testing": [[18, "testing"]], "Version 3 Refactor": [[19, "version-3-refactor"]], "goals of opportunity": [[19, "goals-of-opportunity"]], "State of the Code": [[19, "state-of-the-code"]], "V02 Plugin Pain Points": [[19, "v02-plugin-pain-points"]], "Changes Done to Address Pain Points": [[19, "changes-done-to-address-pain-points"]], "Ship of Theseus": [[19, "ship-of-theseus"]], "Mappings": [[19, "mappings"]], "Dictionaries or Members for Properties?": [[19, "dictionaries-or-members-for-properties"]], "Known Problems (Solved in sr3)": [[19, "known-problems-solved-in-sr3"]], "Concrete Plan (Done)": [[19, "concrete-plan-done"]], "Done": [[19, "done"]], "Worries Addressed": [[19, "worries-addressed"]], "Accel Overhaul": [[19, "accel-overhaul"]], "DoneTodo": [[19, "donetodo"]], "BUGS/Concerns/Issues": [[19, "bugs-concerns-issues"]], "After Parity: True Improvements": [[19, "after-parity-true-improvements"]], "TODO": [[19, "todo"], [99, "id1"]], "Not Baked/Thinking": [[19, "not-baked-thinking"]], "FIXME/Deferred": [[19, "fixme-deferred"]], "Transition": [[19, "transition"], [99, "transition"]], "Replacement": [[19, "replacement"]], "Parallel": [[19, "parallel"], [99, "parallel"]], "Conclusion": [[19, "conclusion"], [65, "Conclusion"], [68, "Conclusion"], [99, "conclusion"], [129, "Conclusion"], [132, "Conclusion"]], "Incompatibilities": [[19, "incompatibilities"]], "Features": [[19, "features"]], "Command Line Guide": [[20, "command-line-guide"]], "SR3 - Everything": [[20, "sr3-everything"]], "ACTIONS": [[20, "actions"], [59, "actions"], [106, "actions"], [123, "actions"]], "declare|setup": [[20, "declare-setup"], [106, "declare-setup"]], "dump": [[20, "dump"], [106, "dump"]], "foreground": [[20, "foreground"], [106, "foreground"]], "show": [[20, "show"], [106, "show"]], "convert": [[20, "convert"], [106, "convert"]], "start": [[20, "start"], [106, "start"]], "stop": [[20, "stop"], [106, "stop"]], "status": [[20, "status"], [106, "status"]], "Message Gathering": [[20, "message-gathering"]], "Setting the Broker": [[20, "setting-the-broker"]], "Creating the Queue": [[20, "creating-the-queue"]], "[ queue|queue_name|qn ]": [[20, "queue-queue-name-qn-name"], [106, "queue-queue-name-qn-name"]], "AMQP QUEUE BINDINGS": [[20, "amqp-queue-bindings"], [106, "amqp-queue-bindings"]], "subtopic (default: #)": [[20, "subtopic-amqp-pattern-default"], [62, "subtopic-amqp-pattern-default"], [106, "subtopic-amqp-pattern-default"]], "Client-side Filtering": [[20, "client-side-filtering"], [106, "client-side-filtering"]], "Brief Introduction to Regular Expressions": [[20, "brief-introduction-to-regular-expressions"], [106, "brief-introduction-to-regular-expressions"]], "accept, reject and accept_unmatch": [[20, "accept-reject-and-accept-unmatch"], [106, "accept-reject-and-accept-unmatch"]], "NAMING QUEUES": [[20, "naming-queues"]], "POSTING": [[20, "posting"]], "NAMING EXCHANGES": [[20, "naming-exchanges"]], "POLLING": [[20, "polling"]], "Advanced Polling": [[20, "advanced-polling"]], "COMPONENTS": [[20, "components"], [59, "components"]], "CPUMP": [[20, "cpump"], [106, "cpump"]], "FLOW": [[20, "flow"], [106, "flow"]], "POLL": [[20, "poll"], [106, "poll"]], "Repeated Scans and VIP": [[20, "repeated-scans-and-vip"]], "POST or WATCH": [[20, "post-or-watch"], [106, "post-or-watch"]], "File Partitioning": [[20, "file-partitioning"]], "SARRA": [[20, "sarra"], [106, "sarra"]], "Specific Consuming Requirements": [[20, "specific-consuming-requirements"]], "SENDER": [[20, "sender"], [106, "sender"]], "SETUP 1 : PUMP TO PUMP REPLICATION": [[20, "setup-1-pump-to-pump-replication"]], "DESTINATION SETUP 2 : METPX-SUNDEW LIKE DISSEMINATION": [[20, "destination-setup-2-metpx-sundew-like-dissemination"]], "SHOVEL": [[20, "shovel"], [106, "shovel"]], "SUBSCRIBE": [[20, "subscribe"], [106, "subscribe"]], "WATCH": [[20, "watch"], [106, "watch"]], "WINNOW": [[20, "winnow"], [106, "winnow"]], "Configurations": [[20, "configurations"], [106, "configurations"]], "flowCallbacks": [[20, "flowcallbacks"], [106, "flowcallbacks"]], "callback options": [[20, "callback-options"]], "Importing Extensions": [[20, "importing-extensions"]], "Deprecated v2 plugins": [[20, "deprecated-v2-plugins"]], "Environment Variables": [[20, "environment-variables"], [106, "environment-variables"]], "LOGS and MONITORING": [[20, "logs-and-monitoring"]], "CREDENTIALS": [[20, "credentials"]], "Credential Details": [[20, "credential-details"], [61, "credential-details"]], "PERIODIC PROCESSING": [[20, "periodic-processing"]], "sanity_log_dead (default: 1.5*housekeeping)": [[20, "sanity-log-dead-interval-default-1-5-housekeeping"], [62, "sanity-log-dead-interval-default-1-5-housekeeping"]], "nodup_ttl (default: off)": [[20, "nodup-ttl-off-on-999-default-off"]], "ERROR RECOVERY": [[20, "error-recovery"]], "EXAMPLES": [[20, "examples"], [59, "examples"]], "QUEUES and MULTIPLE STREAMS": [[20, "queues-and-multiple-streams"], [106, "queues-and-multiple-streams"]], "report and report_exchange": [[20, "report-and-report-exchange"], [62, "report-and-report-exchange"]], "INSTANCES": [[20, "instances"], [106, "instances"]], "vip - ACTIVE/PASSIVE OPTIONS": [[20, "vip-active-passive-options"], [62, "vip-active-passive-options"], [106, "vip-active-passive-options"]], "[\u2013blocksize ] (default: 0 (auto))": [[20, "blocksize-value-default-0-auto"], [106, "blocksize-value-default-0-auto"]], "[-pbd|\u2013post_baseDir ] (optional)": [[20, "pbd-post-basedir-path-optional"]], "post_baseUrl (MANDATORY)": [[20, "post-baseurl-url-mandatory"]], "post_exchange (default: xpublic)": [[20, "post-exchange-name-default-xpublic"], [62, "post-exchange-name-default-xpublic"], [106, "post-exchange-name-default-xpublic"]], "post_exchangeSplit (default: 0)": [[20, "post-exchangesplit-number-default-0"]], "Remote Configurations": [[20, "remote-configurations"], [59, "remote-configurations"], [106, "remote-configurations"]], "Extensions": [[20, "extensions"], [106, "extensions"]], "flowCallback and flowCallbackPrepend ": [[20, "flowcallback-and-flowcallbackprepend-class"]], "Identity": [[20, "identity"], [106, "identity"]], "Transfer": [[20, "transfer"], [106, "transfer"]], "ROLES - feeder/admin/declare": [[20, "roles-feeder-admin-declare"], [106, "roles-feeder-admin-declare"]], "subscriber": [[20, "subscriber"], [106, "subscriber"]], "source": [[20, "source"], [106, "source"]], "feeder": [[20, "feeder"], [106, "feeder"]], "CONFIGURATION FILES": [[20, "configuration-files"]], "SUNDEW COMPATIBILITY OPTIONS": [[20, "sundew-compatibility-options"]], "destfn_script