From 1b4b7d17e060d6b2c981fd3cd7667d16a7bf22ec Mon Sep 17 00:00:00 2001 From: davidga Date: Sun, 13 Nov 2022 13:29:35 +0200 Subject: [PATCH] Support local managment for embedded agent on nginx --- ...policy_gen.h => i_local_policy_mgmt_gen.h} | 6 +- ...s_policy_gen.h => local_policy_mgmt_gen.h} | 16 +- .../orchestration/CMakeLists.txt | 2 +- .../include/hybrid_communication.h | 4 +- .../k8s_policy_gen/CMakeLists.txt | 1 - .../local_policy_mgmt_gen/CMakeLists.txt | 1 + .../include/appsec_practice_section.h | 52 + .../include/exceptions_section.h | 0 .../include/ingress_data.h | 0 .../include/k8s_policy_common.h | 3 + .../include/rules_config_section.h | 0 .../include/settings_section.h | 0 .../include/snort_section.h | 0 .../include/triggers_section.h | 18 +- .../include/trusted_sources_section.h | 36 + .../local_policy_mgmt_gen.cc} | 21 +- .../hybrid_communication.cc | 87 +- core/config/config.cc | 10 + core/config/config_globals.cc | 7 + core/include/services_sdk/resources/config.h | 2 + .../services_sdk/resources/config/i_config.h | 3 + external/CMakeLists.txt | 1 + external/yq/.dockerignore | 1 + external/yq/.golangci.yml | 40 + external/yq/CMakeLists.txt | 5 + external/yq/CODE_OF_CONDUCT.md | 76 + external/yq/CONTRIBUTING.md | 40 + external/yq/Dockerfile | 28 + external/yq/Dockerfile.dev | 10 + external/yq/LICENSE | 21 + external/yq/Makefile.variables | 38 + external/yq/README.md | 373 +++++ external/yq/acceptance_tests/bad_args.sh | 41 + external/yq/acceptance_tests/basic.sh | 356 +++++ external/yq/acceptance_tests/completion.sh | 9 + external/yq/acceptance_tests/empty.sh | 83 + external/yq/acceptance_tests/front-matter.sh | 76 + .../acceptance_tests/header-processing-off.sh | 43 + external/yq/acceptance_tests/inputs-format.sh | 203 +++ .../yq/acceptance_tests/leading-seperator.sh | 453 ++++++ external/yq/acceptance_tests/load-file.sh | 27 + external/yq/acceptance_tests/output-format.sh | 274 ++++ external/yq/acceptance_tests/pipe.sh | 70 + external/yq/acceptance_tests/pretty-print.sh | 176 +++ external/yq/acceptance_tests/split-printer.sh | 207 +++ external/yq/action.yml | 17 + external/yq/cmd/constant.go | 33 + external/yq/cmd/evaluate_all_command.go | 128 ++ external/yq/cmd/evalute_sequence_command.go | 141 ++ external/yq/cmd/root.go | 145 ++ external/yq/cmd/shell-completion.go | 61 + external/yq/cmd/unwrap_flag.go | 46 + external/yq/cmd/utils.go | 178 +++ external/yq/cmd/version.go | 49 + external/yq/cmd/version_test.go | 51 + external/yq/debian/changelog | 210 +++ external/yq/debian/compat | 1 + external/yq/debian/control | 22 + external/yq/debian/copyright | 24 + external/yq/debian/gbp.conf | 2 + external/yq/debian/rules | 74 + external/yq/debian/source/format | 1 + external/yq/debian/yq.dirs | 3 + external/yq/examples/array.yaml | 2 + external/yq/examples/bad.yaml | 8 + external/yq/examples/base64.txt | 1 + external/yq/examples/data1-no-comments.yaml | 4 + external/yq/examples/data1.yaml | 1 + external/yq/examples/data2.yaml | 5 + external/yq/examples/data3.yaml | 4 + external/yq/examples/empty-no-comment.yaml | 0 external/yq/examples/empty.yaml | 1 + external/yq/examples/example.properties | 6 + external/yq/examples/front-matter.yaml | 6 + external/yq/examples/instruction_sample.yaml | 7 + external/yq/examples/leading-seperator.yaml | 2 + external/yq/examples/merge-anchor.yaml | 19 + external/yq/examples/mike.xml | 7 + external/yq/examples/mike2.xml | 11 + external/yq/examples/multiline-text.yaml | 5 + external/yq/examples/multiple_docs.yaml | 18 + external/yq/examples/multiple_docs_small.yaml | 7 + external/yq/examples/numbered_keys.yml | 2 + external/yq/examples/order.yaml | 2 + external/yq/examples/order.yml | 6 + external/yq/examples/sample.json | 1 + external/yq/examples/sample.yaml | 11 + external/yq/examples/sample_array.yaml | 1 + external/yq/examples/sample_array_2.yaml | 2 + external/yq/examples/sample_objects.csv | 3 + external/yq/examples/sample_text.yaml | 1 + .../yq/examples/simple-anchor-exploded.yaml | 5 + external/yq/examples/simple-anchor.yaml | 5 + external/yq/examples/small.properties | 1 + external/yq/examples/small.xml | 1 + external/yq/examples/thing.yml | 2 + external/yq/github-action/Dockerfile | 9 + external/yq/github-action/entrypoint.sh | 12 + external/yq/go.sum | 83 + external/yq/how-it-works.md | 129 ++ external/yq/mkdocs.yml | 7 + .../yq/pkg/yqlib/all_at_once_evaluator.go | 83 + .../pkg/yqlib/all_at_once_evaluator_test.go | 40 + external/yq/pkg/yqlib/candidate_node.go | 189 +++ external/yq/pkg/yqlib/color_print.go | 61 + external/yq/pkg/yqlib/compare_operators.go | 133 ++ .../yq/pkg/yqlib/compare_operators_test.go | 371 +++++ external/yq/pkg/yqlib/context.go | 122 ++ external/yq/pkg/yqlib/csv_test.go | 282 ++++ external/yq/pkg/yqlib/data_tree_navigator.go | 41 + external/yq/pkg/yqlib/decoder.go | 42 + external/yq/pkg/yqlib/decoder_base64.go | 57 + external/yq/pkg/yqlib/decoder_csv_object.go | 81 + external/yq/pkg/yqlib/decoder_json.go | 87 ++ external/yq/pkg/yqlib/decoder_properties.go | 161 ++ external/yq/pkg/yqlib/decoder_test.go | 69 + external/yq/pkg/yqlib/decoder_xml.go | 348 +++++ external/yq/pkg/yqlib/decoder_yaml.go | 114 ++ .../yq/pkg/yqlib/doc/notification-snippet.md | 0 external/yq/pkg/yqlib/doc/operators/add.md | 319 ++++ .../operators/alternative-default-value.md | 108 ++ .../operators/anchor-and-alias-operators.md | 333 ++++ .../pkg/yqlib/doc/operators/array-to-map.md | 28 + .../pkg/yqlib/doc/operators/assign-update.md | 270 ++++ .../yqlib/doc/operators/boolean-operators.md | 228 +++ .../yqlib/doc/operators/collect-into-array.md | 41 + external/yq/pkg/yqlib/doc/operators/column.md | 60 + .../yqlib/doc/operators/comment-operators.md | 337 +++++ .../yq/pkg/yqlib/doc/operators/compare.md | 100 ++ .../yq/pkg/yqlib/doc/operators/contains.md | 114 ++ .../operators/create-collect-into-object.md | 95 ++ .../yq/pkg/yqlib/doc/operators/datetime.md | 197 +++ external/yq/pkg/yqlib/doc/operators/delete.md | 120 ++ .../pkg/yqlib/doc/operators/document-index.md | 91 ++ .../pkg/yqlib/doc/operators/encode-decode.md | 470 ++++++ .../yq/pkg/yqlib/doc/operators/entries.md | 141 ++ .../doc/operators/env-variable-operators.md | 256 ++++ external/yq/pkg/yqlib/doc/operators/equals.md | 133 ++ external/yq/pkg/yqlib/doc/operators/error.md | 50 + external/yq/pkg/yqlib/doc/operators/eval.md | 48 + .../pkg/yqlib/doc/operators/file-operators.md | 74 + .../yq/pkg/yqlib/doc/operators/flatten.md | 71 + .../yq/pkg/yqlib/doc/operators/group-by.md | 56 + external/yq/pkg/yqlib/doc/operators/has.md | 70 + .../pkg/yqlib/doc/operators/headers/Main.md | 63 + .../yq/pkg/yqlib/doc/operators/headers/add.md | 10 + .../headers/alternative-default-value.md | 3 + .../headers/anchor-and-alias-operators.md | 6 + .../doc/operators/headers/array-to-map.md | 9 + .../doc/operators/headers/assign-update.md | 13 + .../operators/headers/boolean-operators.md | 17 + .../operators/headers/collect-into-array.md | 4 + .../pkg/yqlib/doc/operators/headers/column.md | 3 + .../operators/headers/comment-operators.md | 11 + .../yqlib/doc/operators/headers/compare.md | 15 + .../yqlib/doc/operators/headers/contains.md | 11 + .../headers/create-collect-into-object.md | 3 + .../yqlib/doc/operators/headers/datetime.md | 26 + .../pkg/yqlib/doc/operators/headers/delete.md | 3 + .../doc/operators/headers/document-index.md | 3 + .../doc/operators/headers/encode-decode.md | 26 + .../yqlib/doc/operators/headers/entries.md | 3 + .../headers/env-variable-operators.md | 31 + .../pkg/yqlib/doc/operators/headers/equals.md | 22 + .../pkg/yqlib/doc/operators/headers/error.md | 3 + .../pkg/yqlib/doc/operators/headers/eval.md | 7 + .../doc/operators/headers/file-operators.md | 11 + .../yqlib/doc/operators/headers/flatten.md | 2 + .../yqlib/doc/operators/headers/group-by.md | 3 + .../yq/pkg/yqlib/doc/operators/headers/has.md | 3 + .../pkg/yqlib/doc/operators/headers/keys.md | 3 + .../pkg/yqlib/doc/operators/headers/length.md | 3 + .../pkg/yqlib/doc/operators/headers/line.md | 3 + .../pkg/yqlib/doc/operators/headers/load.md | 46 + .../yq/pkg/yqlib/doc/operators/headers/map.md | 3 + .../doc/operators/headers/multiply-merge.md | 37 + .../pkg/yqlib/doc/operators/headers/parent.md | 3 + .../pkg/yqlib/doc/operators/headers/path.md | 8 + .../pkg/yqlib/doc/operators/headers/pick.md | 5 + .../pkg/yqlib/doc/operators/headers/pipe.md | 3 + .../headers/recursive-descent-glob.md | 21 + .../pkg/yqlib/doc/operators/headers/reduce.md | 22 + .../yqlib/doc/operators/headers/reverse.md | 3 + .../pkg/yqlib/doc/operators/headers/select.md | 9 + .../doc/operators/headers/slice-array.md | 5 + .../yqlib/doc/operators/headers/sort-keys.md | 16 + .../pkg/yqlib/doc/operators/headers/sort.md | 8 + .../operators/headers/split-into-documents.md | 3 + .../doc/operators/headers/string-operators.md | 57 + .../pkg/yqlib/doc/operators/headers/style.md | 3 + .../yqlib/doc/operators/headers/subtract.md | 3 + .../yq/pkg/yqlib/doc/operators/headers/tag.md | 3 + .../doc/operators/headers/traverse-read.md | 3 + .../pkg/yqlib/doc/operators/headers/union.md | 3 + .../pkg/yqlib/doc/operators/headers/unique.md | 4 + .../operators/headers/variable-operators.md | 5 + .../pkg/yqlib/doc/operators/headers/with.md | 3 + external/yq/pkg/yqlib/doc/operators/keys.md | 154 ++ external/yq/pkg/yqlib/doc/operators/length.md | 70 + external/yq/pkg/yqlib/doc/operators/line.md | 62 + external/yq/pkg/yqlib/doc/operators/load.md | 194 +++ external/yq/pkg/yqlib/doc/operators/map.md | 40 + .../pkg/yqlib/doc/operators/multiply-merge.md | 501 ++++++ external/yq/pkg/yqlib/doc/operators/parent.md | 52 + external/yq/pkg/yqlib/doc/operators/path.md | 234 +++ external/yq/pkg/yqlib/doc/operators/pick.md | 47 + external/yq/pkg/yqlib/doc/operators/pipe.md | 37 + .../doc/operators/recursive-descent-glob.md | 156 ++ external/yq/pkg/yqlib/doc/operators/reduce.md | 77 + .../yq/pkg/yqlib/doc/operators/reverse.md | 42 + external/yq/pkg/yqlib/doc/operators/select.md | 139 ++ .../yq/pkg/yqlib/doc/operators/slice-array.md | 105 ++ .../yq/pkg/yqlib/doc/operators/sort-keys.md | 75 + external/yq/pkg/yqlib/doc/operators/sort.md | 181 +++ .../doc/operators/split-into-documents.md | 31 + .../yqlib/doc/operators/string-operators.md | 385 +++++ external/yq/pkg/yqlib/doc/operators/style.md | 240 +++ .../yq/pkg/yqlib/doc/operators/subtract.md | 163 ++ external/yq/pkg/yqlib/doc/operators/tag.md | 84 ++ .../pkg/yqlib/doc/operators/traverse-read.md | 485 ++++++ external/yq/pkg/yqlib/doc/operators/union.md | 33 + external/yq/pkg/yqlib/doc/operators/unique.md | 87 ++ .../yqlib/doc/operators/variable-operators.md | 98 ++ external/yq/pkg/yqlib/doc/operators/with.md | 64 + external/yq/pkg/yqlib/doc/usage/convert.md | 253 ++++ external/yq/pkg/yqlib/doc/usage/csv-tsv.md | 208 +++ .../yq/pkg/yqlib/doc/usage/headers/convert.md | 6 + .../yq/pkg/yqlib/doc/usage/headers/csv-tsv.md | 30 + .../pkg/yqlib/doc/usage/headers/properties.md | 5 + .../yq/pkg/yqlib/doc/usage/headers/xml.md | 40 + external/yq/pkg/yqlib/doc/usage/properties.md | 195 +++ external/yq/pkg/yqlib/doc/usage/xml.md | 509 +++++++ external/yq/pkg/yqlib/encoder.go | 178 +++ external/yq/pkg/yqlib/encoder_base64.go | 38 + external/yq/pkg/yqlib/encoder_csv.go | 126 ++ external/yq/pkg/yqlib/encoder_json.go | 85 ++ external/yq/pkg/yqlib/encoder_properties.go | 138 ++ .../yq/pkg/yqlib/encoder_properties_test.go | 127 ++ external/yq/pkg/yqlib/encoder_test.go | 74 + external/yq/pkg/yqlib/encoder_xml.go | 317 ++++ external/yq/pkg/yqlib/encoder_yaml.go | 100 ++ external/yq/pkg/yqlib/expression_parser.go | 76 + .../yq/pkg/yqlib/expression_parser_test.go | 81 + external/yq/pkg/yqlib/expression_postfix.go | 144 ++ .../pkg/yqlib/expression_processing_test.go | 344 +++++ external/yq/pkg/yqlib/file_utils.go | 85 ++ external/yq/pkg/yqlib/front_matter.go | 94 ++ external/yq/pkg/yqlib/front_matter_test.go | 143 ++ external/yq/pkg/yqlib/json_test.go | 413 +++++ external/yq/pkg/yqlib/lexer.go | 183 +++ external/yq/pkg/yqlib/lexer_participle.go | 554 +++++++ .../yq/pkg/yqlib/lexer_participle_test.go | 658 ++++++++ external/yq/pkg/yqlib/lib.go | 497 ++++++ external/yq/pkg/yqlib/lib_test.go | 104 ++ external/yq/pkg/yqlib/matchKeyString.go | 58 + external/yq/pkg/yqlib/matchKeyString_test.go | 40 + external/yq/pkg/yqlib/operator_add.go | 209 +++ external/yq/pkg/yqlib/operator_add_test.go | 383 +++++ external/yq/pkg/yqlib/operator_alternative.go | 44 + .../yq/pkg/yqlib/operator_alternative_test.go | 113 ++ .../yq/pkg/yqlib/operator_anchors_aliases.go | 300 ++++ .../yqlib/operator_anchors_aliases_test.go | 244 +++ .../pkg/yqlib/operator_array_to_map_test.go | 23 + external/yq/pkg/yqlib/operator_assign.go | 101 ++ external/yq/pkg/yqlib/operator_assign_test.go | 235 +++ external/yq/pkg/yqlib/operator_booleans.go | 175 +++ .../yq/pkg/yqlib/operator_booleans_test.go | 258 ++++ external/yq/pkg/yqlib/operator_collect.go | 74 + .../yq/pkg/yqlib/operator_collect_object.go | 101 ++ .../pkg/yqlib/operator_collect_object_test.go | 171 +++ .../yq/pkg/yqlib/operator_collect_test.go | 129 ++ external/yq/pkg/yqlib/operator_column.go | 23 + external/yq/pkg/yqlib/operator_column_test.go | 47 + external/yq/pkg/yqlib/operator_comments.go | 124 ++ .../yq/pkg/yqlib/operator_comments_test.go | 270 ++++ external/yq/pkg/yqlib/operator_contains.go | 111 ++ .../yq/pkg/yqlib/operator_contains_test.go | 91 ++ external/yq/pkg/yqlib/operator_create_map.go | 85 ++ .../yq/pkg/yqlib/operator_create_map_test.go | 81 + external/yq/pkg/yqlib/operator_datetime.go | 131 ++ .../yq/pkg/yqlib/operator_datetime_test.go | 120 ++ external/yq/pkg/yqlib/operator_delete.go | 92 ++ external/yq/pkg/yqlib/operator_delete_test.go | 185 +++ .../yq/pkg/yqlib/operator_document_index.go | 20 + .../pkg/yqlib/operator_document_index_test.go | 58 + .../yq/pkg/yqlib/operator_encoder_decoder.go | 141 ++ .../yqlib/operator_encoder_decoder_test.go | 285 ++++ external/yq/pkg/yqlib/operator_entries.go | 180 +++ .../yq/pkg/yqlib/operator_entries_test.go | 107 ++ external/yq/pkg/yqlib/operator_env.go | 90 ++ external/yq/pkg/yqlib/operator_env_test.go | 170 +++ external/yq/pkg/yqlib/operator_equals.go | 54 + external/yq/pkg/yqlib/operator_equals_test.go | 190 +++ external/yq/pkg/yqlib/operator_error.go | 20 + external/yq/pkg/yqlib/operator_error_test.go | 40 + external/yq/pkg/yqlib/operator_eval.go | 42 + external/yq/pkg/yqlib/operator_eval_test.go | 34 + external/yq/pkg/yqlib/operator_expression.go | 16 + external/yq/pkg/yqlib/operator_file.go | 38 + external/yq/pkg/yqlib/operator_file_test.go | 57 + external/yq/pkg/yqlib/operator_flatten.go | 54 + .../yq/pkg/yqlib/operator_flatten_test.go | 48 + external/yq/pkg/yqlib/operator_group_by.go | 76 + .../yq/pkg/yqlib/operator_group_by_test.go | 31 + external/yq/pkg/yqlib/operator_has.go | 59 + external/yq/pkg/yqlib/operator_has_test.go | 81 + external/yq/pkg/yqlib/operator_keys.go | 85 ++ external/yq/pkg/yqlib/operator_keys_test.go | 119 ++ external/yq/pkg/yqlib/operator_length.go | 39 + external/yq/pkg/yqlib/operator_length_test.go | 66 + external/yq/pkg/yqlib/operator_line.go | 23 + external/yq/pkg/yqlib/operator_line_test.go | 47 + external/yq/pkg/yqlib/operator_load.go | 97 ++ external/yq/pkg/yqlib/operator_load_test.go | 107 ++ external/yq/pkg/yqlib/operator_map.go | 64 + external/yq/pkg/yqlib/operator_map_test.go | 51 + external/yq/pkg/yqlib/operator_multiply.go | 203 +++ .../yq/pkg/yqlib/operator_multiply_test.go | 589 ++++++++ external/yq/pkg/yqlib/operator_parent.go | 19 + external/yq/pkg/yqlib/operator_parent_test.go | 37 + external/yq/pkg/yqlib/operator_path.go | 172 +++ external/yq/pkg/yqlib/operator_path_test.go | 146 ++ external/yq/pkg/yqlib/operator_pick.go | 86 ++ external/yq/pkg/yqlib/operator_pick_test.go | 60 + external/yq/pkg/yqlib/operator_pipe.go | 18 + external/yq/pkg/yqlib/operator_pipe_test.go | 31 + .../pkg/yqlib/operator_recursive_descent.go | 50 + .../yqlib/operator_recursive_descent_test.go | 237 +++ external/yq/pkg/yqlib/operator_reduce.go | 57 + external/yq/pkg/yqlib/operator_reduce_test.go | 40 + external/yq/pkg/yqlib/operator_reverse.go | 34 + .../yq/pkg/yqlib/operator_reverse_test.go | 63 + external/yq/pkg/yqlib/operator_select.go | 41 + external/yq/pkg/yqlib/operator_select_test.go | 150 ++ external/yq/pkg/yqlib/operator_self.go | 5 + external/yq/pkg/yqlib/operator_slice.go | 72 + external/yq/pkg/yqlib/operator_slice_test.go | 90 ++ external/yq/pkg/yqlib/operator_sort.go | 165 ++ external/yq/pkg/yqlib/operator_sort_keys.go | 52 + .../yq/pkg/yqlib/operator_sort_keys_test.go | 40 + external/yq/pkg/yqlib/operator_sort_test.go | 106 ++ .../yq/pkg/yqlib/operator_split_document.go | 14 + .../pkg/yqlib/operator_split_document_test.go | 32 + external/yq/pkg/yqlib/operator_strings.go | 444 ++++++ .../yq/pkg/yqlib/operator_strings_test.go | 277 ++++ external/yq/pkg/yqlib/operator_style.go | 108 ++ external/yq/pkg/yqlib/operator_style_test.go | 156 ++ external/yq/pkg/yqlib/operator_subtract.go | 162 ++ .../yq/pkg/yqlib/operator_subtract_test.go | 168 +++ external/yq/pkg/yqlib/operator_tag.go | 63 + external/yq/pkg/yqlib/operator_tag_test.go | 90 ++ .../yq/pkg/yqlib/operator_traverse_path.go | 331 ++++ .../pkg/yqlib/operator_traverse_path_test.go | 561 +++++++ external/yq/pkg/yqlib/operator_union.go | 44 + external/yq/pkg/yqlib/operator_union_test.go | 56 + external/yq/pkg/yqlib/operator_unique.go | 64 + external/yq/pkg/yqlib/operator_unique_test.go | 74 + external/yq/pkg/yqlib/operator_value.go | 6 + external/yq/pkg/yqlib/operator_value_test.go | 169 +++ external/yq/pkg/yqlib/operator_variables.go | 42 + .../yq/pkg/yqlib/operator_variables_test.go | 76 + external/yq/pkg/yqlib/operator_with.go | 34 + external/yq/pkg/yqlib/operator_with_test.go | 48 + external/yq/pkg/yqlib/operators.go | 215 +++ external/yq/pkg/yqlib/operators_test.go | 360 +++++ external/yq/pkg/yqlib/printer.go | 167 ++ external/yq/pkg/yqlib/printer_test.go | 338 +++++ external/yq/pkg/yqlib/printer_writer.go | 85 ++ external/yq/pkg/yqlib/properties_test.go | 350 +++++ external/yq/pkg/yqlib/stream_evaluator.go | 119 ++ external/yq/pkg/yqlib/string_evaluator.go | 73 + .../yq/pkg/yqlib/string_evaluator_test.go | 30 + external/yq/pkg/yqlib/utils.go | 63 + .../yq/pkg/yqlib/write_in_place_handler.go | 52 + external/yq/pkg/yqlib/xml.go | 29 + external/yq/pkg/yqlib/xml_test.go | 660 ++++++++ external/yq/pkg/yqlib/yaml.go | 19 + external/yq/release_instructions.txt | 52 + external/yq/release_notes.txt | 269 ++++ external/yq/scripts/acceptance.sh | 10 + external/yq/scripts/check.sh | 12 + external/yq/scripts/copy-docs.sh | 5 + external/yq/scripts/coverage.sh | 6 + external/yq/scripts/devtools.sh | 5 + external/yq/scripts/extract-checksum.sh | 60 + external/yq/scripts/format.sh | 5 + external/yq/scripts/generate-man-page-md.sh | 16 + external/yq/scripts/generate-man-page.sh | 11 + external/yq/scripts/install-man-page.sh | 14 + external/yq/scripts/release-deb.sh | 264 ++++ external/yq/scripts/secure.sh | 11 + external/yq/scripts/setup.sh | 92 ++ external/yq/scripts/shunit2 | 1343 +++++++++++++++++ external/yq/scripts/test-docker.sh | 5 + external/yq/scripts/test.sh | 3 + external/yq/scripts/xcompile.sh | 24 + external/yq/snap/snapcraft.yaml | 22 + external/yq/test/utils.go | 72 + external/yq/utf8.csv | 3 + external/yq/yq.go | 25 + external/yq/yq_linux_amd64 | Bin 0 -> 9875900 bytes nodes/orchestration/CMakeLists.txt | 2 +- nodes/orchestration/main.cc | 4 +- nodes/orchestration/package/CMakeLists.txt | 3 + .../package/local-default-policy.yaml | 85 ++ .../package/orchestration_package.sh | 12 + 406 files changed, 37980 insertions(+), 35 deletions(-) rename components/include/{i_k8s_policy_gen.h => i_local_policy_mgmt_gen.h} (87%) rename components/include/{k8s_policy_gen.h => local_policy_mgmt_gen.h} (76%) delete mode 100644 components/security_apps/orchestration/k8s_policy_gen/CMakeLists.txt create mode 100644 components/security_apps/orchestration/local_policy_mgmt_gen/CMakeLists.txt rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/appsec_practice_section.h (92%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/exceptions_section.h (100%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/ingress_data.h (100%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/k8s_policy_common.h (97%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/rules_config_section.h (100%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/settings_section.h (100%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/snort_section.h (100%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/triggers_section.h (97%) rename components/security_apps/orchestration/{k8s_policy_gen => local_policy_mgmt_gen}/include/trusted_sources_section.h (85%) rename components/security_apps/orchestration/{k8s_policy_gen/k8s_policy_gen.cc => local_policy_mgmt_gen/local_policy_mgmt_gen.cc} (98%) create mode 100755 external/yq/.dockerignore create mode 100755 external/yq/.golangci.yml create mode 100755 external/yq/CMakeLists.txt create mode 100755 external/yq/CODE_OF_CONDUCT.md create mode 100755 external/yq/CONTRIBUTING.md create mode 100755 external/yq/Dockerfile create mode 100755 external/yq/Dockerfile.dev create mode 100755 external/yq/LICENSE create mode 100755 external/yq/Makefile.variables create mode 100755 external/yq/README.md create mode 100755 external/yq/acceptance_tests/bad_args.sh create mode 100755 external/yq/acceptance_tests/basic.sh create mode 100755 external/yq/acceptance_tests/completion.sh create mode 100755 external/yq/acceptance_tests/empty.sh create mode 100755 external/yq/acceptance_tests/front-matter.sh create mode 100755 external/yq/acceptance_tests/header-processing-off.sh create mode 100755 external/yq/acceptance_tests/inputs-format.sh create mode 100755 external/yq/acceptance_tests/leading-seperator.sh create mode 100755 external/yq/acceptance_tests/load-file.sh create mode 100755 external/yq/acceptance_tests/output-format.sh create mode 100755 external/yq/acceptance_tests/pipe.sh create mode 100755 external/yq/acceptance_tests/pretty-print.sh create mode 100755 external/yq/acceptance_tests/split-printer.sh create mode 100755 external/yq/action.yml create mode 100755 external/yq/cmd/constant.go create mode 100755 external/yq/cmd/evaluate_all_command.go create mode 100755 external/yq/cmd/evalute_sequence_command.go create mode 100755 external/yq/cmd/root.go create mode 100755 external/yq/cmd/shell-completion.go create mode 100755 external/yq/cmd/unwrap_flag.go create mode 100755 external/yq/cmd/utils.go create mode 100755 external/yq/cmd/version.go create mode 100755 external/yq/cmd/version_test.go create mode 100755 external/yq/debian/changelog create mode 100755 external/yq/debian/compat create mode 100755 external/yq/debian/control create mode 100755 external/yq/debian/copyright create mode 100755 external/yq/debian/gbp.conf create mode 100755 external/yq/debian/rules create mode 100755 external/yq/debian/source/format create mode 100755 external/yq/debian/yq.dirs create mode 100755 external/yq/examples/array.yaml create mode 100755 external/yq/examples/bad.yaml create mode 100755 external/yq/examples/base64.txt create mode 100755 external/yq/examples/data1-no-comments.yaml create mode 100755 external/yq/examples/data1.yaml create mode 100755 external/yq/examples/data2.yaml create mode 100755 external/yq/examples/data3.yaml create mode 100755 external/yq/examples/empty-no-comment.yaml create mode 100755 external/yq/examples/empty.yaml create mode 100755 external/yq/examples/example.properties create mode 100755 external/yq/examples/front-matter.yaml create mode 100755 external/yq/examples/instruction_sample.yaml create mode 100755 external/yq/examples/leading-seperator.yaml create mode 100755 external/yq/examples/merge-anchor.yaml create mode 100755 external/yq/examples/mike.xml create mode 100755 external/yq/examples/mike2.xml create mode 100755 external/yq/examples/multiline-text.yaml create mode 100755 external/yq/examples/multiple_docs.yaml create mode 100755 external/yq/examples/multiple_docs_small.yaml create mode 100755 external/yq/examples/numbered_keys.yml create mode 100755 external/yq/examples/order.yaml create mode 100755 external/yq/examples/order.yml create mode 100755 external/yq/examples/sample.json create mode 100755 external/yq/examples/sample.yaml create mode 100755 external/yq/examples/sample_array.yaml create mode 100755 external/yq/examples/sample_array_2.yaml create mode 100755 external/yq/examples/sample_objects.csv create mode 100755 external/yq/examples/sample_text.yaml create mode 100755 external/yq/examples/simple-anchor-exploded.yaml create mode 100755 external/yq/examples/simple-anchor.yaml create mode 100755 external/yq/examples/small.properties create mode 100755 external/yq/examples/small.xml create mode 100755 external/yq/examples/thing.yml create mode 100755 external/yq/github-action/Dockerfile create mode 100755 external/yq/github-action/entrypoint.sh create mode 100755 external/yq/go.sum create mode 100755 external/yq/how-it-works.md create mode 100755 external/yq/mkdocs.yml create mode 100755 external/yq/pkg/yqlib/all_at_once_evaluator.go create mode 100755 external/yq/pkg/yqlib/all_at_once_evaluator_test.go create mode 100755 external/yq/pkg/yqlib/candidate_node.go create mode 100755 external/yq/pkg/yqlib/color_print.go create mode 100755 external/yq/pkg/yqlib/compare_operators.go create mode 100755 external/yq/pkg/yqlib/compare_operators_test.go create mode 100755 external/yq/pkg/yqlib/context.go create mode 100755 external/yq/pkg/yqlib/csv_test.go create mode 100755 external/yq/pkg/yqlib/data_tree_navigator.go create mode 100755 external/yq/pkg/yqlib/decoder.go create mode 100755 external/yq/pkg/yqlib/decoder_base64.go create mode 100755 external/yq/pkg/yqlib/decoder_csv_object.go create mode 100755 external/yq/pkg/yqlib/decoder_json.go create mode 100755 external/yq/pkg/yqlib/decoder_properties.go create mode 100755 external/yq/pkg/yqlib/decoder_test.go create mode 100755 external/yq/pkg/yqlib/decoder_xml.go create mode 100755 external/yq/pkg/yqlib/decoder_yaml.go create mode 100755 external/yq/pkg/yqlib/doc/notification-snippet.md create mode 100755 external/yq/pkg/yqlib/doc/operators/add.md create mode 100755 external/yq/pkg/yqlib/doc/operators/alternative-default-value.md create mode 100755 external/yq/pkg/yqlib/doc/operators/anchor-and-alias-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/array-to-map.md create mode 100755 external/yq/pkg/yqlib/doc/operators/assign-update.md create mode 100755 external/yq/pkg/yqlib/doc/operators/boolean-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/collect-into-array.md create mode 100755 external/yq/pkg/yqlib/doc/operators/column.md create mode 100755 external/yq/pkg/yqlib/doc/operators/comment-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/compare.md create mode 100755 external/yq/pkg/yqlib/doc/operators/contains.md create mode 100755 external/yq/pkg/yqlib/doc/operators/create-collect-into-object.md create mode 100755 external/yq/pkg/yqlib/doc/operators/datetime.md create mode 100755 external/yq/pkg/yqlib/doc/operators/delete.md create mode 100755 external/yq/pkg/yqlib/doc/operators/document-index.md create mode 100755 external/yq/pkg/yqlib/doc/operators/encode-decode.md create mode 100755 external/yq/pkg/yqlib/doc/operators/entries.md create mode 100755 external/yq/pkg/yqlib/doc/operators/env-variable-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/equals.md create mode 100755 external/yq/pkg/yqlib/doc/operators/error.md create mode 100755 external/yq/pkg/yqlib/doc/operators/eval.md create mode 100755 external/yq/pkg/yqlib/doc/operators/file-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/flatten.md create mode 100755 external/yq/pkg/yqlib/doc/operators/group-by.md create mode 100755 external/yq/pkg/yqlib/doc/operators/has.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/Main.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/add.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/alternative-default-value.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/anchor-and-alias-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/array-to-map.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/assign-update.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/boolean-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/collect-into-array.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/column.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/comment-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/compare.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/contains.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/create-collect-into-object.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/datetime.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/delete.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/document-index.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/encode-decode.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/entries.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/env-variable-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/equals.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/error.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/eval.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/file-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/flatten.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/group-by.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/has.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/keys.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/length.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/line.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/load.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/map.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/multiply-merge.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/parent.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/path.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/pick.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/pipe.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/recursive-descent-glob.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/reduce.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/reverse.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/select.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/slice-array.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/sort-keys.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/sort.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/split-into-documents.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/string-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/style.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/subtract.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/tag.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/traverse-read.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/union.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/unique.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/variable-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/headers/with.md create mode 100755 external/yq/pkg/yqlib/doc/operators/keys.md create mode 100755 external/yq/pkg/yqlib/doc/operators/length.md create mode 100755 external/yq/pkg/yqlib/doc/operators/line.md create mode 100755 external/yq/pkg/yqlib/doc/operators/load.md create mode 100755 external/yq/pkg/yqlib/doc/operators/map.md create mode 100755 external/yq/pkg/yqlib/doc/operators/multiply-merge.md create mode 100755 external/yq/pkg/yqlib/doc/operators/parent.md create mode 100755 external/yq/pkg/yqlib/doc/operators/path.md create mode 100755 external/yq/pkg/yqlib/doc/operators/pick.md create mode 100755 external/yq/pkg/yqlib/doc/operators/pipe.md create mode 100755 external/yq/pkg/yqlib/doc/operators/recursive-descent-glob.md create mode 100755 external/yq/pkg/yqlib/doc/operators/reduce.md create mode 100755 external/yq/pkg/yqlib/doc/operators/reverse.md create mode 100755 external/yq/pkg/yqlib/doc/operators/select.md create mode 100755 external/yq/pkg/yqlib/doc/operators/slice-array.md create mode 100755 external/yq/pkg/yqlib/doc/operators/sort-keys.md create mode 100755 external/yq/pkg/yqlib/doc/operators/sort.md create mode 100755 external/yq/pkg/yqlib/doc/operators/split-into-documents.md create mode 100755 external/yq/pkg/yqlib/doc/operators/string-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/style.md create mode 100755 external/yq/pkg/yqlib/doc/operators/subtract.md create mode 100755 external/yq/pkg/yqlib/doc/operators/tag.md create mode 100755 external/yq/pkg/yqlib/doc/operators/traverse-read.md create mode 100755 external/yq/pkg/yqlib/doc/operators/union.md create mode 100755 external/yq/pkg/yqlib/doc/operators/unique.md create mode 100755 external/yq/pkg/yqlib/doc/operators/variable-operators.md create mode 100755 external/yq/pkg/yqlib/doc/operators/with.md create mode 100755 external/yq/pkg/yqlib/doc/usage/convert.md create mode 100755 external/yq/pkg/yqlib/doc/usage/csv-tsv.md create mode 100755 external/yq/pkg/yqlib/doc/usage/headers/convert.md create mode 100755 external/yq/pkg/yqlib/doc/usage/headers/csv-tsv.md create mode 100755 external/yq/pkg/yqlib/doc/usage/headers/properties.md create mode 100755 external/yq/pkg/yqlib/doc/usage/headers/xml.md create mode 100755 external/yq/pkg/yqlib/doc/usage/properties.md create mode 100755 external/yq/pkg/yqlib/doc/usage/xml.md create mode 100755 external/yq/pkg/yqlib/encoder.go create mode 100755 external/yq/pkg/yqlib/encoder_base64.go create mode 100755 external/yq/pkg/yqlib/encoder_csv.go create mode 100755 external/yq/pkg/yqlib/encoder_json.go create mode 100755 external/yq/pkg/yqlib/encoder_properties.go create mode 100755 external/yq/pkg/yqlib/encoder_properties_test.go create mode 100755 external/yq/pkg/yqlib/encoder_test.go create mode 100755 external/yq/pkg/yqlib/encoder_xml.go create mode 100755 external/yq/pkg/yqlib/encoder_yaml.go create mode 100755 external/yq/pkg/yqlib/expression_parser.go create mode 100755 external/yq/pkg/yqlib/expression_parser_test.go create mode 100755 external/yq/pkg/yqlib/expression_postfix.go create mode 100755 external/yq/pkg/yqlib/expression_processing_test.go create mode 100755 external/yq/pkg/yqlib/file_utils.go create mode 100755 external/yq/pkg/yqlib/front_matter.go create mode 100755 external/yq/pkg/yqlib/front_matter_test.go create mode 100755 external/yq/pkg/yqlib/json_test.go create mode 100755 external/yq/pkg/yqlib/lexer.go create mode 100755 external/yq/pkg/yqlib/lexer_participle.go create mode 100755 external/yq/pkg/yqlib/lexer_participle_test.go create mode 100755 external/yq/pkg/yqlib/lib.go create mode 100755 external/yq/pkg/yqlib/lib_test.go create mode 100755 external/yq/pkg/yqlib/matchKeyString.go create mode 100755 external/yq/pkg/yqlib/matchKeyString_test.go create mode 100755 external/yq/pkg/yqlib/operator_add.go create mode 100755 external/yq/pkg/yqlib/operator_add_test.go create mode 100755 external/yq/pkg/yqlib/operator_alternative.go create mode 100755 external/yq/pkg/yqlib/operator_alternative_test.go create mode 100755 external/yq/pkg/yqlib/operator_anchors_aliases.go create mode 100755 external/yq/pkg/yqlib/operator_anchors_aliases_test.go create mode 100755 external/yq/pkg/yqlib/operator_array_to_map_test.go create mode 100755 external/yq/pkg/yqlib/operator_assign.go create mode 100755 external/yq/pkg/yqlib/operator_assign_test.go create mode 100755 external/yq/pkg/yqlib/operator_booleans.go create mode 100755 external/yq/pkg/yqlib/operator_booleans_test.go create mode 100755 external/yq/pkg/yqlib/operator_collect.go create mode 100755 external/yq/pkg/yqlib/operator_collect_object.go create mode 100755 external/yq/pkg/yqlib/operator_collect_object_test.go create mode 100755 external/yq/pkg/yqlib/operator_collect_test.go create mode 100755 external/yq/pkg/yqlib/operator_column.go create mode 100755 external/yq/pkg/yqlib/operator_column_test.go create mode 100755 external/yq/pkg/yqlib/operator_comments.go create mode 100755 external/yq/pkg/yqlib/operator_comments_test.go create mode 100755 external/yq/pkg/yqlib/operator_contains.go create mode 100755 external/yq/pkg/yqlib/operator_contains_test.go create mode 100755 external/yq/pkg/yqlib/operator_create_map.go create mode 100755 external/yq/pkg/yqlib/operator_create_map_test.go create mode 100755 external/yq/pkg/yqlib/operator_datetime.go create mode 100755 external/yq/pkg/yqlib/operator_datetime_test.go create mode 100755 external/yq/pkg/yqlib/operator_delete.go create mode 100755 external/yq/pkg/yqlib/operator_delete_test.go create mode 100755 external/yq/pkg/yqlib/operator_document_index.go create mode 100755 external/yq/pkg/yqlib/operator_document_index_test.go create mode 100755 external/yq/pkg/yqlib/operator_encoder_decoder.go create mode 100755 external/yq/pkg/yqlib/operator_encoder_decoder_test.go create mode 100755 external/yq/pkg/yqlib/operator_entries.go create mode 100755 external/yq/pkg/yqlib/operator_entries_test.go create mode 100755 external/yq/pkg/yqlib/operator_env.go create mode 100755 external/yq/pkg/yqlib/operator_env_test.go create mode 100755 external/yq/pkg/yqlib/operator_equals.go create mode 100755 external/yq/pkg/yqlib/operator_equals_test.go create mode 100755 external/yq/pkg/yqlib/operator_error.go create mode 100755 external/yq/pkg/yqlib/operator_error_test.go create mode 100755 external/yq/pkg/yqlib/operator_eval.go create mode 100755 external/yq/pkg/yqlib/operator_eval_test.go create mode 100755 external/yq/pkg/yqlib/operator_expression.go create mode 100755 external/yq/pkg/yqlib/operator_file.go create mode 100755 external/yq/pkg/yqlib/operator_file_test.go create mode 100755 external/yq/pkg/yqlib/operator_flatten.go create mode 100755 external/yq/pkg/yqlib/operator_flatten_test.go create mode 100755 external/yq/pkg/yqlib/operator_group_by.go create mode 100755 external/yq/pkg/yqlib/operator_group_by_test.go create mode 100755 external/yq/pkg/yqlib/operator_has.go create mode 100755 external/yq/pkg/yqlib/operator_has_test.go create mode 100755 external/yq/pkg/yqlib/operator_keys.go create mode 100755 external/yq/pkg/yqlib/operator_keys_test.go create mode 100755 external/yq/pkg/yqlib/operator_length.go create mode 100755 external/yq/pkg/yqlib/operator_length_test.go create mode 100755 external/yq/pkg/yqlib/operator_line.go create mode 100755 external/yq/pkg/yqlib/operator_line_test.go create mode 100755 external/yq/pkg/yqlib/operator_load.go create mode 100755 external/yq/pkg/yqlib/operator_load_test.go create mode 100755 external/yq/pkg/yqlib/operator_map.go create mode 100755 external/yq/pkg/yqlib/operator_map_test.go create mode 100755 external/yq/pkg/yqlib/operator_multiply.go create mode 100755 external/yq/pkg/yqlib/operator_multiply_test.go create mode 100755 external/yq/pkg/yqlib/operator_parent.go create mode 100755 external/yq/pkg/yqlib/operator_parent_test.go create mode 100755 external/yq/pkg/yqlib/operator_path.go create mode 100755 external/yq/pkg/yqlib/operator_path_test.go create mode 100755 external/yq/pkg/yqlib/operator_pick.go create mode 100755 external/yq/pkg/yqlib/operator_pick_test.go create mode 100755 external/yq/pkg/yqlib/operator_pipe.go create mode 100755 external/yq/pkg/yqlib/operator_pipe_test.go create mode 100755 external/yq/pkg/yqlib/operator_recursive_descent.go create mode 100755 external/yq/pkg/yqlib/operator_recursive_descent_test.go create mode 100755 external/yq/pkg/yqlib/operator_reduce.go create mode 100755 external/yq/pkg/yqlib/operator_reduce_test.go create mode 100755 external/yq/pkg/yqlib/operator_reverse.go create mode 100755 external/yq/pkg/yqlib/operator_reverse_test.go create mode 100755 external/yq/pkg/yqlib/operator_select.go create mode 100755 external/yq/pkg/yqlib/operator_select_test.go create mode 100755 external/yq/pkg/yqlib/operator_self.go create mode 100755 external/yq/pkg/yqlib/operator_slice.go create mode 100755 external/yq/pkg/yqlib/operator_slice_test.go create mode 100755 external/yq/pkg/yqlib/operator_sort.go create mode 100755 external/yq/pkg/yqlib/operator_sort_keys.go create mode 100755 external/yq/pkg/yqlib/operator_sort_keys_test.go create mode 100755 external/yq/pkg/yqlib/operator_sort_test.go create mode 100755 external/yq/pkg/yqlib/operator_split_document.go create mode 100755 external/yq/pkg/yqlib/operator_split_document_test.go create mode 100755 external/yq/pkg/yqlib/operator_strings.go create mode 100755 external/yq/pkg/yqlib/operator_strings_test.go create mode 100755 external/yq/pkg/yqlib/operator_style.go create mode 100755 external/yq/pkg/yqlib/operator_style_test.go create mode 100755 external/yq/pkg/yqlib/operator_subtract.go create mode 100755 external/yq/pkg/yqlib/operator_subtract_test.go create mode 100755 external/yq/pkg/yqlib/operator_tag.go create mode 100755 external/yq/pkg/yqlib/operator_tag_test.go create mode 100755 external/yq/pkg/yqlib/operator_traverse_path.go create mode 100755 external/yq/pkg/yqlib/operator_traverse_path_test.go create mode 100755 external/yq/pkg/yqlib/operator_union.go create mode 100755 external/yq/pkg/yqlib/operator_union_test.go create mode 100755 external/yq/pkg/yqlib/operator_unique.go create mode 100755 external/yq/pkg/yqlib/operator_unique_test.go create mode 100755 external/yq/pkg/yqlib/operator_value.go create mode 100755 external/yq/pkg/yqlib/operator_value_test.go create mode 100755 external/yq/pkg/yqlib/operator_variables.go create mode 100755 external/yq/pkg/yqlib/operator_variables_test.go create mode 100755 external/yq/pkg/yqlib/operator_with.go create mode 100755 external/yq/pkg/yqlib/operator_with_test.go create mode 100755 external/yq/pkg/yqlib/operators.go create mode 100755 external/yq/pkg/yqlib/operators_test.go create mode 100755 external/yq/pkg/yqlib/printer.go create mode 100755 external/yq/pkg/yqlib/printer_test.go create mode 100755 external/yq/pkg/yqlib/printer_writer.go create mode 100755 external/yq/pkg/yqlib/properties_test.go create mode 100755 external/yq/pkg/yqlib/stream_evaluator.go create mode 100755 external/yq/pkg/yqlib/string_evaluator.go create mode 100755 external/yq/pkg/yqlib/string_evaluator_test.go create mode 100755 external/yq/pkg/yqlib/utils.go create mode 100755 external/yq/pkg/yqlib/write_in_place_handler.go create mode 100755 external/yq/pkg/yqlib/xml.go create mode 100755 external/yq/pkg/yqlib/xml_test.go create mode 100755 external/yq/pkg/yqlib/yaml.go create mode 100755 external/yq/release_instructions.txt create mode 100755 external/yq/release_notes.txt create mode 100755 external/yq/scripts/acceptance.sh create mode 100755 external/yq/scripts/check.sh create mode 100755 external/yq/scripts/copy-docs.sh create mode 100755 external/yq/scripts/coverage.sh create mode 100755 external/yq/scripts/devtools.sh create mode 100755 external/yq/scripts/extract-checksum.sh create mode 100755 external/yq/scripts/format.sh create mode 100755 external/yq/scripts/generate-man-page-md.sh create mode 100755 external/yq/scripts/generate-man-page.sh create mode 100755 external/yq/scripts/install-man-page.sh create mode 100755 external/yq/scripts/release-deb.sh create mode 100755 external/yq/scripts/secure.sh create mode 100755 external/yq/scripts/setup.sh create mode 100755 external/yq/scripts/shunit2 create mode 100755 external/yq/scripts/test-docker.sh create mode 100755 external/yq/scripts/test.sh create mode 100755 external/yq/scripts/xcompile.sh create mode 100755 external/yq/snap/snapcraft.yaml create mode 100755 external/yq/test/utils.go create mode 100755 external/yq/utf8.csv create mode 100755 external/yq/yq.go create mode 100755 external/yq/yq_linux_amd64 create mode 100644 nodes/orchestration/package/local-default-policy.yaml diff --git a/components/include/i_k8s_policy_gen.h b/components/include/i_local_policy_mgmt_gen.h similarity index 87% rename from components/include/i_k8s_policy_gen.h rename to components/include/i_local_policy_mgmt_gen.h index ad4ddd2..ddf2e6c 100755 --- a/components/include/i_k8s_policy_gen.h +++ b/components/include/i_local_policy_mgmt_gen.h @@ -11,8 +11,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef __I_K8S_POLICY_GEN_H__ -#define __I_K8S_POLICY_GEN_H__ +#ifndef __I_LOCAL_POLICY_MGMT_GEN_H__ +#define __I_LOCAL_POLICY_MGMT_GEN_H__ class I_K8S_Policy_Gen { @@ -24,4 +24,4 @@ protected: ~I_K8S_Policy_Gen() {} }; -#endif //__I_K8S_POLICY_GEN_H__ +#endif //__I_LOCAL_POLICY_MGMT_GEN_H__ diff --git a/components/include/k8s_policy_gen.h b/components/include/local_policy_mgmt_gen.h similarity index 76% rename from components/include/k8s_policy_gen.h rename to components/include/local_policy_mgmt_gen.h index 2588cab..b22a6fa 100644 --- a/components/include/k8s_policy_gen.h +++ b/components/include/local_policy_mgmt_gen.h @@ -11,26 +11,26 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef __K8S_POLICY_GEN_H__ -#define __K8S_POLICY_GEN_H__ +#ifndef __LOCAL_POLICY_MGMT_GEN_H__ +#define __LOCAL_POLICY_MGMT_GEN_H__ #include "config.h" #include "component.h" #include "i_mainloop.h" #include "i_environment.h" -#include "i_k8s_policy_gen.h" +#include "i_local_policy_mgmt_gen.h" -class K8sPolicyGenerator +class LocalPolicyMgmtGenerator : public Component, - Singleton::Provide, + Singleton::Provide, Singleton::Consume, Singleton::Consume, Singleton::Consume { public: - K8sPolicyGenerator(); - ~K8sPolicyGenerator(); + LocalPolicyMgmtGenerator(); + ~LocalPolicyMgmtGenerator(); void preload() override; @@ -41,4 +41,4 @@ private: std::unique_ptr pimpl; }; -#endif // __K8S_POLICY_GEN_H__ +#endif // __LOCAL_POLICY_MGMT_GEN_H__ diff --git a/components/security_apps/orchestration/CMakeLists.txt b/components/security_apps/orchestration/CMakeLists.txt index 5f46818..a0f5954 100755 --- a/components/security_apps/orchestration/CMakeLists.txt +++ b/components/security_apps/orchestration/CMakeLists.txt @@ -12,6 +12,6 @@ add_subdirectory(manifest_controller) add_subdirectory(update_communication) add_subdirectory(details_resolver) add_subdirectory(health_check) -add_subdirectory(k8s_policy_gen) +add_subdirectory(local_policy_mgmt_gen) add_subdirectory(orchestration_ut) diff --git a/components/security_apps/orchestration/include/hybrid_communication.h b/components/security_apps/orchestration/include/hybrid_communication.h index 9c504aa..a582cc1 100755 --- a/components/security_apps/orchestration/include/hybrid_communication.h +++ b/components/security_apps/orchestration/include/hybrid_communication.h @@ -23,7 +23,7 @@ #include "singleton.h" #include "i_update_communication.h" #include "fog_authenticator.h" -#include "i_k8s_policy_gen.h" +#include "i_local_policy_mgmt_gen.h" #include "i_orchestration_tools.h" #include "i_agent_details.h" #include "i_orchestration_status.h" @@ -39,7 +39,7 @@ class HybridCommunication : public FogAuthenticator, - Singleton::Consume + Singleton::Consume { public: virtual void init() override; diff --git a/components/security_apps/orchestration/k8s_policy_gen/CMakeLists.txt b/components/security_apps/orchestration/k8s_policy_gen/CMakeLists.txt deleted file mode 100644 index 63c8a99..0000000 --- a/components/security_apps/orchestration/k8s_policy_gen/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_library(k8s_policy_gen k8s_policy_gen.cc) diff --git a/components/security_apps/orchestration/local_policy_mgmt_gen/CMakeLists.txt b/components/security_apps/orchestration/local_policy_mgmt_gen/CMakeLists.txt new file mode 100644 index 0000000..7232b08 --- /dev/null +++ b/components/security_apps/orchestration/local_policy_mgmt_gen/CMakeLists.txt @@ -0,0 +1 @@ +add_library(local_policy_mgmt_gen local_policy_mgmt_gen.cc) diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/appsec_practice_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/appsec_practice_section.h similarity index 92% rename from components/security_apps/orchestration/k8s_policy_gen/include/appsec_practice_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/appsec_practice_section.h index 5174ead..640dcab 100644 --- a/components/security_apps/orchestration/k8s_policy_gen/include/appsec_practice_section.h +++ b/components/security_apps/orchestration/local_policy_mgmt_gen/include/appsec_practice_section.h @@ -24,6 +24,7 @@ #include "customized_cereal_map.h" #include "k8s_policy_common.h" #include "triggers_section.h" +#include "exceptions_section.h" #include "trusted_sources_section.h" USE_DEBUG_FLAG(D_K8S_POLICY); @@ -316,18 +317,21 @@ public: parseAppsecJSONKey("snort-signatures", snort_signatures, archive_in); parseAppsecJSONKey("web-attacks", web_attacks, archive_in); parseAppsecJSONKey("anti-bot", anti_bot, archive_in); + parseAppsecJSONKey("name", practice_name, archive_in); } const AppSecPracticeOpenSchemaAPI & getOpenSchemaValidation() const { return openapi_schema_validation; } const AppSecPracticeSnortSignatures & getSnortSignatures() const { return snort_signatures; } const AppSecPracticeWebAttacks & getWebAttacks() const { return web_attacks; } const AppSecPracticeAntiBot & getAntiBot() const { return anti_bot; } + const std::string & getName() const { return practice_name; } private: AppSecPracticeOpenSchemaAPI openapi_schema_validation; AppSecPracticeSnortSignatures snort_signatures; AppSecPracticeWebAttacks web_attacks; AppSecPracticeAntiBot anti_bot; + std::string practice_name; }; std::ostream & @@ -753,6 +757,54 @@ private: std::vector specific_rules; }; +class AppsecLinuxPolicy : Singleton::Consume +{ +public: + void + serialize(cereal::JSONInputArchive &archive_in) + { + dbgTrace(D_K8S_POLICY) << "Loading AppSec policy spec"; + parseAppsecJSONKey("policies", policies, archive_in); + parseAppsecJSONKey>("practices", practices, archive_in); + parseAppsecJSONKey>("logtriggers", log_triggers, archive_in); + parseAppsecJSONKey>("customresponses", custom_responses, archive_in); + parseAppsecJSONKey>("exceptions", exceptions, archive_in); + parseAppsecJSONKey>("trustedsources", trusted_sources, archive_in); + parseAppsecJSONKey>( + "sourceidentifiers", + sources_identifier, + archive_in + ); + } + + const AppsecPolicySpec & getAppsecPolicySpec() const { return policies; } + + const std::vector & getAppSecPracticeSpecs() const { return practices; } + + const std::vector & getAppsecTriggerSpecs() const { return log_triggers; } + + const std::vector & getAppSecCustomResponseSpecs() const { return custom_responses; } + + const std::vector & getAppsecExceptionSpecs() const { return exceptions; } + + const std::vector & getAppsecTrustedSourceSpecs() const { return trusted_sources; } + + const std::vector & + getAppsecSourceIdentifierSpecs() const + { + return sources_identifier; + } + +private: + AppsecPolicySpec policies; + std::vector practices; + std::vector log_triggers; + std::vector custom_responses; + std::vector exceptions; + std::vector trusted_sources; + std::vector sources_identifier; +}; + std::ostream & operator<<(std::ostream &os, const AppsecPolicySpec &obj) { diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/exceptions_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/exceptions_section.h similarity index 100% rename from components/security_apps/orchestration/k8s_policy_gen/include/exceptions_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/exceptions_section.h diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/ingress_data.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/ingress_data.h similarity index 100% rename from components/security_apps/orchestration/k8s_policy_gen/include/ingress_data.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/ingress_data.h diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/k8s_policy_common.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/k8s_policy_common.h similarity index 97% rename from components/security_apps/orchestration/k8s_policy_gen/include/k8s_policy_common.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/k8s_policy_common.h index f7ebde3..040be25 100644 --- a/components/security_apps/orchestration/k8s_policy_gen/include/k8s_policy_common.h +++ b/components/security_apps/orchestration/local_policy_mgmt_gen/include/k8s_policy_common.h @@ -77,6 +77,9 @@ template class AppsecSpecParser : public ClientRest { public: + AppsecSpecParser() = default; + AppsecSpecParser(const T &_spec) : spec(_spec) {} + bool loadJson(const std::string &json) { diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/rules_config_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/rules_config_section.h similarity index 100% rename from components/security_apps/orchestration/k8s_policy_gen/include/rules_config_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/rules_config_section.h diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/settings_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/settings_section.h similarity index 100% rename from components/security_apps/orchestration/k8s_policy_gen/include/settings_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/settings_section.h diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/snort_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/snort_section.h similarity index 100% rename from components/security_apps/orchestration/k8s_policy_gen/include/snort_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/snort_section.h diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/triggers_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/triggers_section.h similarity index 97% rename from components/security_apps/orchestration/k8s_policy_gen/include/triggers_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/triggers_section.h index 8761f37..c704937 100644 --- a/components/security_apps/orchestration/k8s_policy_gen/include/triggers_section.h +++ b/components/security_apps/orchestration/local_policy_mgmt_gen/include/triggers_section.h @@ -200,7 +200,7 @@ private: int response_code; }; -class AppSecWebUserResponseSpec +class AppSecCustomResponseSpec { public: void @@ -209,6 +209,8 @@ public: dbgTrace(D_K8S_POLICY) << "Loading AppSec web user response spec"; parseAppsecJSONKey("http-response-code", httpResponseCode, archive_in, 403); parseAppsecJSONKey("mode", mode, archive_in, "block-page"); + parseAppsecJSONKey("name", name, archive_in); + if (mode == "block-page") { parseAppsecJSONKey( "message-body", @@ -229,16 +231,18 @@ public: const std::string & getMessageBody() const { return messageBody; } const std::string & getMessageTitle() const { return messageTitle; } const std::string & getMode() const { return mode; } + const std::string & getName() const { return name; } private: int httpResponseCode; std::string messageBody; std::string messageTitle; std::string mode; + std::string name; }; std::ostream & -operator<<(std::ostream &os, const AppSecWebUserResponseSpec &obj) +operator<<(std::ostream &os, const AppSecCustomResponseSpec &obj) { os << "mode: " @@ -467,7 +471,7 @@ public: void load(cereal::JSONInputArchive &archive_in) { - dbgError(D_K8S_POLICY) << "AppsecTriggerLogDestination load"; + dbgTrace(D_K8S_POLICY) << "Loading AppSec Trigger LogDestination"; // TBD: support "file" parseAppsecJSONKey("cloud", cloud, archive_in, false); @@ -547,6 +551,7 @@ public: parseAppsecJSONKey("appsec-logging", appsec_logging, archive_in); parseAppsecJSONKey("extended-logging", extended_logging, archive_in); parseAppsecJSONKey("log-destination", log_destination, archive_in); + parseAppsecJSONKey("name", name, archive_in); } const AppsecTriggerAccessControlLogging & @@ -555,6 +560,12 @@ public: return access_control_logging; } + const std::string & + getName() const + { + return name; + } + const AppsecTriggerAdditionalSuspiciousEventsLogging & getAppsecTriggerAdditionalSuspiciousEventsLogging() const { @@ -585,6 +596,7 @@ private: AppsecTriggerLogging appsec_logging; AppsecTriggerExtendedLogging extended_logging; AppsecTriggerLogDestination log_destination; + std::string name; }; std::ostream & diff --git a/components/security_apps/orchestration/k8s_policy_gen/include/trusted_sources_section.h b/components/security_apps/orchestration/local_policy_mgmt_gen/include/trusted_sources_section.h similarity index 85% rename from components/security_apps/orchestration/k8s_policy_gen/include/trusted_sources_section.h rename to components/security_apps/orchestration/local_policy_mgmt_gen/include/trusted_sources_section.h index 318c6d4..aca3b57 100755 --- a/components/security_apps/orchestration/k8s_policy_gen/include/trusted_sources_section.h +++ b/components/security_apps/orchestration/local_policy_mgmt_gen/include/trusted_sources_section.h @@ -35,6 +35,7 @@ public: dbgTrace(D_K8S_POLICY) << "Loading trusted sources spec"; parseAppsecJSONKey("minNumOfSources", min_num_of_sources, archive_in, 3); parseAppsecJSONKey>("sourcesIdentifiers", sources_identifiers, archive_in); + parseAppsecJSONKey("name", name, archive_in); } int @@ -49,8 +50,15 @@ public: return sources_identifiers; } + const std::string & + getName() const + { + return name; + } + private: int min_num_of_sources; + std::string name; std::vector sources_identifiers; }; @@ -123,6 +131,34 @@ private: std::vector value; }; +class SourceIdentifierSpecWrapper +{ +public: + void + load(cereal::JSONInputArchive &archive_in) + { + dbgTrace(D_K8S_POLICY) << "Loading Source Identifier Spec Wrapper"; + parseAppsecJSONKey>("identifiers", identifiers, archive_in); + parseAppsecJSONKey("name", name, archive_in); + } + + const std::string & + getName() const + { + return name; + } + + const std::vector & + getIdentifiers() const + { + return identifiers; + } + +private: + std::string name; + std::vector identifiers; +}; + std::ostream & operator<<(std::ostream &os, const SourceIdentifierSpec &obj) { diff --git a/components/security_apps/orchestration/k8s_policy_gen/k8s_policy_gen.cc b/components/security_apps/orchestration/local_policy_mgmt_gen/local_policy_mgmt_gen.cc similarity index 98% rename from components/security_apps/orchestration/k8s_policy_gen/k8s_policy_gen.cc rename to components/security_apps/orchestration/local_policy_mgmt_gen/local_policy_mgmt_gen.cc index 9eef08a..d411205 100644 --- a/components/security_apps/orchestration/k8s_policy_gen/k8s_policy_gen.cc +++ b/components/security_apps/orchestration/local_policy_mgmt_gen/local_policy_mgmt_gen.cc @@ -363,8 +363,17 @@ public: default_rule.getTrustedSources() : parsed_rule.getTrustedSources(); - string url = asset_name.substr(0, asset_name.find("/")); - string uri = asset_name.substr(asset_name.find("/")); + auto pos = asset_name.find("/"); + string url; + string uri; + if (pos != string::npos) { + url = asset_name.substr(0, asset_name.find("/")); + uri = asset_name.substr(asset_name.find("/")); + } else { + url = asset_name; + uri = ""; + } + if (specific_assets_from_ingress.find({url, uri}) != specific_assets_from_ingress.end()) { // Erasing the current asset from the specific assets, because it won't have default policy specific_assets_from_ingress.erase({url, uri}); @@ -435,7 +444,7 @@ public: } practice_map.emplace(practice_annotation_name, appsec_practice.getSpec()); dbgTrace(D_K8S_POLICY) - << "Successfully retrieved AppSec practice" + << "Successfully retrieved AppSec practice " << practice_annotation_name << appsec_practice.getSpec(); } @@ -450,6 +459,12 @@ public: if (exception_map.count(exception_annotation_name) > 0) { exception_id = exception_map.at(exception_annotation_name).getBehaviorId(); } + if (asset_name == "*") { + asset_name = "Any"; + url = "Any"; + uri = "Any"; + } + RulesConfigRulebase rules_config = createMultiRulesSections( url, uri, diff --git a/components/security_apps/orchestration/update_communication/hybrid_communication.cc b/components/security_apps/orchestration/update_communication/hybrid_communication.cc index 946af58..a7f9a8d 100755 --- a/components/security_apps/orchestration/update_communication/hybrid_communication.cc +++ b/components/security_apps/orchestration/update_communication/hybrid_communication.cc @@ -45,17 +45,17 @@ HybridCommunication::init() string HybridCommunication::getChecksum(const string &policy_version) { - dbgFlow(D_ORCHESTRATOR) << "Checking the policy Checksum"; string clean_plicy_version = policy_version; - if (!clean_plicy_version.empty() && clean_plicy_version[clean_plicy_version.size() - 1] == '\n') - clean_plicy_version.erase(clean_plicy_version.size() - 1); + if (!clean_plicy_version.empty() && clean_plicy_version[clean_plicy_version.size() - 1] == '\n') { + clean_plicy_version.erase(clean_plicy_version.size() - 1); + } - curr_policy = Singleton::Consume::by()->parsePolicy(clean_plicy_version); + curr_policy = Singleton::Consume::by()->parsePolicy(clean_plicy_version); I_OrchestrationTools *orchestration_tools = Singleton::Consume::by(); Maybe file_checksum = orchestration_tools->calculateChecksum( I_OrchestrationTools::SELECTED_CHECKSUM_TYPE, - Singleton::Consume::by()->getPolicyPath() + Singleton::Consume::by()->getPolicyPath() ); if (!file_checksum.ok()) { @@ -69,16 +69,59 @@ Maybe HybridCommunication::getNewVersion() { I_OrchestrationTools *orchestration_tools = Singleton::Consume::by(); - return orchestration_tools->readFile("/etc/cp/conf/k8s-policy-check.trigger"); + auto env = Singleton::Consume::by()->getEnvType(); + if (env == I_LocalPolicyMgmtGen::LocalPolicyEnv::K8S) { + return orchestration_tools->readFile("/etc/cp/conf/k8s-policy-check.trigger"); + } + + string policy_path = getConfigurationFlagWithDefault( + getFilesystemPathConfig() + "/conf/local_policy.yaml", + "local_mgmt_policy" + ); + + Maybe file_checksum = orchestration_tools->calculateChecksum( + I_OrchestrationTools::SELECTED_CHECKSUM_TYPE, + policy_path + ); + + if (!file_checksum.ok()) { + dbgWarning(D_ORCHESTRATOR) << "Policy checksum was not calculated: " << file_checksum.getErr(); + return genError(file_checksum.getErr()); + } + + return file_checksum.unpack(); } Maybe HybridCommunication::getUpdate(CheckUpdateRequest &request) { - dbgFlow(D_ORCHESTRATOR) << "Getting policy update in an Hybrid Communication"; + string manifest_checksum = ""; + dbgTrace(D_ORCHESTRATOR) << "Getting updates in Hybrid Communication"; + if (access_token.ok()) { + static const string check_update_str = "/api/v2/agents/resources"; + auto request_status = Singleton::Consume::by()->sendObject( + request, + HTTPMethod::POST, + fog_address_ex + check_update_str, + buildOAuth2Header((*access_token).getToken()) + ); + + if (!request_status) { + dbgWarning(D_ORCHESTRATOR) << "Failed to get response after check update request."; + return genError("Failed to request updates"); + } + + Maybe maybe_new_manifest = request.getManifest(); + manifest_checksum = maybe_new_manifest.ok() ? maybe_new_manifest.unpack() : ""; + } else { + dbgWarning(D_ORCHESTRATOR) << "Acccess Token not available."; + } + + dbgTrace(D_ORCHESTRATOR) << "Getting policy update in Hybrid Communication"; + auto maybe_new_version = getNewVersion(); if (!maybe_new_version.ok() || maybe_new_version == curr_version) { - request = CheckUpdateRequest("", "", "", "", "", ""); + request = CheckUpdateRequest(manifest_checksum, "", "", "", "", ""); dbgDebug(D_ORCHESTRATOR) << "No new version is currently available"; return Maybe(); } @@ -98,7 +141,7 @@ HybridCommunication::getUpdate(CheckUpdateRequest &request) << " policy: " << (policy_response.empty() ? "has no change," : "has new update," ); - request = CheckUpdateRequest("", policy_response, "", "", "", ""); + request = CheckUpdateRequest(manifest_checksum, policy_response, "", "", "", ""); curr_version = *maybe_new_version; return Maybe(); @@ -107,13 +150,35 @@ HybridCommunication::getUpdate(CheckUpdateRequest &request) Maybe HybridCommunication::downloadAttributeFile(const GetResourceFile &resourse_file) { - auto file_name = resourse_file.getFileName(); + dbgTrace(D_ORCHESTRATOR) + << "Downloading attribute file on hybrid mode, file name: " + << resourse_file.getFileName(); + + if (resourse_file.getFileName() == "policy") { + return curr_policy; + } + if (file_name.compare("policy") == 0) { return curr_policy; } - dbgWarning(D_ORCHESTRATOR) << "Failed downloading the attribute files"; + if (resourse_file.getFileName() == "manifest") { + if (!access_token.ok()) return genError("Acccess Token not available."); + + auto unpacked_access_token = access_token.unpack().getToken(); + + static const string file_attribute_str = "/api/v2/agents/resources/"; + Maybe attribute_file = Singleton::Consume::by()->downloadFile( + resourse_file, + resourse_file.getRequestMethod(), + fog_address_ex + file_attribute_str + resourse_file.getFileName(), + buildOAuth2Header((*access_token).getToken()) // Header + ); + return attribute_file; + } + + dbgTrace(D_ORCHESTRATOR) << "Unnecessary attribute files downloading on hybrid mode"; return string(""); } diff --git a/core/config/config.cc b/core/config/config.cc index f58163f..3e9cd69 100644 --- a/core/config/config.cc +++ b/core/config/config.cc @@ -99,6 +99,7 @@ public: vector getProfileAgentSettings(const string ®ex) const override; const string & getConfigurationFlag(const string &flag_name) const override; + const string & getConfigurationFlagWithDefault(const string &default_val, const string &flag_name) const override; const string & getFilesystemPathConfig() const override; const string & getLogFilesPathConfig() const override; @@ -423,6 +424,15 @@ ConfigComponent::Impl::getConfigurationFlag(const string &flag_name) const return not_found; } +const string & +ConfigComponent::Impl::getConfigurationFlagWithDefault(const string &default_val, const string &flag_name) const +{ + const string &val = getConfigurationFlag(flag_name); + if (!val.empty()) return val; + + return default_val; +} + const string & ConfigComponent::Impl::getFilesystemPathConfig() const { diff --git a/core/config/config_globals.cc b/core/config/config_globals.cc index 29feb43..506c04c 100644 --- a/core/config/config_globals.cc +++ b/core/config/config_globals.cc @@ -64,6 +64,13 @@ getConfigurationFlag(const string &flag) return Singleton::Consume::from()->getConfigurationFlag(flag); } +string +getConfigurationFlagWithDefault(const string &default_val, const string &flag) +{ + return + Singleton::Consume::from()->getConfigurationFlagWithDefault(default_val, flag); +} + const string & getFilesystemPathConfig() { diff --git a/core/include/services_sdk/resources/config.h b/core/include/services_sdk/resources/config.h index a454f17..cef5b69 100644 --- a/core/include/services_sdk/resources/config.h +++ b/core/include/services_sdk/resources/config.h @@ -86,6 +86,8 @@ bool reloadConfiguration(const std::string &version = ""); std::string getConfigurationFlag(const std::string &flag); +std::string getConfigurationFlagWithDefault(const std::string &default_val, const std::string &flag_name); + const std::string & getFilesystemPathConfig(); const std::string & getLogFilesPathConfig(); diff --git a/core/include/services_sdk/resources/config/i_config.h b/core/include/services_sdk/resources/config/i_config.h index feaf8e9..0afdfc2 100644 --- a/core/include/services_sdk/resources/config/i_config.h +++ b/core/include/services_sdk/resources/config/i_config.h @@ -44,6 +44,9 @@ public: virtual const string & getConfigurationFlag(const string &flag_name) const = 0; + virtual const string & + getConfigurationFlagWithDefault(const string &default_val, const string &flag_name) const = 0; + virtual const string & getFilesystemPathConfig() const = 0; virtual const string & getLogFilesPathConfig() const = 0; diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 374488a..8f67e96 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -1 +1,2 @@ add_subdirectory(yajl) +add_subdirectory(yq) diff --git a/external/yq/.dockerignore b/external/yq/.dockerignore new file mode 100755 index 0000000..36f971e --- /dev/null +++ b/external/yq/.dockerignore @@ -0,0 +1 @@ +bin/* diff --git a/external/yq/.golangci.yml b/external/yq/.golangci.yml new file mode 100755 index 0000000..84642b6 --- /dev/null +++ b/external/yq/.golangci.yml @@ -0,0 +1,40 @@ +run: + timeout: 5m +linters: + enable: + - asciicheck + - depguard + - errorlint + - gci + - gochecknoinits + - gofmt + - goimports + - gosec + - megacheck + - misspell + - nakedret + - nolintlint + - predeclared + - revive + - unconvert + - unparam +linters-settings: + depguard: + list-type: blacklist + include-go-root: true + packages: + - io/ioutil + packages-with-error-message: + - io/ioutil: "The 'io/ioutil' package is deprecated. Use corresponding 'os' or 'io' functions instead." +issues: + exclude-rules: + - linters: + - gosec + text: "Implicit memory aliasing in for loop." + path: _test\.go + - linters: + - revive + text: "unexported-return" + - linters: + - revive + text: "var-naming" diff --git a/external/yq/CMakeLists.txt b/external/yq/CMakeLists.txt new file mode 100755 index 0000000..14300fd --- /dev/null +++ b/external/yq/CMakeLists.txt @@ -0,0 +1,5 @@ +file( + DOWNLOAD + https://github.com/mikefarah/yq/releases/download/v4.26.1/yq_linux_amd64 + ${CMAKE_INSTALL_PREFIX}/orchestration/scripts/yq +) diff --git a/external/yq/CODE_OF_CONDUCT.md b/external/yq/CODE_OF_CONDUCT.md new file mode 100755 index 0000000..d2a542d --- /dev/null +++ b/external/yq/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at mikefarah@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/external/yq/CONTRIBUTING.md b/external/yq/CONTRIBUTING.md new file mode 100755 index 0000000..aa44043 --- /dev/null +++ b/external/yq/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Development + +1. Install (golang)[https://golang.org/] +1. Run `scripts/devtools.sh` to install the required devtools +2. Run `make [local] vendor` to install the vendor dependencies +2. Run `make [local] test` to ensure you can run the existing tests +3. Write unit tests - (see existing examples). Changes will not be accepted without corresponding unit tests. +4. Make the code changes. +5. `make [local] test` to lint code and run tests +6. Profit! ok no profit, but raise a PR and get kudos :) + + +# Documentation + +The documentation is a bit of a mixed bag (sorry in advanced, I do plan on simplifying it...) - with some parts automatically generated and stiched together and some statically defined. + +Documentation is written in markdown, and is published in the 'gitbook' branch. + +The various operator documentation (e.g. 'strings') are generated from the 'master' branch, and have a statically defined header (e.g. `pkg/yqlib/doc/operators/headers/add.md`) and the bulk of the docs are generated from the unit tests e.g. `pkg/yqlib/operator_add_test.go`. + +The pipeline will run the tests and automatically concatenate the files together, and put them under +`pkg/qylib/doc/add.md`. These files are checked in the master branch (and are copied to the gitbook branch as part of the release process). + +## How to contribute + +The first step is to find if what you want is automatically generated or not - start by looking in the master branch. + +### Updating dynamic documentation from master +- Search for the documentation you want to update. If you find matches in a `*_test.go` file - update that, as that will automatically update the matching `*.md` file +- Assuming you are updating a `*_test.go` file, once updated, run the test to regenerated the docs. E.g. for the 'Add' test generated docs, from the pkg/yqlib folder run: +`go test -run TestAddOperatorScenarios` which will run that test defined in the `operator_add_test.go` file. +- Ensure the tests still pass, and check the generated documentation have your update. +- Note: If the documentation is only in a `headers/*.md` file, then just update that directly +- Raise a PR to merge the changes into master! + +### Updating static documentation from the gitbook branch +If you haven't found what you want to update in the master branch, then check the gitbook branch directly as there are a few pages in there that are not in master. + +- Update the `*.md` files +- Raise a PR to merge the changes into gitbook. \ No newline at end of file diff --git a/external/yq/Dockerfile b/external/yq/Dockerfile new file mode 100755 index 0000000..2037624 --- /dev/null +++ b/external/yq/Dockerfile @@ -0,0 +1,28 @@ +FROM golang:1.19.3 as builder + +WORKDIR /go/src/mikefarah/yq + +COPY . . + +RUN CGO_ENABLED=0 go build . +# RUN ./scripts/test.sh -- this too often times out in the github pipeline. +RUN ./scripts/acceptance.sh + +# Choose alpine as a base image to make this useful for CI, as many +# CI tools expect an interactive shell inside the container +FROM alpine:3 as production +LABEL maintainer="Mike Farah " + +COPY --from=builder /go/src/mikefarah/yq/yq /usr/bin/yq + +WORKDIR /workdir + +RUN set -eux; \ + addgroup -g 1000 yq; \ + adduser -u 1000 -G yq -s /bin/sh -h /home/yq -D yq + +RUN chown -R yq:yq /workdir + +USER yq + +ENTRYPOINT ["/usr/bin/yq"] diff --git a/external/yq/Dockerfile.dev b/external/yq/Dockerfile.dev new file mode 100755 index 0000000..0fc879f --- /dev/null +++ b/external/yq/Dockerfile.dev @@ -0,0 +1,10 @@ +FROM golang:1.19.3 + +COPY scripts/devtools.sh /opt/devtools.sh + +RUN set -e -x \ + && /opt/devtools.sh +ENV PATH=/go/bin:$PATH + +ENV CGO_ENABLED 0 +ENV GOPATH /go:/yq diff --git a/external/yq/LICENSE b/external/yq/LICENSE new file mode 100755 index 0000000..dfbcc19 --- /dev/null +++ b/external/yq/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Mike Farah + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/yq/Makefile.variables b/external/yq/Makefile.variables new file mode 100755 index 0000000..b1968ba --- /dev/null +++ b/external/yq/Makefile.variables @@ -0,0 +1,38 @@ +export PROJECT = yq +IMPORT_PATH := github.com/mikefarah/${PROJECT} + +export GIT_COMMIT = $(shell git rev-parse --short HEAD) +export GIT_DIRTY = $(shell test -n "$$(git status --porcelain)" && echo "+CHANGES" || true) +export GIT_DESCRIBE = $(shell git describe --tags --always) +LDFLAGS := +LDFLAGS += -X main.GitCommit=${GIT_COMMIT}${GIT_DIRTY} +LDFLAGS += -X main.GitDescribe=${GIT_DESCRIBE} + +GITHUB_TOKEN ?= + +# Windows environment? +CYG_CHECK := $(shell hash cygpath 2>/dev/null && echo 1) +ifeq ($(CYG_CHECK),1) + VBOX_CHECK := $(shell hash VBoxManage 2>/dev/null && echo 1) + + # Docker Toolbox (pre-Windows 10) + ifeq ($(VBOX_CHECK),1) + ROOT := /${PROJECT} + else + # Docker Windows + ROOT := $(shell cygpath -m -a "$(shell pwd)") + endif +else + # all non-windows environments + ROOT := $(shell pwd) +endif + +DEV_IMAGE := ${PROJECT}_dev + +ENGINERUN := ${ENGINE} run --rm \ + -e LDFLAGS="${LDFLAGS}" \ + -e GITHUB_TOKEN="${GITHUB_TOKEN}" \ + -v ${ROOT}/vendor:/go/src \ + -v ${ROOT}:/${PROJECT}/src/${IMPORT_PATH} \ + -w /${PROJECT}/src/${IMPORT_PATH} \ + ${DEV_IMAGE} diff --git a/external/yq/README.md b/external/yq/README.md new file mode 100755 index 0000000..dbf5298 --- /dev/null +++ b/external/yq/README.md @@ -0,0 +1,373 @@ +# yq + +![Build](https://github.com/mikefarah/yq/workflows/Build/badge.svg) ![Docker Pulls](https://img.shields.io/docker/pulls/mikefarah/yq.svg) ![Github Releases (by Release)](https://img.shields.io/github/downloads/mikefarah/yq/total.svg) ![Go Report](https://goreportcard.com/badge/github.com/mikefarah/yq) ![CodeQL](https://github.com/mikefarah/yq/workflows/CodeQL/badge.svg) + + +a lightweight and portable command-line YAML, JSON and XML processor. `yq` uses [jq](https://github.com/stedolan/jq) like syntax but works with yaml files as well as json, xml, properties, csv and tsv. It doesn't yet support everything `jq` does - but it does support the most common operations and functions, and more is being added continuously. + +yq is written in go - so you can download a dependency free binary for your platform and you are good to go! If you prefer there are a variety of package managers that can be used as well as Docker and Podman, all listed below. + +## Quick Usage Guide + +Read a value: +```bash +yq '.a.b[0].c' file.yaml +``` + +Pipe from STDIN: +```bash +yq '.a.b[0].c' < file.yaml +``` + +Update a yaml file, inplace +```bash +yq -i '.a.b[0].c = "cool"' file.yaml +``` + +Update using environment variables +```bash +NAME=mike yq -i '.a.b[0].c = strenv(NAME)' file.yaml +``` + +Merge multiple files +```bash +# note the use of `ea` to evaluate all the files at once +# instead of in sequence +yq ea '. as $item ireduce ({}; . * $item )' path/to/*.yml +``` + +Multiple updates to a yaml file +```bash +yq -i ' + .a.b[0].c = "cool" | + .x.y.z = "foobar" | + .person.name = strenv(NAME) +' file.yaml +``` + +Convert JSON to YAML +```bash +yq -P sample.json +``` + +See the [documentation](https://mikefarah.gitbook.io/yq/) for more examples. + +Take a look at the discussions for [common questions](https://github.com/mikefarah/yq/discussions/categories/q-a), and [cool ideas](https://github.com/mikefarah/yq/discussions/categories/show-and-tell) + +## Install + +### [Download the latest binary](https://github.com/mikefarah/yq/releases/latest) + +### wget +Use wget to download, gzipped pre-compiled binaries: + + +For instance, VERSION=v4.2.0 and BINARY=yq_linux_amd64 + +#### Compressed via tar.gz +```bash +wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}.tar.gz -O - |\ + tar xz && mv ${BINARY} /usr/bin/yq +``` + +#### Plain binary + +```bash +wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ + chmod +x /usr/bin/yq +``` + +#### Latest version + +```bash +wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq &&\ + chmod +x /usr/bin/yq +``` + +### MacOS / Linux via Homebrew: +Using [Homebrew](https://brew.sh/) +``` +brew install yq +``` + +### Linux via snap: +``` +snap install yq +``` + +#### Snap notes +`yq` installs with [_strict confinement_](https://docs.snapcraft.io/snap-confinement/6233) in snap, this means it doesn't have direct access to root files. To read root files you can: + +``` +sudo cat /etc/myfile | yq '.a.path' +``` + +And to write to a root file you can either use [sponge](https://linux.die.net/man/1/sponge): +``` +sudo cat /etc/myfile | yq '.a.path = "value"' | sudo sponge /etc/myfile +``` +or write to a temporary file: +``` +sudo cat /etc/myfile | yq '.a.path = "value"' | sudo tee /etc/myfile.tmp +sudo mv /etc/myfile.tmp /etc/myfile +rm /etc/myfile.tmp +``` + +### Run with Docker or Podman +#### Oneshot use: + +```bash +docker run --rm -v "${PWD}":/workdir mikefarah/yq [command] [flags] [expression ]FILE... +``` + +Note that you can run `yq` in docker without network access and other privileges if you desire, +namely `--security-opt=no-new-privileges --cap-drop all --network none`. + +```bash +podman run --rm -v "${PWD}":/workdir mikefarah/yq [command] [flags] [expression ]FILE... +``` + +#### Pipe in via STDIN: + +You'll need to pass the `-i\--interactive` flag to docker: + +```bash +docker run -i --rm mikefarah/yq '.this.thing' < myfile.yml +``` + +```bash +podman run -i --rm mikefarah/yq '.this.thing' < myfile.yml +``` + +#### Run commands interactively: + +```bash +docker run --rm -it -v "${PWD}":/workdir --entrypoint sh mikefarah/yq +``` + +```bash +podman run --rm -it -v "${PWD}":/workdir --entrypoint sh mikefarah/yq +``` + +It can be useful to have a bash function to avoid typing the whole docker command: + +```bash +yq() { + docker run --rm -i -v "${PWD}":/workdir mikefarah/yq "$@" +} +``` + +```bash +yq() { + podman run --rm -i -v "${PWD}":/workdir mikefarah/yq "$@" +} +``` +#### Running as root: + +`yq`'s container image no longer runs under root (https://github.com/mikefarah/yq/pull/860). If you'd like to install more things in the container image, or you're having permissions issues when attempting to read/write files you'll need to either: + + +``` +docker run --user="root" -it --entrypoint sh mikefarah/yq +``` + +``` +podman run --user="root" -it --entrypoint sh mikefarah/yq +``` + +Or, in your Dockerfile: + +``` +FROM mikefarah/yq + +USER root +RUN apk add --no-cache bash +USER yq +``` + +#### Missing timezone data +By default, the alpine image yq uses does not include timezone data. If you'd like to use the `tz` operator, you'll need to include this data: + +``` +FROM mikefarah/yq + +USER root +RUN apk add --no-cache tzdata +USER yq +``` + +#### Podman with SELinux + +If you are using podman with SELinux, you will need to set the shared volume flag `:z` on the volume mount: + +``` +-v "${PWD}":/workdir:z +``` + +### GitHub Action +``` + - name: Set foobar to cool + uses: mikefarah/yq@master + with: + cmd: yq -i '.foo.bar = "cool"' 'config.yml' + - name: Get an entry with a variable that might contain dots or spaces + id: get_username + uses: mikefarah/yq@master + with: + cmd: yq '.all.children.["${{ matrix.ip_address }}"].username' ops/inventories/production.yml + - name: Reuse a variable obtained in another step + run: echo ${{ steps.get_username.outputs.result }} +``` + +See https://mikefarah.gitbook.io/yq/usage/github-action for more. + +### Go Install: +``` +go install github.com/mikefarah/yq/v4@latest +``` + +## Community Supported Installation methods +As these are supported by the community :heart: - however, they may be out of date with the officially supported releases. + + +### Nix + +``` +nix profile install nixpkgs#yq-go +``` + +See [here](https://search.nixos.org/packages?channel=unstable&show=yq-go&from=0&size=50&sort=relevance&type=packages&query=yq-go) + + +### Webi + +``` +webi yq +``` + +See [webi](https://webinstall.dev/) +Supported by @adithyasunil26 (https://github.com/webinstall/webi-installers/tree/master/yq) + +### Arch Linux + +``` +pacman -S go-yq +``` + +### Windows: +[![Chocolatey](https://img.shields.io/chocolatey/v/yq.svg)](https://chocolatey.org/packages/yq) +[![Chocolatey](https://img.shields.io/chocolatey/dt/yq.svg)](https://chocolatey.org/packages/yq) +``` +choco install yq +``` +Supported by @chillum (https://chocolatey.org/packages/yq) + +and + +### Winget +winget install yq + +https://winget.run/pkg/MikeFarah/yq + +### Mac: +Using [MacPorts](https://www.macports.org/) +``` +sudo port selfupdate +sudo port install yq +``` +Supported by @herbygillot (https://ports.macports.org/maintainer/github/herbygillot) + +### Alpine Linux +- Enable edge/community repo by adding ```$MIRROR/alpine/edge/community``` to ```/etc/apk/repositories``` +- Update database index with ```apk update``` +- Install yq with ```apk add yq``` + +Supported by Tuan Hoang +https://pkgs.alpinelinux.org/package/edge/community/x86/yq + + +### On Ubuntu 16.04 or higher from Debian package: +```sh +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64 +sudo add-apt-repository ppa:rmescandon/yq +sudo apt update +sudo apt install yq -y +``` +Supported by @rmescandon (https://launchpad.net/~rmescandon/+archive/ubuntu/yq) + +## Features +- [Detailed documentation with many examples](https://mikefarah.gitbook.io/yq/) +- Written in portable go, so you can download a lovely dependency free binary +- Uses similar syntax as `jq` but works with YAML, [JSON](https://mikefarah.gitbook.io/yq/usage/convert) and [XML](https://mikefarah.gitbook.io/yq/usage/xml) files +- Fully supports multi document yaml files +- Supports yaml [front matter](https://mikefarah.gitbook.io/yq/usage/front-matter) blocks (e.g. jekyll/assemble) +- Colorized yaml output +- [Date/Time manipulation and formatting with TZ](https://mikefarah.gitbook.io/yq/operators/datetime) +- [Deeply data structures](https://mikefarah.gitbook.io/yq/operators/traverse-read) +- [Sort keys](https://mikefarah.gitbook.io/yq/operators/sort-keys) +- Manipulate yaml [comments](https://mikefarah.gitbook.io/yq/operators/comment-operators), [styling](https://mikefarah.gitbook.io/yq/operators/style), [tags](https://mikefarah.gitbook.io/yq/operators/tag) and [anchors and aliases](https://mikefarah.gitbook.io/yq/operators/anchor-and-alias-operators). +- [Update inplace](https://mikefarah.gitbook.io/yq/v/v4.x/commands/evaluate#flags) +- [Complex expressions to select and update](https://mikefarah.gitbook.io/yq/operators/select#select-and-update-matching-values-in-map) +- Keeps yaml formatting and comments when updating (though there are issues with whitespace) +- [Decode/Encode base64 data](https://mikefarah.gitbook.io/yq/operators/encode-decode) +- [Load content from other files](https://mikefarah.gitbook.io/yq/operators/load) +- [Convert to/from json/ndjson](https://mikefarah.gitbook.io/yq/v/v4.x/usage/convert) +- [Convert to/from xml](https://mikefarah.gitbook.io/yq/v/v4.x/usage/xml) +- [Convert to/from properties](https://mikefarah.gitbook.io/yq/v/v4.x/usage/properties) +- [Convert to/from csv/tsv](https://mikefarah.gitbook.io/yq/usage/csv-tsv) +- [General shell completion scripts (bash/zsh/fish/powershell)](https://mikefarah.gitbook.io/yq/v/v4.x/commands/shell-completion) +- [Reduce](https://mikefarah.gitbook.io/yq/operators/reduce) to merge multiple files or sum an array or other fancy things. +- [Github Action](https://mikefarah.gitbook.io/yq/usage/github-action) to use in your automated pipeline (thanks @devorbitus) + +## [Usage](https://mikefarah.gitbook.io/yq/) + +Check out the [documentation](https://mikefarah.gitbook.io/yq/) for more detailed and advanced usage. + +``` +Usage: + yq [flags] + yq [command] + +Examples: + +# yq defaults to 'eval' command if no command is specified. See "yq eval --help" for more examples. +yq '.stuff' < myfile.yml # outputs the data at the "stuff" node from "myfile.yml" + +yq -i '.stuff = "foo"' myfile.yml # update myfile.yml inplace + + +Available Commands: + completion Generate the autocompletion script for the specified shell + eval (default) Apply the expression to each document in each yaml file in sequence + eval-all Loads _all_ yaml documents of _all_ yaml files and runs expression once + help Help about any command + shell-completion Generate completion script + +Flags: + -C, --colors force print with colors + -e, --exit-status set exit status if there are no matches or null or false is returned + -f, --front-matter string (extract|process) first input as yaml front-matter. Extract will pull out the yaml content, process will run the expression against the yaml content, leaving the remaining data intact + --header-preprocess Slurp any header comments and separators before processing expression. (default true) + -h, --help help for yq + -I, --indent int sets indent level for output (default 2) + -i, --inplace update the file inplace of first file given. + -p, --input-format string [yaml|y|xml|x] parse format for input. Note that json is a subset of yaml. (default "yaml") + -M, --no-colors force print with no colors + -N, --no-doc Don't print document separators (---) + -n, --null-input Don't read input, simply evaluate the expression given. Useful for creating docs from scratch. + -o, --output-format string [yaml|y|json|j|props|p|xml|x] output format type. (default "yaml") + -P, --prettyPrint pretty print, shorthand for '... style = ""' + -s, --split-exp string print each result (or doc) into a file named (exp). [exp] argument must return a string. You can use $index in the expression as the result counter. + --unwrapScalar unwrap scalar, print the value with no quotes, colors or comments (default true) + -v, --verbose verbose mode + -V, --version Print version information and quit + --xml-attribute-prefix string prefix for xml attributes (default "+") + --xml-content-name string name for xml content (if no attribute name is present). (default "+content") + +Use "yq [command] --help" for more information about a command. +``` +## Known Issues / Missing Features +- `yq` attempts to preserve comment positions and whitespace as much as possible, but it does not handle all scenarios (see https://github.com/go-yaml/yaml/tree/v3 for details) +- Powershell has its own...[opinions on quoting yq](https://mikefarah.gitbook.io/yq/usage/tips-and-tricks#quotes-in-windows-powershell) + +See [tips and tricks](https://mikefarah.gitbook.io/yq/usage/tips-and-tricks) for more common problems and solutions. diff --git a/external/yq/acceptance_tests/bad_args.sh b/external/yq/acceptance_tests/bad_args.sh new file mode 100755 index 0000000..34d43b6 --- /dev/null +++ b/external/yq/acceptance_tests/bad_args.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +testWriteInPlacePipeIn() { + result=$(./yq e -i -n '.a' 2>&1) + assertEquals 1 $? + assertEquals "Error: write inplace flag only applicable when giving an expression and at least one file" "$result" +} + +testWriteInPlacePipeInEvalall() { + result=$(./yq ea -i -n '.a' 2>&1) + assertEquals 1 $? + assertEquals "Error: write inplace flag only applicable when giving an expression and at least one file" "$result" +} + +testWriteInPlaceWithSplit() { + result=$(./yq e -s "cat" -i '.a = "thing"' test.yml 2>&1) + assertEquals 1 $? + assertEquals "Error: write inplace cannot be used with split file" "$result" +} + +testWriteInPlaceWithSplitEvalAll() { + result=$(./yq ea -s "cat" -i '.a = "thing"' test.yml 2>&1) + assertEquals 1 $? + assertEquals "Error: write inplace cannot be used with split file" "$result" +} + +testNullWithFiles() { + result=$(./yq e -n '.a = "thing"' test.yml 2>&1) + assertEquals 1 $? + assertEquals "Error: cannot pass files in when using null-input flag" "$result" +} + +testNullWithFilesEvalAll() { + result=$(./yq ea -n '.a = "thing"' test.yml 2>&1) + assertEquals 1 $? + assertEquals "Error: cannot pass files in when using null-input flag" "$result" +} + + + +source ./scripts/shunit2 \ No newline at end of file diff --git a/external/yq/acceptance_tests/basic.sh b/external/yq/acceptance_tests/basic.sh new file mode 100755 index 0000000..141122c --- /dev/null +++ b/external/yq/acceptance_tests/basic.sh @@ -0,0 +1,356 @@ +#!/bin/bash + +setUp() { + rm test*.yml 2>/dev/null || true + rm .xyz 2>/dev/null || true + rm instructions.txt 2>/dev/null || true +} + +testBasicEvalRoundTrip() { + ./yq -n ".a = 123" > test.yml + X=$(./yq '.a' test.yml) + assertEquals 123 "$X" +} + +testBasicTrailingContent() { + cat >test-trailing.yml <test-trailing.yml <test-trailing.yml <test-trailing.yml < test.yml + X=$(cat test.yml | ./yq '.') + assertEquals "a: 123" "$X" +} + +testBasicExpressionMatchesFileName() { + ./yq -n ".xyz = 123" > test.yml + touch .xyz + + X=$(./yq --expression '.xyz' test.yml) + assertEquals "123" "$X" + + X=$(./yq ea --expression '.xyz' test.yml) + assertEquals "123" "$X" +} + +testBasicExpressionFromFile() { + ./yq -n ".xyz = 123" > test.yml + echo '.xyz = "meow" | .cool = "frog"' > instructions.txt + + X=$(./yq --from-file instructions.txt test.yml -o=j -I=0) + assertEquals '{"xyz":"meow","cool":"frog"}' "$X" + + X=$(./yq ea --from-file instructions.txt test.yml -o=j -I=0) + assertEquals '{"xyz":"meow","cool":"frog"}' "$X" +} + +testBasicGitHubAction() { + ./yq -n ".a = 123" > test.yml + X=$(cat /dev/null | ./yq test.yml) + assertEquals "a: 123" "$X" + + X=$(cat /dev/null | ./yq e test.yml) + assertEquals "a: 123" "$X" + + X=$(cat /dev/null | ./yq ea test.yml) + assertEquals "a: 123" "$X" +} + +testBasicGitHubActionWithExpression() { + ./yq -n ".a = 123" > test.yml + X=$(cat /dev/null | ./yq '.a' test.yml) + assertEquals "123" "$X" + + X=$(cat /dev/null | ./yq e '.a' test.yml) + assertEquals "123" "$X" + + X=$(cat /dev/null | ./yq ea '.a' test.yml) + assertEquals "123" "$X" +} + + +testBasicEvalAllAllFiles() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(./yq ea test.yml test2.yml) + Y=$(./yq e '.' test.yml test2.yml) + assertEquals "$Y" "$X" +} + +# when given a file, don't read STDIN +# otherwise strange things start happening +# in scripts +# https://github.com/mikefarah/yq/issues/1115 + +testBasicCatWithFilesNoDash() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq test2.yml) + Y=$(./yq e '.' test2.yml) + assertEquals "$Y" "$X" +} + +# when the nullinput flag is used +# dont automatically read STDIN (this breaks github actions) +testBasicCreateFileGithubAction() { + cat /dev/null | ./yq -n ".a = 123" > test.yml +} + +testBasicEvalAllCatWithFilesNoDash() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq ea test2.yml) + Y=$(./yq e '.' test2.yml) + assertEquals "$Y" "$X" +} + +testBasicCatWithFilesNoDashWithExp() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq '.a' test2.yml) + Y=$(./yq e '.a' test2.yml) + assertEquals "$Y" "$X" +} + +testBasicEvalAllCatWithFilesNoDashWithExp() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq ea '.a' test2.yml) + Y=$(./yq e '.a' test2.yml) + assertEquals "$Y" "$X" +} + + +testBasicStdInWithFiles() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq - test2.yml) + Y=$(./yq e '.' test.yml test2.yml) + assertEquals "$Y" "$X" +} + +testBasicEvalAllStdInWithFiles() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq ea - test2.yml) + Y=$(./yq e '.' test.yml test2.yml) + assertEquals "$Y" "$X" +} + +testBasicStdInWithFilesReverse() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq test2.yml -) + Y=$(./yq e '.' test2.yml test.yml) + assertEquals "$Y" "$X" +} + +testBasicEvalAllStdInWithFilesReverse() { + ./yq -n ".a = 123" > test.yml + ./yq -n ".a = 124" > test2.yml + X=$(cat test.yml | ./yq ea test2.yml -) + Y=$(./yq e '.' test2.yml test.yml) + assertEquals "$Y" "$X" +} + +testBasicEvalRoundTripNoEval() { + ./yq -n ".a = 123" > test.yml + X=$(./yq '.a' test.yml) + assertEquals 123 "$X" +} + +testBasicStdInWithOneArg() { + ./yq e -n ".a = 123" > test.yml + X=$(cat test.yml | ./yq e ".a") + assertEquals 123 "$X" + + X=$(cat test.yml | ./yq ea ".a") + assertEquals 123 "$X" + + X=$(cat test.yml | ./yq ".a") + assertEquals 123 "$X" +} + +testBasicUpdateInPlaceSequence() { + cat >test.yml <test.yml <test.yml <test.yml <test2.yml <test.yml <test2.yml < test.yml + X=$(./yq e '.z' test.yml) + assertEquals "null" "$X" +} + +testBasicExitStatus() { + echo "a: cat" > test.yml + X=$(./yq e -e '.z' test.yml 2&>/dev/null) + assertEquals 1 "$?" +} + +testBasicExitStatusNoEval() { + echo "a: cat" > test.yml + X=$(./yq -e '.z' test.yml 2&>/dev/null) + assertEquals 1 "$?" +} + +testBasicExtractFieldWithSeperator() { + cat >test.yml <test.yml <test.yml <&1) + assertEquals 0 $? + assertContains "$result" "Completion ended with directive:" +} + +source ./scripts/shunit2 diff --git a/external/yq/acceptance_tests/empty.sh b/external/yq/acceptance_tests/empty.sh new file mode 100755 index 0000000..63d5ca8 --- /dev/null +++ b/external/yq/acceptance_tests/empty.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +setUp() { + rm test*.yml || true + cat >test.yml <test.yml + X=$(./yq e test.yml) + expected=$(cat test.yml) + assertEquals 0 $? + assertEquals "$expected" "$X" +} + +testEmptyEvalNoNewLineWithExpression() { + echo -n "# comment" >test.yml + X=$(./yq e '.apple = "tree"' test.yml) + read -r -d '' expected << EOM +# comment +apple: tree +EOM + assertEquals "$expected" "$X" +} + +testEmptyEvalPipe() { + X=$(./yq e - < test.yml) + assertEquals 0 $? +} + +testEmptyCommentsWithExpressionEval() { + read -r -d '' expected << EOM +# comment +apple: tree +EOM + + X=$(./yq e '.apple="tree"' test.yml) + + assertEquals "$expected" "$X" +} + +testEmptyCommentsWithExpressionEvalAll() { + read -r -d '' expected << EOM +# comment +apple: tree +EOM + + X=$(./yq ea '.apple="tree"' test.yml) + + assertEquals "$expected" "$X" +} + +testEmptyWithExpressionEval() { + rm test.yml + touch test.yml + expected="apple: tree" + + X=$(./yq e '.apple="tree"' test.yml) + + assertEquals "$expected" "$X" +} + +testEmptyWithExpressionEvalAll() { + rm test.yml + touch test.yml + expected="apple: tree" + + X=$(./yq ea '.apple="tree"' test.yml) + + assertEquals "$expected" "$X" +} + + +source ./scripts/shunit2 \ No newline at end of file diff --git a/external/yq/acceptance_tests/front-matter.sh b/external/yq/acceptance_tests/front-matter.sh new file mode 100755 index 0000000..a9f079b --- /dev/null +++ b/external/yq/acceptance_tests/front-matter.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +setUp() { + rm test*.yml || true + cat >test.yml <test.yml <test.yml <test.yml <test.yml </dev/null || true + rm test*.properties 2>/dev/null || true + rm test*.csv 2>/dev/null || true + rm test*.tsv 2>/dev/null || true + rm test*.xml 2>/dev/null || true +} + +testInputProperties() { + cat >test.properties <test.properties <test.csv <test.tsv <test.yml <BiBi +EOL + + read -r -d '' expected << EOM +cat: + +content: BiBi + +@legs: "4" +EOM + + X=$(./yq e -p=xml test.yml) + assertEquals "$expected" "$X" + + X=$(./yq ea -p=xml test.yml) + assertEquals "$expected" "$X" +} + +testInputXmlNamespaces() { + cat >test.yml < + + +EOL + + read -r -d '' expected << EOM ++p_xml: version="1.0" +map: + +@xmlns: some-namespace + +@xmlns:xsi: some-instance + +@xsi:schemaLocation: some-url +EOM + + X=$(./yq e -p=xml test.yml) + assertEquals "$expected" "$X" + + X=$(./yq ea -p=xml test.yml) + assertEquals "$expected" "$X" +} + +testInputXmlRoundtrip() { + cat >test.yml < + +Meow +EOL + + read -r -d '' expected << EOM + + +Meow +EOM + + X=$(./yq -p=xml -o=xml test.yml) + assertEquals "$expected" "$X" + + X=$(./yq ea -p=xml -o=xml test.yml) + assertEquals "$expected" "$X" +} + + +testInputXmlStrict() { + cat >test.yml < + + +]> + + &writer;©right; + +EOL + + X=$(./yq -p=xml --xml-strict-mode test.yml -o=xml 2>&1) + assertEquals 1 $? + assertEquals "Error: bad file 'test.yml': XML syntax error on line 7: invalid character entity &writer;" "$X" + + X=$(./yq ea -p=xml --xml-strict-mode test.yml -o=xml 2>&1) + assertEquals "Error: bad file 'test.yml': XML syntax error on line 7: invalid character entity &writer;" "$X" +} + +testInputXmlGithubAction() { + cat >test.yml <BiBi +EOL + + read -r -d '' expected << EOM +cat: + +content: BiBi + +@legs: "4" +EOM + + X=$(cat /dev/null | ./yq e -p=xml test.yml) + assertEquals "$expected" "$X" + + X=$(cat /dev/null | ./yq ea -p=xml test.yml) + assertEquals "$expected" "$X" +} + +source ./scripts/shunit2 \ No newline at end of file diff --git a/external/yq/acceptance_tests/leading-seperator.sh b/external/yq/acceptance_tests/leading-seperator.sh new file mode 100755 index 0000000..71217b9 --- /dev/null +++ b/external/yq/acceptance_tests/leading-seperator.sh @@ -0,0 +1,453 @@ +#!/bin/bash + + +# examples where header-preprocess is required + +setUp() { + rm test*.yml || true + cat >test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test2.yml <test.yml <test2.yml <test.yml <test2.yml <test.yml <test2.yml <test.yml <test2.yml <test.yml <test.yml <test.yml <test2.yml <test.yml <test2.yml <&1) + assertEquals 1 $? + assertEquals "Error: Failed to load cat.yml: open cat.yml: no such file or directory" "$result" +} + +testLoadFileExpNotExist() { + result=$(./yq e -n 'load(.a)' 2>&1) + assertEquals 1 $? + assertEquals "Error: Filename expression returned nil" "$result" +} + +testStrLoadFileNotExist() { + result=$(./yq e -n 'strload("cat.yml")' 2>&1) + assertEquals 1 $? + assertEquals "Error: Failed to load cat.yml: open cat.yml: no such file or directory" "$result" +} + +testStrLoadFileExpNotExist() { + result=$(./yq e -n 'strload(.a)' 2>&1) + assertEquals 1 $? + assertEquals "Error: Filename expression returned nil" "$result" +} + +source ./scripts/shunit2 \ No newline at end of file diff --git a/external/yq/acceptance_tests/output-format.sh b/external/yq/acceptance_tests/output-format.sh new file mode 100755 index 0000000..268185d --- /dev/null +++ b/external/yq/acceptance_tests/output-format.sh @@ -0,0 +1,274 @@ +#!/bin/bash + +setUp() { + rm test*.yml || true +} + +testOutputJsonDeprecated() { + cat >test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml < + + cat + + +EOM + + X=$(./yq e --output-format=xml test.yml) + assertEquals "$expected" "$X" + + X=$(./yq ea --output-format=xml test.yml) + assertEquals "$expected" "$X" +} + +testOutputXmlShort() { + cat >test.yml < + + cat + + +EOM + + X=$(./yq e --output-format=x test.yml) + assertEquals "$expected" "$X" + + X=$(./yq ea --output-format=x test.yml) + assertEquals "$expected" "$X" +} + +testOutputXmComplex() { + cat >test.yml < + + cat + dog + + +EOM + + X=$(./yq e --output-format=x test.yml) + assertEquals "$expected" "$X" + + X=$(./yq ea --output-format=x test.yml) + assertEquals "$expected" "$X" +} + +source ./scripts/shunit2 \ No newline at end of file diff --git a/external/yq/acceptance_tests/pipe.sh b/external/yq/acceptance_tests/pipe.sh new file mode 100755 index 0000000..43709de --- /dev/null +++ b/external/yq/acceptance_tests/pipe.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +setUp() { + rm test*.yml || true + cat >test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test_splitExp.yml <test.yml <test.yml <test.yml <test.yml <test.yml <test2.yml <)") + rootCmd.PersistentFlags().StringVar(&yqlib.ConfiguredXMLPreferences.DirectiveName, "xml-directive-name", yqlib.ConfiguredXMLPreferences.DirectiveName, "name for xml directives (e.g. )") + rootCmd.PersistentFlags().BoolVar(&yqlib.ConfiguredXMLPreferences.SkipProcInst, "xml-skip-proc-inst", yqlib.ConfiguredXMLPreferences.SkipProcInst, "skip over process instructions (e.g. )") + rootCmd.PersistentFlags().BoolVar(&yqlib.ConfiguredXMLPreferences.SkipDirectives, "xml-skip-directives", yqlib.ConfiguredXMLPreferences.SkipDirectives, "skip over directives (e.g. )") + + rootCmd.PersistentFlags().BoolVarP(&nullInput, "null-input", "n", false, "Don't read input, simply evaluate the expression given. Useful for creating docs from scratch.") + rootCmd.PersistentFlags().BoolVarP(&noDocSeparators, "no-doc", "N", false, "Don't print document separators (---)") + + rootCmd.PersistentFlags().IntVarP(&indent, "indent", "I", 2, "sets indent level for output") + rootCmd.Flags().BoolVarP(&version, "version", "V", false, "Print version information and quit") + rootCmd.PersistentFlags().BoolVarP(&writeInplace, "inplace", "i", false, "update the file inplace of first file given.") + rootCmd.PersistentFlags().VarP(unwrapScalarFlag, "unwrapScalar", "r", "unwrap scalar, print the value with no quotes, colors or comments. Defaults to true for yaml") + rootCmd.PersistentFlags().Lookup("unwrapScalar").NoOptDefVal = "true" + + rootCmd.PersistentFlags().BoolVarP(&prettyPrint, "prettyPrint", "P", false, "pretty print, shorthand for '... style = \"\"'") + rootCmd.PersistentFlags().BoolVarP(&exitStatus, "exit-status", "e", false, "set exit status if there are no matches or null or false is returned") + + rootCmd.PersistentFlags().BoolVarP(&forceColor, "colors", "C", false, "force print with colors") + rootCmd.PersistentFlags().BoolVarP(&forceNoColor, "no-colors", "M", false, "force print with no colors") + rootCmd.PersistentFlags().StringVarP(&frontMatter, "front-matter", "f", "", "(extract|process) first input as yaml front-matter. Extract will pull out the yaml content, process will run the expression against the yaml content, leaving the remaining data intact") + rootCmd.PersistentFlags().StringVarP(&forceExpression, "expression", "", "", "forcibly set the expression argument. Useful when yq argument detection thinks your expression is a file.") + rootCmd.PersistentFlags().BoolVarP(&yqlib.ConfiguredYamlPreferences.LeadingContentPreProcessing, "header-preprocess", "", true, "Slurp any header comments and separators before processing expression.") + + rootCmd.PersistentFlags().StringVarP(&splitFileExp, "split-exp", "s", "", "print each result (or doc) into a file named (exp). [exp] argument must return a string. You can use $index in the expression as the result counter.") + rootCmd.PersistentFlags().StringVarP(&splitFileExpFile, "split-exp-file", "", "", "Use a file to specify the split-exp expression.") + + rootCmd.PersistentFlags().StringVarP(&expressionFile, "from-file", "", "", "Load expression from specified file.") + + rootCmd.AddCommand( + createEvaluateSequenceCommand(), + createEvaluateAllCommand(), + completionCmd, + ) + return rootCmd +} diff --git a/external/yq/cmd/shell-completion.go b/external/yq/cmd/shell-completion.go new file mode 100755 index 0000000..5431abe --- /dev/null +++ b/external/yq/cmd/shell-completion.go @@ -0,0 +1,61 @@ +package cmd + +import ( + "os" + + "github.com/spf13/cobra" +) + +var completionCmd = &cobra.Command{ + Use: "shell-completion [bash|zsh|fish|powershell]", + Short: "Generate completion script", + Long: `To load completions: + +Bash: + +$ source <(yq shell-completion bash) + +# To load completions for each session, execute once: +Linux: + $ yq shell-completion bash > /etc/bash_completion.d/yq +MacOS: + $ yq shell-completion bash > /usr/local/etc/bash_completion.d/yq + +Zsh: + +# If shell completion is not already enabled in your environment you will need +# to enable it. You can execute the following once: + +$ echo "autoload -U compinit; compinit" >> ~/.zshrc + +# To load completions for each session, execute once: +$ yq shell-completion zsh > "${fpath[1]}/_yq" + +# You will need to start a new shell for this setup to take effect. + +Fish: + +$ yq shell-completion fish | source + +# To load completions for each session, execute once: +$ yq shell-completion fish > ~/.config/fish/completions/yq.fish +`, + DisableFlagsInUseLine: true, + ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, + Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs), + RunE: func(cmd *cobra.Command, args []string) error { + var err error = nil + switch args[0] { + case "bash": + err = cmd.Root().GenBashCompletion(os.Stdout) + case "zsh": + err = cmd.Root().GenZshCompletion(os.Stdout) + case "fish": + err = cmd.Root().GenFishCompletion(os.Stdout, true) + case "powershell": + err = cmd.Root().GenPowerShellCompletion(os.Stdout) + } + return err + + }, +} diff --git a/external/yq/cmd/unwrap_flag.go b/external/yq/cmd/unwrap_flag.go new file mode 100755 index 0000000..e844f2f --- /dev/null +++ b/external/yq/cmd/unwrap_flag.go @@ -0,0 +1,46 @@ +package cmd + +import ( + "strconv" + + "github.com/spf13/pflag" +) + +type boolFlag interface { + pflag.Value + IsExplicitySet() bool + IsSet() bool +} + +type unwrapScalarFlagStrc struct { + explicitySet bool + value bool +} + +func newUnwrapFlag() boolFlag { + return &unwrapScalarFlagStrc{value: true} +} + +func (f *unwrapScalarFlagStrc) IsExplicitySet() bool { + return f.explicitySet +} + +func (f *unwrapScalarFlagStrc) IsSet() bool { + return f.value +} + +func (f *unwrapScalarFlagStrc) String() string { + return strconv.FormatBool(f.value) +} + +func (f *unwrapScalarFlagStrc) Set(value string) error { + + v, err := strconv.ParseBool(value) + f.value = v + f.explicitySet = true + return err +} + +func (*unwrapScalarFlagStrc) Type() string { + return "bool" +} diff --git a/external/yq/cmd/utils.go b/external/yq/cmd/utils.go new file mode 100755 index 0000000..8dad7c3 --- /dev/null +++ b/external/yq/cmd/utils.go @@ -0,0 +1,178 @@ +package cmd + +import ( + "fmt" + "io" + "os" + + "github.com/mikefarah/yq/v4/pkg/yqlib" + "github.com/spf13/cobra" + "gopkg.in/op/go-logging.v1" +) + +func initCommand(cmd *cobra.Command, args []string) (string, []string, error) { + cmd.SilenceUsage = true + + fileInfo, _ := os.Stdout.Stat() + + if forceColor || (!forceNoColor && (fileInfo.Mode()&os.ModeCharDevice) != 0) { + colorsEnabled = true + } + + expression, args, err := processArgs(args) + if err != nil { + return "", nil, err + } + + if splitFileExpFile != "" { + splitExpressionBytes, err := os.ReadFile(splitFileExpFile) + if err != nil { + return "", nil, err + } + splitFileExp = string(splitExpressionBytes) + } + + // backwards compatibility + if outputToJSON { + outputFormat = "json" + } + + if writeInplace && (len(args) == 0 || args[0] == "-") { + return "", nil, fmt.Errorf("write inplace flag only applicable when giving an expression and at least one file") + } + + if frontMatter != "" && len(args) == 0 { + return "", nil, fmt.Errorf("front matter flag only applicable when giving an expression and at least one file") + } + + if writeInplace && splitFileExp != "" { + return "", nil, fmt.Errorf("write inplace cannot be used with split file") + } + + if nullInput && len(args) > 0 { + return "", nil, fmt.Errorf("cannot pass files in when using null-input flag") + } + + return expression, args, nil +} + +func configureDecoder(evaluateTogether bool) (yqlib.Decoder, error) { + yqlibInputFormat, err := yqlib.InputFormatFromString(inputFormat) + if err != nil { + return nil, err + } + switch yqlibInputFormat { + case yqlib.XMLInputFormat: + return yqlib.NewXMLDecoder(yqlib.ConfiguredXMLPreferences), nil + case yqlib.PropertiesInputFormat: + return yqlib.NewPropertiesDecoder(), nil + case yqlib.JsonInputFormat: + return yqlib.NewJSONDecoder(), nil + case yqlib.CSVObjectInputFormat: + return yqlib.NewCSVObjectDecoder(','), nil + case yqlib.TSVObjectInputFormat: + return yqlib.NewCSVObjectDecoder('\t'), nil + } + prefs := yqlib.ConfiguredYamlPreferences + prefs.EvaluateTogether = evaluateTogether + return yqlib.NewYamlDecoder(prefs), nil +} + +func configurePrinterWriter(format yqlib.PrinterOutputFormat, out io.Writer) (yqlib.PrinterWriter, error) { + + var printerWriter yqlib.PrinterWriter + + if splitFileExp != "" { + colorsEnabled = forceColor + splitExp, err := yqlib.ExpressionParser.ParseExpression(splitFileExp) + if err != nil { + return nil, fmt.Errorf("bad split document expression: %w", err) + } + printerWriter = yqlib.NewMultiPrinterWriter(splitExp, format) + } else { + printerWriter = yqlib.NewSinglePrinterWriter(out) + } + return printerWriter, nil +} + +func configureEncoder(format yqlib.PrinterOutputFormat) yqlib.Encoder { + switch format { + case yqlib.JSONOutputFormat: + return yqlib.NewJSONEncoder(indent, colorsEnabled, unwrapScalar) + case yqlib.PropsOutputFormat: + return yqlib.NewPropertiesEncoder(unwrapScalar) + case yqlib.CSVOutputFormat: + return yqlib.NewCsvEncoder(',') + case yqlib.TSVOutputFormat: + return yqlib.NewCsvEncoder('\t') + case yqlib.YamlOutputFormat: + return yqlib.NewYamlEncoder(indent, colorsEnabled, yqlib.ConfiguredYamlPreferences) + case yqlib.XMLOutputFormat: + return yqlib.NewXMLEncoder(indent, yqlib.ConfiguredXMLPreferences) + } + panic("invalid encoder") +} + +// this is a hack to enable backwards compatibility with githubactions (which pipe /dev/null into everything) +// and being able to call yq with the filename as a single parameter +// +// without this - yq detects there is stdin (thanks githubactions), +// then tries to parse the filename as an expression +func maybeFile(str string) bool { + yqlib.GetLogger().Debugf("checking '%v' is a file", str) + stat, err := os.Stat(str) // #nosec + result := err == nil && !stat.IsDir() + if yqlib.GetLogger().IsEnabledFor(logging.DEBUG) { + if err != nil { + yqlib.GetLogger().Debugf("error: %v", err) + } else { + yqlib.GetLogger().Debugf("error: %v, dir: %v", err, stat.IsDir()) + } + yqlib.GetLogger().Debugf("result: %v", result) + } + return result +} + +func processStdInArgs(args []string) []string { + stat, _ := os.Stdin.Stat() + pipingStdin := (stat.Mode() & os.ModeCharDevice) == 0 + + // if we've been given a file, don't automatically + // read from stdin. + // this happens if there is more than one argument + // or only one argument and its a file + if nullInput || !pipingStdin || len(args) > 1 || (len(args) > 0 && maybeFile(args[0])) { + return args + } + + for _, arg := range args { + if arg == "-" { + return args + } + } + yqlib.GetLogger().Debugf("missing '-', adding it to the end") + + // we're piping from stdin, but there's no '-' arg + // lets add one to the end + return append(args, "-") +} + +func processArgs(originalArgs []string) (string, []string, error) { + expression := forceExpression + if expressionFile != "" { + expressionBytes, err := os.ReadFile(expressionFile) + if err != nil { + return "", nil, err + } + expression = string(expressionBytes) + } + + args := processStdInArgs(originalArgs) + yqlib.GetLogger().Debugf("processed args: %v", args) + if expression == "" && len(args) > 0 && args[0] != "-" && !maybeFile(args[0]) { + yqlib.GetLogger().Debug("assuming expression is '%v'", args[0]) + expression = args[0] + args = args[1:] + } + return expression, args, nil +} diff --git a/external/yq/cmd/version.go b/external/yq/cmd/version.go new file mode 100755 index 0000000..f222e4c --- /dev/null +++ b/external/yq/cmd/version.go @@ -0,0 +1,49 @@ +package cmd + +import ( + "fmt" + "strings" +) + +// The git commit that was compiled. This will be filled in by the compiler. +var ( + GitCommit string + GitDescribe string + + // Version is main version number that is being run at the moment. + Version = "4.30.1" + + // VersionPrerelease is a pre-release marker for the version. If this is "" (empty string) + // then it means that it is a final release. Otherwise, this is a pre-release + // such as "dev" (in development), "beta", "rc1", etc. + VersionPrerelease = "" +) + +// ProductName is the name of the product +const ProductName = "yq" + +// GetVersionDisplay composes the parts of the version in a way that's suitable +// for displaying to humans. +func GetVersionDisplay() string { + return fmt.Sprintf("yq (https://github.com/mikefarah/yq/) version %s\n", getHumanVersion()) +} + +func getHumanVersion() string { + version := Version + if GitDescribe != "" { + version = GitDescribe + } + + release := VersionPrerelease + if release != "" { + if !strings.Contains(version, release) { + version += fmt.Sprintf("-%s", release) + } + if GitCommit != "" { + version += fmt.Sprintf(" (%s)", GitCommit) + } + } + + // Strip off any single quotes added by the git information. + return strings.Replace(version, "'", "", -1) +} diff --git a/external/yq/cmd/version_test.go b/external/yq/cmd/version_test.go new file mode 100755 index 0000000..1ffc64a --- /dev/null +++ b/external/yq/cmd/version_test.go @@ -0,0 +1,51 @@ +package cmd + +import "testing" + +func TestGetVersionDisplay(t *testing.T) { + var expectedVersion = ProductName + " (https://github.com/mikefarah/yq/) version " + Version + if VersionPrerelease != "" { + expectedVersion = expectedVersion + "-" + VersionPrerelease + } + expectedVersion = expectedVersion + "\n" + tests := []struct { + name string + want string + }{ + { + name: "Display Version", + want: expectedVersion, + }, + } + for _, tt := range tests { + if got := GetVersionDisplay(); got != tt.want { + t.Errorf("%q. GetVersionDisplay() = %v, want %v", tt.name, got, tt.want) + } + } +} + +func Test_getHumanVersion(t *testing.T) { + GitDescribe = "e42813d" + GitCommit = "e42813d+CHANGES" + var wanted string + if VersionPrerelease == "" { + wanted = GitDescribe + } else { + wanted = "e42813d-" + VersionPrerelease + " (e42813d+CHANGES)" + } + + tests := []struct { + name string + want string + }{ + { + name: "Git Variables defined", + want: wanted, + }, + } + for _, tt := range tests { + if got := getHumanVersion(); got != tt.want { + t.Errorf("%q. getHumanVersion() = %v, want %v", tt.name, got, tt.want) + } + } +} diff --git a/external/yq/debian/changelog b/external/yq/debian/changelog new file mode 100755 index 0000000..25c4b94 --- /dev/null +++ b/external/yq/debian/changelog @@ -0,0 +1,210 @@ +yq (4.16.2) focal; urgency=medium + + * Fixed with semicolon space issue + * Updating with documentation + * Added STDIN example to the top + * minor readme cleanup + * Help text tweak + * Fixed docker timeout - simplify docker builds + * New release with docker build fixes + * Updating to go 1.17 to fix CVE #944 + * Fix a typo in root.go + * Skip the tests if the nocheck Debian build option is specified + * Fixed select bug (#958) + * Sped up explode operator + * Slight performance improvement to context.ChildContext + * Speed up multiply + * Update README with recently added / changed options + * Make deepMatch report in linear time + * Removed leadingContentPreProcessing flag - header preprocessing is stable + * Revert "Removed leadingContentPreProcessing flag - header preprocessing is stable" + * Keep flag, it is needed in corner cases + * Updated Readme + * Man page + * Fixed expression parsing bug #970 + * Bumping go-lang, docker versions + * Added test release flow + * Updated github action release to generate man page + * Bumping version + * Removing no longer needed github action + * Added decoder op + * Fixed newline handling when decoding/encoding + * Fixed newline handling in encoder/decoder + * Can specify indent in encode ops + * Added group_by operator + * Added flatten operator + * Fixed flatten error message + * Improving docs + * Split printer + * Refactored command logic + * Fix JSON encoding removing null #985 + * Fixed acceptance tests + * gitbook + * Update document generation script + * Updating README + * Updating release instructions + * github action no longer uses data1.yml + * Create dependabot.yml + * Bump actions/create-release from 1.0.0 to 1.1.4 + * Bump actions/setup-go from 1 to 2.1.4 + * Bump github.com/goccy/go-yaml from 1.8.9 to 1.9.4 + * Bump github.com/jinzhu/copier from 0.2.8 to 0.3.2 + * Bump github.com/fatih/color from 1.10.0 to 1.13.0 + * Bump github.com/spf13/cobra from 1.1.3 to 1.2.1 + * Update dependabot.yml + * Update go.yml + * add build check to PRs + * Include secure as part of build process + * Fixing bad label in github action + * fixed printer test + * remove leading content indicator + * Fixed header preprocessing! + * lint : define golangci configuration file + * Update check.sh + * Load file acceptance test + * Minor improvement on handling front matter + * Improved load doc + * feature: detect MANPATh and install there + * Update install-man-page.sh + * simplify prod stage, move version label to action + * add labels, quote some values + * enable errorlint linter + * Added errorlint to devtools + * Added key operator + * Added more tests + * Fixing comments + * Attempt to fix golint problem + * Include version query for tools + * Clean up errored file? + * enable misspell linter + * updated readme + * update Golangci version to v1.43.0 + * gci linter + * Better merge array by key example + * Added credit for merge by array example + * Better formatting of merge arrays example + * Better merge example + * Add accessor for the yq logger instance (#1013) + * Fixed collect op when working with multiple nodes + * Added map, map_values + * Add support for Podman as well as Docker (#1026) + * Bump github.com/jinzhu/copier from 0.3.2 to 0.3.4 (#1027) + * Added csv, tsv output formats + * Added encoder tests + * Cleanup test + * Fixed docker permission issue #1014 + * Recording release notes for next release + * Assignment op no longer clobbers anchor (#1029) + * Added sort_by operator + * Improved error message + * Improved tips and tricks + * Report while filename failed to parse #1030 + * Added script for extracting checksums + * Improved extract-checksum.sh + * Bump github.com/spf13/cobra from 1.2.1 to 1.3.0 (#1039) + * enable more linters (#1043) + * Bump golang compiler #1037 + + -- Roberto Mier Escandon Tue, 21 Dec 2021 09:41:44 +0000 + +yq (4.13.0) focal; urgency=medium + + * New `with` operator for making multiple changes to a given path + * New `contains` operator, works like the `jq` equivalent + * Subtract operator now supports subtracting elements from arrays! + * Fixed Swapping values using variables #934 + * Github Action now properly supports multiline output #936, thanks @pjxiao + * Fixed missing closing bracket validation #932 + * Fix processing of hex numbers #929 + * Fixed alternative and union operator issues #930 + * Can now convert yaml to properties properties format (`-o=props`), See [docs](https://mikefarah.gitbook.io/yq/v/v4.x/usage/properties) for more info. + * Fixed document header/footer comment handling when merging (https://github.com/mikefarah/yq/issues/919) + * pretty print yaml 1.1 compatibility (https://github.com/mikefarah/yq/issues/914) + + -- Roberto Mier Escandon Thu, 16 Sep 2021 20:58:30 +0200 + +yq (4.9.6) focal; urgency=medium + + * Added darwin/arm64 build, thanks @alecthomas + * Incremented docker alpine base version, thanks @da6d6i7-bronga + * Bug fix: multine expression + * Bug fix: special character + + -- Roberto Mier Escandon Tue, 29 Jun 2021 21:32:14 +0200 + +yq (3.3.2) focal; urgency=medium + + * Bug fix: existStatus bug (#459) + * Automatically makes a os temp directory if it does not exist (#461) + + -- Roberto Mier Escandon Fri, 07 Aug 2020 18:53:01 +0200 + +yq (3.3-0) focal; urgency=medium + + * You can control string styles (quotes) using the new --style flag + * String values now always have quotes when outputting to json + * Negative array indices now traverse the array backwards + * Added a --stripComments flag to print yaml without any comments + * Bumped go to version 1.14 + + -- Roberto Mier Escandon Thu, 30 Apr 2020 20:45:44 +0200 + +yq (3.1-2) eoan; urgency=medium + + * Bug fix: yq 3 was removing empty inline-style objects and arrays (#355) + * Bug fix: Merge option returned different output when switching order of + merging files(#347) + * Bug fix: Add new object to existing array object was failing in 3.1.1 (#361) + * Bug fix: yq 3 empty keys did not allow merging of values (#356) + * Bug fix: keys quoted during merge (#363) + * Bug fix: Correct length with wc -l (#362) + * Bug fix: Write to empty document removed path (#359) + + -- Roberto Mier Escandon Mon, 24 Feb 2020 20:31:58 +0100 + +yq (3.1-1) eoan; urgency=medium + + * Keeps yaml comments and formatting, can specify yaml tags when updating. + * Handles anchors + * Can print out matching paths and values when splatting + * JSON output works for all commands + * Yaml files with multiple documents are printed out as one JSON + document per line. + * Deep splat (**) to match arbitrary paths + * Update scripts file format has changed to be more powerful + * Reading and splatting, matching results are printed once per line + * Bugfixing + + -- Roberto Mier Escandon Tue, 11 Feb 2020 22:18:24 +0100 + +yq (2.2-1) bionic; urgency=medium + + * Added Windows support for the "--inplace" command flag + * Prefix now supports arrays + * Add prefix command + * Bump Alpine version to 3.8 + * Improved docker build process + * Lint fixes + * Build support for all linux architectures supported by gox + + -- Roberto Mier Escandon Sat, 19 Jan 2019 15:50:47 +0100 + +yq (2.1-0) bionic; urgency=medium + + * Ability to read multiple documents in a single file + * Ability to append list items instead of overwriting + + -- Roberto Mier Escandón Tue, 10 Jul 2018 14:02:42 +0200 + +yq (2.0-0) bionic; urgency=medium + + * Release 2.0.0 + + -- Roberto Mier Escandón Wed, 20 Jun 2018 10:29:53 +0200 + +yq (1.15-0) bionic; urgency=medium + + * Release 1.15 + + -- Roberto Mier Escandón Wed, 06 Jun 2018 11:32:03 +0200 + diff --git a/external/yq/debian/compat b/external/yq/debian/compat new file mode 100755 index 0000000..f599e28 --- /dev/null +++ b/external/yq/debian/compat @@ -0,0 +1 @@ +10 diff --git a/external/yq/debian/control b/external/yq/debian/control new file mode 100755 index 0000000..625bfb3 --- /dev/null +++ b/external/yq/debian/control @@ -0,0 +1,22 @@ +Source: yq +Section: devel +Priority: optional +Maintainer: Roberto Mier Escandón +Build-Depends: debhelper (>=10), + golang-1.17-go, + pandoc, + rsync +Standards-Version: 4.1.4 +Homepage: https://github.com/mikefarah/yq.git +Vcs-Browser: https://github.com/mikefarah/yq.git +Vcs-Git: https://github.com/mikefarah/yq.git +XS-Go-Import-Path: github.com/mikefarah/yq +XSBC-Original-Maintainer: Roberto Mier Escandón + +Package: yq +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: lightweight and portable command-line YAML processor + . + The aim of the project is to be the + [jq](https://github.com/stedolan/jq) or sed of yaml files. diff --git a/external/yq/debian/copyright b/external/yq/debian/copyright new file mode 100755 index 0000000..d3bbdc0 --- /dev/null +++ b/external/yq/debian/copyright @@ -0,0 +1,24 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: yq +Source: https://github.com/mikefarah/yq.git + +Files: * +Copyright: 2017 Mike Farah +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. \ No newline at end of file diff --git a/external/yq/debian/gbp.conf b/external/yq/debian/gbp.conf new file mode 100755 index 0000000..cec628c --- /dev/null +++ b/external/yq/debian/gbp.conf @@ -0,0 +1,2 @@ +[DEFAULT] +pristine-tar = True diff --git a/external/yq/debian/rules b/external/yq/debian/rules new file mode 100755 index 0000000..4c40d6d --- /dev/null +++ b/external/yq/debian/rules @@ -0,0 +1,74 @@ +#!/usr/bin/make -f +# +# Copyright (C) 2018-2021 Roberto Mier Escandón +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +PROJECT := yq +OWNER := mikefarah +REPO := github.com + +export DH_OPTIONS +export DH_GOPKG := ${REPO}/${OWNER}/${PROJECT} +export GOROOT := /usr/local/go +export GOPATH := ${CURDIR}/_build +export GOBIN := ${GOPATH}/bin +export PATH := ${GOROOT}/bin:${GOBIN}:${PATH} +export GOCACHE := /tmp/gocache +export GOFLAGS := -mod=vendor +export GO111MODULE := on + +SRCDIR := ${GOPATH}/src/${DH_GOPKG} +DESTDIR := ${CURDIR}/debian/${PROJECT} +BINDIR := /usr/bin +MANDIR := /usr/share/man/man1/ +ASSETSDIR := /usr/share/${PROJECT} + +%: + dh $@ + +override_dh_auto_build: + mkdir -p ${SRCDIR} + mkdir -p ${GOBIN} + # copy project to local srcdir to build from there + rsync -avz --progress --exclude=_build --exclude=debian --exclude=tmp. --exclude=go.mod --exclude=docs . $(SRCDIR) + # build go code + ( \ + cd ${SRCDIR} && \ + go install -buildmode=pie ./... \ + ) + + # build man page + ( \ + cd ${SRCDIR} && \ + ./scripts/generate-man-page-md.sh && \ + ./scripts/generate-man-page.sh \ + ) + +override_dh_auto_test: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) + (cd ${SRCDIR} && go test -v ./...) +endif + +override_dh_auto_install: + cp ${GOBIN}/yq ${DESTDIR}/${BINDIR} + cp -f ${SRCDIR}/LICENSE ${DESTDIR}/${ASSETSDIR} + chmod a+x ${DESTDIR}/${BINDIR}/yq + + # man + mkdir -p "${DESTDIR}"/"${MANDIR}" + cp "${SRCDIR}"/yq.1 "${DESTDIR}"/"${MANDIR}" \ + +override_dh_auto_clean: + dh_clean + rm -rf ${CURDIR}/_build diff --git a/external/yq/debian/source/format b/external/yq/debian/source/format new file mode 100755 index 0000000..89ae9db --- /dev/null +++ b/external/yq/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/external/yq/debian/yq.dirs b/external/yq/debian/yq.dirs new file mode 100755 index 0000000..ccf6e91 --- /dev/null +++ b/external/yq/debian/yq.dirs @@ -0,0 +1,3 @@ +usr/bin +usr/share/yq +usr/share/man/man1 \ No newline at end of file diff --git a/external/yq/examples/array.yaml b/external/yq/examples/array.yaml new file mode 100755 index 0000000..07b8808 --- /dev/null +++ b/external/yq/examples/array.yaml @@ -0,0 +1,2 @@ +- [cat, dog, frog, cow] +- [apple, banana, grape, mango] \ No newline at end of file diff --git a/external/yq/examples/bad.yaml b/external/yq/examples/bad.yaml new file mode 100755 index 0000000..427823f --- /dev/null +++ b/external/yq/examples/bad.yaml @@ -0,0 +1,8 @@ +b: + d: be gone + c: 2 + e: + - name: Billy Bob # comment over here + +--- +[123123 \ No newline at end of file diff --git a/external/yq/examples/base64.txt b/external/yq/examples/base64.txt new file mode 100755 index 0000000..c74e092 --- /dev/null +++ b/external/yq/examples/base64.txt @@ -0,0 +1 @@ +bXkgc2VjcmV0IGNoaWxsaSByZWNpcGUgaXMuLi4u \ No newline at end of file diff --git a/external/yq/examples/data1-no-comments.yaml b/external/yq/examples/data1-no-comments.yaml new file mode 100755 index 0000000..b0f017b --- /dev/null +++ b/external/yq/examples/data1-no-comments.yaml @@ -0,0 +1,4 @@ +a: simple +b: [1, 2] +c: + test: 1 diff --git a/external/yq/examples/data1.yaml b/external/yq/examples/data1.yaml new file mode 100755 index 0000000..850ab07 --- /dev/null +++ b/external/yq/examples/data1.yaml @@ -0,0 +1 @@ +["foobar", "foobaz", "blarp"] \ No newline at end of file diff --git a/external/yq/examples/data2.yaml b/external/yq/examples/data2.yaml new file mode 100755 index 0000000..fb5bcc6 --- /dev/null +++ b/external/yq/examples/data2.yaml @@ -0,0 +1,5 @@ +# -------------------------------------------------- +# It's a test with comment +# -------------------------------------------------- +groups: + - name: d \ No newline at end of file diff --git a/external/yq/examples/data3.yaml b/external/yq/examples/data3.yaml new file mode 100755 index 0000000..22e8056 --- /dev/null +++ b/external/yq/examples/data3.yaml @@ -0,0 +1,4 @@ +a: "simple" # just the best +b: [1, 3] +c: + test: 1 \ No newline at end of file diff --git a/external/yq/examples/empty-no-comment.yaml b/external/yq/examples/empty-no-comment.yaml new file mode 100755 index 0000000..e69de29 diff --git a/external/yq/examples/empty.yaml b/external/yq/examples/empty.yaml new file mode 100755 index 0000000..308ec1d --- /dev/null +++ b/external/yq/examples/empty.yaml @@ -0,0 +1 @@ +# comment diff --git a/external/yq/examples/example.properties b/external/yq/examples/example.properties new file mode 100755 index 0000000..71af9cd --- /dev/null +++ b/external/yq/examples/example.properties @@ -0,0 +1,6 @@ +# comments on values appear +person.name = Mike + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza \ No newline at end of file diff --git a/external/yq/examples/front-matter.yaml b/external/yq/examples/front-matter.yaml new file mode 100755 index 0000000..8ce5d4b --- /dev/null +++ b/external/yq/examples/front-matter.yaml @@ -0,0 +1,6 @@ +--- +a: apple +b: bannana +--- +hello there +apples: great \ No newline at end of file diff --git a/external/yq/examples/instruction_sample.yaml b/external/yq/examples/instruction_sample.yaml new file mode 100755 index 0000000..652e022 --- /dev/null +++ b/external/yq/examples/instruction_sample.yaml @@ -0,0 +1,7 @@ +- command: update + path: b.c + value: + #great + things: frog # wow! +- command: delete + path: b.d \ No newline at end of file diff --git a/external/yq/examples/leading-seperator.yaml b/external/yq/examples/leading-seperator.yaml new file mode 100755 index 0000000..cf11014 --- /dev/null +++ b/external/yq/examples/leading-seperator.yaml @@ -0,0 +1,2 @@ +--- +a: test \ No newline at end of file diff --git a/external/yq/examples/merge-anchor.yaml b/external/yq/examples/merge-anchor.yaml new file mode 100755 index 0000000..61041bd --- /dev/null +++ b/external/yq/examples/merge-anchor.yaml @@ -0,0 +1,19 @@ +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c + +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c + +foobarList: + b: foobarList_b + <<: [*foo,*bar] + c: foobarList_c + +foobar: + c: foobar_c + <<: *foo + thing: foobar_thing \ No newline at end of file diff --git a/external/yq/examples/mike.xml b/external/yq/examples/mike.xml new file mode 100755 index 0000000..4543a10 --- /dev/null +++ b/external/yq/examples/mike.xml @@ -0,0 +1,7 @@ + + + + + +things + \ No newline at end of file diff --git a/external/yq/examples/mike2.xml b/external/yq/examples/mike2.xml new file mode 100755 index 0000000..0ad8095 --- /dev/null +++ b/external/yq/examples/mike2.xml @@ -0,0 +1,11 @@ + + + + + + + cool + + ba2234r + bar2234233 + \ No newline at end of file diff --git a/external/yq/examples/multiline-text.yaml b/external/yq/examples/multiline-text.yaml new file mode 100755 index 0000000..8ecccac --- /dev/null +++ b/external/yq/examples/multiline-text.yaml @@ -0,0 +1,5 @@ +test: | + abcdefg + hijklmno + + diff --git a/external/yq/examples/multiple_docs.yaml b/external/yq/examples/multiple_docs.yaml new file mode 100755 index 0000000..cc94aad --- /dev/null +++ b/external/yq/examples/multiple_docs.yaml @@ -0,0 +1,18 @@ +commonKey: first document +a: Easy! as one two three +b: + c: 2 + d: [3, 4] + e: + - name: fred + value: 3 + - name: sam + value: 4 +--- +commonKey: second document +another: + document: here +--- +commonKey: third document +wow: + - here is another diff --git a/external/yq/examples/multiple_docs_small.yaml b/external/yq/examples/multiple_docs_small.yaml new file mode 100755 index 0000000..86035cc --- /dev/null +++ b/external/yq/examples/multiple_docs_small.yaml @@ -0,0 +1,7 @@ +a: Easy! as one two three +--- +another: + document: here +--- +- 1 +- 2 \ No newline at end of file diff --git a/external/yq/examples/numbered_keys.yml b/external/yq/examples/numbered_keys.yml new file mode 100755 index 0000000..9a15c7e --- /dev/null +++ b/external/yq/examples/numbered_keys.yml @@ -0,0 +1,2 @@ +5: + 6: camel! \ No newline at end of file diff --git a/external/yq/examples/order.yaml b/external/yq/examples/order.yaml new file mode 100755 index 0000000..b3d896b --- /dev/null +++ b/external/yq/examples/order.yaml @@ -0,0 +1,2 @@ +version: 3 +application: MyApp \ No newline at end of file diff --git a/external/yq/examples/order.yml b/external/yq/examples/order.yml new file mode 100755 index 0000000..2dc6204 --- /dev/null +++ b/external/yq/examples/order.yml @@ -0,0 +1,6 @@ +version: '2' +services: + test: + image: ubuntu:14.04 + stdin_open: true + tty: true \ No newline at end of file diff --git a/external/yq/examples/sample.json b/external/yq/examples/sample.json new file mode 100755 index 0000000..5a35f97 --- /dev/null +++ b/external/yq/examples/sample.json @@ -0,0 +1 @@ +{"a":"Easy! as one two three","b":{"c":2,"d":[3,4],"e":[{"name":"fred","value":3},{"name":"sam","value":4}]},"ab":"must appear last"} diff --git a/external/yq/examples/sample.yaml b/external/yq/examples/sample.yaml new file mode 100755 index 0000000..9b925d7 --- /dev/null +++ b/external/yq/examples/sample.yaml @@ -0,0 +1,11 @@ +# Some doc + +a: true +b: + c: 2 + d: [3, 4, 5] + e: + - name: fred + value: 3 + - name: sam + value: 4 \ No newline at end of file diff --git a/external/yq/examples/sample_array.yaml b/external/yq/examples/sample_array.yaml new file mode 100755 index 0000000..3a26a2e --- /dev/null +++ b/external/yq/examples/sample_array.yaml @@ -0,0 +1 @@ +[1,2,3] \ No newline at end of file diff --git a/external/yq/examples/sample_array_2.yaml b/external/yq/examples/sample_array_2.yaml new file mode 100755 index 0000000..e83ee7a --- /dev/null +++ b/external/yq/examples/sample_array_2.yaml @@ -0,0 +1,2 @@ +- 4 +- 5 \ No newline at end of file diff --git a/external/yq/examples/sample_objects.csv b/external/yq/examples/sample_objects.csv new file mode 100755 index 0000000..84ae60b --- /dev/null +++ b/external/yq/examples/sample_objects.csv @@ -0,0 +1,3 @@ +name,numberOfCats,likesApples,height +,1,true,168.8 +Samantha's Rabbit,2,false,-188.8 \ No newline at end of file diff --git a/external/yq/examples/sample_text.yaml b/external/yq/examples/sample_text.yaml new file mode 100755 index 0000000..45b983b --- /dev/null +++ b/external/yq/examples/sample_text.yaml @@ -0,0 +1 @@ +hi diff --git a/external/yq/examples/simple-anchor-exploded.yaml b/external/yq/examples/simple-anchor-exploded.yaml new file mode 100755 index 0000000..7cf0d51 --- /dev/null +++ b/external/yq/examples/simple-anchor-exploded.yaml @@ -0,0 +1,5 @@ +foo: + a: 1 + +foobar: + a: 1 \ No newline at end of file diff --git a/external/yq/examples/simple-anchor.yaml b/external/yq/examples/simple-anchor.yaml new file mode 100755 index 0000000..35218bb --- /dev/null +++ b/external/yq/examples/simple-anchor.yaml @@ -0,0 +1,5 @@ +foo: &foo + a: 1 + +foobar: + <<: *foo \ No newline at end of file diff --git a/external/yq/examples/small.properties b/external/yq/examples/small.properties new file mode 100755 index 0000000..7a75a2e --- /dev/null +++ b/external/yq/examples/small.properties @@ -0,0 +1 @@ +this.is = a properties file \ No newline at end of file diff --git a/external/yq/examples/small.xml b/external/yq/examples/small.xml new file mode 100755 index 0000000..8bec459 --- /dev/null +++ b/external/yq/examples/small.xml @@ -0,0 +1 @@ +is some xml \ No newline at end of file diff --git a/external/yq/examples/thing.yml b/external/yq/examples/thing.yml new file mode 100755 index 0000000..582ebae --- /dev/null +++ b/external/yq/examples/thing.yml @@ -0,0 +1,2 @@ +a: apple is included +b: cool. \ No newline at end of file diff --git a/external/yq/github-action/Dockerfile b/external/yq/github-action/Dockerfile new file mode 100755 index 0000000..dfc9086 --- /dev/null +++ b/external/yq/github-action/Dockerfile @@ -0,0 +1,9 @@ +FROM mikefarah/yq:4 + +COPY entrypoint.sh /entrypoint.sh + +# github action recommendation is to run as root. +# https://docs.github.com/en/actions/creating-actions/dockerfile-support-for-github-actions#user +USER root + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/external/yq/github-action/entrypoint.sh b/external/yq/github-action/entrypoint.sh new file mode 100755 index 0000000..a328fbd --- /dev/null +++ b/external/yq/github-action/entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/sh -l +set -e +echo "::debug::\$cmd: $1" +RESULT=$(eval "$1") +echo "::debug::\$RESULT: $RESULT" +# updating from +# https://github.com/orgs/community/discussions/26288#discussioncomment-3876281 +# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter +delimiter=$(cat /proc/sys/kernel/random/uuid) +echo "result<<${delimiter}" >> "${GITHUB_OUTPUT}" +echo "${RESULT}" >> "${GITHUB_OUTPUT}" +echo "${delimiter}" >> "${GITHUB_OUTPUT}" diff --git a/external/yq/go.sum b/external/yq/go.sum new file mode 100755 index 0000000..e4ca963 --- /dev/null +++ b/external/yq/go.sum @@ -0,0 +1,83 @@ +github.com/a8m/envsubst v1.3.0 h1:GmXKmVssap0YtlU3E230W98RWtWCyIZzjtf1apWWyAg= +github.com/a8m/envsubst v1.3.0/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY= +github.com/alecthomas/assert/v2 v2.0.3 h1:WKqJODfOiQG0nEJKFKzDIG3E29CN2/4zR9XGJzKIkbg= +github.com/alecthomas/participle/v2 v2.0.0-beta.5 h1:y6dsSYVb1G5eK6mgmy+BgI3Mw35a3WghArZ/Hbebrjo= +github.com/alecthomas/participle/v2 v2.0.0-beta.5/go.mod h1:RC764t6n4L8D8ITAJv0qdokritYSNR3wV5cVwmIEaMM= +github.com/alecthomas/repr v0.1.1 h1:87P60cSmareLAxMc4Hro0r2RBY4ROm0dYwkJNpS4pPs= +github.com/alecthomas/repr v0.1.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= +github.com/elliotchance/orderedmap v1.5.0 h1:1IsExUsjv5XNBD3ZdC7jkAAqLWOOKdbPTmkHx63OsBg= +github.com/elliotchance/orderedmap v1.5.0/go.mod h1:wsDwEaX5jEoyhbs7x93zk2H/qv0zwuhg4inXhDkYqys= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-yaml v1.9.6 h1:KhAu1zf9JXnm3vbG49aDE0E5uEBUsM4uwD31/58ZWyI= +github.com/goccy/go-yaml v1.9.6/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= +github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20220708220712-1185a9018129 h1:vucSRfWwTsoXro7P+3Cjlr6flUMtzCwzlvkxEQtHHB0= +golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e h1:NHvCuwuS43lGnYhten69ZWqi2QOj/CiDNcKbVqwVoew= +golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE= +gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/external/yq/how-it-works.md b/external/yq/how-it-works.md new file mode 100755 index 0000000..51a41fc --- /dev/null +++ b/external/yq/how-it-works.md @@ -0,0 +1,129 @@ +# How it works + +In `yq` expressions are made up of operators and pipes. A context of nodes is passed through the expression and each operation takes the context as input and returns a new context as output. That output is piped in as input for the next operation in the expression. To begin with, the context is set to the first yaml document of the first yaml file (if processing in sequence using eval). + +Lets look at a couple of examples. + +## Simple assignment example + +Given a document like: + +```yaml +a: cat +b: dog +``` + +with an expression: + +``` +.a = .b +``` + +Like math expressions - operator precedence is important. + +The `=` operator takes two arguments, a `lhs` expression, which in this case is `.a` and `rhs` expression which is `.b`. + +It pipes the current, lets call it 'root' context through the `lhs` expression of `.a` to return the node + +```yaml +cat +``` + +Sidenote: this node holds not only its value 'cat', but comments and metadata too, including path and parent information. + +The `=` operator then pipes the 'root' context through the `rhs` expression of `.b` to return the node + +```yaml +dog +``` + +Both sides have now been evaluated, so now the operator copies across the value from the RHS (`.b`) to the LHS (`.a`), and it returns the now updated context: + +```yaml +a: dog +b: dog +``` + + +## Complex assignment, operator precedence rules + +Just like math expressions - `yq` expressions have an order of precedence. The pipe `|` operator has a low order of precedence, so operators with higher precedence will get evaluated first. + +Most of the time, this is intuitively what you'd want, for instance `.a = "cat" | .b = "dog"` is effectively: `(.a = "cat") | (.b = "dog")`. + +However, this is not always the case, particularly if you have a complex LHS or RHS expression, for instance if you want to select particular nodes to update. + +Lets say you had: + +```yaml +- name: bob + fruit: apple +- name: sally + fruit: orange + +``` + +Lets say you wanted to update the `sally` entry to have fruit: 'mango'. The _incorrect_ way to do that is: +`.[] | select(.name == "sally") | .fruit = "mango"`. + +Because `|` has a low operator precedence, this will be evaluated (_incorrectly_) as : `(.[]) | (select(.name == "sally")) | (.fruit = "mango")`. What you'll see is only the updated segment returned: + +```yaml +name: sally +fruit: mango +``` + +To properly update this yaml, you will need to use brackets (think BODMAS from maths) and wrap the entire LHS: +`(.[] | select(.name == "sally") | .fruit) = "mango"` + + +Now that entire LHS expression is passed to the 'assign' (`=`) operator, and the yaml is correctly updated and returned: + + +```yaml +- name: bob + fruit: apple +- name: sally + fruit: mango + +``` + +## Relative update (e.g. `|=`) +There is another form of the `=` operator which we call the relative form. It's very similar to `=` but with one key difference when evaluating the RHS expression. + +In the plain form, we pass in the 'root' level context to the RHS expression. In relative form, we pass in _each result of the LHS_ to the RHS expression. Let's go through an example. + +Given a document like: + +```yaml +a: 1 +b: thing +``` + +with an expression: + +``` +.a |= . + 1 +``` + +Similar to the `=` operator, `|=` takes two operands, the LHS and RHS. + +It pipes the current context (the whole document) through the LHS expression of `.a` to get the node value: + +``` +1 +``` + +Now it pipes _that LHS context_ into the RHS expression `. + 1` (whereas in the `=` plain form it piped the original document context into the RHS) to yield: + + +``` +2 +``` + +The assignment operator then copies across the value from the RHS to the value on the LHS, and it returns the now updated 'root' context: + +```yaml +a: 2 +b: thing +``` diff --git a/external/yq/mkdocs.yml b/external/yq/mkdocs.yml new file mode 100755 index 0000000..9896ee0 --- /dev/null +++ b/external/yq/mkdocs.yml @@ -0,0 +1,7 @@ +docs_dir: mkdocs +site_dir: docs +site_name: Yq +theme: 'material' +repo_name: 'mikefarah/yq' +repo_url: 'https://github.com/mikefarah/yq' + diff --git a/external/yq/pkg/yqlib/all_at_once_evaluator.go b/external/yq/pkg/yqlib/all_at_once_evaluator.go new file mode 100755 index 0000000..4dbed3d --- /dev/null +++ b/external/yq/pkg/yqlib/all_at_once_evaluator.go @@ -0,0 +1,83 @@ +package yqlib + +import ( + "container/list" + + yaml "gopkg.in/yaml.v3" +) + +// A yaml expression evaluator that runs the expression once against all files/nodes in memory. +type Evaluator interface { + EvaluateFiles(expression string, filenames []string, printer Printer, decoder Decoder) error + + // EvaluateNodes takes an expression and one or more yaml nodes, returning a list of matching candidate nodes + EvaluateNodes(expression string, nodes ...*yaml.Node) (*list.List, error) + + // EvaluateCandidateNodes takes an expression and list of candidate nodes, returning a list of matching candidate nodes + EvaluateCandidateNodes(expression string, inputCandidateNodes *list.List) (*list.List, error) +} + +type allAtOnceEvaluator struct { + treeNavigator DataTreeNavigator +} + +func NewAllAtOnceEvaluator() Evaluator { + InitExpressionParser() + return &allAtOnceEvaluator{treeNavigator: NewDataTreeNavigator()} +} + +func (e *allAtOnceEvaluator) EvaluateNodes(expression string, nodes ...*yaml.Node) (*list.List, error) { + inputCandidates := list.New() + for _, node := range nodes { + inputCandidates.PushBack(&CandidateNode{Node: node}) + } + return e.EvaluateCandidateNodes(expression, inputCandidates) +} + +func (e *allAtOnceEvaluator) EvaluateCandidateNodes(expression string, inputCandidates *list.List) (*list.List, error) { + node, err := ExpressionParser.ParseExpression(expression) + if err != nil { + return nil, err + } + context, err := e.treeNavigator.GetMatchingNodes(Context{MatchingNodes: inputCandidates}, node) + if err != nil { + return nil, err + } + return context.MatchingNodes, nil +} + +func (e *allAtOnceEvaluator) EvaluateFiles(expression string, filenames []string, printer Printer, decoder Decoder) error { + fileIndex := 0 + + var allDocuments = list.New() + for _, filename := range filenames { + reader, err := readStream(filename) + if err != nil { + return err + } + + fileDocuments, err := readDocuments(reader, filename, fileIndex, decoder) + if err != nil { + return err + } + allDocuments.PushBackList(fileDocuments) + fileIndex = fileIndex + 1 + } + + if allDocuments.Len() == 0 { + candidateNode := &CandidateNode{ + Document: 0, + Filename: "", + Node: &yaml.Node{Kind: yaml.DocumentNode, Content: []*yaml.Node{{Tag: "!!null", Kind: yaml.ScalarNode}}}, + FileIndex: 0, + LeadingContent: "", + } + allDocuments.PushBack(candidateNode) + } + + matches, err := e.EvaluateCandidateNodes(expression, allDocuments) + if err != nil { + return err + } + return printer.PrintResults(matches) +} diff --git a/external/yq/pkg/yqlib/all_at_once_evaluator_test.go b/external/yq/pkg/yqlib/all_at_once_evaluator_test.go new file mode 100755 index 0000000..2e9abc4 --- /dev/null +++ b/external/yq/pkg/yqlib/all_at_once_evaluator_test.go @@ -0,0 +1,40 @@ +package yqlib + +import ( + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +var evaluateNodesScenario = []expressionScenario{ + { + document: `a: hello`, + expression: `.a`, + expected: []string{ + "D0, P[a], (!!str)::hello\n", + }, + }, + { + document: `a: hello`, + expression: `.`, + expected: []string{ + "D0, P[], (doc)::a: hello\n", + }, + }, + { + document: `- a: "yes"`, + expression: `.[] | has("a")`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + }, + }, +} + +func TestAllAtOnceEvaluateNodes(t *testing.T) { + var evaluator = NewAllAtOnceEvaluator() + for _, tt := range evaluateNodesScenario { + node := test.ParseData(tt.document) + list, _ := evaluator.EvaluateNodes(tt.expression, &node) + test.AssertResultComplex(t, tt.expected, resultsToString(t, list)) + } +} diff --git a/external/yq/pkg/yqlib/candidate_node.go b/external/yq/pkg/yqlib/candidate_node.go new file mode 100755 index 0000000..61675c8 --- /dev/null +++ b/external/yq/pkg/yqlib/candidate_node.go @@ -0,0 +1,189 @@ +package yqlib + +import ( + "container/list" + "fmt" + "strings" + + "github.com/jinzhu/copier" + yaml "gopkg.in/yaml.v3" +) + +type CandidateNode struct { + Node *yaml.Node // the actual node + Parent *CandidateNode // parent node + Key *yaml.Node // node key, if this is a value from a map (or index in an array) + + LeadingContent string + TrailingContent string + + Path []interface{} /// the path we took to get to this node + Document uint // the document index of this node + Filename string + FileIndex int + // when performing op against all nodes given, this will treat all the nodes as one + // (e.g. top level cross document merge). This property does not propagate to child nodes. + EvaluateTogether bool + IsMapKey bool +} + +func (n *CandidateNode) GetKey() string { + keyPrefix := "" + if n.IsMapKey { + keyPrefix = "key-" + } + return fmt.Sprintf("%v%v - %v", keyPrefix, n.Document, n.Path) +} + +func (n *CandidateNode) GetNiceTag() string { + return unwrapDoc(n.Node).Tag +} + +func (n *CandidateNode) GetNicePath() string { + if n.Path != nil && len(n.Path) >= 0 { + pathStr := make([]string, len(n.Path)) + for i, v := range n.Path { + pathStr[i] = fmt.Sprintf("%v", v) + } + return strings.Join(pathStr, ".") + } + return "" +} + +func (n *CandidateNode) AsList() *list.List { + elMap := list.New() + elMap.PushBack(n) + return elMap +} + +func (n *CandidateNode) CreateChildInMap(key *yaml.Node, node *yaml.Node) *CandidateNode { + var value interface{} + if key != nil { + value = key.Value + } + return &CandidateNode{ + Node: node, + Path: n.createChildPath(value), + Parent: n, + Key: key, + Document: n.Document, + Filename: n.Filename, + FileIndex: n.FileIndex, + } +} + +func (n *CandidateNode) CreateChildInArray(index int, node *yaml.Node) *CandidateNode { + return &CandidateNode{ + Node: node, + Path: n.createChildPath(index), + Parent: n, + Key: &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", index), Tag: "!!int"}, + Document: n.Document, + Filename: n.Filename, + FileIndex: n.FileIndex, + } +} + +func (n *CandidateNode) CreateReplacement(node *yaml.Node) *CandidateNode { + return &CandidateNode{ + Node: node, + Path: n.createChildPath(nil), + Parent: n.Parent, + Key: n.Key, + IsMapKey: n.IsMapKey, + Document: n.Document, + Filename: n.Filename, + FileIndex: n.FileIndex, + } +} + +func (n *CandidateNode) CreateReplacementWithDocWrappers(node *yaml.Node) *CandidateNode { + replacement := n.CreateReplacement(node) + replacement.LeadingContent = n.LeadingContent + replacement.TrailingContent = n.TrailingContent + return replacement +} + +func (n *CandidateNode) createChildPath(path interface{}) []interface{} { + if path == nil { + newPath := make([]interface{}, len(n.Path)) + copy(newPath, n.Path) + return newPath + } + + //don't use append as they may actually modify the path of the orignal node! + newPath := make([]interface{}, len(n.Path)+1) + copy(newPath, n.Path) + newPath[len(n.Path)] = path + return newPath +} + +func (n *CandidateNode) Copy() (*CandidateNode, error) { + clone := &CandidateNode{} + err := copier.Copy(clone, n) + if err != nil { + return nil, err + } + clone.Node = deepClone(n.Node) + return clone, nil +} + +// updates this candidate from the given candidate node +func (n *CandidateNode) UpdateFrom(other *CandidateNode, prefs assignPreferences) { + + // if this is an empty map or empty array, use the style of other node. + if (n.Node.Kind != yaml.ScalarNode && len(n.Node.Content) == 0) || + // if the tag has changed (e.g. from str to bool) + (guessTagFromCustomType(n.Node) != guessTagFromCustomType(other.Node)) { + n.Node.Style = other.Node.Style + } + + n.Node.Content = deepCloneContent(other.Node.Content) + n.Node.Kind = other.Node.Kind + n.Node.Value = other.Node.Value + + n.UpdateAttributesFrom(other, prefs) + +} + +func (n *CandidateNode) UpdateAttributesFrom(other *CandidateNode, prefs assignPreferences) { + log.Debug("UpdateAttributesFrom: n: %v other: %v", n.GetKey(), other.GetKey()) + if n.Node.Kind != other.Node.Kind { + // clear out the contents when switching to a different type + // e.g. map to array + n.Node.Content = make([]*yaml.Node, 0) + n.Node.Value = "" + } + n.Node.Kind = other.Node.Kind + + // don't clobber custom tags... + if prefs.ClobberCustomTags || strings.HasPrefix(n.Node.Tag, "!!") || n.Node.Tag == "" { + n.Node.Tag = other.Node.Tag + } + + n.Node.Alias = other.Node.Alias + + if !prefs.DontOverWriteAnchor { + n.Node.Anchor = other.Node.Anchor + } + + // merge will pickup the style of the new thing + // when autocreating nodes + + if n.Node.Style == 0 { + n.Node.Style = other.Node.Style + } + + if other.Node.FootComment != "" { + n.Node.FootComment = other.Node.FootComment + } + if other.TrailingContent != "" { + n.TrailingContent = other.TrailingContent + } + if other.Node.HeadComment != "" { + n.Node.HeadComment = other.Node.HeadComment + } + if other.Node.LineComment != "" { + n.Node.LineComment = other.Node.LineComment + } +} diff --git a/external/yq/pkg/yqlib/color_print.go b/external/yq/pkg/yqlib/color_print.go new file mode 100755 index 0000000..1128e85 --- /dev/null +++ b/external/yq/pkg/yqlib/color_print.go @@ -0,0 +1,61 @@ +package yqlib + +import ( + "fmt" + "io" + + "github.com/fatih/color" + "github.com/goccy/go-yaml/lexer" + "github.com/goccy/go-yaml/printer" +) + +// Thanks @risentveber! + +const escape = "\x1b" + +func format(attr color.Attribute) string { + return fmt.Sprintf("%s[%dm", escape, attr) +} + +func colorizeAndPrint(yamlBytes []byte, writer io.Writer) error { + tokens := lexer.Tokenize(string(yamlBytes)) + var p printer.Printer + p.Bool = func() *printer.Property { + return &printer.Property{ + Prefix: format(color.FgHiMagenta), + Suffix: format(color.Reset), + } + } + p.Number = func() *printer.Property { + return &printer.Property{ + Prefix: format(color.FgHiMagenta), + Suffix: format(color.Reset), + } + } + p.MapKey = func() *printer.Property { + return &printer.Property{ + Prefix: format(color.FgCyan), + Suffix: format(color.Reset), + } + } + p.Anchor = func() *printer.Property { + return &printer.Property{ + Prefix: format(color.FgHiYellow), + Suffix: format(color.Reset), + } + } + p.Alias = func() *printer.Property { + return &printer.Property{ + Prefix: format(color.FgHiYellow), + Suffix: format(color.Reset), + } + } + p.String = func() *printer.Property { + return &printer.Property{ + Prefix: format(color.FgGreen), + Suffix: format(color.Reset), + } + } + _, err := writer.Write([]byte(p.PrintTokens(tokens) + "\n")) + return err +} diff --git a/external/yq/pkg/yqlib/compare_operators.go b/external/yq/pkg/yqlib/compare_operators.go new file mode 100755 index 0000000..63323e3 --- /dev/null +++ b/external/yq/pkg/yqlib/compare_operators.go @@ -0,0 +1,133 @@ +package yqlib + +import ( + "fmt" + "strconv" + "time" + + yaml "gopkg.in/yaml.v3" +) + +type compareTypePref struct { + OrEqual bool + Greater bool +} + +func compareOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- compareOperator") + prefs := expressionNode.Operation.Preferences.(compareTypePref) + return crossFunction(d, context.ReadOnlyClone(), expressionNode, compare(prefs), true) +} + +func compare(prefs compareTypePref) func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + return func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + log.Debugf("-- compare cross function") + if lhs == nil && rhs == nil { + owner := &CandidateNode{} + return createBooleanCandidate(owner, prefs.OrEqual), nil + } else if lhs == nil { + log.Debugf("lhs nil, but rhs is not") + return createBooleanCandidate(rhs, false), nil + } else if rhs == nil { + log.Debugf("rhs nil, but rhs is not") + return createBooleanCandidate(lhs, false), nil + } + + lhs.Node = unwrapDoc(lhs.Node) + rhs.Node = unwrapDoc(rhs.Node) + + switch lhs.Node.Kind { + case yaml.MappingNode: + return nil, fmt.Errorf("maps not yet supported for comparison") + case yaml.SequenceNode: + return nil, fmt.Errorf("arrays not yet supported for comparison") + default: + if rhs.Node.Kind != yaml.ScalarNode { + return nil, fmt.Errorf("%v (%v) cannot be subtracted from %v", rhs.Node.Tag, rhs.Path, lhs.Node.Tag) + } + target := lhs.CreateReplacement(&yaml.Node{}) + boolV, err := compareScalars(context, prefs, lhs.Node, rhs.Node) + + return createBooleanCandidate(target, boolV), err + } + } +} + +func compareDateTime(layout string, prefs compareTypePref, lhs *yaml.Node, rhs *yaml.Node) (bool, error) { + lhsTime, err := parseDateTime(layout, lhs.Value) + if err != nil { + return false, err + } + + rhsTime, err := parseDateTime(layout, rhs.Value) + if err != nil { + return false, err + } + + if prefs.OrEqual && lhsTime.Equal(rhsTime) { + return true, nil + } + if prefs.Greater { + return lhsTime.After(rhsTime), nil + } + return lhsTime.Before(rhsTime), nil + +} + +func compareScalars(context Context, prefs compareTypePref, lhs *yaml.Node, rhs *yaml.Node) (bool, error) { + lhsTag := guessTagFromCustomType(lhs) + rhsTag := guessTagFromCustomType(rhs) + + isDateTime := lhs.Tag == "!!timestamp" + // if the lhs is a string, it might be a timestamp in a custom format. + if lhsTag == "!!str" && context.GetDateTimeLayout() != time.RFC3339 { + _, err := parseDateTime(context.GetDateTimeLayout(), lhs.Value) + isDateTime = err == nil + } + if isDateTime { + return compareDateTime(context.GetDateTimeLayout(), prefs, lhs, rhs) + } else if lhsTag == "!!int" && rhsTag == "!!int" { + _, lhsNum, err := parseInt64(lhs.Value) + if err != nil { + return false, err + } + _, rhsNum, err := parseInt64(rhs.Value) + if err != nil { + return false, err + } + + if prefs.OrEqual && lhsNum == rhsNum { + return true, nil + } + if prefs.Greater { + return lhsNum > rhsNum, nil + } + return lhsNum < rhsNum, nil + } else if (lhsTag == "!!int" || lhsTag == "!!float") && (rhsTag == "!!int" || rhsTag == "!!float") { + lhsNum, err := strconv.ParseFloat(lhs.Value, 64) + if err != nil { + return false, err + } + rhsNum, err := strconv.ParseFloat(rhs.Value, 64) + if err != nil { + return false, err + } + if prefs.OrEqual && lhsNum == rhsNum { + return true, nil + } + if prefs.Greater { + return lhsNum > rhsNum, nil + } + return lhsNum < rhsNum, nil + } else if lhsTag == "!!str" && rhsTag == "!!str" { + if prefs.OrEqual && lhs.Value == rhs.Value { + return true, nil + } + if prefs.Greater { + return lhs.Value > rhs.Value, nil + } + return lhs.Value < rhs.Value, nil + } + + return false, fmt.Errorf("%v not yet supported for comparison", lhs.Tag) +} diff --git a/external/yq/pkg/yqlib/compare_operators_test.go b/external/yq/pkg/yqlib/compare_operators_test.go new file mode 100755 index 0000000..bf07247 --- /dev/null +++ b/external/yq/pkg/yqlib/compare_operators_test.go @@ -0,0 +1,371 @@ +package yqlib + +import ( + "testing" +) + +var compareOperatorScenarios = []expressionScenario{ + // ints, not equal + { + description: "Compare numbers (>)", + document: "a: 5\nb: 4", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 5\nb: 4", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + description: "Compare integers (>=)", + document: "a: 5\nb: 4", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 5\nb: 4", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + + // ints, equal + { + skipDoc: true, + description: "Compare equal numbers (>)", + document: "a: 5\nb: 5", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 5\nb: 5", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + description: "Compare equal numbers (>=)", + document: "a: 5\nb: 5", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 5\nb: 5", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + + // floats, not equal + { + skipDoc: true, + document: "a: 5.2\nb: 4.1", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 5.2\nb: 4.1", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 5.2\nb: 4.1", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 5.5\nb: 4.1", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + + // floats, equal + { + skipDoc: true, + document: "a: 5.5\nb: 5.5", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 5.5\nb: 5.5", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 5.1\nb: 5.1", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 5.1\nb: 5.1", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + + // strings, not equal + { + description: "Compare strings", + subdescription: "Compares strings by their bytecode.", + document: "a: zoo\nb: apple", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: zoo\nb: apple", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: zoo\nb: apple", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: zoo\nb: apple", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + + // strings, equal + { + skipDoc: true, + document: "a: cat\nb: cat", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: cat\nb: cat", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: cat\nb: cat", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: cat\nb: cat", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + + // datetime, not equal + { + description: "Compare date times", + subdescription: "You can compare date times. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: "a: 2021-01-01T03:10:00Z\nb: 2020-01-01T03:10:00Z", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2020-01-01T03:10:00Z", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2020-01-01T03:10:00Z", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2020-01-01T03:10:00Z", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + + // datetime, equal + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2021-01-01T03:10:00Z", + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2021-01-01T03:10:00Z", + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2021-01-01T03:10:00Z", + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "a: 2021-01-01T03:10:00Z\nb: 2021-01-01T03:10:00Z", + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::true\n", + }, + }, + // both null + { + description: "Both sides are null: > is false", + expression: ".a > .b", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + expression: ".a < .b", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Both sides are null: >= is true", + expression: ".a >= .b", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + expression: ".a <= .b", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + + // one null + { + skipDoc: true, + description: "One side is null: > is false", + document: `a: 5`, + expression: ".a > .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `a: 5`, + expression: ".a < .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + description: "One side is null: >= is false", + document: `a: 5`, + expression: ".a >= .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `a: 5`, + expression: ".a <= .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `a: 5`, + expression: ".b <= .a", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `a: 5`, + expression: ".b < .a", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, +} + +func TestCompareOperatorScenarios(t *testing.T) { + for _, tt := range compareOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "compare", compareOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/context.go b/external/yq/pkg/yqlib/context.go new file mode 100755 index 0000000..17cddb3 --- /dev/null +++ b/external/yq/pkg/yqlib/context.go @@ -0,0 +1,122 @@ +package yqlib + +import ( + "container/list" + "fmt" + "time" + + "github.com/jinzhu/copier" + logging "gopkg.in/op/go-logging.v1" +) + +type Context struct { + MatchingNodes *list.List + Variables map[string]*list.List + DontAutoCreate bool + datetimeLayout string +} + +func (n *Context) SingleReadonlyChildContext(candidate *CandidateNode) Context { + list := list.New() + list.PushBack(candidate) + newContext := n.ChildContext(list) + newContext.DontAutoCreate = true + return newContext +} + +func (n *Context) SingleChildContext(candidate *CandidateNode) Context { + list := list.New() + list.PushBack(candidate) + return n.ChildContext(list) +} + +func (n *Context) SetDateTimeLayout(newDateTimeLayout string) { + n.datetimeLayout = newDateTimeLayout +} + +func (n *Context) GetDateTimeLayout() string { + if n.datetimeLayout != "" { + return n.datetimeLayout + } + return time.RFC3339 +} + +func (n *Context) GetVariable(name string) *list.List { + if n.Variables == nil { + return nil + } + return n.Variables[name] +} + +func (n *Context) SetVariable(name string, value *list.List) { + if n.Variables == nil { + n.Variables = make(map[string]*list.List) + } + n.Variables[name] = value +} + +func (n *Context) ChildContext(results *list.List) Context { + clone := Context{DontAutoCreate: n.DontAutoCreate, datetimeLayout: n.datetimeLayout} + clone.Variables = make(map[string]*list.List) + if len(n.Variables) > 0 { + err := copier.Copy(&clone.Variables, n.Variables) + if err != nil { + log.Error("Error cloning context :(") + panic(err) + } + } + clone.MatchingNodes = results + return clone +} + +func (n *Context) ToString() string { + if !log.IsEnabledFor(logging.DEBUG) { + return "" + } + result := fmt.Sprintf("Context\nDontAutoCreate: %v\n", n.DontAutoCreate) + return result + NodesToString(n.MatchingNodes) +} + +func (n *Context) DeepClone() Context { + clone := Context{} + err := copier.Copy(&clone, n) + // copier doesn't do lists properly for some reason + clone.MatchingNodes = list.New() + for el := n.MatchingNodes.Front(); el != nil; el = el.Next() { + clonedNode, err := el.Value.(*CandidateNode).Copy() + if err != nil { + log.Error("Error cloning context :(") + panic(err) + } + clone.MatchingNodes.PushBack(clonedNode) + } + + if err != nil { + log.Error("Error cloning context :(") + panic(err) + } + return clone +} + +func (n *Context) Clone() Context { + clone := Context{} + err := copier.Copy(&clone, n) + + if err != nil { + log.Error("Error cloning context :(") + panic(err) + } + return clone +} + +func (n *Context) ReadOnlyClone() Context { + clone := n.Clone() + clone.DontAutoCreate = true + return clone +} + +func (n *Context) WritableClone() Context { + clone := n.Clone() + clone.DontAutoCreate = false + return clone +} diff --git a/external/yq/pkg/yqlib/csv_test.go b/external/yq/pkg/yqlib/csv_test.go new file mode 100755 index 0000000..45160ca --- /dev/null +++ b/external/yq/pkg/yqlib/csv_test.go @@ -0,0 +1,282 @@ +package yqlib + +import ( + "bufio" + "fmt" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +const csvSimple = `name,numberOfCats,likesApples,height +Gary,1,true,168.8 +Samantha's Rabbit,2,false,-188.8 +` +const csvMissing = `name,numberOfCats,likesApples,height +,null,,168.8 +` +const expectedUpdatedSimpleCsv = `name,numberOfCats,likesApples,height +Gary,3,true,168.8 +Samantha's Rabbit,2,false,-188.8 +` + +const csvSimpleShort = `Name,Number of Cats +Gary,1 +Samantha's Rabbit,2 +` + +const tsvSimple = `name numberOfCats likesApples height +Gary 1 true 168.8 +Samantha's Rabbit 2 false -188.8 +` + +const expectedYamlFromCSV = `- name: Gary + numberOfCats: 1 + likesApples: true + height: 168.8 +- name: Samantha's Rabbit + numberOfCats: 2 + likesApples: false + height: -188.8 +` + +const expectedYamlFromCSVMissingData = `- name: Gary + numberOfCats: 1 + height: 168.8 +- name: Samantha's Rabbit + height: -188.8 + likesApples: false +` + +const csvSimpleMissingData = `name,numberOfCats,height +Gary,1,168.8 +Samantha's Rabbit,,-188.8 +` + +const csvTestSimpleYaml = `- [i, like, csv] +- [because, excel, is, cool]` + +const expectedSimpleCsv = `i,like,csv +because,excel,is,cool +` + +const tsvTestExpectedSimpleCsv = `i like csv +because excel is cool +` + +var csvScenarios = []formatScenario{ + { + description: "Encode CSV simple", + input: csvTestSimpleYaml, + expected: expectedSimpleCsv, + scenarioType: "encode-csv", + }, + { + description: "Encode TSV simple", + input: csvTestSimpleYaml, + expected: tsvTestExpectedSimpleCsv, + scenarioType: "encode-tsv", + }, + { + description: "Encode Empty", + skipDoc: true, + input: `[]`, + expected: "", + scenarioType: "encode-csv", + }, + { + description: "Comma in value", + skipDoc: true, + input: `["comma, in, value", things]`, + expected: "\"comma, in, value\",things\n", + scenarioType: "encode-csv", + }, + { + description: "Encode array of objects to csv", + input: expectedYamlFromCSV, + expected: csvSimple, + scenarioType: "encode-csv", + }, + { + description: "Encode array of objects to custom csv format", + subdescription: "Add the header row manually, then the we convert each object into an array of values - resulting in an array of arrays. Pick the columns and call the header whatever you like.", + input: expectedYamlFromCSV, + expected: csvSimpleShort, + expression: `[["Name", "Number of Cats"]] + [.[] | [.name, .numberOfCats ]]`, + scenarioType: "encode-csv", + }, + { + description: "Encode array of objects to csv - missing fields behaviour", + subdescription: "First entry is used to determine the headers, and it is missing 'likesApples', so it is not included in the csv. Second entry does not have 'numberOfCats' so that is blank", + input: expectedYamlFromCSVMissingData, + expected: csvSimpleMissingData, + scenarioType: "encode-csv", + }, + { + description: "decode csv missing", + skipDoc: true, + input: csvMissing, + expected: csvMissing, + scenarioType: "roundtrip-csv", + }, + { + description: "Parse CSV into an array of objects", + subdescription: "First row is assumed to be the header row.", + input: csvSimple, + expected: expectedYamlFromCSV, + scenarioType: "decode-csv-object", + }, + { + description: "Parse TSV into an array of objects", + subdescription: "First row is assumed to be the header row.", + input: tsvSimple, + expected: expectedYamlFromCSV, + scenarioType: "decode-tsv-object", + }, + { + description: "Round trip", + input: csvSimple, + expected: expectedUpdatedSimpleCsv, + expression: `(.[] | select(.name == "Gary") | .numberOfCats) = 3`, + scenarioType: "roundtrip-csv", + }, +} + +func testCSVScenario(t *testing.T, s formatScenario) { + switch s.scenarioType { + case "encode-csv": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewCsvEncoder(',')), s.description) + case "encode-tsv": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewCsvEncoder('\t')), s.description) + case "decode-csv-object": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewCSVObjectDecoder(','), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "decode-tsv-object": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewCSVObjectDecoder('\t'), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "roundtrip-csv": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewCSVObjectDecoder(','), NewCsvEncoder(',')), s.description) + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func documentCSVDecodeObjectScenario(w *bufio.Writer, s formatScenario, formatType string) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, fmt.Sprintf("Given a sample.%v file of:\n", formatType)) + writeOrPanic(w, fmt.Sprintf("```%v\n%v\n```\n", formatType, s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=%v sample.%v\n```\n", formatType, formatType)) + writeOrPanic(w, "will output\n") + + separator := ',' + if formatType == "tsv" { + separator = '\t' + } + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", + mustProcessFormatScenario(s, NewCSVObjectDecoder(separator), NewYamlEncoder(s.indent, false, ConfiguredYamlPreferences))), + ) +} + +func documentCSVEncodeScenario(w *bufio.Writer, s formatScenario, formatType string) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -o=%v '%v' sample.yml\n```\n", formatType, expression)) + } else { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -o=%v sample.yml\n```\n", formatType)) + } + writeOrPanic(w, "will output\n") + + separator := ',' + if formatType == "tsv" { + separator = '\t' + } + + writeOrPanic(w, fmt.Sprintf("```%v\n%v```\n\n", formatType, + mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewCsvEncoder(separator))), + ) +} + +func documentCSVRoundTripScenario(w *bufio.Writer, s formatScenario, formatType string) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, fmt.Sprintf("Given a sample.%v file of:\n", formatType)) + writeOrPanic(w, fmt.Sprintf("```%v\n%v\n```\n", formatType, s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=%v -o=%v '%v' sample.%v\n```\n", formatType, formatType, expression, formatType)) + } else { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=%v -o=%v sample.%v\n```\n", formatType, formatType, formatType)) + } + writeOrPanic(w, "will output\n") + + separator := ',' + if formatType == "tsv" { + separator = '\t' + } + + writeOrPanic(w, fmt.Sprintf("```%v\n%v```\n\n", formatType, + mustProcessFormatScenario(s, NewCSVObjectDecoder(separator), NewCsvEncoder(separator))), + ) +} + +func documentCSVScenario(t *testing.T, w *bufio.Writer, i interface{}) { + s := i.(formatScenario) + if s.skipDoc { + return + } + switch s.scenarioType { + case "encode-csv": + documentCSVEncodeScenario(w, s, "csv") + case "encode-tsv": + documentCSVEncodeScenario(w, s, "tsv") + case "decode-csv-object": + documentCSVDecodeObjectScenario(w, s, "csv") + case "decode-tsv-object": + documentCSVDecodeObjectScenario(w, s, "tsv") + case "roundtrip-csv": + documentCSVRoundTripScenario(w, s, "csv") + + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func TestCSVScenarios(t *testing.T) { + for _, tt := range csvScenarios { + testCSVScenario(t, tt) + } + genericScenarios := make([]interface{}, len(csvScenarios)) + for i, s := range csvScenarios { + genericScenarios[i] = s + } + documentScenarios(t, "usage", "csv-tsv", genericScenarios, documentCSVScenario) +} diff --git a/external/yq/pkg/yqlib/data_tree_navigator.go b/external/yq/pkg/yqlib/data_tree_navigator.go new file mode 100755 index 0000000..13659ea --- /dev/null +++ b/external/yq/pkg/yqlib/data_tree_navigator.go @@ -0,0 +1,41 @@ +package yqlib + +import ( + "fmt" + + logging "gopkg.in/op/go-logging.v1" +) + +type DataTreeNavigator interface { + // given the context and a expressionNode, + // this will process the against the given expressionNode and return + // a new context of matching candidates + GetMatchingNodes(context Context, expressionNode *ExpressionNode) (Context, error) +} + +type dataTreeNavigator struct { +} + +func NewDataTreeNavigator() DataTreeNavigator { + return &dataTreeNavigator{} +} + +func (d *dataTreeNavigator) GetMatchingNodes(context Context, expressionNode *ExpressionNode) (Context, error) { + if expressionNode == nil { + log.Debugf("getMatchingNodes - nothing to do") + return context, nil + } + log.Debugf("Processing Op: %v", expressionNode.Operation.toString()) + if log.IsEnabledFor(logging.DEBUG) { + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + log.Debug(NodeToString(el.Value.(*CandidateNode))) + } + } + log.Debug(">>") + handler := expressionNode.Operation.OperationType.Handler + if handler != nil { + return handler(d, context, expressionNode) + } + return Context{}, fmt.Errorf("Unknown operator %v", expressionNode.Operation.OperationType) + +} diff --git a/external/yq/pkg/yqlib/decoder.go b/external/yq/pkg/yqlib/decoder.go new file mode 100755 index 0000000..904b65c --- /dev/null +++ b/external/yq/pkg/yqlib/decoder.go @@ -0,0 +1,42 @@ +package yqlib + +import ( + "fmt" + "io" +) + +type InputFormat uint + +const ( + YamlInputFormat = 1 << iota + XMLInputFormat + PropertiesInputFormat + Base64InputFormat + JsonInputFormat + CSVObjectInputFormat + TSVObjectInputFormat +) + +type Decoder interface { + Init(reader io.Reader) error + Decode() (*CandidateNode, error) +} + +func InputFormatFromString(format string) (InputFormat, error) { + switch format { + case "yaml", "y": + return YamlInputFormat, nil + case "xml", "x": + return XMLInputFormat, nil + case "props", "p": + return PropertiesInputFormat, nil + case "json", "ndjson", "j": + return JsonInputFormat, nil + case "csv", "c": + return CSVObjectInputFormat, nil + case "tsv", "t": + return TSVObjectInputFormat, nil + default: + return 0, fmt.Errorf("unknown format '%v' please use [yaml|xml|props]", format) + } +} diff --git a/external/yq/pkg/yqlib/decoder_base64.go b/external/yq/pkg/yqlib/decoder_base64.go new file mode 100755 index 0000000..c4868fd --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_base64.go @@ -0,0 +1,57 @@ +package yqlib + +import ( + "bytes" + "encoding/base64" + "io" + + yaml "gopkg.in/yaml.v3" +) + +type base64Decoder struct { + reader io.Reader + finished bool + readAnything bool + encoding base64.Encoding +} + +func NewBase64Decoder() Decoder { + return &base64Decoder{finished: false, encoding: *base64.StdEncoding} +} + +func (dec *base64Decoder) Init(reader io.Reader) error { + dec.reader = reader + dec.readAnything = false + dec.finished = false + return nil +} + +func (dec *base64Decoder) Decode() (*CandidateNode, error) { + if dec.finished { + return nil, io.EOF + } + base64Reader := base64.NewDecoder(&dec.encoding, dec.reader) + buf := new(bytes.Buffer) + + if _, err := buf.ReadFrom(base64Reader); err != nil { + return nil, err + } + if buf.Len() == 0 { + dec.finished = true + + // if we've read _only_ an empty string, lets return that + // otherwise if we've already read some bytes, and now we get + // an empty string, then we are done. + if dec.readAnything { + return nil, io.EOF + } + } + dec.readAnything = true + return &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: buf.String(), + }, + }, nil +} diff --git a/external/yq/pkg/yqlib/decoder_csv_object.go b/external/yq/pkg/yqlib/decoder_csv_object.go new file mode 100755 index 0000000..e8e7802 --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_csv_object.go @@ -0,0 +1,81 @@ +package yqlib + +import ( + "encoding/csv" + "errors" + "io" + + "github.com/dimchansky/utfbom" + yaml "gopkg.in/yaml.v3" +) + +type csvObjectDecoder struct { + separator rune + reader csv.Reader + finished bool +} + +func NewCSVObjectDecoder(separator rune) Decoder { + return &csvObjectDecoder{separator: separator} +} + +func (dec *csvObjectDecoder) Init(reader io.Reader) error { + cleanReader, enc := utfbom.Skip(reader) + log.Debugf("Detected encoding: %s\n", enc) + dec.reader = *csv.NewReader(cleanReader) + dec.reader.Comma = dec.separator + dec.finished = false + return nil +} + +func (dec *csvObjectDecoder) convertToYamlNode(content string) *yaml.Node { + node, err := parseSnippet(content) + if err != nil { + return createScalarNode(content, content) + } + return node +} + +func (dec *csvObjectDecoder) createObject(headerRow []string, contentRow []string) *yaml.Node { + objectNode := &yaml.Node{Kind: yaml.MappingNode, Tag: "!!map"} + + for i, header := range headerRow { + objectNode.Content = append( + objectNode.Content, + createScalarNode(header, header), + dec.convertToYamlNode(contentRow[i])) + } + return objectNode +} + +func (dec *csvObjectDecoder) Decode() (*CandidateNode, error) { + if dec.finished { + return nil, io.EOF + } + headerRow, err := dec.reader.Read() + log.Debugf(": headerRow%v", headerRow) + if err != nil { + return nil, err + } + + rootArray := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + + contentRow, err := dec.reader.Read() + + for err == nil && len(contentRow) > 0 { + log.Debugf("Adding contentRow: %v", contentRow) + rootArray.Content = append(rootArray.Content, dec.createObject(headerRow, contentRow)) + contentRow, err = dec.reader.Read() + log.Debugf("Read next contentRow: %v, %v", contentRow, err) + } + if !errors.Is(err, io.EOF) { + return nil, err + } + + return &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.DocumentNode, + Content: []*yaml.Node{rootArray}, + }, + }, nil +} diff --git a/external/yq/pkg/yqlib/decoder_json.go b/external/yq/pkg/yqlib/decoder_json.go new file mode 100755 index 0000000..448550a --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_json.go @@ -0,0 +1,87 @@ +package yqlib + +import ( + "fmt" + "io" + + "github.com/goccy/go-json" + yaml "gopkg.in/yaml.v3" +) + +type jsonDecoder struct { + decoder json.Decoder +} + +func NewJSONDecoder() Decoder { + return &jsonDecoder{} +} + +func (dec *jsonDecoder) Init(reader io.Reader) error { + dec.decoder = *json.NewDecoder(reader) + return nil +} + +func (dec *jsonDecoder) Decode() (*CandidateNode, error) { + + var dataBucket orderedMap + log.Debug("going to decode") + err := dec.decoder.Decode(&dataBucket) + if err != nil { + return nil, err + } + node, err := dec.convertToYamlNode(&dataBucket) + + if err != nil { + return nil, err + } + + return &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.DocumentNode, + Content: []*yaml.Node{node}, + }, + }, nil +} + +func (dec *jsonDecoder) convertToYamlNode(data *orderedMap) (*yaml.Node, error) { + if data.kv == nil { + switch rawData := data.altVal.(type) { + case nil: + return createScalarNode(nil, "null"), nil + case float64, float32: + // json decoder returns ints as float. + return parseSnippet(fmt.Sprintf("%v", rawData)) + case int, int64, int32, string, bool: + return createScalarNode(rawData, fmt.Sprintf("%v", rawData)), nil + case []*orderedMap: + return dec.parseArray(rawData) + default: + return nil, fmt.Errorf("unrecognised type :( %v", rawData) + } + } + + var yamlMap = &yaml.Node{Kind: yaml.MappingNode} + for _, keyValuePair := range data.kv { + yamlValue, err := dec.convertToYamlNode(&keyValuePair.V) + if err != nil { + return nil, err + } + yamlMap.Content = append(yamlMap.Content, createScalarNode(keyValuePair.K, keyValuePair.K), yamlValue) + } + return yamlMap, nil + +} + +func (dec *jsonDecoder) parseArray(dataArray []*orderedMap) (*yaml.Node, error) { + + var yamlMap = &yaml.Node{Kind: yaml.SequenceNode} + + for _, value := range dataArray { + yamlValue, err := dec.convertToYamlNode(value) + if err != nil { + return nil, err + } + yamlMap.Content = append(yamlMap.Content, yamlValue) + } + return yamlMap, nil +} diff --git a/external/yq/pkg/yqlib/decoder_properties.go b/external/yq/pkg/yqlib/decoder_properties.go new file mode 100755 index 0000000..f234f9c --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_properties.go @@ -0,0 +1,161 @@ +package yqlib + +import ( + "bytes" + "fmt" + "io" + "strconv" + "strings" + + "github.com/magiconair/properties" + "gopkg.in/yaml.v3" +) + +type propertiesDecoder struct { + reader io.Reader + finished bool + d DataTreeNavigator +} + +func NewPropertiesDecoder() Decoder { + return &propertiesDecoder{d: NewDataTreeNavigator(), finished: false} +} + +func (dec *propertiesDecoder) Init(reader io.Reader) error { + dec.reader = reader + dec.finished = false + return nil +} + +func parsePropKey(key string) []interface{} { + pathStrArray := strings.Split(key, ".") + path := make([]interface{}, len(pathStrArray)) + for i, pathStr := range pathStrArray { + num, err := strconv.ParseInt(pathStr, 10, 32) + if err == nil { + path[i] = num + } else { + path[i] = pathStr + } + } + return path +} + +func (dec *propertiesDecoder) processComment(c string) string { + if c == "" { + return "" + } + return "# " + c +} + +func (dec *propertiesDecoder) applyPropertyComments(context Context, path []interface{}, comments []string) error { + assignmentOp := &Operation{OperationType: assignOpType, Preferences: assignPreferences{}} + + rhsCandidateNode := &CandidateNode{ + Path: path, + Node: &yaml.Node{ + Tag: "!!str", + Value: fmt.Sprintf("%v", path[len(path)-1]), + HeadComment: dec.processComment(strings.Join(comments, "\n")), + Kind: yaml.ScalarNode, + }, + } + + rhsCandidateNode.Node.Tag = guessTagFromCustomType(rhsCandidateNode.Node) + + rhsOp := &Operation{OperationType: valueOpType, CandidateNode: rhsCandidateNode} + + assignmentOpNode := &ExpressionNode{ + Operation: assignmentOp, + LHS: createTraversalTree(path, traversePreferences{}, true), + RHS: &ExpressionNode{Operation: rhsOp}, + } + + _, err := dec.d.GetMatchingNodes(context, assignmentOpNode) + return err +} + +func (dec *propertiesDecoder) applyProperty(context Context, properties *properties.Properties, key string) error { + value, _ := properties.Get(key) + path := parsePropKey(key) + + propertyComments := properties.GetComments(key) + if len(propertyComments) > 0 { + err := dec.applyPropertyComments(context, path, propertyComments) + if err != nil { + return nil + } + } + + rhsNode := &yaml.Node{ + Value: value, + Tag: "!!str", + Kind: yaml.ScalarNode, + } + + rhsNode.Tag = guessTagFromCustomType(rhsNode) + + rhsCandidateNode := &CandidateNode{ + Path: path, + Node: rhsNode, + } + + assignmentOp := &Operation{OperationType: assignOpType, Preferences: assignPreferences{}} + + rhsOp := &Operation{OperationType: valueOpType, CandidateNode: rhsCandidateNode} + + assignmentOpNode := &ExpressionNode{ + Operation: assignmentOp, + LHS: createTraversalTree(path, traversePreferences{}, false), + RHS: &ExpressionNode{Operation: rhsOp}, + } + + _, err := dec.d.GetMatchingNodes(context, assignmentOpNode) + return err +} + +func (dec *propertiesDecoder) Decode() (*CandidateNode, error) { + if dec.finished { + return nil, io.EOF + } + buf := new(bytes.Buffer) + + if _, err := buf.ReadFrom(dec.reader); err != nil { + return nil, err + } + if buf.Len() == 0 { + dec.finished = true + return nil, io.EOF + } + properties, err := properties.LoadString(buf.String()) + if err != nil { + return nil, err + } + properties.DisableExpansion = true + + rootMap := &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.MappingNode, + Tag: "!!map", + }, + } + + context := Context{} + context = context.SingleChildContext(rootMap) + + for _, key := range properties.Keys() { + if err := dec.applyProperty(context, properties, key); err != nil { + return nil, err + } + + } + dec.finished = true + + return &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.DocumentNode, + Content: []*yaml.Node{rootMap.Node}, + }, + }, nil + +} diff --git a/external/yq/pkg/yqlib/decoder_test.go b/external/yq/pkg/yqlib/decoder_test.go new file mode 100755 index 0000000..d3982b2 --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_test.go @@ -0,0 +1,69 @@ +package yqlib + +import ( + "bufio" + "bytes" + "strings" +) + +type formatScenario struct { + input string + indent int + expression string + expected string + description string + subdescription string + skipDoc bool + scenarioType string + expectedError string +} + +func processFormatScenario(s formatScenario, decoder Decoder, encoder Encoder) (string, error) { + var output bytes.Buffer + writer := bufio.NewWriter(&output) + + if decoder == nil { + decoder = NewYamlDecoder(ConfiguredYamlPreferences) + } + + inputs, err := readDocuments(strings.NewReader(s.input), "sample.yml", 0, decoder) + if err != nil { + return "", err + } + + expression := s.expression + if expression == "" { + expression = "." + } + + exp, err := getExpressionParser().ParseExpression(expression) + + if err != nil { + return "", err + } + + context, err := NewDataTreeNavigator().GetMatchingNodes(Context{MatchingNodes: inputs}, exp) + + if err != nil { + return "", err + } + + printer := NewPrinter(encoder, NewSinglePrinterWriter(writer)) + err = printer.PrintResults(context.MatchingNodes) + if err != nil { + return "", err + } + writer.Flush() + + return output.String(), nil +} + +func mustProcessFormatScenario(s formatScenario, decoder Decoder, encoder Encoder) string { + + result, err := processFormatScenario(s, decoder, encoder) + if err != nil { + panic(err) + } + return result + +} diff --git a/external/yq/pkg/yqlib/decoder_xml.go b/external/yq/pkg/yqlib/decoder_xml.go new file mode 100755 index 0000000..ced6c96 --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_xml.go @@ -0,0 +1,348 @@ +package yqlib + +import ( + "encoding/xml" + "errors" + "io" + "strings" + "unicode" + + "golang.org/x/net/html/charset" + yaml "gopkg.in/yaml.v3" +) + +type xmlDecoder struct { + reader io.Reader + readAnything bool + finished bool + prefs XmlPreferences +} + +func NewXMLDecoder(prefs XmlPreferences) Decoder { + return &xmlDecoder{ + finished: false, + prefs: prefs, + } +} + +func (dec *xmlDecoder) Init(reader io.Reader) error { + dec.reader = reader + dec.readAnything = false + dec.finished = false + return nil +} + +func (dec *xmlDecoder) createSequence(nodes []*xmlNode) (*yaml.Node, error) { + yamlNode := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + for _, child := range nodes { + yamlChild, err := dec.convertToYamlNode(child) + if err != nil { + return nil, err + } + yamlNode.Content = append(yamlNode.Content, yamlChild) + } + + return yamlNode, nil +} + +func (dec *xmlDecoder) processComment(c string) string { + if c == "" { + return "" + } + return "#" + strings.TrimRight(c, " ") +} + +func (dec *xmlDecoder) createMap(n *xmlNode) (*yaml.Node, error) { + log.Debug("createMap: headC: %v, footC: %v", n.HeadComment, n.FootComment) + yamlNode := &yaml.Node{Kind: yaml.MappingNode, Tag: "!!map"} + + if len(n.Data) > 0 { + label := dec.prefs.ContentName + labelNode := createScalarNode(label, label) + labelNode.HeadComment = dec.processComment(n.HeadComment) + labelNode.FootComment = dec.processComment(n.FootComment) + yamlNode.Content = append(yamlNode.Content, labelNode, createScalarNode(n.Data, n.Data)) + } + + for i, keyValuePair := range n.Children { + label := keyValuePair.K + children := keyValuePair.V + labelNode := createScalarNode(label, label) + var valueNode *yaml.Node + var err error + + if i == 0 { + labelNode.HeadComment = dec.processComment(n.HeadComment) + + } + + labelNode.FootComment = dec.processComment(keyValuePair.FootComment) + + log.Debug("len of children in %v is %v", label, len(children)) + if len(children) > 1 { + valueNode, err = dec.createSequence(children) + if err != nil { + return nil, err + } + } else { + // comment hack for maps of scalars + // if the value is a scalar, the head comment of the scalar needs to go on the key? + // add tests for as well as multiple of inputXmlWithComments > yaml + if len(children[0].Children) == 0 && children[0].HeadComment != "" { + labelNode.HeadComment = labelNode.HeadComment + "\n" + strings.TrimSpace(children[0].HeadComment) + children[0].HeadComment = "" + } + valueNode, err = dec.convertToYamlNode(children[0]) + if err != nil { + return nil, err + } + } + yamlNode.Content = append(yamlNode.Content, labelNode, valueNode) + } + + return yamlNode, nil +} + +func (dec *xmlDecoder) convertToYamlNode(n *xmlNode) (*yaml.Node, error) { + if len(n.Children) > 0 { + return dec.createMap(n) + } + scalar := createScalarNode(n.Data, n.Data) + if n.Data == "" { + scalar = createScalarNode(nil, "") + } + log.Debug("scalar headC: %v, footC: %v", n.HeadComment, n.FootComment) + scalar.HeadComment = dec.processComment(n.HeadComment) + scalar.LineComment = dec.processComment(n.LineComment) + scalar.FootComment = dec.processComment(n.FootComment) + + return scalar, nil +} + +func (dec *xmlDecoder) Decode() (*CandidateNode, error) { + if dec.finished { + return nil, io.EOF + } + root := &xmlNode{} + // cant use xj - it doesn't keep map order. + err := dec.decodeXML(root) + + if err != nil { + return nil, err + } + firstNode, err := dec.convertToYamlNode(root) + + if err != nil { + return nil, err + } else if firstNode.Tag == "!!null" { + dec.finished = true + if dec.readAnything { + return nil, io.EOF + } + } + dec.readAnything = true + dec.finished = true + + return &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.DocumentNode, + Content: []*yaml.Node{firstNode}, + }, + }, nil +} + +type xmlNode struct { + Children []*xmlChildrenKv + HeadComment string + FootComment string + LineComment string + Data string +} + +type xmlChildrenKv struct { + K string + V []*xmlNode + FootComment string +} + +// AddChild appends a node to the list of children +func (n *xmlNode) AddChild(s string, c *xmlNode) { + + if n.Children == nil { + n.Children = make([]*xmlChildrenKv, 0) + } + log.Debug("looking for %s", s) + // see if we can find an existing entry to add to + for _, childEntry := range n.Children { + if childEntry.K == s { + log.Debug("found it, appending an entry%s", s) + childEntry.V = append(childEntry.V, c) + log.Debug("yay len of children in %v is %v", s, len(childEntry.V)) + return + } + } + log.Debug("not there, making a new one %s", s) + n.Children = append(n.Children, &xmlChildrenKv{K: s, V: []*xmlNode{c}}) +} + +type element struct { + parent *element + n *xmlNode + label string + state string +} + +// this code is heavily based on https://github.com/basgys/goxml2json +// main changes are to decode into a structure that preserves the original order +// of the map keys. +func (dec *xmlDecoder) decodeXML(root *xmlNode) error { + xmlDec := xml.NewDecoder(dec.reader) + xmlDec.Strict = dec.prefs.StrictMode + // That will convert the charset if the provided XML is non-UTF-8 + xmlDec.CharsetReader = charset.NewReaderLabel + + // Create first element from the root node + elem := &element{ + parent: nil, + n: root, + } + + getToken := func() (xml.Token, error) { + if dec.prefs.UseRawToken { + return xmlDec.RawToken() + } + return xmlDec.Token() + } + + for { + t, e := getToken() + if e != nil && !errors.Is(e, io.EOF) { + return e + } + if t == nil { + break + } + + switch se := t.(type) { + case xml.StartElement: + log.Debug("start element %v", se.Name.Local) + elem.state = "started" + // Build new a new current element and link it to its parent + elem = &element{ + parent: elem, + n: &xmlNode{}, + label: se.Name.Local, + } + + // Extract attributes as children + for _, a := range se.Attr { + if dec.prefs.KeepNamespace { + if a.Name.Space != "" { + a.Name.Local = a.Name.Space + ":" + a.Name.Local + } + } + elem.n.AddChild(dec.prefs.AttributePrefix+a.Name.Local, &xmlNode{Data: a.Value}) + } + case xml.CharData: + // Extract XML data (if any) + elem.n.Data = trimNonGraphic(string(se)) + if elem.n.Data != "" { + elem.state = "chardata" + log.Debug("chardata [%v] for %v", elem.n.Data, elem.label) + } + case xml.EndElement: + log.Debug("end element %v", elem.label) + elem.state = "finished" + // And add it to its parent list + if elem.parent != nil { + elem.parent.n.AddChild(elem.label, elem.n) + } + + // Then change the current element to its parent + elem = elem.parent + case xml.Comment: + + commentStr := string(xml.CharData(se)) + if elem.state == "started" { + applyFootComment(elem, commentStr) + + } else if elem.state == "chardata" { + log.Debug("got a line comment for (%v) %v: [%v]", elem.state, elem.label, commentStr) + elem.n.LineComment = joinFilter([]string{elem.n.LineComment, commentStr}) + } else { + log.Debug("got a head comment for (%v) %v: [%v]", elem.state, elem.label, commentStr) + elem.n.HeadComment = joinFilter([]string{elem.n.HeadComment, commentStr}) + } + + case xml.ProcInst: + if !dec.prefs.SkipProcInst { + elem.n.AddChild(dec.prefs.ProcInstPrefix+se.Target, &xmlNode{Data: string(se.Inst)}) + } + case xml.Directive: + if !dec.prefs.SkipDirectives { + elem.n.AddChild(dec.prefs.DirectiveName, &xmlNode{Data: string(se)}) + } + } + } + + return nil +} + +func applyFootComment(elem *element, commentStr string) { + + // first lets try to put the comment on the last child + if len(elem.n.Children) > 0 { + lastChildIndex := len(elem.n.Children) - 1 + childKv := elem.n.Children[lastChildIndex] + log.Debug("got a foot comment for %v: [%v]", childKv.K, commentStr) + childKv.FootComment = joinFilter([]string{elem.n.FootComment, commentStr}) + } else { + log.Debug("got a foot comment for %v: [%v]", elem.label, commentStr) + elem.n.FootComment = joinFilter([]string{elem.n.FootComment, commentStr}) + } +} + +func joinFilter(rawStrings []string) string { + stringsToJoin := make([]string, 0) + for _, str := range rawStrings { + if str != "" { + stringsToJoin = append(stringsToJoin, str) + } + } + return strings.Join(stringsToJoin, " ") +} + +// trimNonGraphic returns a slice of the string s, with all leading and trailing +// non graphic characters and spaces removed. +// +// Graphic characters include letters, marks, numbers, punctuation, symbols, +// and spaces, from categories L, M, N, P, S, Zs. +// Spacing characters are set by category Z and property Pattern_White_Space. +func trimNonGraphic(s string) string { + if s == "" { + return s + } + + var first *int + var last int + for i, r := range []rune(s) { + if !unicode.IsGraphic(r) || unicode.IsSpace(r) { + continue + } + + if first == nil { + f := i // copy i + first = &f + last = i + } else { + last = i + } + } + + // If first is nil, it means there are no graphic characters + if first == nil { + return "" + } + + return string([]rune(s)[*first : last+1]) +} diff --git a/external/yq/pkg/yqlib/decoder_yaml.go b/external/yq/pkg/yqlib/decoder_yaml.go new file mode 100755 index 0000000..207ec01 --- /dev/null +++ b/external/yq/pkg/yqlib/decoder_yaml.go @@ -0,0 +1,114 @@ +package yqlib + +import ( + "bufio" + "errors" + "io" + "regexp" + "strings" + + yaml "gopkg.in/yaml.v3" +) + +type yamlDecoder struct { + decoder yaml.Decoder + // work around of various parsing issues by yaml.v3 with document headers + prefs YamlPreferences + leadingContent string + readAnything bool + firstFile bool +} + +func NewYamlDecoder(prefs YamlPreferences) Decoder { + return &yamlDecoder{prefs: prefs, firstFile: true} +} + +func (dec *yamlDecoder) processReadStream(reader *bufio.Reader) (io.Reader, string, error) { + var commentLineRegEx = regexp.MustCompile(`^\s*#`) + var sb strings.Builder + for { + peekBytes, err := reader.Peek(3) + if errors.Is(err, io.EOF) { + // EOF are handled else where.. + return reader, sb.String(), nil + } else if err != nil { + return reader, sb.String(), err + } else if string(peekBytes) == "---" { + _, err := reader.ReadString('\n') + sb.WriteString("$yqDocSeperator$\n") + if errors.Is(err, io.EOF) { + return reader, sb.String(), nil + } else if err != nil { + return reader, sb.String(), err + } + } else if commentLineRegEx.MatchString(string(peekBytes)) { + line, err := reader.ReadString('\n') + sb.WriteString(line) + if errors.Is(err, io.EOF) { + return reader, sb.String(), nil + } else if err != nil { + return reader, sb.String(), err + } + } else { + return reader, sb.String(), nil + } + } +} + +func (dec *yamlDecoder) Init(reader io.Reader) error { + readerToUse := reader + leadingContent := "" + var err error + // if we 'evaluating together' - we only process the leading content + // of the first file - this ensures comments from subsequent files are + // merged together correctly. + if dec.prefs.LeadingContentPreProcessing && (!dec.prefs.EvaluateTogether || dec.firstFile) { + readerToUse, leadingContent, err = dec.processReadStream(bufio.NewReader(reader)) + if err != nil { + return err + } + } + dec.leadingContent = leadingContent + dec.readAnything = false + dec.decoder = *yaml.NewDecoder(readerToUse) + dec.firstFile = false + return nil +} + +func (dec *yamlDecoder) Decode() (*CandidateNode, error) { + var dataBucket yaml.Node + + err := dec.decoder.Decode(&dataBucket) + if errors.Is(err, io.EOF) && dec.leadingContent != "" && !dec.readAnything { + // force returning an empty node with a comment. + dec.readAnything = true + return dec.blankNodeWithComment(), nil + + } else if err != nil { + return nil, err + } + + candidateNode := &CandidateNode{ + Node: &dataBucket, + } + + if dec.leadingContent != "" { + candidateNode.LeadingContent = dec.leadingContent + dec.leadingContent = "" + } + // move document comments into candidate node + // otherwise unwrap drops them. + candidateNode.TrailingContent = dataBucket.FootComment + dataBucket.FootComment = "" + return candidateNode, nil +} + +func (dec *yamlDecoder) blankNodeWithComment() *CandidateNode { + return &CandidateNode{ + Document: 0, + Filename: "", + Node: &yaml.Node{Kind: yaml.DocumentNode, Content: []*yaml.Node{{Tag: "!!null", Kind: yaml.ScalarNode}}}, + FileIndex: 0, + LeadingContent: dec.leadingContent, + } +} diff --git a/external/yq/pkg/yqlib/doc/notification-snippet.md b/external/yq/pkg/yqlib/doc/notification-snippet.md new file mode 100755 index 0000000..e69de29 diff --git a/external/yq/pkg/yqlib/doc/operators/add.md b/external/yq/pkg/yqlib/doc/operators/add.md new file mode 100755 index 0000000..ecadb84 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/add.md @@ -0,0 +1,319 @@ +# Add + +Add behaves differently according to the type of the LHS: +* arrays: concatenate +* number scalars: arithmetic addition +* string scalars: concatenate +* maps: shallow merge (use the multiply operator (`*`) to deeply merge) + +Use `+=` as a relative append assign for things like increment. Note that `.a += .x` is equivalent to running `.a = .a + .x`. + + +## Concatenate arrays +Given a sample.yml file of: +```yaml +a: + - 1 + - 2 +b: + - 3 + - 4 +``` +then +```bash +yq '.a + .b' sample.yml +``` +will output +```yaml +- 1 +- 2 +- 3 +- 4 +``` + +## Concatenate to existing array +Note that the styling of `a` is kept. + +Given a sample.yml file of: +```yaml +a: [1,2] +b: + - 3 + - 4 +``` +then +```bash +yq '.a += .b' sample.yml +``` +will output +```yaml +a: [1, 2, 3, 4] +b: + - 3 + - 4 +``` + +## Concatenate null to array +Given a sample.yml file of: +```yaml +a: + - 1 + - 2 +``` +then +```bash +yq '.a + null' sample.yml +``` +will output +```yaml +- 1 +- 2 +``` + +## Append to existing array +Note that the styling is copied from existing array elements + +Given a sample.yml file of: +```yaml +a: ['dog'] +``` +then +```bash +yq '.a += "cat"' sample.yml +``` +will output +```yaml +a: ['dog', 'cat'] +``` + +## Add new object to array +Given a sample.yml file of: +```yaml +a: + - dog: woof +``` +then +```bash +yq '.a + {"cat": "meow"}' sample.yml +``` +will output +```yaml +- dog: woof +- cat: meow +``` + +## Relative append +Given a sample.yml file of: +```yaml +a: + a1: + b: + - cat + a2: + b: + - dog + a3: {} +``` +then +```bash +yq '.a[].b += ["mouse"]' sample.yml +``` +will output +```yaml +a: + a1: + b: + - cat + - mouse + a2: + b: + - dog + - mouse + a3: + b: + - mouse +``` + +## String concatenation +Given a sample.yml file of: +```yaml +a: cat +b: meow +``` +then +```bash +yq '.a += .b' sample.yml +``` +will output +```yaml +a: catmeow +b: meow +``` + +## Number addition - float +If the lhs or rhs are floats then the expression will be calculated with floats. + +Given a sample.yml file of: +```yaml +a: 3 +b: 4.9 +``` +then +```bash +yq '.a = .a + .b' sample.yml +``` +will output +```yaml +a: 7.9 +b: 4.9 +``` + +## Number addition - int +If both the lhs and rhs are ints then the expression will be calculated with ints. + +Given a sample.yml file of: +```yaml +a: 3 +b: 4 +``` +then +```bash +yq '.a = .a + .b' sample.yml +``` +will output +```yaml +a: 7 +b: 4 +``` + +## Increment numbers +Given a sample.yml file of: +```yaml +a: 3 +b: 5 +``` +then +```bash +yq '.[] += 1' sample.yml +``` +will output +```yaml +a: 4 +b: 6 +``` + +## Date addition +You can add durations to dates. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information. + +Given a sample.yml file of: +```yaml +a: 2021-01-01T00:00:00Z +``` +then +```bash +yq '.a += "3h10m"' sample.yml +``` +will output +```yaml +a: 2021-01-01T03:10:00Z +``` + +## Date addition - custom format +You can add durations to dates. See [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information. + +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 2:59AM GMT +``` +then +```bash +yq 'with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a += "3h1m")' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 6:00AM GMT +``` + +## Add to null +Adding to null simply returns the rhs + +Running +```bash +yq --null-input 'null + "cat"' +``` +will output +```yaml +cat +``` + +## Add maps to shallow merge +Adding objects together shallow merges them. Use `*` to deeply merge. + +Given a sample.yml file of: +```yaml +a: + thing: + name: Astuff + value: x + a1: cool +b: + thing: + name: Bstuff + legs: 3 + b1: neat +``` +then +```bash +yq '.a += .b' sample.yml +``` +will output +```yaml +a: + thing: + name: Bstuff + legs: 3 + a1: cool + b1: neat +b: + thing: + name: Bstuff + legs: 3 + b1: neat +``` + +## Custom types: that are really strings +When custom tags are encountered, yq will try to decode the underlying type. + +Given a sample.yml file of: +```yaml +a: !horse cat +b: !goat _meow +``` +then +```bash +yq '.a += .b' sample.yml +``` +will output +```yaml +a: !horse cat_meow +b: !goat _meow +``` + +## Custom types: that are really numbers +When custom tags are encountered, yq will try to decode the underlying type. + +Given a sample.yml file of: +```yaml +a: !horse 1.2 +b: !goat 2.3 +``` +then +```bash +yq '.a += .b' sample.yml +``` +will output +```yaml +a: !horse 3.5 +b: !goat 2.3 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/alternative-default-value.md b/external/yq/pkg/yqlib/doc/operators/alternative-default-value.md new file mode 100755 index 0000000..127465e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/alternative-default-value.md @@ -0,0 +1,108 @@ +# Alternative (Default value) + +This operator is used to provide alternative (or default) values when a particular expression is either null or false. + +## LHS is defined +Given a sample.yml file of: +```yaml +a: bridge +``` +then +```bash +yq '.a // "hello"' sample.yml +``` +will output +```yaml +bridge +``` + +## LHS is not defined +Given a sample.yml file of: +```yaml +{} +``` +then +```bash +yq '.a // "hello"' sample.yml +``` +will output +```yaml +hello +``` + +## LHS is null +Given a sample.yml file of: +```yaml +a: ~ +``` +then +```bash +yq '.a // "hello"' sample.yml +``` +will output +```yaml +hello +``` + +## LHS is false +Given a sample.yml file of: +```yaml +a: false +``` +then +```bash +yq '.a // "hello"' sample.yml +``` +will output +```yaml +hello +``` + +## RHS is an expression +Given a sample.yml file of: +```yaml +a: false +b: cat +``` +then +```bash +yq '.a // .b' sample.yml +``` +will output +```yaml +cat +``` + +## Update or create - entity exists +This initialises `a` if it's not present + +Given a sample.yml file of: +```yaml +a: 1 +``` +then +```bash +yq '(.a // (.a = 0)) += 1' sample.yml +``` +will output +```yaml +a: 2 +``` + +## Update or create - entity does not exist +This initialises `a` if it's not present + +Given a sample.yml file of: +```yaml +b: camel +``` +then +```bash +yq '(.a // (.a = 0)) += 1' sample.yml +``` +will output +```yaml +b: camel +a: 1 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/anchor-and-alias-operators.md b/external/yq/pkg/yqlib/doc/operators/anchor-and-alias-operators.md new file mode 100755 index 0000000..8dbfd99 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/anchor-and-alias-operators.md @@ -0,0 +1,333 @@ +# Anchor and Alias Operators + +Use the `alias` and `anchor` operators to read and write yaml aliases and anchors. The `explode` operator normalises a yaml file (dereference (or expands) aliases and remove anchor names). + +`yq` supports merge aliases (like `<<: *blah`) however this is no longer in the standard yaml spec (1.2) and so `yq` will automatically add the `!!merge` tag to these nodes as it is effectively a custom tag. + + +## Merge one map +see https://yaml.org/type/merge.html + +Given a sample.yml file of: +```yaml +- &CENTER + x: 1 + y: 2 +- &LEFT + x: 0 + y: 2 +- &BIG + r: 10 +- &SMALL + r: 1 +- !!merge <<: *CENTER + r: 10 +``` +then +```bash +yq '.[4] | explode(.)' sample.yml +``` +will output +```yaml +x: 1 +y: 2 +r: 10 +``` + +## Merge multiple maps +see https://yaml.org/type/merge.html + +Given a sample.yml file of: +```yaml +- &CENTER + x: 1 + y: 2 +- &LEFT + x: 0 + y: 2 +- &BIG + r: 10 +- &SMALL + r: 1 +- !!merge <<: + - *CENTER + - *BIG +``` +then +```bash +yq '.[4] | explode(.)' sample.yml +``` +will output +```yaml +r: 10 +x: 1 +y: 2 +``` + +## Override +see https://yaml.org/type/merge.html + +Given a sample.yml file of: +```yaml +- &CENTER + x: 1 + y: 2 +- &LEFT + x: 0 + y: 2 +- &BIG + r: 10 +- &SMALL + r: 1 +- !!merge <<: + - *BIG + - *LEFT + - *SMALL + x: 1 +``` +then +```bash +yq '.[4] | explode(.)' sample.yml +``` +will output +```yaml +r: 10 +x: 1 +y: 2 +``` + +## Get anchor +Given a sample.yml file of: +```yaml +a: &billyBob cat +``` +then +```bash +yq '.a | anchor' sample.yml +``` +will output +```yaml +billyBob +``` + +## Set anchor +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '.a anchor = "foobar"' sample.yml +``` +will output +```yaml +a: &foobar cat +``` + +## Set anchor relatively using assign-update +Given a sample.yml file of: +```yaml +a: + b: cat +``` +then +```bash +yq '.a anchor |= .b' sample.yml +``` +will output +```yaml +a: &cat + b: cat +``` + +## Get alias +Given a sample.yml file of: +```yaml +b: &billyBob meow +a: *billyBob +``` +then +```bash +yq '.a | alias' sample.yml +``` +will output +```yaml +billyBob +``` + +## Set alias +Given a sample.yml file of: +```yaml +b: &meow purr +a: cat +``` +then +```bash +yq '.a alias = "meow"' sample.yml +``` +will output +```yaml +b: &meow purr +a: *meow +``` + +## Set alias to blank does nothing +Given a sample.yml file of: +```yaml +b: &meow purr +a: cat +``` +then +```bash +yq '.a alias = ""' sample.yml +``` +will output +```yaml +b: &meow purr +a: cat +``` + +## Set alias relatively using assign-update +Given a sample.yml file of: +```yaml +b: &meow purr +a: + f: meow +``` +then +```bash +yq '.a alias |= .f' sample.yml +``` +will output +```yaml +b: &meow purr +a: *meow +``` + +## Explode alias and anchor +Given a sample.yml file of: +```yaml +f: + a: &a cat + b: *a +``` +then +```bash +yq 'explode(.f)' sample.yml +``` +will output +```yaml +f: + a: cat + b: cat +``` + +## Explode with no aliases or anchors +Given a sample.yml file of: +```yaml +a: mike +``` +then +```bash +yq 'explode(.a)' sample.yml +``` +will output +```yaml +a: mike +``` + +## Explode with alias keys +Given a sample.yml file of: +```yaml +f: + a: &a cat + *a: b +``` +then +```bash +yq 'explode(.f)' sample.yml +``` +will output +```yaml +f: + a: cat + cat: b +``` + +## Explode with merge anchors +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq 'explode(.)' sample.yml +``` +will output +```yaml +foo: + a: foo_a + thing: foo_thing + c: foo_c +bar: + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: bar_b + thing: foo_thing + c: foobarList_c + a: foo_a +foobar: + c: foo_c + a: foo_a + thing: foobar_thing +``` + +## Dereference and update a field +`Use explode with multiply to dereference an object + +Given a sample.yml file of: +```yaml +item_value: &item_value + value: true +thingOne: + name: item_1 + !!merge <<: *item_value +thingTwo: + name: item_2 + !!merge <<: *item_value +``` +then +```bash +yq '.thingOne |= explode(.) * {"value": false}' sample.yml +``` +will output +```yaml +item_value: &item_value + value: true +thingOne: + name: item_1 + value: false +thingTwo: + name: item_2 + !!merge <<: *item_value +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/array-to-map.md b/external/yq/pkg/yqlib/doc/operators/array-to-map.md new file mode 100755 index 0000000..5930aaa --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/array-to-map.md @@ -0,0 +1,28 @@ +# Array to Map + +Use this operator to convert an array to..a map. The indices are used as map keys, null values in the array are skipped over. + +Behind the scenes, this is implemented using reduce: + +``` +(.[] | select(. != null) ) as $i ireduce({}; .[$i | key] = $i) +``` + +## Simple example +Given a sample.yml file of: +```yaml +cool: + - null + - null + - hello +``` +then +```bash +yq '.cool |= array_to_map' sample.yml +``` +will output +```yaml +cool: + 2: hello +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/assign-update.md b/external/yq/pkg/yqlib/doc/operators/assign-update.md new file mode 100755 index 0000000..5885efc --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/assign-update.md @@ -0,0 +1,270 @@ +# Assign (Update) + +This operator is used to update node values. It can be used in either the: + +### plain form: `=` +Which will assign the LHS node values to the RHS node values. The RHS expression is run against the matching nodes in the pipeline. + +### relative form: `|=` +This will do a similar thing to the plain form, however, the RHS expression is run against _the LHS nodes_. This is useful for updating values based on old values, e.g. increment. + + +### Flags +- `c` clobber custom tags + +## Create yaml file +Running +```bash +yq --null-input '.a.b = "cat" | .x = "frog"' +``` +will output +```yaml +a: + b: cat +x: frog +``` + +## Update node to be the child value +Given a sample.yml file of: +```yaml +a: + b: + g: foof +``` +then +```bash +yq '.a |= .b' sample.yml +``` +will output +```yaml +a: + g: foof +``` + +## Double elements in an array +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq '.[] |= . * 2' sample.yml +``` +will output +```yaml +- 2 +- 4 +- 6 +``` + +## Update node from another file +Note this will also work when the second file is a scalar (string/number) + +Given a sample.yml file of: +```yaml +a: apples +``` +And another sample another.yml file of: +```yaml +b: bob +``` +then +```bash +yq eval-all 'select(fileIndex==0).a = select(fileIndex==1) | select(fileIndex==0)' sample.yml another.yml +``` +will output +```yaml +a: + b: bob +``` + +## Update node to be the sibling value +Given a sample.yml file of: +```yaml +a: + b: child +b: sibling +``` +then +```bash +yq '.a = .b' sample.yml +``` +will output +```yaml +a: sibling +b: sibling +``` + +## Updated multiple paths +Given a sample.yml file of: +```yaml +a: fieldA +b: fieldB +c: fieldC +``` +then +```bash +yq '(.a, .c) = "potato"' sample.yml +``` +will output +```yaml +a: potato +b: fieldB +c: potato +``` + +## Update string value +Given a sample.yml file of: +```yaml +a: + b: apple +``` +then +```bash +yq '.a.b = "frog"' sample.yml +``` +will output +```yaml +a: + b: frog +``` + +## Update string value via |= +Note there is no difference between `=` and `|=` when the RHS is a scalar + +Given a sample.yml file of: +```yaml +a: + b: apple +``` +then +```bash +yq '.a.b |= "frog"' sample.yml +``` +will output +```yaml +a: + b: frog +``` + +## Update deeply selected results +Note that the LHS is wrapped in brackets! This is to ensure we don't first filter out the yaml and then update the snippet. + +Given a sample.yml file of: +```yaml +a: + b: apple + c: cactus +``` +then +```bash +yq '(.a[] | select(. == "apple")) = "frog"' sample.yml +``` +will output +```yaml +a: + b: frog + c: cactus +``` + +## Update array values +Given a sample.yml file of: +```yaml +- candy +- apple +- sandy +``` +then +```bash +yq '(.[] | select(. == "*andy")) = "bogs"' sample.yml +``` +will output +```yaml +- bogs +- apple +- bogs +``` + +## Update empty object +Given a sample.yml file of: +```yaml +{} +``` +then +```bash +yq '.a.b |= "bogs"' sample.yml +``` +will output +```yaml +a: + b: bogs +``` + +## Update node value that has an anchor +Anchor will remaple + +Given a sample.yml file of: +```yaml +a: &cool cat +``` +then +```bash +yq '.a = "dog"' sample.yml +``` +will output +```yaml +a: &cool dog +``` + +## Update empty object and array +Given a sample.yml file of: +```yaml +{} +``` +then +```bash +yq '.a.b.[0] |= "bogs"' sample.yml +``` +will output +```yaml +a: + b: + - bogs +``` + +## Custom types are maintained by default +Given a sample.yml file of: +```yaml +a: !cat meow +b: !dog woof +``` +then +```bash +yq '.a = .b' sample.yml +``` +will output +```yaml +a: !cat woof +b: !dog woof +``` + +## Custom types: clovver +Use the `c` option to clobber custom tags + +Given a sample.yml file of: +```yaml +a: !cat meow +b: !dog woof +``` +then +```bash +yq '.a =c .b' sample.yml +``` +will output +```yaml +a: !dog woof +b: !dog woof +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/boolean-operators.md b/external/yq/pkg/yqlib/doc/operators/boolean-operators.md new file mode 100755 index 0000000..c409445 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/boolean-operators.md @@ -0,0 +1,228 @@ +# Boolean Operators + +The `or` and `and` operators take two parameters and return a boolean result. + +`not` flips a boolean from true to false, or vice versa. + +`any` will return `true` if there are any `true` values in a array sequence, and `all` will return true if _all_ elements in an array are true. + +`any_c(condition)` and `all_c(condition)` are like `any` and `all` but they take a condition expression that is used against each element to determine if it's `true`. Note: in `jq` you can simply pass a condition to `any` or `all` and it simply works - `yq` isn't that clever..yet + +These are most commonly used with the `select` operator to filter particular nodes. + +## Related Operators + +- equals / not equals (`==`, `!=`) operators [here](https://mikefarah.gitbook.io/yq/operators/equals) +- comparison (`>=`, `<` etc) operators [here](https://mikefarah.gitbook.io/yq/operators/compare) +- select operator [here](https://mikefarah.gitbook.io/yq/operators/select) + +## `or` example +Running +```bash +yq --null-input 'true or false' +``` +will output +```yaml +true +``` + +## `and` example +Running +```bash +yq --null-input 'true and false' +``` +will output +```yaml +false +``` + +## Matching nodes with select, equals and or +Given a sample.yml file of: +```yaml +- a: bird + b: dog +- a: frog + b: bird +- a: cat + b: fly +``` +then +```bash +yq '[.[] | select(.a == "cat" or .b == "dog")]' sample.yml +``` +will output +```yaml +- a: bird + b: dog +- a: cat + b: fly +``` + +## `any` returns true if any boolean in a given array is true +Given a sample.yml file of: +```yaml +- false +- true +``` +then +```bash +yq 'any' sample.yml +``` +will output +```yaml +true +``` + +## `any` returns false for an empty array +Given a sample.yml file of: +```yaml +[] +``` +then +```bash +yq 'any' sample.yml +``` +will output +```yaml +false +``` + +## `any_c` returns true if any element in the array is true for the given condition. +Given a sample.yml file of: +```yaml +a: + - rad + - awesome +b: + - meh + - whatever +``` +then +```bash +yq '.[] |= any_c(. == "awesome")' sample.yml +``` +will output +```yaml +a: true +b: false +``` + +## `all` returns true if all booleans in a given array are true +Given a sample.yml file of: +```yaml +- true +- true +``` +then +```bash +yq 'all' sample.yml +``` +will output +```yaml +true +``` + +## `all` returns true for an empty array +Given a sample.yml file of: +```yaml +[] +``` +then +```bash +yq 'all' sample.yml +``` +will output +```yaml +true +``` + +## `all_c` returns true if all elements in the array are true for the given condition. +Given a sample.yml file of: +```yaml +a: + - rad + - awesome +b: + - meh + - 12 +``` +then +```bash +yq '.[] |= all_c(tag == "!!str")' sample.yml +``` +will output +```yaml +a: true +b: false +``` + +## Not true is false +Running +```bash +yq --null-input 'true | not' +``` +will output +```yaml +false +``` + +## Not false is true +Running +```bash +yq --null-input 'false | not' +``` +will output +```yaml +true +``` + +## String values considered to be true +Running +```bash +yq --null-input '"cat" | not' +``` +will output +```yaml +false +``` + +## Empty string value considered to be true +Running +```bash +yq --null-input '"" | not' +``` +will output +```yaml +false +``` + +## Numbers are considered to be true +Running +```bash +yq --null-input '1 | not' +``` +will output +```yaml +false +``` + +## Zero is considered to be true +Running +```bash +yq --null-input '0 | not' +``` +will output +```yaml +false +``` + +## Null is considered to be false +Running +```bash +yq --null-input '~ | not' +``` +will output +```yaml +true +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/collect-into-array.md b/external/yq/pkg/yqlib/doc/operators/collect-into-array.md new file mode 100755 index 0000000..73152e5 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/collect-into-array.md @@ -0,0 +1,41 @@ +# Collect into Array + +This creates an array using the expression between the square brackets. + + +## Collect empty +Running +```bash +yq --null-input '[]' +``` +will output +```yaml +[] +``` + +## Collect single +Running +```bash +yq --null-input '["cat"]' +``` +will output +```yaml +- cat +``` + +## Collect many +Given a sample.yml file of: +```yaml +a: cat +b: dog +``` +then +```bash +yq '[.a, .b]' sample.yml +``` +will output +```yaml +- cat +- dog +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/column.md b/external/yq/pkg/yqlib/doc/operators/column.md new file mode 100755 index 0000000..d2cef94 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/column.md @@ -0,0 +1,60 @@ +# Column + +Returns the column of the matching node. Starts from 1, 0 indicates there was no column data. + +## Returns column of _value_ node +Given a sample.yml file of: +```yaml +a: cat +b: bob +``` +then +```bash +yq '.b | column' sample.yml +``` +will output +```yaml +4 +``` + +## Returns column of _key_ node +Pipe through the key operator to get the column of the key + +Given a sample.yml file of: +```yaml +a: cat +b: bob +``` +then +```bash +yq '.b | key | column' sample.yml +``` +will output +```yaml +1 +``` + +## First column is 1 +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '.a | key | column' sample.yml +``` +will output +```yaml +1 +``` + +## No column data is 0 +Running +```bash +yq --null-input '{"a": "new entry"} | column' +``` +will output +```yaml +0 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/comment-operators.md b/external/yq/pkg/yqlib/doc/operators/comment-operators.md new file mode 100755 index 0000000..9d1b9da --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/comment-operators.md @@ -0,0 +1,337 @@ +# Comment Operators + +Use these comment operators to set or retrieve comments. Note that line comments on maps/arrays are actually set on the _key_ node as opposed to the _value_ (map/array). See below for examples. + +Like the `=` and `|=` assign operators, the same syntax applies when updating comments: + +### plain form: `=` +This will assign the LHS nodes comments to the expression on the RHS. The RHS is run against the matching nodes in the pipeline + +### relative form: `|=` +Similar to the plain form, however the RHS evaluates against each matching LHS node! This is useful if you want to set the comments as a relative expression of the node, for instance its value or path. + +## Set line comment +Set the comment on the key node for more reliability (see below). + +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '.a line_comment="single"' sample.yml +``` +will output +```yaml +a: cat # single +``` + +## Set line comment of a maps/arrays +For maps and arrays, you need to set the line comment on the _key_ node. This will also work for scalars. + +Given a sample.yml file of: +```yaml +a: + b: things +``` +then +```bash +yq '(.a | key) line_comment="single"' sample.yml +``` +will output +```yaml +a: # single + b: things +``` + +## Use update assign to perform relative updates +Given a sample.yml file of: +```yaml +a: cat +b: dog +``` +then +```bash +yq '.. line_comment |= .' sample.yml +``` +will output +```yaml +a: cat # cat +b: dog # dog +``` + +## Where is the comment - map key example +The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value). +From this, you can see the 'hello-world-comment' is actually on the 'hello' key + +Given a sample.yml file of: +```yaml +hello: # hello-world-comment + message: world +``` +then +```bash +yq '[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]' sample.yml +``` +will output +```yaml +- p: "" + isKey: false + hc: "" + lc: "" + fc: "" +- p: hello + isKey: true + hc: "" + lc: hello-world-comment + fc: "" +- p: hello + isKey: false + hc: "" + lc: "" + fc: "" +- p: hello.message + isKey: true + hc: "" + lc: "" + fc: "" +- p: hello.message + isKey: false + hc: "" + lc: "" + fc: "" +``` + +## Retrieve comment - map key example +From the previous example, we know that the comment is on the 'hello' _key_ as a lineComment + +Given a sample.yml file of: +```yaml +hello: # hello-world-comment + message: world +``` +then +```bash +yq '.hello | key | line_comment' sample.yml +``` +will output +```yaml +hello-world-comment +``` + +## Where is the comment - array example +The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value). +From this, you can see the 'under-name-comment' is actually on the first child + +Given a sample.yml file of: +```yaml +name: + # under-name-comment + - first-array-child +``` +then +```bash +yq '[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]' sample.yml +``` +will output +```yaml +- p: "" + isKey: false + hc: "" + lc: "" + fc: "" +- p: name + isKey: true + hc: "" + lc: "" + fc: "" +- p: name + isKey: false + hc: "" + lc: "" + fc: "" +- p: name.0 + isKey: false + hc: under-name-comment + lc: "" + fc: "" +``` + +## Retrieve comment - array example +From the previous example, we know that the comment is on the first child as a headComment + +Given a sample.yml file of: +```yaml +name: + # under-name-comment + - first-array-child +``` +then +```bash +yq '.name[0] | headComment' sample.yml +``` +will output +```yaml +under-name-comment +``` + +## Set head comment +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '. head_comment="single"' sample.yml +``` +will output +```yaml +# single + +a: cat +``` + +## Set head comment of a map entry +Given a sample.yml file of: +```yaml +f: foo +a: + b: cat +``` +then +```bash +yq '(.a | key) head_comment="single"' sample.yml +``` +will output +```yaml +f: foo +# single +a: + b: cat +``` + +## Set foot comment, using an expression +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '. foot_comment=.a' sample.yml +``` +will output +```yaml +a: cat +# cat +``` + +## Remove comment +Given a sample.yml file of: +```yaml +a: cat # comment +b: dog # leave this +``` +then +```bash +yq '.a line_comment=""' sample.yml +``` +will output +```yaml +a: cat +b: dog # leave this +``` + +## Remove (strip) all comments +Note the use of `...` to ensure key nodes are included. + +Given a sample.yml file of: +```yaml +# hi +a: cat # comment +# great +b: # key comment +``` +then +```bash +yq '... comments=""' sample.yml +``` +will output +```yaml +a: cat +b: +``` + +## Get line comment +Given a sample.yml file of: +```yaml +# welcome! +a: cat # meow +# have a great day +``` +then +```bash +yq '.a | line_comment' sample.yml +``` +will output +```yaml +meow +``` + +## Get head comment +Given a sample.yml file of: +```yaml +# welcome! + +a: cat # meow + +# have a great day +``` +then +```bash +yq '. | head_comment' sample.yml +``` +will output +```yaml +welcome! +``` + +## Head comment with document split +Given a sample.yml file of: +```yaml +# welcome! +--- +# bob +a: cat # meow + +# have a great day +``` +then +```bash +yq 'head_comment' sample.yml +``` +will output +```yaml +welcome! +bob +``` + +## Get foot comment +Given a sample.yml file of: +```yaml +# welcome! + +a: cat # meow + +# have a great day +# no really +``` +then +```bash +yq '. | foot_comment' sample.yml +``` +will output +```yaml +have a great day +no really +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/compare.md b/external/yq/pkg/yqlib/doc/operators/compare.md new file mode 100755 index 0000000..fbd1b1e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/compare.md @@ -0,0 +1,100 @@ +# Compare Operators + +Comparison operators (`>`, `>=`, `<`, `<=`) can be used for comparing scalar values of the same time. + +The following types are currently supported: + +- numbers +- strings +- datetimes + +## Related Operators + +- equals / not equals (`==`, `!=`) operators [here](https://mikefarah.gitbook.io/yq/operators/equals) +- boolean operators (`and`, `or`, `any` etc) [here](https://mikefarah.gitbook.io/yq/operators/boolean-operators) +- select operator [here](https://mikefarah.gitbook.io/yq/operators/select) + +## Compare numbers (>) +Given a sample.yml file of: +```yaml +a: 5 +b: 4 +``` +then +```bash +yq '.a > .b' sample.yml +``` +will output +```yaml +true +``` + +## Compare equal numbers (>=) +Given a sample.yml file of: +```yaml +a: 5 +b: 5 +``` +then +```bash +yq '.a >= .b' sample.yml +``` +will output +```yaml +true +``` + +## Compare strings +Compares strings by their bytecode. + +Given a sample.yml file of: +```yaml +a: zoo +b: apple +``` +then +```bash +yq '.a > .b' sample.yml +``` +will output +```yaml +true +``` + +## Compare date times +You can compare date times. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information. + +Given a sample.yml file of: +```yaml +a: 2021-01-01T03:10:00Z +b: 2020-01-01T03:10:00Z +``` +then +```bash +yq '.a > .b' sample.yml +``` +will output +```yaml +true +``` + +## Both sides are null: > is false +Running +```bash +yq --null-input '.a > .b' +``` +will output +```yaml +false +``` + +## Both sides are null: >= is true +Running +```bash +yq --null-input '.a >= .b' +``` +will output +```yaml +true +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/contains.md b/external/yq/pkg/yqlib/doc/operators/contains.md new file mode 100755 index 0000000..dfdd5a0 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/contains.md @@ -0,0 +1,114 @@ +# Contains + +This returns `true` if the context contains the passed in parameter, and false otherwise. For arrays, this will return true if the passed in array is contained within the array. For strings, it will return true if the string is a substring. + +{% hint style="warning" %} + +_Note_ that, just like jq, when checking if an array of strings `contains` another, this will use `contains` and _not_ equals to check each string. This means an array like `contains(["cat"])` will return true for an array `["cats"]`. + +See the "Array has a subset array" example below on how to check for a subset. + +{% endhint %} + +## Array contains array +Array is equal or subset of + +Given a sample.yml file of: +```yaml +- foobar +- foobaz +- blarp +``` +then +```bash +yq 'contains(["baz", "bar"])' sample.yml +``` +will output +```yaml +true +``` + +## Array has a subset array +Subtract the superset array from the subset, if there's anything left, it's not a subset + +Given a sample.yml file of: +```yaml +- foobar +- foobaz +- blarp +``` +then +```bash +yq '["baz", "bar"] - . | length == 0' sample.yml +``` +will output +```yaml +false +``` + +## Object included in array +Given a sample.yml file of: +```yaml +"foo": 12 +"bar": + - 1 + - 2 + - "barp": 12 + "blip": 13 +``` +then +```bash +yq 'contains({"bar": [{"barp": 12}]})' sample.yml +``` +will output +```yaml +true +``` + +## Object not included in array +Given a sample.yml file of: +```yaml +"foo": 12 +"bar": + - 1 + - 2 + - "barp": 12 + "blip": 13 +``` +then +```bash +yq 'contains({"foo": 12, "bar": [{"barp": 15}]})' sample.yml +``` +will output +```yaml +false +``` + +## String contains substring +Given a sample.yml file of: +```yaml +foobar +``` +then +```bash +yq 'contains("bar")' sample.yml +``` +will output +```yaml +true +``` + +## String equals string +Given a sample.yml file of: +```yaml +meow +``` +then +```bash +yq 'contains("meow")' sample.yml +``` +will output +```yaml +true +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/create-collect-into-object.md b/external/yq/pkg/yqlib/doc/operators/create-collect-into-object.md new file mode 100755 index 0000000..2c132bb --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/create-collect-into-object.md @@ -0,0 +1,95 @@ +# Create, Collect into Object + +This is used to construct objects (or maps). This can be used against existing yaml, or to create fresh yaml documents. + +## Collect empty object +Running +```bash +yq --null-input '{}' +``` +will output +```yaml +{} +``` + +## Wrap (prefix) existing object +Given a sample.yml file of: +```yaml +name: Mike +``` +then +```bash +yq '{"wrap": .}' sample.yml +``` +will output +```yaml +wrap: + name: Mike +``` + +## Using splat to create multiple objects +Given a sample.yml file of: +```yaml +name: Mike +pets: + - cat + - dog +``` +then +```bash +yq '{.name: .pets.[]}' sample.yml +``` +will output +```yaml +Mike: cat +Mike: dog +``` + +## Working with multiple documents +Given a sample.yml file of: +```yaml +name: Mike +pets: + - cat + - dog +--- +name: Rosey +pets: + - monkey + - sheep +``` +then +```bash +yq '{.name: .pets.[]}' sample.yml +``` +will output +```yaml +Mike: cat +Mike: dog +Rosey: monkey +Rosey: sheep +``` + +## Creating yaml from scratch +Running +```bash +yq --null-input '{"wrap": "frog"}' +``` +will output +```yaml +wrap: frog +``` + +## Creating yaml from scratch with multiple objects +Running +```bash +yq --null-input '(.a.b = "foo") | (.d.e = "bar")' +``` +will output +```yaml +a: + b: foo +d: + e: bar +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/datetime.md b/external/yq/pkg/yqlib/doc/operators/datetime.md new file mode 100755 index 0000000..0dc3ed5 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/datetime.md @@ -0,0 +1,197 @@ +# Date Time + +Various operators for parsing and manipulating dates. + +## Date time formattings +This uses the golangs built in time library for parsing and formatting date times. + +When not specified, the RFC3339 standard is assumed `2006-01-02T15:04:05Z07:00` for parsing. + +To specify a custom parsing format, use the `with_dtf` operator. The first parameter sets the datetime parsing format for the expression in the second parameter. The expression can be any valid `yq` expression tree. + +```bash +yq 'with_dtf("myformat"; .a + "3h" | tz("Australia/Melbourne"))' +``` + +See the [library docs](https://pkg.go.dev/time#pkg-constants) for examples of formatting options. + + +## Timezones +This uses golangs built in LoadLocation function to parse timezones strings. See the [library docs](https://pkg.go.dev/time#LoadLocation) for more details. + + +## Durations +Durations are parsed using golangs built in [ParseDuration](https://pkg.go.dev/time#ParseDuration) function. + +You can durations to time using the `+` operator. + +## Format: from standard RFC3339 format +Providing a single parameter assumes a standard RFC3339 datetime format. If the target format is not a valid yaml datetime format, the result will be a string tagged node. + +Given a sample.yml file of: +```yaml +a: 2001-12-15T02:59:43.1Z +``` +then +```bash +yq '.a |= format_datetime("Monday, 02-Jan-06 at 3:04PM")' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 2:59AM +``` + +## Format: from custom date time +Use with_dtf to set a custom datetime format for parsing. + +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 2:59AM +``` +then +```bash +yq '.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM"; format_datetime("2006-01-02"))' sample.yml +``` +will output +```yaml +a: 2001-12-15 +``` + +## Format: get the day of the week +Given a sample.yml file of: +```yaml +a: 2001-12-15 +``` +then +```bash +yq '.a | format_datetime("Monday")' sample.yml +``` +will output +```yaml +Saturday +``` + +## Now +Given a sample.yml file of: +```yaml +a: cool +``` +then +```bash +yq '.updated = now' sample.yml +``` +will output +```yaml +a: cool +updated: 2021-05-19T01:02:03Z +``` + +## Timezone: from standard RFC3339 format +Returns a new datetime in the specified timezone. Specify standard IANA Time Zone format or 'utc', 'local'. When given a single parameter, this assumes the datetime is in RFC3339 format. + +Given a sample.yml file of: +```yaml +a: cool +``` +then +```bash +yq '.updated = (now | tz("Australia/Sydney"))' sample.yml +``` +will output +```yaml +a: cool +updated: 2021-05-19T11:02:03+10:00 +``` + +## Timezone: with custom format +Specify standard IANA Time Zone format or 'utc', 'local' + +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 2:59AM GMT +``` +then +```bash +yq '.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; tz("Australia/Sydney"))' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 1:59PM AEDT +``` + +## Add and tz custom format +Specify standard IANA Time Zone format or 'utc', 'local' + +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 2:59AM GMT +``` +then +```bash +yq '.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; tz("Australia/Sydney"))' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 1:59PM AEDT +``` + +## Date addition +Given a sample.yml file of: +```yaml +a: 2021-01-01T00:00:00Z +``` +then +```bash +yq '.a += "3h10m"' sample.yml +``` +will output +```yaml +a: 2021-01-01T03:10:00Z +``` + +## Date subtraction +You can subtract durations from dates. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/datetime#date-time-formattings) for more information. + +Given a sample.yml file of: +```yaml +a: 2021-01-01T03:10:00Z +``` +then +```bash +yq '.a -= "3h10m"' sample.yml +``` +will output +```yaml +a: 2021-01-01T00:00:00Z +``` + +## Date addition - custom format +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 2:59AM GMT +``` +then +```bash +yq 'with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; .a += "3h1m")' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 6:00AM GMT +``` + +## Date script with custom format +You can embed full expressions in with_dtf if needed. + +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 2:59AM GMT +``` +then +```bash +yq 'with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; .a = (.a + "3h1m" | tz("Australia/Perth")))' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 2:00PM AWST +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/delete.md b/external/yq/pkg/yqlib/doc/operators/delete.md new file mode 100755 index 0000000..6d0a99a --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/delete.md @@ -0,0 +1,120 @@ +# Delete + +Deletes matching entries in maps or arrays. + +## Delete entry in map +Given a sample.yml file of: +```yaml +a: cat +b: dog +``` +then +```bash +yq 'del(.b)' sample.yml +``` +will output +```yaml +a: cat +``` + +## Delete nested entry in map +Given a sample.yml file of: +```yaml +a: + a1: fred + a2: frood +``` +then +```bash +yq 'del(.a.a1)' sample.yml +``` +will output +```yaml +a: + a2: frood +``` + +## Delete entry in array +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq 'del(.[1])' sample.yml +``` +will output +```yaml +- 1 +- 3 +``` + +## Delete nested entry in array +Given a sample.yml file of: +```yaml +- a: cat + b: dog +``` +then +```bash +yq 'del(.[0].a)' sample.yml +``` +will output +```yaml +- b: dog +``` + +## Delete no matches +Given a sample.yml file of: +```yaml +a: cat +b: dog +``` +then +```bash +yq 'del(.c)' sample.yml +``` +will output +```yaml +a: cat +b: dog +``` + +## Delete matching entries +Given a sample.yml file of: +```yaml +a: cat +b: dog +c: bat +``` +then +```bash +yq 'del( .[] | select(. == "*at") )' sample.yml +``` +will output +```yaml +b: dog +``` + +## Recursively delete matching keys +Given a sample.yml file of: +```yaml +a: + name: frog + b: + name: blog + age: 12 +``` +then +```bash +yq 'del(.. | select(has("name")).name)' sample.yml +``` +will output +```yaml +a: + b: + age: 12 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/document-index.md b/external/yq/pkg/yqlib/doc/operators/document-index.md new file mode 100755 index 0000000..619fd39 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/document-index.md @@ -0,0 +1,91 @@ +# Document Index + +Use the `documentIndex` operator (or the `di` shorthand) to select nodes of a particular document. + +## Retrieve a document index +Given a sample.yml file of: +```yaml +a: cat +--- +a: frog +``` +then +```bash +yq '.a | document_index' sample.yml +``` +will output +```yaml +0 +--- +1 +``` + +## Retrieve a document index, shorthand +Given a sample.yml file of: +```yaml +a: cat +--- +a: frog +``` +then +```bash +yq '.a | di' sample.yml +``` +will output +```yaml +0 +--- +1 +``` + +## Filter by document index +Given a sample.yml file of: +```yaml +a: cat +--- +a: frog +``` +then +```bash +yq 'select(document_index == 1)' sample.yml +``` +will output +```yaml +a: frog +``` + +## Filter by document index shorthand +Given a sample.yml file of: +```yaml +a: cat +--- +a: frog +``` +then +```bash +yq 'select(di == 1)' sample.yml +``` +will output +```yaml +a: frog +``` + +## Print Document Index with matches +Given a sample.yml file of: +```yaml +a: cat +--- +a: frog +``` +then +```bash +yq '.a | ({"match": ., "doc": document_index})' sample.yml +``` +will output +```yaml +match: cat +doc: 0 +match: frog +doc: 1 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/encode-decode.md b/external/yq/pkg/yqlib/doc/operators/encode-decode.md new file mode 100755 index 0000000..f9e5097 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/encode-decode.md @@ -0,0 +1,470 @@ +# Encoder / Decoder + +Encode operators will take the piped in object structure and encode it as a string in the desired format. The decode operators do the opposite, they take a formatted string and decode it into the relevant object structure. + +Note that you can optionally pass an indent value to the encode functions (see below). + +These operators are useful to process yaml documents that have stringified embedded yaml/json/props in them. + + +| Format | Decode (from string) | Encode (to string) | +| --- | -- | --| +| Yaml | from_yaml/@yamld | to_yaml(i)/@yaml | +| JSON | from_json/@jsond | to_json(i)/@json | +| Properties | from_props/@propsd | to_props/@props | +| CSV | from_csv/@csvd | to_csv/@csv | +| TSV | from_tsv/@tsvd | to_tsv/@tsv | +| XML | from_xml/@xmld | to_xml(i)/@xml | +| Base64 | @base64d | @base64 | + + +See CSV and TSV [documentation](https://mikefarah.gitbook.io/yq/usage/csv-tsv) for accepted formats. + +XML uses the `--xml-attribute-prefix` and `xml-content-name` flags to identify attributes and content fields. + + +Base64 assumes [rfc4648](https://rfc-editor.org/rfc/rfc4648.html) encoding. Encoding and decoding both assume that the content is a string. + +## Encode value as json string +Given a sample.yml file of: +```yaml +a: + cool: thing +``` +then +```bash +yq '.b = (.a | to_json)' sample.yml +``` +will output +```yaml +a: + cool: thing +b: | + { + "cool": "thing" + } +``` + +## Encode value as json string, on one line +Pass in a 0 indent to print json on a single line. + +Given a sample.yml file of: +```yaml +a: + cool: thing +``` +then +```bash +yq '.b = (.a | to_json(0))' sample.yml +``` +will output +```yaml +a: + cool: thing +b: '{"cool":"thing"}' +``` + +## Encode value as json string, on one line shorthand +Pass in a 0 indent to print json on a single line. + +Given a sample.yml file of: +```yaml +a: + cool: thing +``` +then +```bash +yq '.b = (.a | @json)' sample.yml +``` +will output +```yaml +a: + cool: thing +b: '{"cool":"thing"}' +``` + +## Decode a json encoded string +Keep in mind JSON is a subset of YAML. If you want idiomatic yaml, pipe through the style operator to clear out the JSON styling. + +Given a sample.yml file of: +```yaml +a: '{"cool":"thing"}' +``` +then +```bash +yq '.a | from_json | ... style=""' sample.yml +``` +will output +```yaml +cool: thing +``` + +## Encode value as props string +Given a sample.yml file of: +```yaml +a: + cool: thing +``` +then +```bash +yq '.b = (.a | @props)' sample.yml +``` +will output +```yaml +a: + cool: thing +b: | + cool = thing +``` + +## Decode props encoded string +Given a sample.yml file of: +```yaml +a: |- + cats=great + dogs=cool as well +``` +then +```bash +yq '.a |= @propsd' sample.yml +``` +will output +```yaml +a: + cats: great + dogs: cool as well +``` + +## Decode csv encoded string +Given a sample.yml file of: +```yaml +a: |- + cats,dogs + great,cool as well +``` +then +```bash +yq '.a |= @csvd' sample.yml +``` +will output +```yaml +a: + - cats: great + dogs: cool as well +``` + +## Decode tsv encoded string +Given a sample.yml file of: +```yaml +a: |- + cats dogs + great cool as well +``` +then +```bash +yq '.a |= @tsvd' sample.yml +``` +will output +```yaml +a: + - cats: great + dogs: cool as well +``` + +## Encode value as yaml string +Indent defaults to 2 + +Given a sample.yml file of: +```yaml +a: + cool: + bob: dylan +``` +then +```bash +yq '.b = (.a | to_yaml)' sample.yml +``` +will output +```yaml +a: + cool: + bob: dylan +b: | + cool: + bob: dylan +``` + +## Encode value as yaml string, with custom indentation +You can specify the indentation level as the first parameter. + +Given a sample.yml file of: +```yaml +a: + cool: + bob: dylan +``` +then +```bash +yq '.b = (.a | to_yaml(8))' sample.yml +``` +will output +```yaml +a: + cool: + bob: dylan +b: | + cool: + bob: dylan +``` + +## Decode a yaml encoded string +Given a sample.yml file of: +```yaml +a: 'foo: bar' +``` +then +```bash +yq '.b = (.a | from_yaml)' sample.yml +``` +will output +```yaml +a: 'foo: bar' +b: + foo: bar +``` + +## Update a multiline encoded yaml string +Given a sample.yml file of: +```yaml +a: | + foo: bar + baz: dog + +``` +then +```bash +yq '.a |= (from_yaml | .foo = "cat" | to_yaml)' sample.yml +``` +will output +```yaml +a: | + foo: cat + baz: dog +``` + +## Update a single line encoded yaml string +Given a sample.yml file of: +```yaml +a: 'foo: bar' +``` +then +```bash +yq '.a |= (from_yaml | .foo = "cat" | to_yaml)' sample.yml +``` +will output +```yaml +a: 'foo: cat' +``` + +## Encode array of scalars as csv string +Scalars are strings, numbers and booleans. + +Given a sample.yml file of: +```yaml +- cat +- thing1,thing2 +- true +- 3.40 +``` +then +```bash +yq '@csv' sample.yml +``` +will output +```yaml +cat,"thing1,thing2",true,3.40 +``` + +## Encode array of arrays as csv string +Given a sample.yml file of: +```yaml +- - cat + - thing1,thing2 + - true + - 3.40 +- - dog + - thing3 + - false + - 12 +``` +then +```bash +yq '@csv' sample.yml +``` +will output +```yaml +cat,"thing1,thing2",true,3.40 +dog,thing3,false,12 +``` + +## Encode array of array scalars as tsv string +Scalars are strings, numbers and booleans. + +Given a sample.yml file of: +```yaml +- - cat + - thing1,thing2 + - true + - 3.40 +- - dog + - thing3 + - false + - 12 +``` +then +```bash +yq '@tsv' sample.yml +``` +will output +```yaml +cat thing1,thing2 true 3.40 +dog thing3 false 12 +``` + +## Encode value as xml string +Given a sample.yml file of: +```yaml +a: + cool: + foo: bar + +@id: hi +``` +then +```bash +yq '.a | to_xml' sample.yml +``` +will output +```yaml + + bar + + +``` + +## Encode value as xml string on a single line +Given a sample.yml file of: +```yaml +a: + cool: + foo: bar + +@id: hi +``` +then +```bash +yq '.a | @xml' sample.yml +``` +will output +```yaml +bar + +``` + +## Encode value as xml string with custom indentation +Given a sample.yml file of: +```yaml +a: + cool: + foo: bar + +@id: hi +``` +then +```bash +yq '{"cat": .a | to_xml(1)}' sample.yml +``` +will output +```yaml +cat: | + + bar + +``` + +## Decode a xml encoded string +Given a sample.yml file of: +```yaml +a: bar +``` +then +```bash +yq '.b = (.a | from_xml)' sample.yml +``` +will output +```yaml +a: bar +b: + foo: bar +``` + +## Encode a string to base64 +Given a sample.yml file of: +```yaml +coolData: a special string +``` +then +```bash +yq '.coolData | @base64' sample.yml +``` +will output +```yaml +YSBzcGVjaWFsIHN0cmluZw== +``` + +## Encode a yaml document to base64 +Pipe through @yaml first to convert to a string, then use @base64 to encode it. + +Given a sample.yml file of: +```yaml +a: apple +``` +then +```bash +yq '@yaml | @base64' sample.yml +``` +will output +```yaml +YTogYXBwbGUK +``` + +## Decode a base64 encoded string +Decoded data is assumed to be a string. + +Given a sample.yml file of: +```yaml +coolData: V29ya3Mgd2l0aCBVVEYtMTYg8J+Yig== +``` +then +```bash +yq '.coolData | @base64d' sample.yml +``` +will output +```yaml +Works with UTF-16 😊 +``` + +## Decode a base64 encoded yaml document +Pipe through `from_yaml` to parse the decoded base64 string as a yaml document. + +Given a sample.yml file of: +```yaml +coolData: YTogYXBwbGUK +``` +then +```bash +yq '.coolData |= (@base64d | from_yaml)' sample.yml +``` +will output +```yaml +coolData: + a: apple +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/entries.md b/external/yq/pkg/yqlib/doc/operators/entries.md new file mode 100755 index 0000000..a466e43 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/entries.md @@ -0,0 +1,141 @@ +# Entries + +Similar to the same named functions in `jq` these functions convert to/from an object and an array of key-value pairs. This is most useful for performing operations on keys of maps. + +## to_entries Map +Given a sample.yml file of: +```yaml +a: 1 +b: 2 +``` +then +```bash +yq 'to_entries' sample.yml +``` +will output +```yaml +- key: a + value: 1 +- key: b + value: 2 +``` + +## to_entries Array +Given a sample.yml file of: +```yaml +- a +- b +``` +then +```bash +yq 'to_entries' sample.yml +``` +will output +```yaml +- key: 0 + value: a +- key: 1 + value: b +``` + +## to_entries null +Given a sample.yml file of: +```yaml +null +``` +then +```bash +yq 'to_entries' sample.yml +``` +will output +```yaml +``` + +## from_entries map +Given a sample.yml file of: +```yaml +a: 1 +b: 2 +``` +then +```bash +yq 'to_entries | from_entries' sample.yml +``` +will output +```yaml +a: 1 +b: 2 +``` + +## from_entries with numeric key indexes +from_entries always creates a map, even for numeric keys + +Given a sample.yml file of: +```yaml +- a +- b +``` +then +```bash +yq 'to_entries | from_entries' sample.yml +``` +will output +```yaml +0: a +1: b +``` + +## Use with_entries to update keys +Given a sample.yml file of: +```yaml +a: 1 +b: 2 +``` +then +```bash +yq 'with_entries(.key |= "KEY_" + .)' sample.yml +``` +will output +```yaml +KEY_a: 1 +KEY_b: 2 +``` + +## Custom sort map keys +Use to_entries to convert to an array of key/value pairs, sort the array using sort/sort_by/etc, and convert it back. + +Given a sample.yml file of: +```yaml +a: 1 +c: 3 +b: 2 +``` +then +```bash +yq 'to_entries | sort_by(.key) | reverse | from_entries' sample.yml +``` +will output +```yaml +c: 3 +b: 2 +a: 1 +``` + +## Use with_entries to filter the map +Given a sample.yml file of: +```yaml +a: + b: bird +c: + d: dog +``` +then +```bash +yq 'with_entries(select(.value | has("b")))' sample.yml +``` +will output +```yaml +a: + b: bird +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/env-variable-operators.md b/external/yq/pkg/yqlib/doc/operators/env-variable-operators.md new file mode 100755 index 0000000..c616f66 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/env-variable-operators.md @@ -0,0 +1,256 @@ +# Env Variable Operators + +These operators are used to handle environment variables usage in expressions and documents. While environment variables can, of course, be passed in via your CLI with string interpolation, this often comes with complex quote escaping and can be tricky to write and read. + +There are three operators: + +- `env` which takes a single environment variable name and parse the variable as a yaml node (be it a map, array, string, number of boolean) +- `strenv` which also takes a single environment variable name, and always parses the variable as a string. +- `envsubst` which you pipe strings into and it interpolates environment variables in strings using [envsubst](https://github.com/a8m/envsubst). + + +## EnvSubst Options +You can optionally pass envsubst any of the following options: + + - nu: NoUnset, this will fail if there are any referenced variables that are not set + - ne: NoEmpty, this will fail if there are any referenced variables that are empty + - ff: FailFast, this will abort on the first failure (rather than collect all the errors) + +E.g: +`envsubst(ne, ff)` will fail on the first empty variable. + +See [Imposing Restrictions](https://github.com/a8m/envsubst#imposing-restrictions) in the `envsubst` documentation for more information, and below for examples. + +## Tip +To replace environment variables across all values in a document, `envsubst` can be used with the recursive descent operator +as follows: + +```bash +yq '(.. | select(tag == "!!str")) |= envsubst' file.yaml +``` + + +## Read string environment variable +Running +```bash +myenv="cat meow" yq --null-input '.a = env(myenv)' +``` +will output +```yaml +a: cat meow +``` + +## Read boolean environment variable +Running +```bash +myenv="true" yq --null-input '.a = env(myenv)' +``` +will output +```yaml +a: true +``` + +## Read numeric environment variable +Running +```bash +myenv="12" yq --null-input '.a = env(myenv)' +``` +will output +```yaml +a: 12 +``` + +## Read yaml environment variable +Running +```bash +myenv="{b: fish}" yq --null-input '.a = env(myenv)' +``` +will output +```yaml +a: {b: fish} +``` + +## Read boolean environment variable as a string +Running +```bash +myenv="true" yq --null-input '.a = strenv(myenv)' +``` +will output +```yaml +a: "true" +``` + +## Read numeric environment variable as a string +Running +```bash +myenv="12" yq --null-input '.a = strenv(myenv)' +``` +will output +```yaml +a: "12" +``` + +## Dynamically update a path from an environment variable +The env variable can be any valid yq expression. + +Given a sample.yml file of: +```yaml +a: + b: + - name: dog + - name: cat +``` +then +```bash +pathEnv=".a.b[0].name" valueEnv="moo" yq 'eval(strenv(pathEnv)) = strenv(valueEnv)' sample.yml +``` +will output +```yaml +a: + b: + - name: moo + - name: cat +``` + +## Dynamic key lookup with environment variable +Given a sample.yml file of: +```yaml +cat: meow +dog: woof +``` +then +```bash +myenv="cat" yq '.[env(myenv)]' sample.yml +``` +will output +```yaml +meow +``` + +## Replace strings with envsubst +Running +```bash +myenv="cat" yq --null-input '"the ${myenv} meows" | envsubst' +``` +will output +```yaml +the cat meows +``` + +## Replace strings with envsubst, missing variables +Running +```bash +yq --null-input '"the ${myenvnonexisting} meows" | envsubst' +``` +will output +```yaml +the meows +``` + +## Replace strings with envsubst(nu), missing variables +(nu) not unset, will fail if there are unset (missing) variables + +Running +```bash +yq --null-input '"the ${myenvnonexisting} meows" | envsubst(nu)' +``` +will output +```bash +Error: variable ${myenvnonexisting} not set +``` + +## Replace strings with envsubst(ne), missing variables +(ne) not empty, only validates set variables + +Running +```bash +yq --null-input '"the ${myenvnonexisting} meows" | envsubst(ne)' +``` +will output +```yaml +the meows +``` + +## Replace strings with envsubst(ne), empty variable +(ne) not empty, will fail if a references variable is empty + +Running +```bash +myenv="" yq --null-input '"the ${myenv} meows" | envsubst(ne)' +``` +will output +```bash +Error: variable ${myenv} set but empty +``` + +## Replace strings with envsubst, missing variables with defaults +Running +```bash +yq --null-input '"the ${myenvnonexisting-dog} meows" | envsubst' +``` +will output +```yaml +the dog meows +``` + +## Replace strings with envsubst(nu), missing variables with defaults +Having a default specified skips over the missing variable. + +Running +```bash +yq --null-input '"the ${myenvnonexisting-dog} meows" | envsubst(nu)' +``` +will output +```yaml +the dog meows +``` + +## Replace strings with envsubst(ne), missing variables with defaults +Fails, because the variable is explicitly set to blank. + +Running +```bash +myEmptyEnv="" yq --null-input '"the ${myEmptyEnv-dog} meows" | envsubst(ne)' +``` +will output +```bash +Error: variable ${myEmptyEnv} set but empty +``` + +## Replace string environment variable in document +Given a sample.yml file of: +```yaml +v: ${myenv} +``` +then +```bash +myenv="cat meow" yq '.v |= envsubst' sample.yml +``` +will output +```yaml +v: cat meow +``` + +## (Default) Return all envsubst errors +By default, all errors are returned at once. + +Running +```bash +yq --null-input '"the ${notThere} ${alsoNotThere}" | envsubst(nu)' +``` +will output +```bash +Error: variable ${notThere} not set +variable ${alsoNotThere} not set +``` + +## Fail fast, return the first envsubst error (and abort) +Running +```bash +yq --null-input '"the ${notThere} ${alsoNotThere}" | envsubst(nu,ff)' +``` +will output +```bash +Error: variable ${notThere} not set +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/equals.md b/external/yq/pkg/yqlib/doc/operators/equals.md new file mode 100755 index 0000000..ca5099b --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/equals.md @@ -0,0 +1,133 @@ +# Equals / Not Equals + +This is a boolean operator that will return `true` if the LHS is equal to the RHS and `false` otherwise. + +``` +.a == .b +``` + +It is most often used with the select operator to find particular nodes: + +``` +select(.a == .b) +``` + +The not equals `!=` operator returns `false` if the LHS is equal to the RHS. + +## Related Operators + +- comparison (`>=`, `<` etc) operators [here](https://mikefarah.gitbook.io/yq/operators/compare) +- boolean operators (`and`, `or`, `any` etc) [here](https://mikefarah.gitbook.io/yq/operators/boolean-operators) +- select operator [here](https://mikefarah.gitbook.io/yq/operators/select) + + +## Match string +Given a sample.yml file of: +```yaml +- cat +- goat +- dog +``` +then +```bash +yq '.[] | (. == "*at")' sample.yml +``` +will output +```yaml +true +true +false +``` + +## Don't match string +Given a sample.yml file of: +```yaml +- cat +- goat +- dog +``` +then +```bash +yq '.[] | (. != "*at")' sample.yml +``` +will output +```yaml +false +false +true +``` + +## Match number +Given a sample.yml file of: +```yaml +- 3 +- 4 +- 5 +``` +then +```bash +yq '.[] | (. == 4)' sample.yml +``` +will output +```yaml +false +true +false +``` + +## Don't match number +Given a sample.yml file of: +```yaml +- 3 +- 4 +- 5 +``` +then +```bash +yq '.[] | (. != 4)' sample.yml +``` +will output +```yaml +true +false +true +``` + +## Match nulls +Running +```bash +yq --null-input 'null == ~' +``` +will output +```yaml +true +``` + +## Non existent key doesn't equal a value +Given a sample.yml file of: +```yaml +a: frog +``` +then +```bash +yq 'select(.b != "thing")' sample.yml +``` +will output +```yaml +a: frog +``` + +## Two non existent keys are equal +Given a sample.yml file of: +```yaml +a: frog +``` +then +```bash +yq 'select(.b == .c)' sample.yml +``` +will output +```yaml +a: frog +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/error.md b/external/yq/pkg/yqlib/doc/operators/error.md new file mode 100755 index 0000000..0b7a247 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/error.md @@ -0,0 +1,50 @@ +# Error + +Use this operation to short-circuit expressions. Useful for validation. + +## Validate a particular value +Given a sample.yml file of: +```yaml +a: hello +``` +then +```bash +yq 'select(.a == "howdy") or error(".a [" + .a + "] is not howdy!")' sample.yml +``` +will output +```bash +Error: .a [hello] is not howdy! +``` + +## Validate the environment variable is a number - invalid +Running +```bash +numberOfCats="please" yq --null-input 'env(numberOfCats) | select(tag == "!!int") or error("numberOfCats is not a number :(")' +``` +will output +```bash +Error: numberOfCats is not a number :( +``` + +## Validate the environment variable is a number - valid +`with` can be a convenient way of encapsulating validation. + +Given a sample.yml file of: +```yaml +name: Bob +favouriteAnimal: cat +``` +then +```bash +numberOfCats="3" yq ' + with(env(numberOfCats); select(tag == "!!int") or error("numberOfCats is not a number :(")) | + .numPets = env(numberOfCats) +' sample.yml +``` +will output +```yaml +name: Bob +favouriteAnimal: cat +numPets: 3 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/eval.md b/external/yq/pkg/yqlib/doc/operators/eval.md new file mode 100755 index 0000000..1a8a010 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/eval.md @@ -0,0 +1,48 @@ +# Eval + +Use `eval` to dynamically process an expression - for instance from an environment variable. + +`eval` takes a single argument, and evaluates that as a `yq` expression. Any valid expression can be used, beit a path `.a.b.c | select(. == "cat")`, or an update `.a.b.c = "gogo"`. + +Tip: This can be useful way parameterise complex scripts. + +## Dynamically evaluate a path +Given a sample.yml file of: +```yaml +pathExp: .a.b[] | select(.name == "cat") +a: + b: + - name: dog + - name: cat +``` +then +```bash +yq 'eval(.pathExp)' sample.yml +``` +will output +```yaml +name: cat +``` + +## Dynamically update a path from an environment variable +The env variable can be any valid yq expression. + +Given a sample.yml file of: +```yaml +a: + b: + - name: dog + - name: cat +``` +then +```bash +pathEnv=".a.b[0].name" valueEnv="moo" yq 'eval(strenv(pathEnv)) = strenv(valueEnv)' sample.yml +``` +will output +```yaml +a: + b: + - name: moo + - name: cat +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/file-operators.md b/external/yq/pkg/yqlib/doc/operators/file-operators.md new file mode 100755 index 0000000..b1dacd7 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/file-operators.md @@ -0,0 +1,74 @@ +# File Operators + +File operators are most often used with merge when needing to merge specific files together. Note that when doing this, you will need to use `eval-all` to ensure all yaml documents are loaded into memory before performing the merge (as opposed to `eval` which runs the expression once per document). + +Note that the `fileIndex` operator has a short alias of `fi`. + +## Merging files +Note the use of eval-all to ensure all documents are loaded into memory. +```bash +yq eval-all 'select(fi == 0) * select(filename == "file2.yaml")' file1.yaml file2.yaml +``` + +## Get filename +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq 'filename' sample.yml +``` +will output +```yaml +sample.yml +``` + +## Get file index +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq 'file_index' sample.yml +``` +will output +```yaml +0 +``` + +## Get file indices of multiple documents +Given a sample.yml file of: +```yaml +a: cat +``` +And another sample another.yml file of: +```yaml +a: cat +``` +then +```bash +yq eval-all 'file_index' sample.yml another.yml +``` +will output +```yaml +0 +--- +1 +``` + +## Get file index alias +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq 'fi' sample.yml +``` +will output +```yaml +0 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/flatten.md b/external/yq/pkg/yqlib/doc/operators/flatten.md new file mode 100755 index 0000000..cb3bc26 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/flatten.md @@ -0,0 +1,71 @@ +# Flatten +This recursively flattens arrays. + +## Flatten +Recursively flattens all arrays + +Given a sample.yml file of: +```yaml +- 1 +- - 2 +- - - 3 +``` +then +```bash +yq 'flatten' sample.yml +``` +will output +```yaml +- 1 +- 2 +- 3 +``` + +## Flatten with depth of one +Given a sample.yml file of: +```yaml +- 1 +- - 2 +- - - 3 +``` +then +```bash +yq 'flatten(1)' sample.yml +``` +will output +```yaml +- 1 +- 2 +- - 3 +``` + +## Flatten empty array +Given a sample.yml file of: +```yaml +- [] +``` +then +```bash +yq 'flatten' sample.yml +``` +will output +```yaml +[] +``` + +## Flatten array of objects +Given a sample.yml file of: +```yaml +- foo: bar +- - foo: baz +``` +then +```bash +yq 'flatten' sample.yml +``` +will output +```yaml +- foo: bar +- foo: baz +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/group-by.md b/external/yq/pkg/yqlib/doc/operators/group-by.md new file mode 100755 index 0000000..f5169b7 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/group-by.md @@ -0,0 +1,56 @@ +# Group By + +This is used to group items in an array by an expression. + +## Group by field +Given a sample.yml file of: +```yaml +- foo: 1 + bar: 10 +- foo: 3 + bar: 100 +- foo: 1 + bar: 1 +``` +then +```bash +yq 'group_by(.foo)' sample.yml +``` +will output +```yaml +- - foo: 1 + bar: 10 + - foo: 1 + bar: 1 +- - foo: 3 + bar: 100 +``` + +## Group by field, with nuls +Given a sample.yml file of: +```yaml +- cat: dog +- foo: 1 + bar: 10 +- foo: 3 + bar: 100 +- no: foo for you +- foo: 1 + bar: 1 +``` +then +```bash +yq 'group_by(.foo)' sample.yml +``` +will output +```yaml +- - cat: dog + - no: foo for you +- - foo: 1 + bar: 10 + - foo: 1 + bar: 1 +- - foo: 3 + bar: 100 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/has.md b/external/yq/pkg/yqlib/doc/operators/has.md new file mode 100755 index 0000000..4a5e294 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/has.md @@ -0,0 +1,70 @@ +# Has + +This is operation that returns true if the key exists in a map (or index in an array), false otherwise. + +## Has map key +Given a sample.yml file of: +```yaml +- a: yes +- a: ~ +- a: +- b: nope +``` +then +```bash +yq '.[] | has("a")' sample.yml +``` +will output +```yaml +true +true +true +false +``` + +## Select, checking for existence of deep paths +Simply pipe in parent expressions into `has` + +Given a sample.yml file of: +```yaml +- a: + b: + c: cat +- a: + b: + d: dog +``` +then +```bash +yq '.[] | select(.a.b | has("c"))' sample.yml +``` +will output +```yaml +a: + b: + c: cat +``` + +## Has array index +Given a sample.yml file of: +```yaml +- [] +- [1] +- [1, 2] +- [1, null] +- [1, 2, 3] + +``` +then +```bash +yq '.[] | has(1)' sample.yml +``` +will output +```yaml +false +false +true +true +true +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/Main.md b/external/yq/pkg/yqlib/doc/operators/headers/Main.md new file mode 100755 index 0000000..59284fd --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/Main.md @@ -0,0 +1,63 @@ +# NAME + *yq* is a portable command-line YAML processor + +# SYNOPSIS + +yq [eval/eval-all] [expression] files.. + +eval/e - (default) Apply the expression to each document in each yaml file in sequence + +eval-all/ea - Loads all yaml documents of all yaml files and runs expression once + +# DESCRIPTION + +a lightweight and portable command-line YAML processor. `yq` uses [jq](https://github.com/stedolan/jq) like syntax but works with yaml files as well as json. It doesn't yet support everything `jq` does - but it does support the most common operations and functions, and more is being added continuously. + +This documentation is also available at https://mikefarah.gitbook.io/yq/ +# QUICK GUIDE + +## Read a value: +```bash +yq '.a.b[0].c' file.yaml +``` + +## Pipe from STDIN: +```bash +cat file.yaml | yq '.a.b[0].c' +``` + +## Update a yaml file, inplace +```bash +yq -i '.a.b[0].c = "cool"' file.yaml +``` + +## Update using environment variables +```bash +NAME=mike yq -i '.a.b[0].c = strenv(NAME)' file.yaml +``` + +## Merge multiple files +``` +yq ea '. as $item ireduce ({}; . * $item )' path/to/*.yml +``` +Note the use of `ea` to evaluate all files at once (instead of in sequence.) + +## Multiple updates to a yaml file +```bash +yq -i ' + .a.b[0].c = "cool" | + .x.y.z = "foobar" | + .person.name = strenv(NAME) +' file.yaml +``` + +See the [documentation](https://mikefarah.gitbook.io/yq/) for more. + +# KNOWN ISSUES / MISSING FEATURES +- `yq` attempts to preserve comment positions and whitespace as much as possible, but it does not handle all scenarios (see https://github.com/go-yaml/yaml/tree/v3 for details) +- Powershell has its own...opinions: https://mikefarah.gitbook.io/yq/usage/tips-and-tricks#quotes-in-windows-powershell + +# BUGS / ISSUES / FEATURE REQUESTS + +Please visit the GitHub page https://github.com/mikefarah/yq/. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/add.md b/external/yq/pkg/yqlib/doc/operators/headers/add.md new file mode 100755 index 0000000..4d8524a --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/add.md @@ -0,0 +1,10 @@ +# Add + +Add behaves differently according to the type of the LHS: +* arrays: concatenate +* number scalars: arithmetic addition +* string scalars: concatenate +* maps: shallow merge (use the multiply operator (`*`) to deeply merge) + +Use `+=` as a relative append assign for things like increment. Note that `.a += .x` is equivalent to running `.a = .a + .x`. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/alternative-default-value.md b/external/yq/pkg/yqlib/doc/operators/headers/alternative-default-value.md new file mode 100755 index 0000000..de5192b --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/alternative-default-value.md @@ -0,0 +1,3 @@ +# Alternative (Default value) + +This operator is used to provide alternative (or default) values when a particular expression is either null or false. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/anchor-and-alias-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/anchor-and-alias-operators.md new file mode 100755 index 0000000..5c6f29e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/anchor-and-alias-operators.md @@ -0,0 +1,6 @@ +# Anchor and Alias Operators + +Use the `alias` and `anchor` operators to read and write yaml aliases and anchors. The `explode` operator normalises a yaml file (dereference (or expands) aliases and remove anchor names). + +`yq` supports merge aliases (like `<<: *blah`) however this is no longer in the standard yaml spec (1.2) and so `yq` will automatically add the `!!merge` tag to these nodes as it is effectively a custom tag. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/array-to-map.md b/external/yq/pkg/yqlib/doc/operators/headers/array-to-map.md new file mode 100755 index 0000000..0e431a6 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/array-to-map.md @@ -0,0 +1,9 @@ +# Array to Map + +Use this operator to convert an array to..a map. The indices are used as map keys, null values in the array are skipped over. + +Behind the scenes, this is implemented using reduce: + +``` +(.[] | select(. != null) ) as $i ireduce({}; .[$i | key] = $i) +``` diff --git a/external/yq/pkg/yqlib/doc/operators/headers/assign-update.md b/external/yq/pkg/yqlib/doc/operators/headers/assign-update.md new file mode 100755 index 0000000..fc139f3 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/assign-update.md @@ -0,0 +1,13 @@ +# Assign (Update) + +This operator is used to update node values. It can be used in either the: + +### plain form: `=` +Which will assign the LHS node values to the RHS node values. The RHS expression is run against the matching nodes in the pipeline. + +### relative form: `|=` +This will do a similar thing to the plain form, however, the RHS expression is run against _the LHS nodes_. This is useful for updating values based on old values, e.g. increment. + + +### Flags +- `c` clobber custom tags diff --git a/external/yq/pkg/yqlib/doc/operators/headers/boolean-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/boolean-operators.md new file mode 100755 index 0000000..6d457cb --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/boolean-operators.md @@ -0,0 +1,17 @@ +# Boolean Operators + +The `or` and `and` operators take two parameters and return a boolean result. + +`not` flips a boolean from true to false, or vice versa. + +`any` will return `true` if there are any `true` values in a array sequence, and `all` will return true if _all_ elements in an array are true. + +`any_c(condition)` and `all_c(condition)` are like `any` and `all` but they take a condition expression that is used against each element to determine if it's `true`. Note: in `jq` you can simply pass a condition to `any` or `all` and it simply works - `yq` isn't that clever..yet + +These are most commonly used with the `select` operator to filter particular nodes. + +## Related Operators + +- equals / not equals (`==`, `!=`) operators [here](https://mikefarah.gitbook.io/yq/operators/equals) +- comparison (`>=`, `<` etc) operators [here](https://mikefarah.gitbook.io/yq/operators/compare) +- select operator [here](https://mikefarah.gitbook.io/yq/operators/select) diff --git a/external/yq/pkg/yqlib/doc/operators/headers/collect-into-array.md b/external/yq/pkg/yqlib/doc/operators/headers/collect-into-array.md new file mode 100755 index 0000000..defa7ce --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/collect-into-array.md @@ -0,0 +1,4 @@ +# Collect into Array + +This creates an array using the expression between the square brackets. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/column.md b/external/yq/pkg/yqlib/doc/operators/headers/column.md new file mode 100755 index 0000000..6c99974 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/column.md @@ -0,0 +1,3 @@ +# Column + +Returns the column of the matching node. Starts from 1, 0 indicates there was no column data. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/comment-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/comment-operators.md new file mode 100755 index 0000000..d7a19d2 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/comment-operators.md @@ -0,0 +1,11 @@ +# Comment Operators + +Use these comment operators to set or retrieve comments. Note that line comments on maps/arrays are actually set on the _key_ node as opposed to the _value_ (map/array). See below for examples. + +Like the `=` and `|=` assign operators, the same syntax applies when updating comments: + +### plain form: `=` +This will assign the LHS nodes comments to the expression on the RHS. The RHS is run against the matching nodes in the pipeline + +### relative form: `|=` +Similar to the plain form, however the RHS evaluates against each matching LHS node! This is useful if you want to set the comments as a relative expression of the node, for instance its value or path. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/compare.md b/external/yq/pkg/yqlib/doc/operators/headers/compare.md new file mode 100755 index 0000000..c63f599 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/compare.md @@ -0,0 +1,15 @@ +# Compare Operators + +Comparison operators (`>`, `>=`, `<`, `<=`) can be used for comparing scalar values of the same time. + +The following types are currently supported: + +- numbers +- strings +- datetimes + +## Related Operators + +- equals / not equals (`==`, `!=`) operators [here](https://mikefarah.gitbook.io/yq/operators/equals) +- boolean operators (`and`, `or`, `any` etc) [here](https://mikefarah.gitbook.io/yq/operators/boolean-operators) +- select operator [here](https://mikefarah.gitbook.io/yq/operators/select) diff --git a/external/yq/pkg/yqlib/doc/operators/headers/contains.md b/external/yq/pkg/yqlib/doc/operators/headers/contains.md new file mode 100755 index 0000000..fad851e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/contains.md @@ -0,0 +1,11 @@ +# Contains + +This returns `true` if the context contains the passed in parameter, and false otherwise. For arrays, this will return true if the passed in array is contained within the array. For strings, it will return true if the string is a substring. + +{% hint style="warning" %} + +_Note_ that, just like jq, when checking if an array of strings `contains` another, this will use `contains` and _not_ equals to check each string. This means an array like `contains(["cat"])` will return true for an array `["cats"]`. + +See the "Array has a subset array" example below on how to check for a subset. + +{% endhint %} diff --git a/external/yq/pkg/yqlib/doc/operators/headers/create-collect-into-object.md b/external/yq/pkg/yqlib/doc/operators/headers/create-collect-into-object.md new file mode 100755 index 0000000..85db0fa --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/create-collect-into-object.md @@ -0,0 +1,3 @@ +# Create, Collect into Object + +This is used to construct objects (or maps). This can be used against existing yaml, or to create fresh yaml documents. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/datetime.md b/external/yq/pkg/yqlib/doc/operators/headers/datetime.md new file mode 100755 index 0000000..36da717 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/datetime.md @@ -0,0 +1,26 @@ +# Date Time + +Various operators for parsing and manipulating dates. + +## Date time formattings +This uses the golangs built in time library for parsing and formatting date times. + +When not specified, the RFC3339 standard is assumed `2006-01-02T15:04:05Z07:00` for parsing. + +To specify a custom parsing format, use the `with_dtf` operator. The first parameter sets the datetime parsing format for the expression in the second parameter. The expression can be any valid `yq` expression tree. + +```bash +yq 'with_dtf("myformat"; .a + "3h" | tz("Australia/Melbourne"))' +``` + +See the [library docs](https://pkg.go.dev/time#pkg-constants) for examples of formatting options. + + +## Timezones +This uses golangs built in LoadLocation function to parse timezones strings. See the [library docs](https://pkg.go.dev/time#LoadLocation) for more details. + + +## Durations +Durations are parsed using golangs built in [ParseDuration](https://pkg.go.dev/time#ParseDuration) function. + +You can durations to time using the `+` operator. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/delete.md b/external/yq/pkg/yqlib/doc/operators/headers/delete.md new file mode 100755 index 0000000..1a63587 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/delete.md @@ -0,0 +1,3 @@ +# Delete + +Deletes matching entries in maps or arrays. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/document-index.md b/external/yq/pkg/yqlib/doc/operators/headers/document-index.md new file mode 100755 index 0000000..8b2e655 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/document-index.md @@ -0,0 +1,3 @@ +# Document Index + +Use the `documentIndex` operator (or the `di` shorthand) to select nodes of a particular document. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/encode-decode.md b/external/yq/pkg/yqlib/doc/operators/headers/encode-decode.md new file mode 100755 index 0000000..f83b45d --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/encode-decode.md @@ -0,0 +1,26 @@ +# Encoder / Decoder + +Encode operators will take the piped in object structure and encode it as a string in the desired format. The decode operators do the opposite, they take a formatted string and decode it into the relevant object structure. + +Note that you can optionally pass an indent value to the encode functions (see below). + +These operators are useful to process yaml documents that have stringified embedded yaml/json/props in them. + + +| Format | Decode (from string) | Encode (to string) | +| --- | -- | --| +| Yaml | from_yaml/@yamld | to_yaml(i)/@yaml | +| JSON | from_json/@jsond | to_json(i)/@json | +| Properties | from_props/@propsd | to_props/@props | +| CSV | from_csv/@csvd | to_csv/@csv | +| TSV | from_tsv/@tsvd | to_tsv/@tsv | +| XML | from_xml/@xmld | to_xml(i)/@xml | +| Base64 | @base64d | @base64 | + + +See CSV and TSV [documentation](https://mikefarah.gitbook.io/yq/usage/csv-tsv) for accepted formats. + +XML uses the `--xml-attribute-prefix` and `xml-content-name` flags to identify attributes and content fields. + + +Base64 assumes [rfc4648](https://rfc-editor.org/rfc/rfc4648.html) encoding. Encoding and decoding both assume that the content is a string. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/entries.md b/external/yq/pkg/yqlib/doc/operators/headers/entries.md new file mode 100755 index 0000000..38ab12d --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/entries.md @@ -0,0 +1,3 @@ +# Entries + +Similar to the same named functions in `jq` these functions convert to/from an object and an array of key-value pairs. This is most useful for performing operations on keys of maps. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/env-variable-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/env-variable-operators.md new file mode 100755 index 0000000..b8d795c --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/env-variable-operators.md @@ -0,0 +1,31 @@ +# Env Variable Operators + +These operators are used to handle environment variables usage in expressions and documents. While environment variables can, of course, be passed in via your CLI with string interpolation, this often comes with complex quote escaping and can be tricky to write and read. + +There are three operators: + +- `env` which takes a single environment variable name and parse the variable as a yaml node (be it a map, array, string, number of boolean) +- `strenv` which also takes a single environment variable name, and always parses the variable as a string. +- `envsubst` which you pipe strings into and it interpolates environment variables in strings using [envsubst](https://github.com/a8m/envsubst). + + +## EnvSubst Options +You can optionally pass envsubst any of the following options: + + - nu: NoUnset, this will fail if there are any referenced variables that are not set + - ne: NoEmpty, this will fail if there are any referenced variables that are empty + - ff: FailFast, this will abort on the first failure (rather than collect all the errors) + +E.g: +`envsubst(ne, ff)` will fail on the first empty variable. + +See [Imposing Restrictions](https://github.com/a8m/envsubst#imposing-restrictions) in the `envsubst` documentation for more information, and below for examples. + +## Tip +To replace environment variables across all values in a document, `envsubst` can be used with the recursive descent operator +as follows: + +```bash +yq '(.. | select(tag == "!!str")) |= envsubst' file.yaml +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/equals.md b/external/yq/pkg/yqlib/doc/operators/headers/equals.md new file mode 100755 index 0000000..588cf17 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/equals.md @@ -0,0 +1,22 @@ +# Equals / Not Equals + +This is a boolean operator that will return `true` if the LHS is equal to the RHS and `false` otherwise. + +``` +.a == .b +``` + +It is most often used with the select operator to find particular nodes: + +``` +select(.a == .b) +``` + +The not equals `!=` operator returns `false` if the LHS is equal to the RHS. + +## Related Operators + +- comparison (`>=`, `<` etc) operators [here](https://mikefarah.gitbook.io/yq/operators/compare) +- boolean operators (`and`, `or`, `any` etc) [here](https://mikefarah.gitbook.io/yq/operators/boolean-operators) +- select operator [here](https://mikefarah.gitbook.io/yq/operators/select) + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/error.md b/external/yq/pkg/yqlib/doc/operators/headers/error.md new file mode 100755 index 0000000..a9fb1a5 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/error.md @@ -0,0 +1,3 @@ +# Error + +Use this operation to short-circuit expressions. Useful for validation. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/eval.md b/external/yq/pkg/yqlib/doc/operators/headers/eval.md new file mode 100755 index 0000000..45c1a22 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/eval.md @@ -0,0 +1,7 @@ +# Eval + +Use `eval` to dynamically process an expression - for instance from an environment variable. + +`eval` takes a single argument, and evaluates that as a `yq` expression. Any valid expression can be used, beit a path `.a.b.c | select(. == "cat")`, or an update `.a.b.c = "gogo"`. + +Tip: This can be useful way parameterise complex scripts. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/file-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/file-operators.md new file mode 100755 index 0000000..7729d94 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/file-operators.md @@ -0,0 +1,11 @@ +# File Operators + +File operators are most often used with merge when needing to merge specific files together. Note that when doing this, you will need to use `eval-all` to ensure all yaml documents are loaded into memory before performing the merge (as opposed to `eval` which runs the expression once per document). + +Note that the `fileIndex` operator has a short alias of `fi`. + +## Merging files +Note the use of eval-all to ensure all documents are loaded into memory. +```bash +yq eval-all 'select(fi == 0) * select(filename == "file2.yaml")' file1.yaml file2.yaml +``` diff --git a/external/yq/pkg/yqlib/doc/operators/headers/flatten.md b/external/yq/pkg/yqlib/doc/operators/headers/flatten.md new file mode 100755 index 0000000..2ac9896 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/flatten.md @@ -0,0 +1,2 @@ +# Flatten +This recursively flattens arrays. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/group-by.md b/external/yq/pkg/yqlib/doc/operators/headers/group-by.md new file mode 100755 index 0000000..a890006 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/group-by.md @@ -0,0 +1,3 @@ +# Group By + +This is used to group items in an array by an expression. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/has.md b/external/yq/pkg/yqlib/doc/operators/headers/has.md new file mode 100755 index 0000000..3be66fe --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/has.md @@ -0,0 +1,3 @@ +# Has + +This is operation that returns true if the key exists in a map (or index in an array), false otherwise. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/keys.md b/external/yq/pkg/yqlib/doc/operators/headers/keys.md new file mode 100755 index 0000000..6362260 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/keys.md @@ -0,0 +1,3 @@ +# Keys + +Use the `keys` operator to return map keys or array indices. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/length.md b/external/yq/pkg/yqlib/doc/operators/headers/length.md new file mode 100755 index 0000000..cb5bf09 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/length.md @@ -0,0 +1,3 @@ +# Length + +Returns the lengths of the nodes. Length is defined according to the type of the node. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/line.md b/external/yq/pkg/yqlib/doc/operators/headers/line.md new file mode 100755 index 0000000..4b9bca0 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/line.md @@ -0,0 +1,3 @@ +# Line + +Returns the line of the matching node. Starts from 1, 0 indicates there was no line data. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/load.md b/external/yq/pkg/yqlib/doc/operators/headers/load.md new file mode 100755 index 0000000..9989f2f --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/load.md @@ -0,0 +1,46 @@ +# Load + +The load operators allows you to load in content from another file. + +Note that you can use string operators like `+` and `sub` to modify the value in the yaml file to a path that exists in your system. + +You can load files of the following supported types: + +|Format | Load Operator | +| --- | --- | +| Yaml | load | +| XML | load_xml | +| Properties | load_props | +| Plain String | load_str | +| Base64 | load_base64 | + +## Samples files for tests: + +### yaml + +`../../examples/thing.yml`: + +```yaml +a: apple is included +b: cool +``` + +### xml +`small.xml`: + +```xml +is some xml +``` + +### properties +`small.properties`: + +```properties +this.is = a properties file +``` + +### base64 +`base64.txt`: +``` +bXkgc2VjcmV0IGNoaWxsaSByZWNpcGUgaXMuLi4u +``` diff --git a/external/yq/pkg/yqlib/doc/operators/headers/map.md b/external/yq/pkg/yqlib/doc/operators/headers/map.md new file mode 100755 index 0000000..e5fef62 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/map.md @@ -0,0 +1,3 @@ +# Map + +Maps values of an array. Use `map_values` to map values of an object. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/multiply-merge.md b/external/yq/pkg/yqlib/doc/operators/headers/multiply-merge.md new file mode 100755 index 0000000..1dad37e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/multiply-merge.md @@ -0,0 +1,37 @@ +# Multiply (Merge) + +Like the multiple operator in jq, depending on the operands, this multiply operator will do different things. Currently numbers, arrays and objects are supported. + +## Objects and arrays - merging +Objects are merged deeply matching on matching keys. By default, array values override and are not deeply merged. + +Note that when merging objects, this operator returns the merged object (not the parent). This will be clearer in the examples below. + +### Merge Flags +You can control how objects are merged by using one or more of the following flags. Multiple flags can be used together, e.g. `.a *+? .b`. See examples below + +- `+` append arrays +- `d` deeply merge arrays +- `?` only merge _existing_ fields +- `n` only merge _new_ fields +- `c` clobber custom tags + + +### Merge two files together +This uses the load operator to merge file2 into file1. +```bash +yq '. *= load("file2.yml")' file1.yml +``` + +### Merging all files +Note the use of `eval-all` to ensure all documents are loaded into memory. + +```bash +yq eval-all '. as $item ireduce ({}; . * $item )' *.yml +``` + +# Merging complex arrays together by a key field +By default - `yq` merge is naive. It merges maps when they match the key name, and arrays are merged either by appending them together, or merging the entries by their position in the array. + +For more complex array merging (e.g. merging items that match on a certain key) please see the example [here](https://mikefarah.gitbook.io/yq/operators/multiply-merge#merge-arrays-of-objects-together-matching-on-a-key) + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/parent.md b/external/yq/pkg/yqlib/doc/operators/headers/parent.md new file mode 100755 index 0000000..9e60cd8 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/parent.md @@ -0,0 +1,3 @@ +# Parent + +Parent simply returns the parent nodes of the matching nodes. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/path.md b/external/yq/pkg/yqlib/doc/operators/headers/path.md new file mode 100755 index 0000000..252de2c --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/path.md @@ -0,0 +1,8 @@ +# Path + +The `path` operator can be used to get the traversal paths of matching nodes in an expression. The path is returned as an array, which if traversed in order will lead to the matching node. + +You can get the key/index of matching nodes by using the `path` operator to return the path array then piping that through `.[-1]` to get the last element of that array, the key. + +Use `setpath` to set a value to the path array returned by `path`, and similarly `delpaths` for an array of path arrays. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/pick.md b/external/yq/pkg/yqlib/doc/operators/headers/pick.md new file mode 100755 index 0000000..153675e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/pick.md @@ -0,0 +1,5 @@ +# Pick + +Filter a map by the specified list of keys. Map is returned with the key in the order of the pick list. + +Similarly, filter an array by the specified list of indices. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/pipe.md b/external/yq/pkg/yqlib/doc/operators/headers/pipe.md new file mode 100755 index 0000000..cce80d7 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/pipe.md @@ -0,0 +1,3 @@ +# Pipe + +Pipe the results of an expression into another. Like the bash operator. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/recursive-descent-glob.md b/external/yq/pkg/yqlib/doc/operators/headers/recursive-descent-glob.md new file mode 100755 index 0000000..90e0d8a --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/recursive-descent-glob.md @@ -0,0 +1,21 @@ +# Recursive Descent (Glob) + +This operator recursively matches (or globs) all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches. It can be used in either the + +## match values form `..` +This will, like the `jq` equivalent, recursively match all _value_ nodes. Use it to find/manipulate particular values. + +For instance to set the `style` of all _value_ nodes in a yaml doc, excluding map keys: + +```bash +yq '.. style= "flow"' file.yaml +``` + +## match values and map keys form `...` +The also includes map keys in the results set. This is particularly useful in YAML as unlike JSON, map keys can have their own styling, tags and use anchors and aliases. + +For instance to set the `style` of all nodes in a yaml doc, including the map keys: + +```bash +yq '... style= "flow"' file.yaml +``` \ No newline at end of file diff --git a/external/yq/pkg/yqlib/doc/operators/headers/reduce.md b/external/yq/pkg/yqlib/doc/operators/headers/reduce.md new file mode 100755 index 0000000..4020ae8 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/reduce.md @@ -0,0 +1,22 @@ +# Reduce + +Reduce is a powerful way to process a collection of data into a new form. + +``` + as $ ireduce (; ) +``` + +e.g. + +``` +.[] as $item ireduce (0; . + $item) +``` + +On the LHS we are configuring the collection of items that will be reduced `` as well as what each element will be called `$`. Note that the array has been splatted into its individual elements. + +On the RHS there is ``, the starting value of the accumulator and ``, the expression that will update the accumulator for each element in the collection. Note that within the block expression, `.` will evaluate to the current value of the accumulator. + +## yq vs jq syntax +Reduce syntax in `yq` is a little different from `jq` - as `yq` (currently) isn't as sophisticated as `jq` and its only supports infix notation (e.g. a + b, where the operator is in the middle of the two parameters) - where as `jq` uses a mix of infix notation with _prefix_ notation (e.g. `reduce a b` is like writing `+ a b`). + +To that end, the reduce operator is called `ireduce` for backwards compatibility if a `jq` like prefix version of `reduce` is ever added. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/reverse.md b/external/yq/pkg/yqlib/doc/operators/headers/reverse.md new file mode 100755 index 0000000..50602b3 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/reverse.md @@ -0,0 +1,3 @@ +# Reverse + +Reverses the order of the items in an array diff --git a/external/yq/pkg/yqlib/doc/operators/headers/select.md b/external/yq/pkg/yqlib/doc/operators/headers/select.md new file mode 100755 index 0000000..d2205a8 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/select.md @@ -0,0 +1,9 @@ +# Select + +Select is used to filter arrays and maps by a boolean expression. + +## Related Operators + +- equals / not equals (`==`, `!=`) operators [here](https://mikefarah.gitbook.io/yq/operators/equals) +- comparison (`>=`, `<` etc) operators [here](https://mikefarah.gitbook.io/yq/operators/compare) +- boolean operators (`and`, `or`, `any` etc) [here](https://mikefarah.gitbook.io/yq/operators/boolean-operators) diff --git a/external/yq/pkg/yqlib/doc/operators/headers/slice-array.md b/external/yq/pkg/yqlib/doc/operators/headers/slice-array.md new file mode 100755 index 0000000..7f2487c --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/slice-array.md @@ -0,0 +1,5 @@ +# Slice/Splice Array + +The slice array operator takes an array as input and returns a subarray. Like the `jq` equivalent, `.[10:15]` will return an array of length 5, starting from index 10 inclusive, up to index 15 exclusive. Negative numbers count backwards from the end of the array. + +You may leave out the first or second number, which will will refer to the start or end of the array respectively. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/sort-keys.md b/external/yq/pkg/yqlib/doc/operators/headers/sort-keys.md new file mode 100755 index 0000000..31b0b6d --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/sort-keys.md @@ -0,0 +1,16 @@ +# Sort Keys + +The Sort Keys operator sorts maps by their keys (based on their string value). This operator does not do anything to arrays or scalars (so you can easily recursively apply it to all maps). + +Sort is particularly useful for diffing two different yaml documents: + +```bash +yq -i -P 'sort_keys(..)' file1.yml +yq -i -P 'sort_keys(..)' file2.yml +diff file1.yml file2.yml +``` + +Note that `yq` does not yet consider anchors when sorting by keys - this may result in invalid yaml documents if your are using merge anchors. + +For more advanced sorting, using `to_entries` to convert the map to an array, then sort/process the array as you like (e.g. using `sort_by`) and convert back to a map using `from_entries`. +See [here](https://mikefarah.gitbook.io/yq/operators/entries#custom-sort-map-keys) for an example. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/sort.md b/external/yq/pkg/yqlib/doc/operators/headers/sort.md new file mode 100755 index 0000000..1022b80 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/sort.md @@ -0,0 +1,8 @@ +# Sort + +Sorts an array. Use `sort` to sort an array as is, or `sort_by(exp)` to sort by a particular expression (e.g. subfield). + +To sort by descending order, pipe the results through the `reverse` operator after sorting. + +Note that at this stage, `yq` only sorts scalar fields. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/split-into-documents.md b/external/yq/pkg/yqlib/doc/operators/headers/split-into-documents.md new file mode 100755 index 0000000..e62712d --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/split-into-documents.md @@ -0,0 +1,3 @@ +# Split into Documents + +This operator splits all matches into separate documents diff --git a/external/yq/pkg/yqlib/doc/operators/headers/string-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/string-operators.md new file mode 100755 index 0000000..e6e2f5e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/string-operators.md @@ -0,0 +1,57 @@ +# String Operators + +## RegEx +This uses golangs native regex functions under the hood - See their [docs](https://github.com/google/re2/wiki/Syntax) for the supported syntax. + +Case insensitive tip: prefix the regex with `(?i)` - e.g. `test("(?i)cats)"`. + +### match(regEx) +This operator returns the substring match details of the given regEx. + +### capture(regEx) +Capture returns named RegEx capture groups in a map. Can be more convenient than `match` depending on what you are doing. + +## test(regEx) +Returns true if the string matches the RegEx, false otherwise. + +## sub(regEx, replacement) +Substitutes matched substrings. The first parameter is the regEx to match substrings within the original string. The second is a what to replace those matches with. This can refer to capture groups from the first RegEx. + +## String blocks, bash and newlines +Bash is notorious for chomping on precious trailing newline characters, making it tricky to set strings with newlines properly. In particular, the `$( exp )` _will trim trailing newlines_. + +For instance to get this yaml: + +``` +a: | + cat +``` + +Using `$( exp )` wont work, as it will trim the trailing new line. + +``` +m=$(echo "cat\n") yq -n '.a = strenv(m)' +a: cat +``` + +However, using printf works: +``` +printf -v m "cat\n" ; m="$m" yq -n '.a = strenv(m)' +a: | + cat +``` + +As well as having multiline expressions: +``` +m="cat +" yq -n '.a = strenv(m)' +a: | + cat +``` + +Similarly, if you're trying to set the content from a file, and want a trailing new line: + +``` +IFS= read -rd '' output < <(cat my_file) +output=$output ./yq '.data.values = strenv(output)' first.yml +``` diff --git a/external/yq/pkg/yqlib/doc/operators/headers/style.md b/external/yq/pkg/yqlib/doc/operators/headers/style.md new file mode 100755 index 0000000..c31c328 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/style.md @@ -0,0 +1,3 @@ +# Style + +The style operator can be used to get or set the style of nodes (e.g. string style, yaml style) diff --git a/external/yq/pkg/yqlib/doc/operators/headers/subtract.md b/external/yq/pkg/yqlib/doc/operators/headers/subtract.md new file mode 100755 index 0000000..37b12b8 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/subtract.md @@ -0,0 +1,3 @@ +# Subtract + +You can use subtract to subtract numbers, as well as removing elements from an array. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/tag.md b/external/yq/pkg/yqlib/doc/operators/headers/tag.md new file mode 100755 index 0000000..99d0347 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/tag.md @@ -0,0 +1,3 @@ +# Tag + +The tag operator can be used to get or set the tag of nodes (e.g. `!!str`, `!!int`, `!!bool`). diff --git a/external/yq/pkg/yqlib/doc/operators/headers/traverse-read.md b/external/yq/pkg/yqlib/doc/operators/headers/traverse-read.md new file mode 100755 index 0000000..6c01240 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/traverse-read.md @@ -0,0 +1,3 @@ +# Traverse (Read) + +This is the simplest (and perhaps most used) operator, it is used to navigate deeply into yaml structures. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/union.md b/external/yq/pkg/yqlib/doc/operators/headers/union.md new file mode 100755 index 0000000..7967b9c --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/union.md @@ -0,0 +1,3 @@ +# Union + +This operator is used to combine different results together. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/unique.md b/external/yq/pkg/yqlib/doc/operators/headers/unique.md new file mode 100755 index 0000000..7a11ce4 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/unique.md @@ -0,0 +1,4 @@ +# Unique + +This is used to filter out duplicated items in an array. Note that the original order of the array is maintained. + diff --git a/external/yq/pkg/yqlib/doc/operators/headers/variable-operators.md b/external/yq/pkg/yqlib/doc/operators/headers/variable-operators.md new file mode 100755 index 0000000..fd91848 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/variable-operators.md @@ -0,0 +1,5 @@ +# Variable Operators + +Like the `jq` equivalents, variables are sometimes required for the more complex expressions (or swapping values between fields). + +Note that there is also an additional `ref` operator that holds a reference (instead of a copy) of the path, allowing you to make multiple changes to the same path. diff --git a/external/yq/pkg/yqlib/doc/operators/headers/with.md b/external/yq/pkg/yqlib/doc/operators/headers/with.md new file mode 100755 index 0000000..f83adbd --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/headers/with.md @@ -0,0 +1,3 @@ +# With + +Use the `with` operator to conveniently make multiple updates to a deeply nested path, or to update array elements relatively to each other. The first argument expression sets the root context, and the second expression runs against that root context. diff --git a/external/yq/pkg/yqlib/doc/operators/keys.md b/external/yq/pkg/yqlib/doc/operators/keys.md new file mode 100755 index 0000000..4dec429 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/keys.md @@ -0,0 +1,154 @@ +# Keys + +Use the `keys` operator to return map keys or array indices. + +## Map keys +Given a sample.yml file of: +```yaml +dog: woof +cat: meow +``` +then +```bash +yq 'keys' sample.yml +``` +will output +```yaml +- dog +- cat +``` + +## Array keys +Given a sample.yml file of: +```yaml +- apple +- banana +``` +then +```bash +yq 'keys' sample.yml +``` +will output +```yaml +- 0 +- 1 +``` + +## Retrieve array key +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq '.[1] | key' sample.yml +``` +will output +```yaml +1 +``` + +## Retrieve map key +Given a sample.yml file of: +```yaml +a: thing +``` +then +```bash +yq '.a | key' sample.yml +``` +will output +```yaml +a +``` + +## No key +Given a sample.yml file of: +```yaml +{} +``` +then +```bash +yq 'key' sample.yml +``` +will output +```yaml +``` + +## Update map key +Given a sample.yml file of: +```yaml +a: + x: 3 + y: 4 +``` +then +```bash +yq '(.a.x | key) = "meow"' sample.yml +``` +will output +```yaml +a: + meow: 3 + y: 4 +``` + +## Get comment from map key +Given a sample.yml file of: +```yaml +a: + # comment on key + x: 3 + y: 4 +``` +then +```bash +yq '.a.x | key | headComment' sample.yml +``` +will output +```yaml +comment on key +``` + +## Check node is a key +Given a sample.yml file of: +```yaml +a: + b: + - cat + c: frog +``` +then +```bash +yq '[... | { "p": path | join("."), "isKey": is_key, "tag": tag }]' sample.yml +``` +will output +```yaml +- p: "" + isKey: false + tag: '!!map' +- p: a + isKey: true + tag: '!!str' +- p: a + isKey: false + tag: '!!map' +- p: a.b + isKey: true + tag: '!!str' +- p: a.b + isKey: false + tag: '!!seq' +- p: a.b.0 + isKey: false + tag: '!!str' +- p: a.c + isKey: true + tag: '!!str' +- p: a.c + isKey: false + tag: '!!str' +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/length.md b/external/yq/pkg/yqlib/doc/operators/length.md new file mode 100755 index 0000000..6315e5b --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/length.md @@ -0,0 +1,70 @@ +# Length + +Returns the lengths of the nodes. Length is defined according to the type of the node. + +## String length +returns length of string + +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '.a | length' sample.yml +``` +will output +```yaml +3 +``` + +## null length +Given a sample.yml file of: +```yaml +a: null +``` +then +```bash +yq '.a | length' sample.yml +``` +will output +```yaml +0 +``` + +## Map length +returns number of entries + +Given a sample.yml file of: +```yaml +a: cat +c: dog +``` +then +```bash +yq 'length' sample.yml +``` +will output +```yaml +2 +``` + +## Array length +returns number of elements + +Given a sample.yml file of: +```yaml +- 2 +- 4 +- 6 +- 8 +``` +then +```bash +yq 'length' sample.yml +``` +will output +```yaml +4 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/line.md b/external/yq/pkg/yqlib/doc/operators/line.md new file mode 100755 index 0000000..9fc4cd0 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/line.md @@ -0,0 +1,62 @@ +# Line + +Returns the line of the matching node. Starts from 1, 0 indicates there was no line data. + +## Returns line of _value_ node +Given a sample.yml file of: +```yaml +a: cat +b: + c: cat +``` +then +```bash +yq '.b | line' sample.yml +``` +will output +```yaml +3 +``` + +## Returns line of _key_ node +Pipe through the key operator to get the line of the key + +Given a sample.yml file of: +```yaml +a: cat +b: + c: cat +``` +then +```bash +yq '.b | key| line' sample.yml +``` +will output +```yaml +2 +``` + +## First line is 1 +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '.a | line' sample.yml +``` +will output +```yaml +1 +``` + +## No line data is 0 +Running +```bash +yq --null-input '{"a": "new entry"} | line' +``` +will output +```yaml +0 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/load.md b/external/yq/pkg/yqlib/doc/operators/load.md new file mode 100755 index 0000000..79dc014 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/load.md @@ -0,0 +1,194 @@ +# Load + +The load operators allows you to load in content from another file. + +Note that you can use string operators like `+` and `sub` to modify the value in the yaml file to a path that exists in your system. + +You can load files of the following supported types: + +|Format | Load Operator | +| --- | --- | +| Yaml | load | +| XML | load_xml | +| Properties | load_props | +| Plain String | load_str | +| Base64 | load_base64 | + +## Samples files for tests: + +### yaml + +`../../examples/thing.yml`: + +```yaml +a: apple is included +b: cool +``` + +### xml +`small.xml`: + +```xml +is some xml +``` + +### properties +`small.properties`: + +```properties +this.is = a properties file +``` + +### base64 +`base64.txt`: +``` +bXkgc2VjcmV0IGNoaWxsaSByZWNpcGUgaXMuLi4u +``` + +## Simple example +Given a sample.yml file of: +```yaml +myFile: ../../examples/thing.yml +``` +then +```bash +yq 'load(.myFile)' sample.yml +``` +will output +```yaml +a: apple is included +b: cool. +``` + +## Replace node with referenced file +Note that you can modify the filename in the load operator if needed. + +Given a sample.yml file of: +```yaml +something: + file: thing.yml +``` +then +```bash +yq '.something |= load("../../examples/" + .file)' sample.yml +``` +will output +```yaml +something: + a: apple is included + b: cool. +``` + +## Replace _all_ nodes with referenced file +Recursively match all the nodes (`..`) and then filter the ones that have a 'file' attribute. + +Given a sample.yml file of: +```yaml +something: + file: thing.yml +over: + here: + - file: thing.yml +``` +then +```bash +yq '(.. | select(has("file"))) |= load("../../examples/" + .file)' sample.yml +``` +will output +```yaml +something: + a: apple is included + b: cool. +over: + here: + - a: apple is included + b: cool. +``` + +## Replace node with referenced file as string +This will work for any text based file + +Given a sample.yml file of: +```yaml +something: + file: thing.yml +``` +then +```bash +yq '.something |= load_str("../../examples/" + .file)' sample.yml +``` +will output +```yaml +something: |- + a: apple is included + b: cool. +``` + +## Load from XML +Given a sample.yml file of: +```yaml +cool: things +``` +then +```bash +yq '.more_stuff = load_xml("../../examples/small.xml")' sample.yml +``` +will output +```yaml +cool: things +more_stuff: + this: is some xml +``` + +## Load from Properties +Given a sample.yml file of: +```yaml +cool: things +``` +then +```bash +yq '.more_stuff = load_props("../../examples/small.properties")' sample.yml +``` +will output +```yaml +cool: things +more_stuff: + this: + is: a properties file +``` + +## Merge from properties +This can be used as a convenient way to update a yaml document + +Given a sample.yml file of: +```yaml +this: + is: from yaml + cool: ay +``` +then +```bash +yq '. *= load_props("../../examples/small.properties")' sample.yml +``` +will output +```yaml +this: + is: a properties file + cool: ay +``` + +## Load from base64 encoded file +Given a sample.yml file of: +```yaml +cool: things +``` +then +```bash +yq '.more_stuff = load_base64("../../examples/base64.txt")' sample.yml +``` +will output +```yaml +cool: things +more_stuff: my secret chilli recipe is.... +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/map.md b/external/yq/pkg/yqlib/doc/operators/map.md new file mode 100755 index 0000000..991167e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/map.md @@ -0,0 +1,40 @@ +# Map + +Maps values of an array. Use `map_values` to map values of an object. + +## Map array +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq 'map(. + 1)' sample.yml +``` +will output +```yaml +- 2 +- 3 +- 4 +``` + +## Map object values +Given a sample.yml file of: +```yaml +a: 1 +b: 2 +c: 3 +``` +then +```bash +yq 'map_values(. + 1)' sample.yml +``` +will output +```yaml +a: 2 +b: 3 +c: 4 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/multiply-merge.md b/external/yq/pkg/yqlib/doc/operators/multiply-merge.md new file mode 100755 index 0000000..6db1266 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/multiply-merge.md @@ -0,0 +1,501 @@ +# Multiply (Merge) + +Like the multiple operator in jq, depending on the operands, this multiply operator will do different things. Currently numbers, arrays and objects are supported. + +## Objects and arrays - merging +Objects are merged deeply matching on matching keys. By default, array values override and are not deeply merged. + +Note that when merging objects, this operator returns the merged object (not the parent). This will be clearer in the examples below. + +### Merge Flags +You can control how objects are merged by using one or more of the following flags. Multiple flags can be used together, e.g. `.a *+? .b`. See examples below + +- `+` append arrays +- `d` deeply merge arrays +- `?` only merge _existing_ fields +- `n` only merge _new_ fields +- `c` clobber custom tags + + +### Merge two files together +This uses the load operator to merge file2 into file1. +```bash +yq '. *= load("file2.yml")' file1.yml +``` + +### Merging all files +Note the use of `eval-all` to ensure all documents are loaded into memory. + +```bash +yq eval-all '. as $item ireduce ({}; . * $item )' *.yml +``` + +# Merging complex arrays together by a key field +By default - `yq` merge is naive. It merges maps when they match the key name, and arrays are merged either by appending them together, or merging the entries by their position in the array. + +For more complex array merging (e.g. merging items that match on a certain key) please see the example [here](https://mikefarah.gitbook.io/yq/operators/multiply-merge#merge-arrays-of-objects-together-matching-on-a-key) + + +## Multiply integers +Given a sample.yml file of: +```yaml +a: 3 +b: 4 +``` +then +```bash +yq '.a *= .b' sample.yml +``` +will output +```yaml +a: 12 +b: 4 +``` + +## Merge objects together, returning merged result only +Given a sample.yml file of: +```yaml +a: + field: me + fieldA: cat +b: + field: + g: wizz + fieldB: dog +``` +then +```bash +yq '.a * .b' sample.yml +``` +will output +```yaml +field: + g: wizz +fieldA: cat +fieldB: dog +``` + +## Merge objects together, returning parent object +Given a sample.yml file of: +```yaml +a: + field: me + fieldA: cat +b: + field: + g: wizz + fieldB: dog +``` +then +```bash +yq '. * {"a":.b}' sample.yml +``` +will output +```yaml +a: + field: + g: wizz + fieldA: cat + fieldB: dog +b: + field: + g: wizz + fieldB: dog +``` + +## Merge keeps style of LHS +Given a sample.yml file of: +```yaml +a: {things: great} +b: + also: "me" +``` +then +```bash +yq '. * {"a":.b}' sample.yml +``` +will output +```yaml +a: {things: great, also: "me"} +b: + also: "me" +``` + +## Merge arrays +Given a sample.yml file of: +```yaml +a: + - 1 + - 2 + - 3 +b: + - 3 + - 4 + - 5 +``` +then +```bash +yq '. * {"a":.b}' sample.yml +``` +will output +```yaml +a: + - 3 + - 4 + - 5 +b: + - 3 + - 4 + - 5 +``` + +## Merge, only existing fields +Given a sample.yml file of: +```yaml +a: + thing: one + cat: frog +b: + missing: two + thing: two +``` +then +```bash +yq '.a *? .b' sample.yml +``` +will output +```yaml +thing: two +cat: frog +``` + +## Merge, only new fields +Given a sample.yml file of: +```yaml +a: + thing: one + cat: frog +b: + missing: two + thing: two +``` +then +```bash +yq '.a *n .b' sample.yml +``` +will output +```yaml +thing: one +cat: frog +missing: two +``` + +## Merge, appending arrays +Given a sample.yml file of: +```yaml +a: + array: + - 1 + - 2 + - animal: dog + value: coconut +b: + array: + - 3 + - 4 + - animal: cat + value: banana +``` +then +```bash +yq '.a *+ .b' sample.yml +``` +will output +```yaml +array: + - 1 + - 2 + - animal: dog + - 3 + - 4 + - animal: cat +value: banana +``` + +## Merge, only existing fields, appending arrays +Given a sample.yml file of: +```yaml +a: + thing: + - 1 + - 2 +b: + thing: + - 3 + - 4 + another: + - 1 +``` +then +```bash +yq '.a *?+ .b' sample.yml +``` +will output +```yaml +thing: + - 1 + - 2 + - 3 + - 4 +``` + +## Merge, deeply merging arrays +Merging arrays deeply means arrays are merge like objects, with indexes as their key. In this case, we merge the first item in the array, and do nothing with the second. + +Given a sample.yml file of: +```yaml +a: + - name: fred + age: 12 + - name: bob + age: 32 +b: + - name: fred + age: 34 +``` +then +```bash +yq '.a *d .b' sample.yml +``` +will output +```yaml +- name: fred + age: 34 +- name: bob + age: 32 +``` + +## Merge arrays of objects together, matching on a key + +This is a fairly complex expression - you can use it as is by providing the environment variables as seen in the example below. + +It merges in the array provided in the second file into the first - matching on equal keys. + +Explanation: + +The approach, at a high level, is to reduce into a merged map (keyed by the unique key) +and then convert that back into an array. + +First the expression will create a map from the arrays keyed by the idPath, the unique field we want to merge by. +The reduce operator is merging '({}; . * $item )', so array elements with the matching key will be merged together. + +Next, we convert the map back to an array, using reduce again, concatenating all the map values together. + +Finally, we set the result of the merged array back into the first doc. + +Thanks Kev from [stackoverflow](https://stackoverflow.com/a/70109529/1168223) + + +Given a sample.yml file of: +```yaml +myArray: + - a: apple + b: appleB + - a: kiwi + b: kiwiB + - a: banana + b: bananaB +something: else +``` +And another sample another.yml file of: +```yaml +newArray: + - a: banana + c: bananaC + - a: apple + b: appleB2 + - a: dingo + c: dingoC +``` +then +```bash +idPath=".a" originalPath=".myArray" otherPath=".newArray" yq eval-all ' +( + (( (eval(strenv(originalPath)) + eval(strenv(otherPath))) | .[] | {(eval(strenv(idPath))): .}) as $item ireduce ({}; . * $item )) as $uniqueMap + | ( $uniqueMap | to_entries | .[]) as $item ireduce([]; . + $item.value) +) as $mergedArray +| select(fi == 0) | (eval(strenv(originalPath))) = $mergedArray +' sample.yml another.yml +``` +will output +```yaml +myArray: + - a: apple + b: appleB2 + - a: kiwi + b: kiwiB + - a: banana + b: bananaB + c: bananaC + - a: dingo + c: dingoC +something: else +``` + +## Merge to prefix an element +Given a sample.yml file of: +```yaml +a: cat +b: dog +``` +then +```bash +yq '. * {"a": {"c": .a}}' sample.yml +``` +will output +```yaml +a: + c: cat +b: dog +``` + +## Merge with simple aliases +Given a sample.yml file of: +```yaml +a: &cat + c: frog +b: + f: *cat +c: + g: thongs +``` +then +```bash +yq '.c * .b' sample.yml +``` +will output +```yaml +g: thongs +f: *cat +``` + +## Merge copies anchor names +Given a sample.yml file of: +```yaml +a: + c: &cat frog +b: + f: *cat +c: + g: thongs +``` +then +```bash +yq '.c * .a' sample.yml +``` +will output +```yaml +g: thongs +c: &cat frog +``` + +## Merge with merge anchors +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobar * .foobarList' sample.yml +``` +will output +```yaml +c: foobarList_c +!!merge <<: + - *foo + - *bar +thing: foobar_thing +b: foobarList_b +``` + +## Custom types: that are really numbers +When custom tags are encountered, yq will try to decode the underlying type. + +Given a sample.yml file of: +```yaml +a: !horse 2 +b: !goat 3 +``` +then +```bash +yq '.a = .a * .b' sample.yml +``` +will output +```yaml +a: !horse 6 +b: !goat 3 +``` + +## Custom types: that are really maps +Custom tags will be maintained. + +Given a sample.yml file of: +```yaml +a: !horse + cat: meow +b: !goat + dog: woof +``` +then +```bash +yq '.a = .a * .b' sample.yml +``` +will output +```yaml +a: !horse + cat: meow + dog: woof +b: !goat + dog: woof +``` + +## Custom types: clobber tags +Use the `c` option to clobber custom tags. Note that the second tag is now used + +Given a sample.yml file of: +```yaml +a: !horse + cat: meow +b: !goat + dog: woof +``` +then +```bash +yq '.a *=c .b' sample.yml +``` +will output +```yaml +a: !goat + cat: meow + dog: woof +b: !goat + dog: woof +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/parent.md b/external/yq/pkg/yqlib/doc/operators/parent.md new file mode 100755 index 0000000..0ef18d5 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/parent.md @@ -0,0 +1,52 @@ +# Parent + +Parent simply returns the parent nodes of the matching nodes. + +## Simple example +Given a sample.yml file of: +```yaml +a: + nested: cat +``` +then +```bash +yq '.a.nested | parent' sample.yml +``` +will output +```yaml +nested: cat +``` + +## Parent of nested matches +Given a sample.yml file of: +```yaml +a: + fruit: apple + name: bob +b: + fruit: banana + name: sam +``` +then +```bash +yq '.. | select(. == "banana") | parent' sample.yml +``` +will output +```yaml +fruit: banana +name: sam +``` + +## No parent +Given a sample.yml file of: +```yaml +{} +``` +then +```bash +yq 'parent' sample.yml +``` +will output +```yaml +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/path.md b/external/yq/pkg/yqlib/doc/operators/path.md new file mode 100755 index 0000000..1e0076a --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/path.md @@ -0,0 +1,234 @@ +# Path + +The `path` operator can be used to get the traversal paths of matching nodes in an expression. The path is returned as an array, which if traversed in order will lead to the matching node. + +You can get the key/index of matching nodes by using the `path` operator to return the path array then piping that through `.[-1]` to get the last element of that array, the key. + +Use `setpath` to set a value to the path array returned by `path`, and similarly `delpaths` for an array of path arrays. + + +## Map path +Given a sample.yml file of: +```yaml +a: + b: cat +``` +then +```bash +yq '.a.b | path' sample.yml +``` +will output +```yaml +- a +- b +``` + +## Get map key +Given a sample.yml file of: +```yaml +a: + b: cat +``` +then +```bash +yq '.a.b | path | .[-1]' sample.yml +``` +will output +```yaml +b +``` + +## Array path +Given a sample.yml file of: +```yaml +a: + - cat + - dog +``` +then +```bash +yq '.a.[] | select(. == "dog") | path' sample.yml +``` +will output +```yaml +- a +- 1 +``` + +## Get array index +Given a sample.yml file of: +```yaml +a: + - cat + - dog +``` +then +```bash +yq '.a.[] | select(. == "dog") | path | .[-1]' sample.yml +``` +will output +```yaml +1 +``` + +## Print path and value +Given a sample.yml file of: +```yaml +a: + - cat + - dog + - frog +``` +then +```bash +yq '.a[] | select(. == "*og") | [{"path":path, "value":.}]' sample.yml +``` +will output +```yaml +- path: + - a + - 1 + value: dog +- path: + - a + - 2 + value: frog +``` + +## Set path +Given a sample.yml file of: +```yaml +a: + b: cat +``` +then +```bash +yq 'setpath(["a", "b"]; "things")' sample.yml +``` +will output +```yaml +a: + b: things +``` + +## Set on empty document +Running +```bash +yq --null-input 'setpath(["a", "b"]; "things")' +``` +will output +```yaml +a: + b: things +``` + +## Set path to prune deep paths +Like pick but recursive. This uses `ireduce` to deeply set the selected paths into an empty object, + +Given a sample.yml file of: +```yaml +parentA: bob +parentB: + child1: i am child1 + child2: i am child2 +parentC: + child1: me child1 + child2: me child2 +``` +then +```bash +yq '(.parentB.child2, .parentC.child1) as $i + ireduce({}; setpath($i | path; $i))' sample.yml +``` +will output +```yaml +parentB: + child2: i am child2 +parentC: + child1: me child1 +``` + +## Set array path +Given a sample.yml file of: +```yaml +a: + - cat + - frog +``` +then +```bash +yq 'setpath(["a", 0]; "things")' sample.yml +``` +will output +```yaml +a: + - things + - frog +``` + +## Set array path empty +Running +```bash +yq --null-input 'setpath(["a", 0]; "things")' +``` +will output +```yaml +a: + - things +``` + +## Delete path +Notice delpaths takes an _array_ of paths. + +Given a sample.yml file of: +```yaml +a: + b: cat + c: dog + d: frog +``` +then +```bash +yq 'delpaths([["a", "c"], ["a", "d"]])' sample.yml +``` +will output +```yaml +a: + b: cat +``` + +## Delete array path +Given a sample.yml file of: +```yaml +a: + - cat + - frog +``` +then +```bash +yq 'delpaths([["a", 0]])' sample.yml +``` +will output +```yaml +a: + - frog +``` + +## Delete - wrong parameter +delpaths does not work with a single path array + +Given a sample.yml file of: +```yaml +a: + - cat + - frog +``` +then +```bash +yq 'delpaths(["a", 0])' sample.yml +``` +will output +```bash +Error: DELPATHS: expected entry [0] to be a sequence, but its a !!str. Note that delpaths takes an array of path arrays, e.g. [["a", "b"]] +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/pick.md b/external/yq/pkg/yqlib/doc/operators/pick.md new file mode 100755 index 0000000..45bccc8 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/pick.md @@ -0,0 +1,47 @@ +# Pick + +Filter a map by the specified list of keys. Map is returned with the key in the order of the pick list. + +Similarly, filter an array by the specified list of indices. + +## Pick keys from map +Note that the order of the keys matches the pick order and non existent keys are skipped. + +Given a sample.yml file of: +```yaml +myMap: + cat: meow + dog: bark + thing: hamster + hamster: squeek +``` +then +```bash +yq '.myMap |= pick(["hamster", "cat", "goat"])' sample.yml +``` +will output +```yaml +myMap: + hamster: squeek + cat: meow +``` + +## Pick indices from array +Note that the order of the indexes matches the pick order and non existent indexes are skipped. + +Given a sample.yml file of: +```yaml +- cat +- leopard +- lion +``` +then +```bash +yq 'pick([2, 0, 734, -5])' sample.yml +``` +will output +```yaml +- lion +- cat +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/pipe.md b/external/yq/pkg/yqlib/doc/operators/pipe.md new file mode 100755 index 0000000..0821554 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/pipe.md @@ -0,0 +1,37 @@ +# Pipe + +Pipe the results of an expression into another. Like the bash operator. + +## Simple Pipe +Given a sample.yml file of: +```yaml +a: + b: cat +``` +then +```bash +yq '.a | .b' sample.yml +``` +will output +```yaml +cat +``` + +## Multiple updates +Given a sample.yml file of: +```yaml +a: cow +b: sheep +c: same +``` +then +```bash +yq '.a = "cat" | .b = "dog"' sample.yml +``` +will output +```yaml +a: cat +b: dog +c: same +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/recursive-descent-glob.md b/external/yq/pkg/yqlib/doc/operators/recursive-descent-glob.md new file mode 100755 index 0000000..1bb1656 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/recursive-descent-glob.md @@ -0,0 +1,156 @@ +# Recursive Descent (Glob) + +This operator recursively matches (or globs) all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches. It can be used in either the + +## match values form `..` +This will, like the `jq` equivalent, recursively match all _value_ nodes. Use it to find/manipulate particular values. + +For instance to set the `style` of all _value_ nodes in a yaml doc, excluding map keys: + +```bash +yq '.. style= "flow"' file.yaml +``` + +## match values and map keys form `...` +The also includes map keys in the results set. This is particularly useful in YAML as unlike JSON, map keys can have their own styling, tags and use anchors and aliases. + +For instance to set the `style` of all nodes in a yaml doc, including the map keys: + +```bash +yq '... style= "flow"' file.yaml +``` +## Recurse map (values only) +Given a sample.yml file of: +```yaml +a: frog +``` +then +```bash +yq '..' sample.yml +``` +will output +```yaml +a: frog +frog +``` + +## Recursively find nodes with keys +Note that this example has wrapped the expression in `[]` to show that there are two matches returned. You do not have to wrap in `[]` in your path expression. + +Given a sample.yml file of: +```yaml +a: + name: frog + b: + name: blog + age: 12 +``` +then +```bash +yq '[.. | select(has("name"))]' sample.yml +``` +will output +```yaml +- name: frog + b: + name: blog + age: 12 +- name: blog + age: 12 +``` + +## Recursively find nodes with values +Given a sample.yml file of: +```yaml +a: + nameA: frog + b: + nameB: frog + age: 12 +``` +then +```bash +yq '.. | select(. == "frog")' sample.yml +``` +will output +```yaml +frog +frog +``` + +## Recurse map (values and keys) +Note that the map key appears in the results + +Given a sample.yml file of: +```yaml +a: frog +``` +then +```bash +yq '...' sample.yml +``` +will output +```yaml +a: frog +a +frog +``` + +## Aliases are not traversed +Given a sample.yml file of: +```yaml +a: &cat + c: frog +b: *cat +``` +then +```bash +yq '[..]' sample.yml +``` +will output +```yaml +- a: &cat + c: frog + b: *cat +- &cat + c: frog +- frog +- *cat +``` + +## Merge docs are not traversed +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobar | [..]' sample.yml +``` +will output +```yaml +- c: foobar_c + !!merge <<: *foo + thing: foobar_thing +- foobar_c +- *foo +- foobar_thing +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/reduce.md b/external/yq/pkg/yqlib/doc/operators/reduce.md new file mode 100755 index 0000000..80affbd --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/reduce.md @@ -0,0 +1,77 @@ +# Reduce + +Reduce is a powerful way to process a collection of data into a new form. + +``` + as $ ireduce (; ) +``` + +e.g. + +``` +.[] as $item ireduce (0; . + $item) +``` + +On the LHS we are configuring the collection of items that will be reduced `` as well as what each element will be called `$`. Note that the array has been splatted into its individual elements. + +On the RHS there is ``, the starting value of the accumulator and ``, the expression that will update the accumulator for each element in the collection. Note that within the block expression, `.` will evaluate to the current value of the accumulator. + +## yq vs jq syntax +Reduce syntax in `yq` is a little different from `jq` - as `yq` (currently) isn't as sophisticated as `jq` and its only supports infix notation (e.g. a + b, where the operator is in the middle of the two parameters) - where as `jq` uses a mix of infix notation with _prefix_ notation (e.g. `reduce a b` is like writing `+ a b`). + +To that end, the reduce operator is called `ireduce` for backwards compatibility if a `jq` like prefix version of `reduce` is ever added. + +## Sum numbers +Given a sample.yml file of: +```yaml +- 10 +- 2 +- 5 +- 3 +``` +then +```bash +yq '.[] as $item ireduce (0; . + $item)' sample.yml +``` +will output +```yaml +20 +``` + +## Merge all yaml files together +Given a sample.yml file of: +```yaml +a: cat +``` +And another sample another.yml file of: +```yaml +b: dog +``` +then +```bash +yq eval-all '. as $item ireduce ({}; . * $item )' sample.yml another.yml +``` +will output +```yaml +a: cat +b: dog +``` + +## Convert an array to an object +Given a sample.yml file of: +```yaml +- name: Cathy + has: apples +- name: Bob + has: bananas +``` +then +```bash +yq '.[] as $item ireduce ({}; .[$item | .name] = ($item | .has) )' sample.yml +``` +will output +```yaml +Cathy: apples +Bob: bananas +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/reverse.md b/external/yq/pkg/yqlib/doc/operators/reverse.md new file mode 100755 index 0000000..77f4037 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/reverse.md @@ -0,0 +1,42 @@ +# Reverse + +Reverses the order of the items in an array + +## Reverse +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq 'reverse' sample.yml +``` +will output +```yaml +- 3 +- 2 +- 1 +``` + +## Sort descending by string field +Use sort with reverse to sort in descending order. + +Given a sample.yml file of: +```yaml +- a: banana +- a: cat +- a: apple +``` +then +```bash +yq 'sort_by(.a) | reverse' sample.yml +``` +will output +```yaml +- a: cat +- a: banana +- a: apple +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/select.md b/external/yq/pkg/yqlib/doc/operators/select.md new file mode 100755 index 0000000..67b91f8 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/select.md @@ -0,0 +1,139 @@ +# Select + +Select is used to filter arrays and maps by a boolean expression. + +## Related Operators + +- equals / not equals (`==`, `!=`) operators [here](https://mikefarah.gitbook.io/yq/operators/equals) +- comparison (`>=`, `<` etc) operators [here](https://mikefarah.gitbook.io/yq/operators/compare) +- boolean operators (`and`, `or`, `any` etc) [here](https://mikefarah.gitbook.io/yq/operators/boolean-operators) + +## Select elements from array using wildcard prefix +Given a sample.yml file of: +```yaml +- cat +- goat +- dog +``` +then +```bash +yq '.[] | select(. == "*at")' sample.yml +``` +will output +```yaml +cat +goat +``` + +## Select elements from array using wildcard suffix +Given a sample.yml file of: +```yaml +- go-kart +- goat +- dog +``` +then +```bash +yq '.[] | select(. == "go*")' sample.yml +``` +will output +```yaml +go-kart +goat +``` + +## Select elements from array using wildcard prefix and suffix +Given a sample.yml file of: +```yaml +- ago +- go +- meow +- going +``` +then +```bash +yq '.[] | select(. == "*go*")' sample.yml +``` +will output +```yaml +ago +go +going +``` + +## Select elements from array with regular expression +See more regular expression examples under the `string` operator docs. + +Given a sample.yml file of: +```yaml +- this_0 +- not_this +- nor_0_this +- thisTo_4 +``` +then +```bash +yq '.[] | select(test("[a-zA-Z]+_[0-9]$"))' sample.yml +``` +will output +```yaml +this_0 +thisTo_4 +``` + +## Select items from a map +Given a sample.yml file of: +```yaml +things: cat +bob: goat +horse: dog +``` +then +```bash +yq '.[] | select(. == "cat" or test("og$"))' sample.yml +``` +will output +```yaml +cat +dog +``` + +## Use select and with_entries to filter map keys +Given a sample.yml file of: +```yaml +name: bob +legs: 2 +game: poker +``` +then +```bash +yq 'with_entries(select(.key | test("ame$")))' sample.yml +``` +will output +```yaml +name: bob +game: poker +``` + +## Select multiple items in a map and update +Note the brackets around the entire LHS. + +Given a sample.yml file of: +```yaml +a: + things: cat + bob: goat + horse: dog +``` +then +```bash +yq '(.a.[] | select(. == "cat" or . == "goat")) |= "rabbit"' sample.yml +``` +will output +```yaml +a: + things: rabbit + bob: rabbit + horse: dog +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/slice-array.md b/external/yq/pkg/yqlib/doc/operators/slice-array.md new file mode 100755 index 0000000..40ebea4 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/slice-array.md @@ -0,0 +1,105 @@ +# Slice/Splice Array + +The slice array operator takes an array as input and returns a subarray. Like the `jq` equivalent, `.[10:15]` will return an array of length 5, starting from index 10 inclusive, up to index 15 exclusive. Negative numbers count backwards from the end of the array. + +You may leave out the first or second number, which will will refer to the start or end of the array respectively. + +## Slicing arrays +Given a sample.yml file of: +```yaml +- cat +- dog +- frog +- cow +``` +then +```bash +yq '.[1:3]' sample.yml +``` +will output +```yaml +- dog +- frog +``` + +## Slicing arrays - without the first number +Starts from the start of the array + +Given a sample.yml file of: +```yaml +- cat +- dog +- frog +- cow +``` +then +```bash +yq '.[:2]' sample.yml +``` +will output +```yaml +- cat +- dog +``` + +## Slicing arrays - without the second number +Finishes at the end of the array + +Given a sample.yml file of: +```yaml +- cat +- dog +- frog +- cow +``` +then +```bash +yq '.[2:]' sample.yml +``` +will output +```yaml +- frog +- cow +``` + +## Slicing arrays - use negative numbers to count backwards from the end +Given a sample.yml file of: +```yaml +- cat +- dog +- frog +- cow +``` +then +```bash +yq '.[1:-1]' sample.yml +``` +will output +```yaml +- dog +- frog +``` + +## Inserting into the middle of an array +using an expression to find the index + +Given a sample.yml file of: +```yaml +- cat +- dog +- frog +- cow +``` +then +```bash +yq '(.[] | select(. == "dog") | key + 1) as $pos | .[0:($pos)] + ["rabbit"] + .[$pos:]' sample.yml +``` +will output +```yaml +- cat +- dog +- rabbit +- frog +- cow +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/sort-keys.md b/external/yq/pkg/yqlib/doc/operators/sort-keys.md new file mode 100755 index 0000000..41a4340 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/sort-keys.md @@ -0,0 +1,75 @@ +# Sort Keys + +The Sort Keys operator sorts maps by their keys (based on their string value). This operator does not do anything to arrays or scalars (so you can easily recursively apply it to all maps). + +Sort is particularly useful for diffing two different yaml documents: + +```bash +yq -i -P 'sort_keys(..)' file1.yml +yq -i -P 'sort_keys(..)' file2.yml +diff file1.yml file2.yml +``` + +Note that `yq` does not yet consider anchors when sorting by keys - this may result in invalid yaml documents if your are using merge anchors. + +For more advanced sorting, using `to_entries` to convert the map to an array, then sort/process the array as you like (e.g. using `sort_by`) and convert back to a map using `from_entries`. +See [here](https://mikefarah.gitbook.io/yq/operators/entries#custom-sort-map-keys) for an example. + +## Sort keys of map +Given a sample.yml file of: +```yaml +c: frog +a: blah +b: bing +``` +then +```bash +yq 'sort_keys(.)' sample.yml +``` +will output +```yaml +a: blah +b: bing +c: frog +``` + +## Sort keys recursively +Note the array elements are left unsorted, but maps inside arrays are sorted + +Given a sample.yml file of: +```yaml +bParent: + c: dog + array: + - 3 + - 1 + - 2 +aParent: + z: donkey + x: + - c: yum + b: delish + - b: ew + a: apple +``` +then +```bash +yq 'sort_keys(..)' sample.yml +``` +will output +```yaml +aParent: + x: + - b: delish + c: yum + - a: apple + b: ew + z: donkey +bParent: + array: + - 3 + - 1 + - 2 + c: dog +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/sort.md b/external/yq/pkg/yqlib/doc/operators/sort.md new file mode 100755 index 0000000..51c79e4 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/sort.md @@ -0,0 +1,181 @@ +# Sort + +Sorts an array. Use `sort` to sort an array as is, or `sort_by(exp)` to sort by a particular expression (e.g. subfield). + +To sort by descending order, pipe the results through the `reverse` operator after sorting. + +Note that at this stage, `yq` only sorts scalar fields. + + +## Sort by string field +Given a sample.yml file of: +```yaml +- a: banana +- a: cat +- a: apple +``` +then +```bash +yq 'sort_by(.a)' sample.yml +``` +will output +```yaml +- a: apple +- a: banana +- a: cat +``` + +## Sort descending by string field +Use sort with reverse to sort in descending order. + +Given a sample.yml file of: +```yaml +- a: banana +- a: cat +- a: apple +``` +then +```bash +yq 'sort_by(.a) | reverse' sample.yml +``` +will output +```yaml +- a: cat +- a: banana +- a: apple +``` + +## Sort array in place +Given a sample.yml file of: +```yaml +cool: + - a: banana + - a: cat + - a: apple +``` +then +```bash +yq '.cool |= sort_by(.a)' sample.yml +``` +will output +```yaml +cool: + - a: apple + - a: banana + - a: cat +``` + +## Sort array of objects by key +Note that you can give sort_by complex expressions, not just paths + +Given a sample.yml file of: +```yaml +cool: + - b: banana + - a: banana + - c: banana +``` +then +```bash +yq '.cool |= sort_by(keys | .[0])' sample.yml +``` +will output +```yaml +cool: + - a: banana + - b: banana + - c: banana +``` + +## Sort is stable +Note the order of the elements in unchanged when equal in sorting. + +Given a sample.yml file of: +```yaml +- a: banana + b: 1 +- a: banana + b: 2 +- a: banana + b: 3 +- a: banana + b: 4 +``` +then +```bash +yq 'sort_by(.a)' sample.yml +``` +will output +```yaml +- a: banana + b: 1 +- a: banana + b: 2 +- a: banana + b: 3 +- a: banana + b: 4 +``` + +## Sort by numeric field +Given a sample.yml file of: +```yaml +- a: 10 +- a: 100 +- a: 1 +``` +then +```bash +yq 'sort_by(.a)' sample.yml +``` +will output +```yaml +- a: 1 +- a: 10 +- a: 100 +``` + +## Sort by custom date field +Given a sample.yml file of: +```yaml +- a: 12-Jun-2011 +- a: 23-Dec-2010 +- a: 10-Aug-2011 +``` +then +```bash +yq 'with_dtf("02-Jan-2006"; sort_by(.a))' sample.yml +``` +will output +```yaml +- a: 23-Dec-2010 +- a: 12-Jun-2011 +- a: 10-Aug-2011 +``` + +## Sort, nulls come first +Given a sample.yml file of: +```yaml +- 8 +- 3 +- null +- 6 +- true +- false +- cat +``` +then +```bash +yq 'sort' sample.yml +``` +will output +```yaml +- null +- false +- true +- 3 +- 6 +- 8 +- cat +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/split-into-documents.md b/external/yq/pkg/yqlib/doc/operators/split-into-documents.md new file mode 100755 index 0000000..e072328 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/split-into-documents.md @@ -0,0 +1,31 @@ +# Split into Documents + +This operator splits all matches into separate documents + +## Split empty +Running +```bash +yq --null-input 'split_doc' +``` +will output +```yaml + +``` + +## Split array +Given a sample.yml file of: +```yaml +- a: cat +- b: dog +``` +then +```bash +yq '.[] | split_doc' sample.yml +``` +will output +```yaml +a: cat +--- +b: dog +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/string-operators.md b/external/yq/pkg/yqlib/doc/operators/string-operators.md new file mode 100755 index 0000000..585404c --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/string-operators.md @@ -0,0 +1,385 @@ +# String Operators + +## RegEx +This uses golangs native regex functions under the hood - See their [docs](https://github.com/google/re2/wiki/Syntax) for the supported syntax. + +Case insensitive tip: prefix the regex with `(?i)` - e.g. `test("(?i)cats)"`. + +### match(regEx) +This operator returns the substring match details of the given regEx. + +### capture(regEx) +Capture returns named RegEx capture groups in a map. Can be more convenient than `match` depending on what you are doing. + +## test(regEx) +Returns true if the string matches the RegEx, false otherwise. + +## sub(regEx, replacement) +Substitutes matched substrings. The first parameter is the regEx to match substrings within the original string. The second is a what to replace those matches with. This can refer to capture groups from the first RegEx. + +## String blocks, bash and newlines +Bash is notorious for chomping on precious trailing newline characters, making it tricky to set strings with newlines properly. In particular, the `$( exp )` _will trim trailing newlines_. + +For instance to get this yaml: + +``` +a: | + cat +``` + +Using `$( exp )` wont work, as it will trim the trailing new line. + +``` +m=$(echo "cat\n") yq -n '.a = strenv(m)' +a: cat +``` + +However, using printf works: +``` +printf -v m "cat\n" ; m="$m" yq -n '.a = strenv(m)' +a: | + cat +``` + +As well as having multiline expressions: +``` +m="cat +" yq -n '.a = strenv(m)' +a: | + cat +``` + +Similarly, if you're trying to set the content from a file, and want a trailing new line: + +``` +IFS= read -rd '' output < <(cat my_file) +output=$output ./yq '.data.values = strenv(output)' first.yml +``` + +## To up (upper) case +Works with unicode characters + +Given a sample.yml file of: +```yaml +água +``` +then +```bash +yq 'upcase' sample.yml +``` +will output +```yaml +ÁGUA +``` + +## To down (lower) case +Works with unicode characters + +Given a sample.yml file of: +```yaml +ÁgUA +``` +then +```bash +yq 'downcase' sample.yml +``` +will output +```yaml +água +``` + +## Join strings +Given a sample.yml file of: +```yaml +- cat +- meow +- 1 +- null +- true +``` +then +```bash +yq 'join("; ")' sample.yml +``` +will output +```yaml +cat; meow; 1; ; true +``` + +## Trim strings +Given a sample.yml file of: +```yaml +- ' cat' +- 'dog ' +- ' cow cow ' +- horse +``` +then +```bash +yq '.[] | trim' sample.yml +``` +will output +```yaml +cat +dog +cow cow +horse +``` + +## Match string +Given a sample.yml file of: +```yaml +foo bar foo +``` +then +```bash +yq 'match("foo")' sample.yml +``` +will output +```yaml +string: foo +offset: 0 +length: 3 +captures: [] +``` + +## Match string, case insensitive +Given a sample.yml file of: +```yaml +foo bar FOO +``` +then +```bash +yq '[match("(?i)foo"; "g")]' sample.yml +``` +will output +```yaml +- string: foo + offset: 0 + length: 3 + captures: [] +- string: FOO + offset: 8 + length: 3 + captures: [] +``` + +## Match with global capture group +Given a sample.yml file of: +```yaml +abc abc +``` +then +```bash +yq '[match("(ab)(c)"; "g")]' sample.yml +``` +will output +```yaml +- string: abc + offset: 0 + length: 3 + captures: + - string: ab + offset: 0 + length: 2 + - string: c + offset: 2 + length: 1 +- string: abc + offset: 4 + length: 3 + captures: + - string: ab + offset: 4 + length: 2 + - string: c + offset: 6 + length: 1 +``` + +## Match with named capture groups +Given a sample.yml file of: +```yaml +foo bar foo foo foo +``` +then +```bash +yq '[match("foo (?Pbar)? foo"; "g")]' sample.yml +``` +will output +```yaml +- string: foo bar foo + offset: 0 + length: 11 + captures: + - string: bar + offset: 4 + length: 3 + name: bar123 +- string: foo foo + offset: 12 + length: 8 + captures: + - string: null + offset: -1 + length: 0 + name: bar123 +``` + +## Capture named groups into a map +Given a sample.yml file of: +```yaml +xyzzy-14 +``` +then +```bash +yq 'capture("(?P[a-z]+)-(?P[0-9]+)")' sample.yml +``` +will output +```yaml +a: xyzzy +n: "14" +``` + +## Match without global flag +Given a sample.yml file of: +```yaml +cat cat +``` +then +```bash +yq 'match("cat")' sample.yml +``` +will output +```yaml +string: cat +offset: 0 +length: 3 +captures: [] +``` + +## Match with global flag +Given a sample.yml file of: +```yaml +cat cat +``` +then +```bash +yq '[match("cat"; "g")]' sample.yml +``` +will output +```yaml +- string: cat + offset: 0 + length: 3 + captures: [] +- string: cat + offset: 4 + length: 3 + captures: [] +``` + +## Test using regex +Like jq's equivalent, this works like match but only returns true/false instead of full match details + +Given a sample.yml file of: +```yaml +- cat +- dog +``` +then +```bash +yq '.[] | test("at")' sample.yml +``` +will output +```yaml +true +false +``` + +## Substitute / Replace string +This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax) +Note the use of `|=` to run in context of the current string value. + +Given a sample.yml file of: +```yaml +a: dogs are great +``` +then +```bash +yq '.a |= sub("dogs", "cats")' sample.yml +``` +will output +```yaml +a: cats are great +``` + +## Substitute / Replace string with regex +This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax) +Note the use of `|=` to run in context of the current string value. + +Given a sample.yml file of: +```yaml +a: cat +b: heat +``` +then +```bash +yq '.[] |= sub("(a)", "${1}r")' sample.yml +``` +will output +```yaml +a: cart +b: heart +``` + +## Custom types: that are really strings +When custom tags are encountered, yq will try to decode the underlying type. + +Given a sample.yml file of: +```yaml +a: !horse cat +b: !goat heat +``` +then +```bash +yq '.[] |= sub("(a)", "${1}r")' sample.yml +``` +will output +```yaml +a: !horse cart +b: !goat heart +``` + +## Split strings +Given a sample.yml file of: +```yaml +cat; meow; 1; ; true +``` +then +```bash +yq 'split("; ")' sample.yml +``` +will output +```yaml +- cat +- meow +- "1" +- "" +- "true" +``` + +## Split strings one match +Given a sample.yml file of: +```yaml +word +``` +then +```bash +yq 'split("; ")' sample.yml +``` +will output +```yaml +- word +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/style.md b/external/yq/pkg/yqlib/doc/operators/style.md new file mode 100755 index 0000000..b21a5b2 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/style.md @@ -0,0 +1,240 @@ +# Style + +The style operator can be used to get or set the style of nodes (e.g. string style, yaml style) + +## Update and set style of a particular node (simple) +Given a sample.yml file of: +```yaml +a: + b: thing + c: something +``` +then +```bash +yq '.a.b = "new" | .a.b style="double"' sample.yml +``` +will output +```yaml +a: + b: "new" + c: something +``` + +## Update and set style of a particular node using path variables +Given a sample.yml file of: +```yaml +a: + b: thing + c: something +``` +then +```bash +yq 'with(.a.b ; . = "new" | . style="double")' sample.yml +``` +will output +```yaml +a: + b: "new" + c: something +``` + +## Set tagged style +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '.. style="tagged"' sample.yml +``` +will output +```yaml +!!map +a: !!str cat +b: !!int 5 +c: !!float 3.2 +e: !!bool true +``` + +## Set double quote style +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '.. style="double"' sample.yml +``` +will output +```yaml +a: "cat" +b: "5" +c: "3.2" +e: "true" +``` + +## Set double quote style on map keys too +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '... style="double"' sample.yml +``` +will output +```yaml +"a": "cat" +"b": "5" +"c": "3.2" +"e": "true" +``` + +## Set single quote style +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '.. style="single"' sample.yml +``` +will output +```yaml +a: 'cat' +b: '5' +c: '3.2' +e: 'true' +``` + +## Set literal quote style +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '.. style="literal"' sample.yml +``` +will output +```yaml +a: |- + cat +b: |- + 5 +c: |- + 3.2 +e: |- + true +``` + +## Set folded quote style +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '.. style="folded"' sample.yml +``` +will output +```yaml +a: >- + cat +b: >- + 5 +c: >- + 3.2 +e: >- + true +``` + +## Set flow quote style +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '.. style="flow"' sample.yml +``` +will output +```yaml +{a: cat, b: 5, c: 3.2, e: true} +``` + +## Reset style - or pretty print +Set empty (default) quote style, note the usage of `...` to match keys too. Note that there is a `--prettyPrint/-P` short flag for this. + +Given a sample.yml file of: +```yaml +a: cat +"b": 5 +'c': 3.2 +"e": true +``` +then +```bash +yq '... style=""' sample.yml +``` +will output +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` + +## Set style relatively with assign-update +Given a sample.yml file of: +```yaml +a: single +b: double +``` +then +```bash +yq '.[] style |= .' sample.yml +``` +will output +```yaml +a: 'single' +b: "double" +``` + +## Read style +Given a sample.yml file of: +```yaml +{a: "cat", b: 'thing'} +``` +then +```bash +yq '.. | style' sample.yml +``` +will output +```yaml +flow +double +single +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/subtract.md b/external/yq/pkg/yqlib/doc/operators/subtract.md new file mode 100755 index 0000000..b850cc9 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/subtract.md @@ -0,0 +1,163 @@ +# Subtract + +You can use subtract to subtract numbers, as well as removing elements from an array. + +## Array subtraction +Running +```bash +yq --null-input '[1,2] - [2,3]' +``` +will output +```yaml +- 1 +``` + +## Array subtraction with nested array +Running +```bash +yq --null-input '[[1], 1, 2] - [[1], 3]' +``` +will output +```yaml +- 1 +- 2 +``` + +## Array subtraction with nested object +Note that order of the keys does not matter + +Given a sample.yml file of: +```yaml +- a: b + c: d +- a: b +``` +then +```bash +yq '. - [{"c": "d", "a": "b"}]' sample.yml +``` +will output +```yaml +- a: b +``` + +## Number subtraction - float +If the lhs or rhs are floats then the expression will be calculated with floats. + +Given a sample.yml file of: +```yaml +a: 3 +b: 4.5 +``` +then +```bash +yq '.a = .a - .b' sample.yml +``` +will output +```yaml +a: -1.5 +b: 4.5 +``` + +## Number subtraction - float +If the lhs or rhs are floats then the expression will be calculated with floats. + +Given a sample.yml file of: +```yaml +a: 3 +b: 4.5 +``` +then +```bash +yq '.a = .a - .b' sample.yml +``` +will output +```yaml +a: -1.5 +b: 4.5 +``` + +## Number subtraction - int +If both the lhs and rhs are ints then the expression will be calculated with ints. + +Given a sample.yml file of: +```yaml +a: 3 +b: 4 +``` +then +```bash +yq '.a = .a - .b' sample.yml +``` +will output +```yaml +a: -1 +b: 4 +``` + +## Decrement numbers +Given a sample.yml file of: +```yaml +a: 3 +b: 5 +``` +then +```bash +yq '.[] -= 1' sample.yml +``` +will output +```yaml +a: 2 +b: 4 +``` + +## Date subtraction +You can subtract durations from dates. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information. + +Given a sample.yml file of: +```yaml +a: 2021-01-01T03:10:00Z +``` +then +```bash +yq '.a -= "3h10m"' sample.yml +``` +will output +```yaml +a: 2021-01-01T00:00:00Z +``` + +## Date subtraction - custom format +Use with_dtf to specify your datetime format. See [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information. + +Given a sample.yml file of: +```yaml +a: Saturday, 15-Dec-01 at 6:00AM GMT +``` +then +```bash +yq 'with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a -= "3h1m")' sample.yml +``` +will output +```yaml +a: Saturday, 15-Dec-01 at 2:59AM GMT +``` + +## Custom types: that are really numbers +When custom tags are encountered, yq will try to decode the underlying type. + +Given a sample.yml file of: +```yaml +a: !horse 2 +b: !goat 1 +``` +then +```bash +yq '.a -= .b' sample.yml +``` +will output +```yaml +a: !horse 1 +b: !goat 1 +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/tag.md b/external/yq/pkg/yqlib/doc/operators/tag.md new file mode 100755 index 0000000..43db143 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/tag.md @@ -0,0 +1,84 @@ +# Tag + +The tag operator can be used to get or set the tag of nodes (e.g. `!!str`, `!!int`, `!!bool`). + +## Get tag +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +f: [] +``` +then +```bash +yq '.. | tag' sample.yml +``` +will output +```yaml +!!map +!!str +!!int +!!float +!!bool +!!seq +``` + +## type is an alias for tag +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +f: [] +``` +then +```bash +yq '.. | type' sample.yml +``` +will output +```yaml +!!map +!!str +!!int +!!float +!!bool +!!seq +``` + +## Set custom tag +Given a sample.yml file of: +```yaml +a: str +``` +then +```bash +yq '.a tag = "!!mikefarah"' sample.yml +``` +will output +```yaml +a: !!mikefarah str +``` + +## Find numbers and convert them to strings +Given a sample.yml file of: +```yaml +a: cat +b: 5 +c: 3.2 +e: true +``` +then +```bash +yq '(.. | select(tag == "!!int")) tag= "!!str"' sample.yml +``` +will output +```yaml +a: cat +b: "5" +c: 3.2 +e: true +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/traverse-read.md b/external/yq/pkg/yqlib/doc/operators/traverse-read.md new file mode 100755 index 0000000..3a4452e --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/traverse-read.md @@ -0,0 +1,485 @@ +# Traverse (Read) + +This is the simplest (and perhaps most used) operator, it is used to navigate deeply into yaml structures. + +## Simple map navigation +Given a sample.yml file of: +```yaml +a: + b: apple +``` +then +```bash +yq '.a' sample.yml +``` +will output +```yaml +b: apple +``` + +## Splat +Often used to pipe children into other operators + +Given a sample.yml file of: +```yaml +- b: apple +- c: banana +``` +then +```bash +yq '.[]' sample.yml +``` +will output +```yaml +b: apple +c: banana +``` + +## Optional Splat +Just like splat, but won't error if you run it against scalars + +Given a sample.yml file of: +```yaml +cat +``` +then +```bash +yq '.[]' sample.yml +``` +will output +```yaml +``` + +## Special characters +Use quotes with brackets around path elements with special characters + +Given a sample.yml file of: +```yaml +"{}": frog +``` +then +```bash +yq '.["{}"]' sample.yml +``` +will output +```yaml +frog +``` + +## Nested special characters +Given a sample.yml file of: +```yaml +a: + "key.withdots": + "another.key": apple +``` +then +```bash +yq '.a["key.withdots"]["another.key"]' sample.yml +``` +will output +```yaml +apple +``` + +## Keys with spaces +Use quotes with brackets around path elements with special characters + +Given a sample.yml file of: +```yaml +"red rabbit": frog +``` +then +```bash +yq '.["red rabbit"]' sample.yml +``` +will output +```yaml +frog +``` + +## Dynamic keys +Expressions within [] can be used to dynamically lookup / calculate keys + +Given a sample.yml file of: +```yaml +b: apple +apple: crispy yum +banana: soft yum +``` +then +```bash +yq '.[.b]' sample.yml +``` +will output +```yaml +crispy yum +``` + +## Children don't exist +Nodes are added dynamically while traversing + +Given a sample.yml file of: +```yaml +c: banana +``` +then +```bash +yq '.a.b' sample.yml +``` +will output +```yaml +null +``` + +## Optional identifier +Like jq, does not output an error when the yaml is not an array or object as expected + +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq '.a?' sample.yml +``` +will output +```yaml +``` + +## Wildcard matching +Given a sample.yml file of: +```yaml +a: + cat: apple + mad: things +``` +then +```bash +yq '.a."*a*"' sample.yml +``` +will output +```yaml +apple +things +``` + +## Aliases +Given a sample.yml file of: +```yaml +a: &cat + c: frog +b: *cat +``` +then +```bash +yq '.b' sample.yml +``` +will output +```yaml +*cat +``` + +## Traversing aliases with splat +Given a sample.yml file of: +```yaml +a: &cat + c: frog +b: *cat +``` +then +```bash +yq '.b[]' sample.yml +``` +will output +```yaml +frog +``` + +## Traversing aliases explicitly +Given a sample.yml file of: +```yaml +a: &cat + c: frog +b: *cat +``` +then +```bash +yq '.b.c' sample.yml +``` +will output +```yaml +frog +``` + +## Traversing arrays by index +Given a sample.yml file of: +```yaml +- 1 +- 2 +- 3 +``` +then +```bash +yq '.[0]' sample.yml +``` +will output +```yaml +1 +``` + +## Traversing nested arrays by index +Given a sample.yml file of: +```yaml +[[], [cat]] +``` +then +```bash +yq '.[1][0]' sample.yml +``` +will output +```yaml +cat +``` + +## Maps with numeric keys +Given a sample.yml file of: +```yaml +2: cat +``` +then +```bash +yq '.[2]' sample.yml +``` +will output +```yaml +cat +``` + +## Maps with non existing numeric keys +Given a sample.yml file of: +```yaml +a: b +``` +then +```bash +yq '.[0]' sample.yml +``` +will output +```yaml +null +``` + +## Traversing merge anchors +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobar.a' sample.yml +``` +will output +```yaml +foo_a +``` + +## Traversing merge anchors with override +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobar.c' sample.yml +``` +will output +```yaml +foo_c +``` + +## Traversing merge anchors with local override +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobar.thing' sample.yml +``` +will output +```yaml +foobar_thing +``` + +## Splatting merge anchors +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobar[]' sample.yml +``` +will output +```yaml +foo_c +foo_a +foobar_thing +``` + +## Traversing merge anchor lists +Note that the later merge anchors override previous + +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobarList.thing' sample.yml +``` +will output +```yaml +bar_thing +``` + +## Splatting merge anchor lists +Given a sample.yml file of: +```yaml +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: foobarList_b + !!merge <<: + - *foo + - *bar + c: foobarList_c +foobar: + c: foobar_c + !!merge <<: *foo + thing: foobar_thing +``` +then +```bash +yq '.foobarList[]' sample.yml +``` +will output +```yaml +bar_b +foo_a +bar_thing +foobarList_c +``` + +## Select multiple indices +Given a sample.yml file of: +```yaml +a: + - a + - b + - c +``` +then +```bash +yq '.a[0, 2]' sample.yml +``` +will output +```yaml +a +c +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/union.md b/external/yq/pkg/yqlib/doc/operators/union.md new file mode 100755 index 0000000..abf0bef --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/union.md @@ -0,0 +1,33 @@ +# Union + +This operator is used to combine different results together. + +## Combine scalars +Running +```bash +yq --null-input '1, true, "cat"' +``` +will output +```yaml +1 +true +cat +``` + +## Combine selected paths +Given a sample.yml file of: +```yaml +a: fieldA +b: fieldB +c: fieldC +``` +then +```bash +yq '.a, .c' sample.yml +``` +will output +```yaml +fieldA +fieldC +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/unique.md b/external/yq/pkg/yqlib/doc/operators/unique.md new file mode 100755 index 0000000..a1bc443 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/unique.md @@ -0,0 +1,87 @@ +# Unique + +This is used to filter out duplicated items in an array. Note that the original order of the array is maintained. + + +## Unique array of scalars (string/numbers) +Note that unique maintains the original order of the array. + +Given a sample.yml file of: +```yaml +- 2 +- 1 +- 3 +- 2 +``` +then +```bash +yq 'unique' sample.yml +``` +will output +```yaml +- 2 +- 1 +- 3 +``` + +## Unique nulls +Unique works on the node value, so it considers different representations of nulls to be different + +Given a sample.yml file of: +```yaml +- ~ +- null +- ~ +- null +``` +then +```bash +yq 'unique' sample.yml +``` +will output +```yaml +- ~ +- null +``` + +## Unique all nulls +Run against the node tag to unique all the nulls + +Given a sample.yml file of: +```yaml +- ~ +- null +- ~ +- null +``` +then +```bash +yq 'unique_by(tag)' sample.yml +``` +will output +```yaml +- ~ +``` + +## Unique array object fields +Given a sample.yml file of: +```yaml +- name: harry + pet: cat +- name: billy + pet: dog +- name: harry + pet: dog +``` +then +```bash +yq 'unique_by(.name)' sample.yml +``` +will output +```yaml +- name: harry + pet: cat +- name: billy + pet: dog +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/variable-operators.md b/external/yq/pkg/yqlib/doc/operators/variable-operators.md new file mode 100755 index 0000000..5c9a293 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/variable-operators.md @@ -0,0 +1,98 @@ +# Variable Operators + +Like the `jq` equivalents, variables are sometimes required for the more complex expressions (or swapping values between fields). + +Note that there is also an additional `ref` operator that holds a reference (instead of a copy) of the path, allowing you to make multiple changes to the same path. + +## Single value variable +Given a sample.yml file of: +```yaml +a: cat +``` +then +```bash +yq '.a as $foo | $foo' sample.yml +``` +will output +```yaml +cat +``` + +## Multi value variable +Given a sample.yml file of: +```yaml +- cat +- dog +``` +then +```bash +yq '.[] as $foo | $foo' sample.yml +``` +will output +```yaml +cat +dog +``` + +## Using variables as a lookup +Example taken from [jq](https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...) + +Given a sample.yml file of: +```yaml +"posts": + - "title": First post + "author": anon + - "title": A well-written article + "author": person1 +"realnames": + "anon": Anonymous Coward + "person1": Person McPherson +``` +then +```bash +yq '.realnames as $names | .posts[] | {"title":.title, "author": $names[.author]}' sample.yml +``` +will output +```yaml +title: First post +author: Anonymous Coward +title: A well-written article +author: Person McPherson +``` + +## Using variables to swap values +Given a sample.yml file of: +```yaml +a: a_value +b: b_value +``` +then +```bash +yq '.a as $x | .b as $y | .b = $x | .a = $y' sample.yml +``` +will output +```yaml +a: b_value +b: a_value +``` + +## Use ref to reference a path repeatedly +Note: You may find the `with` operator more useful. + +Given a sample.yml file of: +```yaml +a: + b: thing + c: something +``` +then +```bash +yq '.a.b ref $x | $x = "new" | $x style="double"' sample.yml +``` +will output +```yaml +a: + b: "new" + c: something +``` + diff --git a/external/yq/pkg/yqlib/doc/operators/with.md b/external/yq/pkg/yqlib/doc/operators/with.md new file mode 100755 index 0000000..6b1a913 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/operators/with.md @@ -0,0 +1,64 @@ +# With + +Use the `with` operator to conveniently make multiple updates to a deeply nested path, or to update array elements relatively to each other. The first argument expression sets the root context, and the second expression runs against that root context. + +## Update and style +Given a sample.yml file of: +```yaml +a: + deeply: + nested: value +``` +then +```bash +yq 'with(.a.deeply.nested; . = "newValue" | . style="single")' sample.yml +``` +will output +```yaml +a: + deeply: + nested: 'newValue' +``` + +## Update multiple deeply nested properties +Given a sample.yml file of: +```yaml +a: + deeply: + nested: value + other: thing +``` +then +```bash +yq 'with(.a.deeply; .nested = "newValue" | .other= "newThing")' sample.yml +``` +will output +```yaml +a: + deeply: + nested: newValue + other: newThing +``` + +## Update array elements relatively +The second expression runs with each element of the array as it's contextual root. This allows you to make updates relative to the element. + +Given a sample.yml file of: +```yaml +myArray: + - a: apple + - a: banana +``` +then +```bash +yq 'with(.myArray[]; .b = .a + " yum")' sample.yml +``` +will output +```yaml +myArray: + - a: apple + b: apple yum + - a: banana + b: banana yum +``` + diff --git a/external/yq/pkg/yqlib/doc/usage/convert.md b/external/yq/pkg/yqlib/doc/usage/convert.md new file mode 100755 index 0000000..1f149c1 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/convert.md @@ -0,0 +1,253 @@ +# JSON + +Encode and decode to and from JSON. Supports multiple JSON documents in a single file (e.g. NDJSON). + +Note that YAML is a superset of (single document) JSON - so you don't have to use the JSON parser to read JSON when there is only one JSON document in the input. You will probably want to pretty print the result in this case, to get idiomatic YAML styling. + + +## Parse json: simple +JSON is a subset of yaml, so all you need to do is prettify the output + +Given a sample.json file of: +```json +{"cat": "meow"} +``` +then +```bash +yq -P '.' sample.json +``` +will output +```yaml +cat: meow +``` + +## Parse json: complex +JSON is a subset of yaml, so all you need to do is prettify the output + +Given a sample.json file of: +```json +{"a":"Easy! as one two three","b":{"c":2,"d":[3,4]}} +``` +then +```bash +yq -P '.' sample.json +``` +will output +```yaml +a: Easy! as one two three +b: + c: 2 + d: + - 3 + - 4 +``` + +## Encode json: simple +Given a sample.yml file of: +```yaml +cat: meow +``` +then +```bash +yq -o=json '.' sample.yml +``` +will output +```json +{ + "cat": "meow" +} +``` + +## Encode json: simple - in one line +Given a sample.yml file of: +```yaml +cat: meow # this is a comment, and it will be dropped. +``` +then +```bash +yq -o=json -I=0 '.' sample.yml +``` +will output +```json +{"cat":"meow"} +``` + +## Encode json: comments +Given a sample.yml file of: +```yaml +cat: meow # this is a comment, and it will be dropped. +``` +then +```bash +yq -o=json '.' sample.yml +``` +will output +```json +{ + "cat": "meow" +} +``` + +## Encode json: anchors +Anchors are dereferenced + +Given a sample.yml file of: +```yaml +cat: &ref meow +anotherCat: *ref +``` +then +```bash +yq -o=json '.' sample.yml +``` +will output +```json +{ + "cat": "meow", + "anotherCat": "meow" +} +``` + +## Encode json: multiple results +Each matching node is converted into a json doc. This is best used with 0 indent (json document per line) + +Given a sample.yml file of: +```yaml +things: [{stuff: cool}, {whatever: cat}] +``` +then +```bash +yq -o=json -I=0 '.things[]' sample.yml +``` +will output +```json +{"stuff":"cool"} +{"whatever":"cat"} +``` + +## Roundtrip NDJSON +Unfortunately the json encoder strips leading spaces of values. + +Given a sample.json file of: +```json +{"this": "is a multidoc json file"} +{"each": ["line is a valid json document"]} +{"a number": 4} + +``` +then +```bash +yq -p=json -o=json -I=0 sample.json +``` +will output +```yaml +{"this":"is a multidoc json file"} +{"each":["line is a valid json document"]} +{"a number":4} +``` + +## Roundtrip multi-document JSON +The NDJSON parser can also handle multiple multi-line json documents in a single file! + +Given a sample.json file of: +```json +{ + "this": "is a multidoc json file" +} +{ + "it": [ + "has", + "consecutive", + "json documents" + ] +} +{ + "a number": 4 +} + +``` +then +```bash +yq -p=json -o=json -I=2 sample.json +``` +will output +```yaml +{ + "this": "is a multidoc json file" +} +{ + "it": [ + "has", + "consecutive", + "json documents" + ] +} +{ + "a number": 4 +} +``` + +## Update a specific document in a multi-document json +Documents are indexed by the `documentIndex` or `di` operator. + +Given a sample.json file of: +```json +{"this": "is a multidoc json file"} +{"each": ["line is a valid json document"]} +{"a number": 4} + +``` +then +```bash +yq -p=json -o=json -I=0 '(select(di == 1) | .each ) += "cool"' sample.json +``` +will output +```yaml +{"this":"is a multidoc json file"} +{"each":["line is a valid json document","cool"]} +{"a number":4} +``` + +## Find and update a specific document in a multi-document json +Use expressions as you normally would. + +Given a sample.json file of: +```json +{"this": "is a multidoc json file"} +{"each": ["line is a valid json document"]} +{"a number": 4} + +``` +then +```bash +yq -p=json -o=json -I=0 '(select(has("each")) | .each ) += "cool"' sample.json +``` +will output +```yaml +{"this":"is a multidoc json file"} +{"each":["line is a valid json document","cool"]} +{"a number":4} +``` + +## Decode NDJSON +Given a sample.json file of: +```json +{"this": "is a multidoc json file"} +{"each": ["line is a valid json document"]} +{"a number": 4} + +``` +then +```bash +yq -p=json sample.json +``` +will output +```yaml +this: is a multidoc json file +--- +each: + - line is a valid json document +--- +a number: 4 +``` + diff --git a/external/yq/pkg/yqlib/doc/usage/csv-tsv.md b/external/yq/pkg/yqlib/doc/usage/csv-tsv.md new file mode 100755 index 0000000..c58e42c --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/csv-tsv.md @@ -0,0 +1,208 @@ +# CSV +Encode/Decode/Roundtrip CSV and TSV files. + +## Encode +Currently supports arrays of homogenous flat objects, that is: no nesting and it assumes the _first_ object has all the keys required: + +```yaml +- name: Bobo + type: dog +- name: Fifi + type: cat +``` + +As well as arrays of arrays of scalars (strings/numbers/booleans): + +```yaml +- [Bobo, dog] +- [Fifi, cat] +``` + +## Decode +Decode assumes the first CSV/TSV row is the header row, and all rows beneath are the entries. +The data will be coded into an array of objects, using the header rows as keys. + +```csv +name,type +Bobo,dog +Fifi,cat +``` + + +## Encode CSV simple +Given a sample.yml file of: +```yaml +- [i, like, csv] +- [because, excel, is, cool] +``` +then +```bash +yq -o=csv sample.yml +``` +will output +```csv +i,like,csv +because,excel,is,cool +``` + +## Encode TSV simple +Given a sample.yml file of: +```yaml +- [i, like, csv] +- [because, excel, is, cool] +``` +then +```bash +yq -o=tsv sample.yml +``` +will output +```tsv +i like csv +because excel is cool +``` + +## Encode array of objects to csv +Given a sample.yml file of: +```yaml +- name: Gary + numberOfCats: 1 + likesApples: true + height: 168.8 +- name: Samantha's Rabbit + numberOfCats: 2 + likesApples: false + height: -188.8 + +``` +then +```bash +yq -o=csv sample.yml +``` +will output +```csv +name,numberOfCats,likesApples,height +Gary,1,true,168.8 +Samantha's Rabbit,2,false,-188.8 +``` + +## Encode array of objects to custom csv format +Add the header row manually, then the we convert each object into an array of values - resulting in an array of arrays. Pick the columns and call the header whatever you like. + +Given a sample.yml file of: +```yaml +- name: Gary + numberOfCats: 1 + likesApples: true + height: 168.8 +- name: Samantha's Rabbit + numberOfCats: 2 + likesApples: false + height: -188.8 + +``` +then +```bash +yq -o=csv '[["Name", "Number of Cats"]] + [.[] | [.name, .numberOfCats ]]' sample.yml +``` +will output +```csv +Name,Number of Cats +Gary,1 +Samantha's Rabbit,2 +``` + +## Encode array of objects to csv - missing fields behaviour +First entry is used to determine the headers, and it is missing 'likesApples', so it is not included in the csv. Second entry does not have 'numberOfCats' so that is blank + +Given a sample.yml file of: +```yaml +- name: Gary + numberOfCats: 1 + height: 168.8 +- name: Samantha's Rabbit + height: -188.8 + likesApples: false + +``` +then +```bash +yq -o=csv sample.yml +``` +will output +```csv +name,numberOfCats,height +Gary,1,168.8 +Samantha's Rabbit,,-188.8 +``` + +## Parse CSV into an array of objects +First row is assumed to be the header row. + +Given a sample.csv file of: +```csv +name,numberOfCats,likesApples,height +Gary,1,true,168.8 +Samantha's Rabbit,2,false,-188.8 + +``` +then +```bash +yq -p=csv sample.csv +``` +will output +```yaml +- name: Gary + numberOfCats: 1 + likesApples: true + height: 168.8 +- name: Samantha's Rabbit + numberOfCats: 2 + likesApples: false + height: -188.8 +``` + +## Parse TSV into an array of objects +First row is assumed to be the header row. + +Given a sample.tsv file of: +```tsv +name numberOfCats likesApples height +Gary 1 true 168.8 +Samantha's Rabbit 2 false -188.8 + +``` +then +```bash +yq -p=tsv sample.tsv +``` +will output +```yaml +- name: Gary + numberOfCats: 1 + likesApples: true + height: 168.8 +- name: Samantha's Rabbit + numberOfCats: 2 + likesApples: false + height: -188.8 +``` + +## Round trip +Given a sample.csv file of: +```csv +name,numberOfCats,likesApples,height +Gary,1,true,168.8 +Samantha's Rabbit,2,false,-188.8 + +``` +then +```bash +yq -p=csv -o=csv '(.[] | select(.name == "Gary") | .numberOfCats) = 3' sample.csv +``` +will output +```csv +name,numberOfCats,likesApples,height +Gary,3,true,168.8 +Samantha's Rabbit,2,false,-188.8 +``` + diff --git a/external/yq/pkg/yqlib/doc/usage/headers/convert.md b/external/yq/pkg/yqlib/doc/usage/headers/convert.md new file mode 100755 index 0000000..0d852d9 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/headers/convert.md @@ -0,0 +1,6 @@ +# JSON + +Encode and decode to and from JSON. Supports multiple JSON documents in a single file (e.g. NDJSON). + +Note that YAML is a superset of (single document) JSON - so you don't have to use the JSON parser to read JSON when there is only one JSON document in the input. You will probably want to pretty print the result in this case, to get idiomatic YAML styling. + diff --git a/external/yq/pkg/yqlib/doc/usage/headers/csv-tsv.md b/external/yq/pkg/yqlib/doc/usage/headers/csv-tsv.md new file mode 100755 index 0000000..0a7c7ca --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/headers/csv-tsv.md @@ -0,0 +1,30 @@ +# CSV +Encode/Decode/Roundtrip CSV and TSV files. + +## Encode +Currently supports arrays of homogenous flat objects, that is: no nesting and it assumes the _first_ object has all the keys required: + +```yaml +- name: Bobo + type: dog +- name: Fifi + type: cat +``` + +As well as arrays of arrays of scalars (strings/numbers/booleans): + +```yaml +- [Bobo, dog] +- [Fifi, cat] +``` + +## Decode +Decode assumes the first CSV/TSV row is the header row, and all rows beneath are the entries. +The data will be coded into an array of objects, using the header rows as keys. + +```csv +name,type +Bobo,dog +Fifi,cat +``` + diff --git a/external/yq/pkg/yqlib/doc/usage/headers/properties.md b/external/yq/pkg/yqlib/doc/usage/headers/properties.md new file mode 100755 index 0000000..90164a6 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/headers/properties.md @@ -0,0 +1,5 @@ +# Properties + +Encode/Decode/Roundtrip to/from a property file. Line comments on value nodes will be copied across. + +By default, empty maps and arrays are not encoded - see below for an example on how to encode a value for these. diff --git a/external/yq/pkg/yqlib/doc/usage/headers/xml.md b/external/yq/pkg/yqlib/doc/usage/headers/xml.md new file mode 100755 index 0000000..bcd9ba4 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/headers/xml.md @@ -0,0 +1,40 @@ +# XML + +Encode and decode to and from XML. Whitespace is not conserved for round trips - but the order of the fields are. + +Consecutive xml nodes with the same name are assumed to be arrays. + +XML content data, attributes processing instructions and directives are all created as plain fields. + +This can be controlled by: + +| Flag | Default |Sample XML | +| -- | -- | -- | + | `--xml-attribute-prefix` | `+` (changing to `+@` soon) | Legs in `````` | + | `--xml-content-name` | `+content` | Meow in ```Meow true``` | + | `--xml-directive-name` | `+directive` | `````` | + | `--xml-proc-inst-prefix` | `+p_` | `````` | + + +{% hint style="warning" %} +Default Attribute Prefix will be changing in v4.30! +In order to avoid name conflicts (e.g. having an attribute named "content" will create a field that clashes with the default content name of "+content") the attribute prefix will be changing to "+@". + +This will affect users that have not set their own prefix and are not roundtripping XML changes. + +{% endhint %} + +## Encoder / Decoder flag options + +In addition to the above flags, there are the following xml encoder/decoder options controlled by flags: + +| Flag | Default | Description | +| -- | -- | -- | +| `--xml-strict-mode` | false | Strict mode enforces the requirements of the XML specification. When switched off the parser allows input containing common mistakes. See [the Golang xml decoder ](https://pkg.go.dev/encoding/xml#Decoder) for more details.| +| `--xml-keep-namespace` | true | Keeps the namespace of attributes | +| `--xml-raw-token` | true | Does not verify that start and end elements match and does not translate name space prefixes to their corresponding URLs. | +| `--xml-skip-proc-inst` | false | Skips over processing instructions, e.g. `` | +| `--xml-skip-directives` | false | Skips over directives, e.g. `````` | + + +See below for examples diff --git a/external/yq/pkg/yqlib/doc/usage/properties.md b/external/yq/pkg/yqlib/doc/usage/properties.md new file mode 100755 index 0000000..f3d0123 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/properties.md @@ -0,0 +1,195 @@ +# Properties + +Encode/Decode/Roundtrip to/from a property file. Line comments on value nodes will be copied across. + +By default, empty maps and arrays are not encoded - see below for an example on how to encode a value for these. + +## Encode properties +Note that empty arrays and maps are not encoded by default. + +Given a sample.yml file of: +```yaml +# block comments come through +person: # neither do comments on maps + name: Mike Wazowski # comments on values appear + pets: + - cat # comments on array values appear + food: [pizza] # comments on arrays do not +emptyArray: [] +emptyMap: [] + +``` +then +```bash +yq -o=props sample.yml +``` +will output +```properties +# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza +``` + +## Encode properties: scalar encapsulation +Note that string values with blank characters in them are encapsulated with double quotes + +Given a sample.yml file of: +```yaml +# block comments come through +person: # neither do comments on maps + name: Mike Wazowski # comments on values appear + pets: + - cat # comments on array values appear + food: [pizza] # comments on arrays do not +emptyArray: [] +emptyMap: [] + +``` +then +```bash +yq -o=props --unwrapScalar=false sample.yml +``` +will output +```properties +# block comments come through +# comments on values appear +person.name = "Mike Wazowski" + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza +``` + +## Encode properties: no comments +Given a sample.yml file of: +```yaml +# block comments come through +person: # neither do comments on maps + name: Mike Wazowski # comments on values appear + pets: + - cat # comments on array values appear + food: [pizza] # comments on arrays do not +emptyArray: [] +emptyMap: [] + +``` +then +```bash +yq -o=props '... comments = ""' sample.yml +``` +will output +```properties +person.name = Mike Wazowski +person.pets.0 = cat +person.food.0 = pizza +``` + +## Encode properties: include empty maps and arrays +Use a yq expression to set the empty maps and sequences to your desired value. + +Given a sample.yml file of: +```yaml +# block comments come through +person: # neither do comments on maps + name: Mike Wazowski # comments on values appear + pets: + - cat # comments on array values appear + food: [pizza] # comments on arrays do not +emptyArray: [] +emptyMap: [] + +``` +then +```bash +yq -o=props '(.. | select( (tag == "!!map" or tag =="!!seq") and length == 0)) = ""' sample.yml +``` +will output +```properties +# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza +emptyArray = +emptyMap = +``` + +## Decode properties +Given a sample.properties file of: +```properties +# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza + +``` +then +```bash +yq -p=props sample.properties +``` +will output +```yaml +person: + # block comments come through + # comments on values appear + name: Mike Wazowski + pets: + # comments on array values appear + - cat + food: + - pizza +``` + +## Decode properties - array should be a map +If you have a numeric map key in your property files, use array_to_map to convert them to maps. + +Given a sample.properties file of: +```properties +things.10 = mike +``` +then +```bash +yq -p=props '.things |= array_to_map' sample.properties +``` +will output +```yaml +things: + 10: mike +``` + +## Roundtrip +Given a sample.properties file of: +```properties +# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza + +``` +then +```bash +yq -p=props -o=props '.person.pets.0 = "dog"' sample.properties +``` +will output +```properties +# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = dog +person.food.0 = pizza +``` + diff --git a/external/yq/pkg/yqlib/doc/usage/xml.md b/external/yq/pkg/yqlib/doc/usage/xml.md new file mode 100755 index 0000000..09f77b0 --- /dev/null +++ b/external/yq/pkg/yqlib/doc/usage/xml.md @@ -0,0 +1,509 @@ +# XML + +Encode and decode to and from XML. Whitespace is not conserved for round trips - but the order of the fields are. + +Consecutive xml nodes with the same name are assumed to be arrays. + +XML content data, attributes processing instructions and directives are all created as plain fields. + +This can be controlled by: + +| Flag | Default |Sample XML | +| -- | -- | -- | + | `--xml-attribute-prefix` | `+` (changing to `+@` soon) | Legs in `````` | + | `--xml-content-name` | `+content` | Meow in ```Meow true``` | + | `--xml-directive-name` | `+directive` | `````` | + | `--xml-proc-inst-prefix` | `+p_` | `````` | + + +{% hint style="warning" %} +Default Attribute Prefix will be changing in v4.30! +In order to avoid name conflicts (e.g. having an attribute named "content" will create a field that clashes with the default content name of "+content") the attribute prefix will be changing to "+@". + +This will affect users that have not set their own prefix and are not roundtripping XML changes. + +{% endhint %} + +## Encoder / Decoder flag options + +In addition to the above flags, there are the following xml encoder/decoder options controlled by flags: + +| Flag | Default | Description | +| -- | -- | -- | +| `--xml-strict-mode` | false | Strict mode enforces the requirements of the XML specification. When switched off the parser allows input containing common mistakes. See [the Golang xml decoder ](https://pkg.go.dev/encoding/xml#Decoder) for more details.| +| `--xml-keep-namespace` | true | Keeps the namespace of attributes | +| `--xml-raw-token` | true | Does not verify that start and end elements match and does not translate name space prefixes to their corresponding URLs. | +| `--xml-skip-proc-inst` | false | Skips over processing instructions, e.g. `` | +| `--xml-skip-directives` | false | Skips over directives, e.g. `````` | + + +See below for examples + +## Parse xml: simple +Notice how all the values are strings, see the next example on how you can fix that. + +Given a sample.xml file of: +```xml + + + meow + 4 + true + +``` +then +```bash +yq -p=xml '.' sample.xml +``` +will output +```yaml ++p_xml: version="1.0" encoding="UTF-8" +cat: + says: meow + legs: "4" + cute: "true" +``` + +## Parse xml: number +All values are assumed to be strings when parsing XML, but you can use the `from_yaml` operator on all the strings values to autoparse into the correct type. + +Given a sample.xml file of: +```xml + + + meow + 4 + true + +``` +then +```bash +yq -p=xml ' (.. | select(tag == "!!str")) |= from_yaml' sample.xml +``` +will output +```yaml ++p_xml: version="1.0" encoding="UTF-8" +cat: + says: meow + legs: 4 + cute: true +``` + +## Parse xml: array +Consecutive nodes with identical xml names are assumed to be arrays. + +Given a sample.xml file of: +```xml + +cat +goat +``` +then +```bash +yq -p=xml '.' sample.xml +``` +will output +```yaml ++p_xml: version="1.0" encoding="UTF-8" +animal: + - cat + - goat +``` + +## Parse xml: attributes +Attributes are converted to fields, with the default attribute prefix '+'. Use '--xml-attribute-prefix` to set your own. + +Given a sample.xml file of: +```xml + + + 7 + +``` +then +```bash +yq -p=xml '.' sample.xml +``` +will output +```yaml ++p_xml: version="1.0" encoding="UTF-8" +cat: + +@legs: "4" + legs: "7" +``` + +## Parse xml: attributes with content +Content is added as a field, using the default content name of `+content`. Use `--xml-content-name` to set your own. + +Given a sample.xml file of: +```xml + +meow +``` +then +```bash +yq -p=xml '.' sample.xml +``` +will output +```yaml ++p_xml: version="1.0" encoding="UTF-8" +cat: + +content: meow + +@legs: "4" +``` + +## Parse xml: custom dtd +DTD entities are processed as directives. + +Given a sample.xml file of: +```xml + + + + +]> + + &writer;©right; + +``` +then +```bash +yq -p=xml -o=xml '.' sample.xml +``` +will output +```xml + + + +]> + + &writer;&copyright; + +``` + +## Parse xml: skip custom dtd +DTDs are directives, skip over directives to skip DTDs. + +Given a sample.xml file of: +```xml + + + + +]> + + &writer;©right; + +``` +then +```bash +yq -p=xml -o=xml --xml-skip-directives '.' sample.xml +``` +will output +```xml + + + &writer;&copyright; + +``` + +## Parse xml: with comments +A best attempt is made to preserve comments. + +Given a sample.xml file of: +```xml + + + + + 3 + + + + z + + + + + + + +``` +then +```bash +yq -p=xml '.' sample.xml +``` +will output +```yaml +# before cat +cat: + # in cat before + x: "3" # multi + # line comment + # for x + # before y + + y: + # in y before + # in d before + d: z # in d after + # in y after + # in_cat_after +# after cat +``` + +## Parse xml: keep attribute namespace +Defaults to true + +Given a sample.xml file of: +```xml + + + +``` +then +```bash +yq -p=xml -o=xml --xml-keep-namespace=false '.' sample.xml +``` +will output +```xml + + +``` + +instead of +```xml + + +``` + +## Parse xml: keep raw attribute namespace +Defaults to true + +Given a sample.xml file of: +```xml + + + +``` +then +```bash +yq -p=xml -o=xml --xml-raw-token=false '.' sample.xml +``` +will output +```xml + + +``` + +instead of +```xml + + +``` + +## Encode xml: simple +Given a sample.yml file of: +```yaml +cat: purrs +``` +then +```bash +yq -o=xml '.' sample.yml +``` +will output +```xml +purrs +``` + +## Encode xml: array +Given a sample.yml file of: +```yaml +pets: + cat: + - purrs + - meows +``` +then +```bash +yq -o=xml '.' sample.yml +``` +will output +```xml + + purrs + meows + +``` + +## Encode xml: attributes +Fields with the matching xml-attribute-prefix are assumed to be attributes. + +Given a sample.yml file of: +```yaml +cat: + +@name: tiger + meows: true + +``` +then +```bash +yq -o=xml '.' sample.yml +``` +will output +```xml + + true + +``` + +## Encode xml: attributes with content +Fields with the matching xml-content-name is assumed to be content. + +Given a sample.yml file of: +```yaml +cat: + +@name: tiger + +content: cool + +``` +then +```bash +yq -o=xml '.' sample.yml +``` +will output +```xml +cool +``` + +## Encode xml: comments +A best attempt is made to copy comments to xml. + +Given a sample.yml file of: +```yaml +# header comment +# above_cat +cat: # inline_cat + # above_array + array: # inline_array + - val1 # inline_val1 + # above_val2 + - val2 # inline_val2 +# below_cat + +``` +then +```bash +yq -o=xml '.' sample.yml +``` +will output +```xml + + val1 + val2 + +``` + +## Encode: doctype and xml declaration +Use the special xml names to add/modify proc instructions and directives. + +Given a sample.yml file of: +```yaml ++p_xml: version="1.0" ++directive: 'DOCTYPE config SYSTEM "/etc/iwatch/iwatch.dtd" ' +apple: + +p_coolioo: version="1.0" + +directive: 'CATYPE meow purr puss ' + b: things + +``` +then +```bash +yq -o=xml '.' sample.yml +``` +will output +```xml + + + + things + +``` + +## Round trip: with comments +A best effort is made, but comment positions and white space are not preserved perfectly. + +Given a sample.xml file of: +```xml + + + + + 3 + + + + z + + + + + + + +``` +then +```bash +yq -p=xml -o=xml '.' sample.xml +``` +will output +```xml + + 3 + + z + + +``` + +## Roundtrip: with doctype and declaration +yq parses XML proc instructions and directives into nodes. +Unfortunately the underlying XML parser loses whitespace information. + +Given a sample.xml file of: +```xml + + + + + + things + + +``` +then +```bash +yq -p=xml -o=xml '.' sample.xml +``` +will output +```xml + + + + things + +``` + diff --git a/external/yq/pkg/yqlib/encoder.go b/external/yq/pkg/yqlib/encoder.go new file mode 100755 index 0000000..e9fae6a --- /dev/null +++ b/external/yq/pkg/yqlib/encoder.go @@ -0,0 +1,178 @@ +package yqlib + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" + + yaml "gopkg.in/yaml.v3" +) + +type Encoder interface { + Encode(writer io.Writer, node *yaml.Node) error + PrintDocumentSeparator(writer io.Writer) error + PrintLeadingContent(writer io.Writer, content string) error + CanHandleAliases() bool +} + +// orderedMap allows to marshal and unmarshal JSON and YAML values keeping the +// order of keys and values in a map or an object. +type orderedMap struct { + // if this is an object, kv != nil. If this is not an object, kv == nil. + kv []orderedMapKV + altVal interface{} +} + +type orderedMapKV struct { + K string + V orderedMap +} + +func (o *orderedMap) UnmarshalJSON(data []byte) error { + switch data[0] { + case '{': + // initialise so that even if the object is empty it is not nil + o.kv = []orderedMapKV{} + + // create decoder + dec := json.NewDecoder(bytes.NewReader(data)) + _, err := dec.Token() // open object + if err != nil { + return err + } + + // cycle through k/v + var tok json.Token + for tok, err = dec.Token(); err == nil; tok, err = dec.Token() { + // we can expect two types: string or Delim. Delim automatically means + // that it is the closing bracket of the object, whereas string means + // that there is another key. + if _, ok := tok.(json.Delim); ok { + break + } + kv := orderedMapKV{ + K: tok.(string), + } + if err := dec.Decode(&kv.V); err != nil { + return err + } + o.kv = append(o.kv, kv) + } + // unexpected error + if err != nil && !errors.Is(err, io.EOF) { + return err + } + return nil + case '[': + var res []*orderedMap + if err := json.Unmarshal(data, &res); err != nil { + return err + } + o.altVal = res + o.kv = nil + return nil + } + + return json.Unmarshal(data, &o.altVal) +} + +func (o orderedMap) MarshalJSON() ([]byte, error) { + buf := new(bytes.Buffer) + enc := json.NewEncoder(buf) + enc.SetEscapeHTML(false) // do not escape html chars e.g. &, <, > + if o.kv == nil { + if err := enc.Encode(o.altVal); err != nil { + return nil, err + } + return buf.Bytes(), nil + } + buf.WriteByte('{') + for idx, el := range o.kv { + if err := enc.Encode(el.K); err != nil { + return nil, err + } + buf.WriteByte(':') + if err := enc.Encode(el.V); err != nil { + return nil, err + } + if idx != len(o.kv)-1 { + buf.WriteByte(',') + } + } + buf.WriteByte('}') + return buf.Bytes(), nil +} + +func (o *orderedMap) UnmarshalYAML(node *yaml.Node) error { + switch node.Kind { + case yaml.DocumentNode: + if len(node.Content) == 0 { + return nil + } + return o.UnmarshalYAML(node.Content[0]) + case yaml.AliasNode: + return o.UnmarshalYAML(node.Alias) + case yaml.ScalarNode: + return node.Decode(&o.altVal) + case yaml.MappingNode: + // set kv to non-nil + o.kv = []orderedMapKV{} + for i := 0; i < len(node.Content); i += 2 { + var key string + var val orderedMap + if err := node.Content[i].Decode(&key); err != nil { + return err + } + if err := node.Content[i+1].Decode(&val); err != nil { + return err + } + o.kv = append(o.kv, orderedMapKV{ + K: key, + V: val, + }) + } + return nil + case yaml.SequenceNode: + // note that this has to be a pointer, so that nulls can be represented. + var res []*orderedMap + if err := node.Decode(&res); err != nil { + return err + } + o.altVal = res + o.kv = nil + return nil + case 0: + // null + o.kv = nil + o.altVal = nil + return nil + default: + return fmt.Errorf("orderedMap: invalid yaml node") + } +} + +func (o *orderedMap) MarshalYAML() (interface{}, error) { + // fast path: kv is nil, use altVal + if o.kv == nil { + return o.altVal, nil + } + content := make([]*yaml.Node, 0, len(o.kv)*2) + for _, val := range o.kv { + n := new(yaml.Node) + if err := n.Encode(val.V); err != nil { + return nil, err + } + content = append(content, &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: val.K, + }, n) + } + return &yaml.Node{ + Kind: yaml.MappingNode, + Tag: "!!map", + Content: content, + }, nil +} diff --git a/external/yq/pkg/yqlib/encoder_base64.go b/external/yq/pkg/yqlib/encoder_base64.go new file mode 100755 index 0000000..635d27f --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_base64.go @@ -0,0 +1,38 @@ +package yqlib + +import ( + "encoding/base64" + "fmt" + "io" + + yaml "gopkg.in/yaml.v3" +) + +type base64Encoder struct { + encoding base64.Encoding +} + +func NewBase64Encoder() Encoder { + return &base64Encoder{encoding: *base64.StdEncoding} +} + +func (e *base64Encoder) CanHandleAliases() bool { + return false +} + +func (e *base64Encoder) PrintDocumentSeparator(writer io.Writer) error { + return nil +} + +func (e *base64Encoder) PrintLeadingContent(writer io.Writer, content string) error { + return nil +} + +func (e *base64Encoder) Encode(writer io.Writer, originalNode *yaml.Node) error { + node := unwrapDoc(originalNode) + if guessTagFromCustomType(node) != "!!str" { + return fmt.Errorf("cannot encode %v as base64, can only operate on strings. Please first pipe through another encoding operator to convert the value to a string", node.Tag) + } + _, err := writer.Write([]byte(e.encoding.EncodeToString([]byte(originalNode.Value)))) + return err +} diff --git a/external/yq/pkg/yqlib/encoder_csv.go b/external/yq/pkg/yqlib/encoder_csv.go new file mode 100755 index 0000000..88e2b0d --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_csv.go @@ -0,0 +1,126 @@ +package yqlib + +import ( + "encoding/csv" + "fmt" + "io" + + yaml "gopkg.in/yaml.v3" +) + +type csvEncoder struct { + separator rune +} + +func NewCsvEncoder(separator rune) Encoder { + return &csvEncoder{separator: separator} +} + +func (e *csvEncoder) CanHandleAliases() bool { + return false +} + +func (e *csvEncoder) PrintDocumentSeparator(writer io.Writer) error { + return nil +} + +func (e *csvEncoder) PrintLeadingContent(writer io.Writer, content string) error { + return nil +} + +func (e *csvEncoder) encodeRow(csvWriter *csv.Writer, contents []*yaml.Node) error { + stringValues := make([]string, len(contents)) + + for i, child := range contents { + + if child.Kind != yaml.ScalarNode { + return fmt.Errorf("csv encoding only works for arrays of scalars (string/numbers/booleans), child[%v] is a %v", i, child.Tag) + } + stringValues[i] = child.Value + } + return csvWriter.Write(stringValues) +} + +func (e *csvEncoder) encodeArrays(csvWriter *csv.Writer, content []*yaml.Node) error { + for i, child := range content { + + if child.Kind != yaml.SequenceNode { + return fmt.Errorf("csv encoding only works for arrays of scalars (string/numbers/booleans), child[%v] is a %v", i, child.Tag) + } + err := e.encodeRow(csvWriter, child.Content) + if err != nil { + return err + } + } + return nil +} + +func (e *csvEncoder) extractHeader(child *yaml.Node) ([]*yaml.Node, error) { + if child.Kind != yaml.MappingNode { + return nil, fmt.Errorf("csv object encoding only works for arrays of flat objects (string key => string/numbers/boolean value), child[0] is a %v", child.Tag) + } + mapKeys := getMapKeys(child) + return mapKeys.Content, nil +} + +func (e *csvEncoder) createChildRow(child *yaml.Node, headers []*yaml.Node) []*yaml.Node { + childRow := make([]*yaml.Node, 0) + for _, header := range headers { + keyIndex := findKeyInMap(child, header) + value := createScalarNode(nil, "") + if keyIndex != -1 { + value = child.Content[keyIndex+1] + } + childRow = append(childRow, value) + } + return childRow + +} + +func (e *csvEncoder) encodeObjects(csvWriter *csv.Writer, content []*yaml.Node) error { + headers, err := e.extractHeader(content[0]) + if err != nil { + return nil + } + + err = e.encodeRow(csvWriter, headers) + if err != nil { + return nil + } + + for i, child := range content { + if child.Kind != yaml.MappingNode { + return fmt.Errorf("csv object encoding only works for arrays of flat objects (string key => string/numbers/boolean value), child[%v] is a %v", i, child.Tag) + } + row := e.createChildRow(child, headers) + err = e.encodeRow(csvWriter, row) + if err != nil { + return err + } + + } + return nil +} + +func (e *csvEncoder) Encode(writer io.Writer, originalNode *yaml.Node) error { + csvWriter := csv.NewWriter(writer) + csvWriter.Comma = e.separator + + // node must be a sequence + node := unwrapDoc(originalNode) + if node.Kind != yaml.SequenceNode { + return fmt.Errorf("csv encoding only works for arrays, got: %v", node.Tag) + } else if len(node.Content) == 0 { + return nil + } + if node.Content[0].Kind == yaml.ScalarNode { + return e.encodeRow(csvWriter, node.Content) + } + + if node.Content[0].Kind == yaml.MappingNode { + return e.encodeObjects(csvWriter, node.Content) + } + + return e.encodeArrays(csvWriter, node.Content) + +} diff --git a/external/yq/pkg/yqlib/encoder_json.go b/external/yq/pkg/yqlib/encoder_json.go new file mode 100755 index 0000000..9f5b71a --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_json.go @@ -0,0 +1,85 @@ +package yqlib + +import ( + "bytes" + "io" + + "github.com/goccy/go-json" + yaml "gopkg.in/yaml.v3" +) + +type jsonEncoder struct { + indentString string + colorise bool + UnwrapScalar bool +} + +func mapKeysToStrings(node *yaml.Node) { + + if node.Kind == yaml.MappingNode { + for index, child := range node.Content { + if index%2 == 0 { // its a map key + child.Tag = "!!str" + } + } + } + + for _, child := range node.Content { + mapKeysToStrings(child) + } +} + +func NewJSONEncoder(indent int, colorise bool, unwrapScalar bool) Encoder { + var indentString = "" + + for index := 0; index < indent; index++ { + indentString = indentString + " " + } + + return &jsonEncoder{indentString, colorise, unwrapScalar} +} + +func (je *jsonEncoder) CanHandleAliases() bool { + return false +} + +func (je *jsonEncoder) PrintDocumentSeparator(writer io.Writer) error { + return nil +} + +func (je *jsonEncoder) PrintLeadingContent(writer io.Writer, content string) error { + return nil +} + +func (je *jsonEncoder) Encode(writer io.Writer, node *yaml.Node) error { + + if node.Kind == yaml.ScalarNode && je.UnwrapScalar { + return writeString(writer, node.Value+"\n") + } + + destination := writer + tempBuffer := bytes.NewBuffer(nil) + if je.colorise { + destination = tempBuffer + } + + var encoder = json.NewEncoder(destination) + encoder.SetEscapeHTML(false) // do not escape html chars e.g. &, <, > + encoder.SetIndent("", je.indentString) + + var dataBucket orderedMap + // firstly, convert all map keys to strings + mapKeysToStrings(node) + errorDecoding := node.Decode(&dataBucket) + if errorDecoding != nil { + return errorDecoding + } + err := encoder.Encode(dataBucket) + if err != nil { + return err + } + if je.colorise { + return colorizeAndPrint(tempBuffer.Bytes(), writer) + } + return nil +} diff --git a/external/yq/pkg/yqlib/encoder_properties.go b/external/yq/pkg/yqlib/encoder_properties.go new file mode 100755 index 0000000..e62b3f1 --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_properties.go @@ -0,0 +1,138 @@ +package yqlib + +import ( + "bufio" + "errors" + "fmt" + "io" + "strings" + + "github.com/magiconair/properties" + yaml "gopkg.in/yaml.v3" +) + +type propertiesEncoder struct { + unwrapScalar bool +} + +func NewPropertiesEncoder(unwrapScalar bool) Encoder { + return &propertiesEncoder{ + unwrapScalar: unwrapScalar, + } +} + +func (pe *propertiesEncoder) CanHandleAliases() bool { + return false +} + +func (pe *propertiesEncoder) PrintDocumentSeparator(writer io.Writer) error { + return nil +} + +func (pe *propertiesEncoder) PrintLeadingContent(writer io.Writer, content string) error { + reader := bufio.NewReader(strings.NewReader(content)) + for { + + readline, errReading := reader.ReadString('\n') + if errReading != nil && !errors.Is(errReading, io.EOF) { + return errReading + } + if strings.Contains(readline, "$yqDocSeperator$") { + + if err := pe.PrintDocumentSeparator(writer); err != nil { + return err + } + + } else { + if err := writeString(writer, readline); err != nil { + return err + } + } + + if errors.Is(errReading, io.EOF) { + if readline != "" { + // the last comment we read didn't have a new line, put one in + if err := writeString(writer, "\n"); err != nil { + return err + } + } + break + } + } + return nil +} + +func (pe *propertiesEncoder) Encode(writer io.Writer, node *yaml.Node) error { + mapKeysToStrings(node) + p := properties.NewProperties() + err := pe.doEncode(p, node, "", nil) + if err != nil { + return err + } + + _, err = p.WriteComment(writer, "#", properties.UTF8) + return err +} + +func (pe *propertiesEncoder) doEncode(p *properties.Properties, node *yaml.Node, path string, keyNode *yaml.Node) error { + + comments := "" + if keyNode != nil { + // include the key node comments if present + comments = headAndLineComment(keyNode) + } + comments = comments + headAndLineComment(node) + commentsWithSpaces := strings.ReplaceAll(comments, "\n", "\n ") + p.SetComments(path, strings.Split(commentsWithSpaces, "\n")) + + switch node.Kind { + case yaml.ScalarNode: + var nodeValue string + if pe.unwrapScalar || !strings.Contains(node.Value, " ") { + nodeValue = node.Value + } else { + nodeValue = fmt.Sprintf("%q", node.Value) + } + _, _, err := p.Set(path, nodeValue) + return err + case yaml.DocumentNode: + return pe.doEncode(p, node.Content[0], path, node) + case yaml.SequenceNode: + return pe.encodeArray(p, node.Content, path) + case yaml.MappingNode: + return pe.encodeMap(p, node.Content, path) + case yaml.AliasNode: + return pe.doEncode(p, node.Alias, path, nil) + default: + return fmt.Errorf("Unsupported node %v", node.Tag) + } +} + +func (pe *propertiesEncoder) appendPath(path string, key interface{}) string { + if path == "" { + return fmt.Sprintf("%v", key) + } + return fmt.Sprintf("%v.%v", path, key) +} + +func (pe *propertiesEncoder) encodeArray(p *properties.Properties, kids []*yaml.Node, path string) error { + for index, child := range kids { + err := pe.doEncode(p, child, pe.appendPath(path, index), nil) + if err != nil { + return err + } + } + return nil +} + +func (pe *propertiesEncoder) encodeMap(p *properties.Properties, kids []*yaml.Node, path string) error { + for index := 0; index < len(kids); index = index + 2 { + key := kids[index] + value := kids[index+1] + err := pe.doEncode(p, value, pe.appendPath(path, key.Value), key) + if err != nil { + return err + } + } + return nil +} diff --git a/external/yq/pkg/yqlib/encoder_properties_test.go b/external/yq/pkg/yqlib/encoder_properties_test.go new file mode 100755 index 0000000..d1ed5cf --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_properties_test.go @@ -0,0 +1,127 @@ +package yqlib + +import ( + "bufio" + "bytes" + "strings" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +func yamlToProps(sampleYaml string, unwrapScalar bool) string { + var output bytes.Buffer + writer := bufio.NewWriter(&output) + + var propsEncoder = NewPropertiesEncoder(unwrapScalar) + inputs, err := readDocuments(strings.NewReader(sampleYaml), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + node := inputs.Front().Value.(*CandidateNode).Node + err = propsEncoder.Encode(writer, node) + if err != nil { + panic(err) + } + writer.Flush() + + return strings.TrimSuffix(output.String(), "\n") +} + +func TestPropertiesEncoderSimple_Unwrapped(t *testing.T) { + var sampleYaml = `a: 'bob cool'` + + var expectedProps = `a = bob cool` + var actualProps = yamlToProps(sampleYaml, true) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderSimple_Wrapped(t *testing.T) { + var sampleYaml = `a: 'bob cool'` + + var expectedProps = `a = "bob cool"` + var actualProps = yamlToProps(sampleYaml, false) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderSimpleWithComments_Unwrapped(t *testing.T) { + var sampleYaml = `a: 'bob cool' # line` + + var expectedProps = `# line +a = bob cool` + var actualProps = yamlToProps(sampleYaml, true) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderSimpleWithComments_Wrapped(t *testing.T) { + var sampleYaml = `a: 'bob cool' # line` + + var expectedProps = `# line +a = "bob cool"` + var actualProps = yamlToProps(sampleYaml, false) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderDeep_Unwrapped(t *testing.T) { + var sampleYaml = `a: + b: "bob cool" +` + + var expectedProps = `a.b = bob cool` + var actualProps = yamlToProps(sampleYaml, true) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderDeep_Wrapped(t *testing.T) { + var sampleYaml = `a: + b: "bob cool" +` + + var expectedProps = `a.b = "bob cool"` + var actualProps = yamlToProps(sampleYaml, false) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderDeepWithComments_Unwrapped(t *testing.T) { + var sampleYaml = `a: # a thing + b: "bob cool" # b thing +` + + var expectedProps = `# b thing +a.b = bob cool` + var actualProps = yamlToProps(sampleYaml, true) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderDeepWithComments_Wrapped(t *testing.T) { + var sampleYaml = `a: # a thing + b: "bob cool" # b thing +` + + var expectedProps = `# b thing +a.b = "bob cool"` + var actualProps = yamlToProps(sampleYaml, false) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderArray_Unwrapped(t *testing.T) { + var sampleYaml = `a: + b: [{c: dog}, {c: cat}] +` + + var expectedProps = `a.b.0.c = dog +a.b.1.c = cat` + var actualProps = yamlToProps(sampleYaml, true) + test.AssertResult(t, expectedProps, actualProps) +} + +func TestPropertiesEncoderArray_Wrapped(t *testing.T) { + var sampleYaml = `a: + b: [{c: dog named jim}, {c: cat named jam}] +` + + var expectedProps = `a.b.0.c = "dog named jim" +a.b.1.c = "cat named jam"` + var actualProps = yamlToProps(sampleYaml, false) + test.AssertResult(t, expectedProps, actualProps) +} diff --git a/external/yq/pkg/yqlib/encoder_test.go b/external/yq/pkg/yqlib/encoder_test.go new file mode 100755 index 0000000..a17c51a --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_test.go @@ -0,0 +1,74 @@ +package yqlib + +import ( + "bufio" + "bytes" + "strings" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +func yamlToJSON(sampleYaml string, indent int) string { + var output bytes.Buffer + writer := bufio.NewWriter(&output) + + var jsonEncoder = NewJSONEncoder(indent, false, false) + inputs, err := readDocuments(strings.NewReader(sampleYaml), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + node := inputs.Front().Value.(*CandidateNode).Node + err = jsonEncoder.Encode(writer, node) + if err != nil { + panic(err) + } + writer.Flush() + + return strings.TrimSuffix(output.String(), "\n") +} + +func TestJSONEncoderPreservesObjectOrder(t *testing.T) { + var sampleYaml = `zabbix: winner +apple: great +banana: +- {cobra: kai, angus: bob} +` + var expectedJSON = `{ + "zabbix": "winner", + "apple": "great", + "banana": [ + { + "cobra": "kai", + "angus": "bob" + } + ] +}` + var actualJSON = yamlToJSON(sampleYaml, 2) + test.AssertResult(t, expectedJSON, actualJSON) +} + +func TestJsonNullInArray(t *testing.T) { + var sampleYaml = `[null]` + var actualJSON = yamlToJSON(sampleYaml, 0) + test.AssertResult(t, sampleYaml, actualJSON) +} + +func TestJsonNull(t *testing.T) { + var sampleYaml = `null` + var actualJSON = yamlToJSON(sampleYaml, 0) + test.AssertResult(t, sampleYaml, actualJSON) +} + +func TestJsonNullInObject(t *testing.T) { + var sampleYaml = `{x: null}` + var actualJSON = yamlToJSON(sampleYaml, 0) + test.AssertResult(t, `{"x":null}`, actualJSON) +} + +func TestJsonEncoderDoesNotEscapeHTMLChars(t *testing.T) { + var sampleYaml = `build: "( ./lint && ./format && ./compile ) < src.code"` + var expectedJSON = `{"build":"( ./lint && ./format && ./compile ) < src.code"}` + var actualJSON = yamlToJSON(sampleYaml, 0) + test.AssertResult(t, expectedJSON, actualJSON) +} diff --git a/external/yq/pkg/yqlib/encoder_xml.go b/external/yq/pkg/yqlib/encoder_xml.go new file mode 100755 index 0000000..1d2e779 --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_xml.go @@ -0,0 +1,317 @@ +package yqlib + +import ( + "encoding/xml" + "fmt" + "io" + "regexp" + "strings" + + yaml "gopkg.in/yaml.v3" +) + +type xmlEncoder struct { + indentString string + writer io.Writer + prefs XmlPreferences + leadingContent string +} + +var commentPrefix = regexp.MustCompile(`(^|\n)\s*#`) + +func NewXMLEncoder(indent int, prefs XmlPreferences) Encoder { + var indentString = "" + + for index := 0; index < indent; index++ { + indentString = indentString + " " + } + return &xmlEncoder{indentString, nil, prefs, ""} +} + +func (e *xmlEncoder) CanHandleAliases() bool { + return false +} + +func (e *xmlEncoder) PrintDocumentSeparator(writer io.Writer) error { + return nil +} + +func (e *xmlEncoder) PrintLeadingContent(writer io.Writer, content string) error { + e.leadingContent = commentPrefix.ReplaceAllString(content, "\n") + return nil +} + +func (e *xmlEncoder) Encode(writer io.Writer, node *yaml.Node) error { + encoder := xml.NewEncoder(writer) + // hack so we can manually add newlines to procInst and directives + e.writer = writer + encoder.Indent("", e.indentString) + + if e.leadingContent != "" { + err := e.encodeComment(encoder, e.leadingContent) + if err != nil { + return err + } + } + + switch node.Kind { + case yaml.MappingNode: + err := e.encodeTopLevelMap(encoder, node) + if err != nil { + return err + } + case yaml.DocumentNode: + err := e.encodeComment(encoder, headAndLineComment(node)) + if err != nil { + return err + } + unwrappedNode := unwrapDoc(node) + if unwrappedNode.Kind != yaml.MappingNode { + return fmt.Errorf("cannot encode %v to XML - only maps can be encoded", unwrappedNode.Tag) + } + err = e.encodeTopLevelMap(encoder, unwrappedNode) + if err != nil { + return err + } + err = e.encodeComment(encoder, footComment(node)) + if err != nil { + return err + } + case yaml.ScalarNode: + var charData xml.CharData = []byte(node.Value) + err := encoder.EncodeToken(charData) + if err != nil { + return err + } + return encoder.Flush() + default: + return fmt.Errorf("unsupported type %v", node.Tag) + } + var charData xml.CharData = []byte("\n") + return encoder.EncodeToken(charData) + +} + +func (e *xmlEncoder) encodeTopLevelMap(encoder *xml.Encoder, node *yaml.Node) error { + // make sure processing instructions are encoded first + for i := 0; i < len(node.Content); i += 2 { + key := node.Content[i] + value := node.Content[i+1] + + if key.Value == (e.prefs.ProcInstPrefix + "xml") { + name := strings.Replace(key.Value, e.prefs.ProcInstPrefix, "", 1) + procInst := xml.ProcInst{Target: name, Inst: []byte(value.Value)} + if err := encoder.EncodeToken(procInst); err != nil { + return err + } + if _, err := e.writer.Write([]byte("\n")); err != nil { + log.Warning("Unable to write newline, skipping: %w", err) + } + } + } + + err := e.encodeComment(encoder, headAndLineComment(node)) + if err != nil { + return err + } + for i := 0; i < len(node.Content); i += 2 { + key := node.Content[i] + value := node.Content[i+1] + + start := xml.StartElement{Name: xml.Name{Local: key.Value}} + log.Debugf("comments of key %v", key.Value) + err := e.encodeComment(encoder, headAndLineComment(key)) + if err != nil { + return err + } + + if key.Value == (e.prefs.ProcInstPrefix + "xml") { + // dont double process these. + } else if strings.HasPrefix(key.Value, e.prefs.ProcInstPrefix) { + name := strings.Replace(key.Value, e.prefs.ProcInstPrefix, "", 1) + procInst := xml.ProcInst{Target: name, Inst: []byte(value.Value)} + if err := encoder.EncodeToken(procInst); err != nil { + return err + } + if _, err := e.writer.Write([]byte("\n")); err != nil { + log.Warning("Unable to write newline, skipping: %w", err) + } + } else if key.Value == e.prefs.DirectiveName { + var directive xml.Directive = []byte(value.Value) + if err := encoder.EncodeToken(directive); err != nil { + return err + } + if _, err := e.writer.Write([]byte("\n")); err != nil { + log.Warning("Unable to write newline, skipping: %w", err) + } + } else { + + log.Debugf("recursing") + + err = e.doEncode(encoder, value, start) + if err != nil { + return err + } + } + err = e.encodeComment(encoder, footComment(key)) + if err != nil { + return err + } + } + return e.encodeComment(encoder, footComment(node)) +} + +func (e *xmlEncoder) encodeStart(encoder *xml.Encoder, node *yaml.Node, start xml.StartElement) error { + err := encoder.EncodeToken(start) + if err != nil { + return err + } + return e.encodeComment(encoder, headComment(node)) +} + +func (e *xmlEncoder) encodeEnd(encoder *xml.Encoder, node *yaml.Node, start xml.StartElement) error { + err := encoder.EncodeToken(start.End()) + if err != nil { + return err + } + return e.encodeComment(encoder, footComment(node)) +} + +func (e *xmlEncoder) doEncode(encoder *xml.Encoder, node *yaml.Node, start xml.StartElement) error { + switch node.Kind { + case yaml.MappingNode: + return e.encodeMap(encoder, node, start) + case yaml.SequenceNode: + return e.encodeArray(encoder, node, start) + case yaml.ScalarNode: + err := e.encodeStart(encoder, node, start) + if err != nil { + return err + } + + var charData xml.CharData = []byte(node.Value) + err = encoder.EncodeToken(charData) + if err != nil { + return err + } + + if err = e.encodeComment(encoder, lineComment(node)); err != nil { + return err + } + + return e.encodeEnd(encoder, node, start) + } + return fmt.Errorf("unsupported type %v", node.Tag) +} + +func (e *xmlEncoder) encodeComment(encoder *xml.Encoder, commentStr string) error { + if commentStr != "" { + log.Debugf("encoding comment %v", commentStr) + if !strings.HasSuffix(commentStr, " ") { + commentStr = commentStr + " " + } + + var comment xml.Comment = []byte(commentStr) + err := encoder.EncodeToken(comment) + if err != nil { + return err + } + } + return nil +} + +func (e *xmlEncoder) encodeArray(encoder *xml.Encoder, node *yaml.Node, start xml.StartElement) error { + + if err := e.encodeComment(encoder, headAndLineComment(node)); err != nil { + return err + } + + for i := 0; i < len(node.Content); i++ { + value := node.Content[i] + if err := e.doEncode(encoder, value, start.Copy()); err != nil { + return err + } + } + return e.encodeComment(encoder, footComment(node)) +} + +func (e *xmlEncoder) isAttribute(name string) bool { + return strings.HasPrefix(name, e.prefs.AttributePrefix) && + name != e.prefs.ContentName && + name != e.prefs.DirectiveName && + !strings.HasPrefix(name, e.prefs.ProcInstPrefix) +} + +func (e *xmlEncoder) encodeMap(encoder *xml.Encoder, node *yaml.Node, start xml.StartElement) error { + log.Debug("its a map") + + //first find all the attributes and put them on the start token + for i := 0; i < len(node.Content); i += 2 { + key := node.Content[i] + value := node.Content[i+1] + + if e.isAttribute(key.Value) { + if value.Kind == yaml.ScalarNode { + attributeName := strings.Replace(key.Value, e.prefs.AttributePrefix, "", 1) + start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: attributeName}, Value: value.Value}) + } else { + return fmt.Errorf("cannot use %v as attribute, only scalars are supported", value.Tag) + } + } + } + + err := e.encodeStart(encoder, node, start) + if err != nil { + return err + } + + //now we encode non attribute tokens + for i := 0; i < len(node.Content); i += 2 { + key := node.Content[i] + value := node.Content[i+1] + + err := e.encodeComment(encoder, headAndLineComment(key)) + if err != nil { + return err + } + if strings.HasPrefix(key.Value, e.prefs.ProcInstPrefix) { + name := strings.Replace(key.Value, e.prefs.ProcInstPrefix, "", 1) + procInst := xml.ProcInst{Target: name, Inst: []byte(value.Value)} + if err := encoder.EncodeToken(procInst); err != nil { + return err + } + } else if key.Value == e.prefs.DirectiveName { + var directive xml.Directive = []byte(value.Value) + if err := encoder.EncodeToken(directive); err != nil { + return err + } + } else if key.Value == e.prefs.ContentName { + // directly encode the contents + err = e.encodeComment(encoder, headAndLineComment(value)) + if err != nil { + return err + } + var charData xml.CharData = []byte(value.Value) + err = encoder.EncodeToken(charData) + if err != nil { + return err + } + err = e.encodeComment(encoder, footComment(value)) + if err != nil { + return err + } + } else if !e.isAttribute(key.Value) { + start := xml.StartElement{Name: xml.Name{Local: key.Value}} + err := e.doEncode(encoder, value, start) + if err != nil { + return err + } + } + err = e.encodeComment(encoder, footComment(key)) + if err != nil { + return err + } + } + + return e.encodeEnd(encoder, node, start) +} diff --git a/external/yq/pkg/yqlib/encoder_yaml.go b/external/yq/pkg/yqlib/encoder_yaml.go new file mode 100755 index 0000000..ebf7ece --- /dev/null +++ b/external/yq/pkg/yqlib/encoder_yaml.go @@ -0,0 +1,100 @@ +package yqlib + +import ( + "bufio" + "bytes" + "errors" + "io" + "strings" + + yaml "gopkg.in/yaml.v3" +) + +type yamlEncoder struct { + indent int + colorise bool + prefs YamlPreferences +} + +func NewYamlEncoder(indent int, colorise bool, prefs YamlPreferences) Encoder { + if indent < 0 { + indent = 0 + } + return &yamlEncoder{indent, colorise, prefs} +} + +func (ye *yamlEncoder) CanHandleAliases() bool { + return true +} + +func (ye *yamlEncoder) PrintDocumentSeparator(writer io.Writer) error { + if ye.prefs.PrintDocSeparators { + log.Debug("-- writing doc sep") + if err := writeString(writer, "---\n"); err != nil { + return err + } + } + return nil +} + +func (ye *yamlEncoder) PrintLeadingContent(writer io.Writer, content string) error { + // log.Debug("headcommentwas [%v]", content) + reader := bufio.NewReader(strings.NewReader(content)) + + for { + + readline, errReading := reader.ReadString('\n') + if errReading != nil && !errors.Is(errReading, io.EOF) { + return errReading + } + if strings.Contains(readline, "$yqDocSeperator$") { + + if err := ye.PrintDocumentSeparator(writer); err != nil { + return err + } + + } else { + if err := writeString(writer, readline); err != nil { + return err + } + } + + if errors.Is(errReading, io.EOF) { + if readline != "" { + // the last comment we read didn't have a new line, put one in + if err := writeString(writer, "\n"); err != nil { + return err + } + } + break + } + } + + return nil +} + +func (ye *yamlEncoder) Encode(writer io.Writer, node *yaml.Node) error { + + if node.Kind == yaml.ScalarNode && ye.prefs.UnwrapScalar { + return writeString(writer, node.Value+"\n") + } + + destination := writer + tempBuffer := bytes.NewBuffer(nil) + if ye.colorise { + destination = tempBuffer + } + + var encoder = yaml.NewEncoder(destination) + + encoder.SetIndent(ye.indent) + + if err := encoder.Encode(node); err != nil { + return err + } + + if ye.colorise { + return colorizeAndPrint(tempBuffer.Bytes(), writer) + } + return nil +} diff --git a/external/yq/pkg/yqlib/expression_parser.go b/external/yq/pkg/yqlib/expression_parser.go new file mode 100755 index 0000000..4722629 --- /dev/null +++ b/external/yq/pkg/yqlib/expression_parser.go @@ -0,0 +1,76 @@ +package yqlib + +import ( + "fmt" + "strings" +) + +type ExpressionNode struct { + Operation *Operation + LHS *ExpressionNode + RHS *ExpressionNode +} + +type ExpressionParserInterface interface { + ParseExpression(expression string) (*ExpressionNode, error) +} + +type expressionParserImpl struct { + pathTokeniser expressionTokeniser + pathPostFixer expressionPostFixer +} + +func newExpressionParser() ExpressionParserInterface { + return &expressionParserImpl{newParticipleLexer(), newExpressionPostFixer()} +} + +func (p *expressionParserImpl) ParseExpression(expression string) (*ExpressionNode, error) { + log.Debug("Parsing expression: [%v]", expression) + tokens, err := p.pathTokeniser.Tokenise(expression) + if err != nil { + return nil, err + } + var Operations []*Operation + Operations, err = p.pathPostFixer.ConvertToPostfix(tokens) + if err != nil { + return nil, err + } + return p.createExpressionTree(Operations) +} + +func (p *expressionParserImpl) createExpressionTree(postFixPath []*Operation) (*ExpressionNode, error) { + var stack = make([]*ExpressionNode, 0) + + if len(postFixPath) == 0 { + return nil, nil + } + + for _, Operation := range postFixPath { + var newNode = ExpressionNode{Operation: Operation} + log.Debugf("pathTree %v ", Operation.toString()) + if Operation.OperationType.NumArgs > 0 { + numArgs := Operation.OperationType.NumArgs + if numArgs == 1 { + if len(stack) < 1 { + return nil, fmt.Errorf("'%v' expects 1 arg but received none", strings.TrimSpace(Operation.StringValue)) + } + remaining, rhs := stack[:len(stack)-1], stack[len(stack)-1] + newNode.RHS = rhs + stack = remaining + } else if numArgs == 2 { + if len(stack) < 2 { + return nil, fmt.Errorf("'%v' expects 2 args but there is %v", strings.TrimSpace(Operation.StringValue), len(stack)) + } + remaining, lhs, rhs := stack[:len(stack)-2], stack[len(stack)-2], stack[len(stack)-1] + newNode.LHS = lhs + newNode.RHS = rhs + stack = remaining + } + } + stack = append(stack, &newNode) + } + if len(stack) != 1 { + return nil, fmt.Errorf("bad expression, please check expression syntax") + } + return stack[0], nil +} diff --git a/external/yq/pkg/yqlib/expression_parser_test.go b/external/yq/pkg/yqlib/expression_parser_test.go new file mode 100755 index 0000000..2718a16 --- /dev/null +++ b/external/yq/pkg/yqlib/expression_parser_test.go @@ -0,0 +1,81 @@ +package yqlib + +import ( + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +func getExpressionParser() ExpressionParserInterface { + InitExpressionParser() + return ExpressionParser +} + +func TestParserNoMatchingCloseBracket(t *testing.T) { + _, err := getExpressionParser().ParseExpression(".cat | with(.;.bob") + test.AssertResultComplex(t, "bad expression - probably missing close bracket on WITH", err.Error()) +} + +func TestParserNoMatchingCloseCollect(t *testing.T) { + _, err := getExpressionParser().ParseExpression("[1,2") + test.AssertResultComplex(t, "bad expression, could not find matching `]`", err.Error()) +} +func TestParserNoMatchingCloseObjectInCollect(t *testing.T) { + _, err := getExpressionParser().ParseExpression(`[{"b": "c"]`) + test.AssertResultComplex(t, "bad expression, could not find matching `}`", err.Error()) +} + +func TestParserNoMatchingCloseInCollect(t *testing.T) { + _, err := getExpressionParser().ParseExpression(`[(.a]`) + test.AssertResultComplex(t, "bad expression, could not find matching `)`", err.Error()) +} + +func TestParserNoMatchingCloseCollectObject(t *testing.T) { + _, err := getExpressionParser().ParseExpression(`{"a": "b"`) + test.AssertResultComplex(t, "bad expression, could not find matching `}`", err.Error()) +} + +func TestParserNoMatchingCloseCollectInCollectObject(t *testing.T) { + _, err := getExpressionParser().ParseExpression(`{"b": [1}`) + test.AssertResultComplex(t, "bad expression, could not find matching `]`", err.Error()) +} + +func TestParserNoMatchingCloseBracketInCollectObject(t *testing.T) { + _, err := getExpressionParser().ParseExpression(`{"b": (1}`) + test.AssertResultComplex(t, "bad expression, could not find matching `)`", err.Error()) +} + +func TestParserNoArgsForTwoArgOp(t *testing.T) { + _, err := getExpressionParser().ParseExpression("=") + test.AssertResultComplex(t, "'=' expects 2 args but there is 0", err.Error()) +} + +func TestParserOneLhsArgsForTwoArgOp(t *testing.T) { + _, err := getExpressionParser().ParseExpression(".a =") + test.AssertResultComplex(t, "'=' expects 2 args but there is 1", err.Error()) +} + +func TestParserOneRhsArgsForTwoArgOp(t *testing.T) { + _, err := getExpressionParser().ParseExpression("= .a") + test.AssertResultComplex(t, "'=' expects 2 args but there is 1", err.Error()) +} + +func TestParserTwoArgsForTwoArgOp(t *testing.T) { + _, err := getExpressionParser().ParseExpression(".a = .b") + test.AssertResultComplex(t, nil, err) +} + +func TestParserNoArgsForOneArgOp(t *testing.T) { + _, err := getExpressionParser().ParseExpression("explode") + test.AssertResultComplex(t, "'explode' expects 1 arg but received none", err.Error()) +} + +func TestParserOneArgForOneArgOp(t *testing.T) { + _, err := getExpressionParser().ParseExpression("explode(.)") + test.AssertResultComplex(t, nil, err) +} + +func TestParserExtraArgs(t *testing.T) { + _, err := getExpressionParser().ParseExpression("sortKeys(.) explode(.)") + test.AssertResultComplex(t, "bad expression, please check expression syntax", err.Error()) +} diff --git a/external/yq/pkg/yqlib/expression_postfix.go b/external/yq/pkg/yqlib/expression_postfix.go new file mode 100755 index 0000000..fa7afa3 --- /dev/null +++ b/external/yq/pkg/yqlib/expression_postfix.go @@ -0,0 +1,144 @@ +package yqlib + +import ( + "errors" + "fmt" + + logging "gopkg.in/op/go-logging.v1" +) + +type expressionPostFixer interface { + ConvertToPostfix([]*token) ([]*Operation, error) +} + +type expressionPostFixerImpl struct { +} + +func newExpressionPostFixer() expressionPostFixer { + return &expressionPostFixerImpl{} +} + +func popOpToResult(opStack []*token, result []*Operation) ([]*token, []*Operation) { + var newOp *token + opStack, newOp = opStack[0:len(opStack)-1], opStack[len(opStack)-1] + log.Debugf("popped %v from opstack to results", newOp.toString(true)) + return opStack, append(result, newOp.Operation) +} + +func validateNoOpenTokens(token *token) error { + if token.TokenType == openCollect { + return fmt.Errorf(("bad expression, could not find matching `]`")) + } else if token.TokenType == openCollectObject { + return fmt.Errorf(("bad expression, could not find matching `}`")) + } else if token.TokenType == openBracket { + return fmt.Errorf(("bad expression, could not find matching `)`")) + } + return nil +} + +func (p *expressionPostFixerImpl) ConvertToPostfix(infixTokens []*token) ([]*Operation, error) { + var result []*Operation + // surround the whole thing with brackets + var opStack = []*token{{TokenType: openBracket}} + var tokens = append(infixTokens, &token{TokenType: closeBracket}) + + for _, currentToken := range tokens { + log.Debugf("postfix processing currentToken %v", currentToken.toString(true)) + switch currentToken.TokenType { + case openBracket, openCollect, openCollectObject: + opStack = append(opStack, currentToken) + log.Debugf("put %v onto the opstack", currentToken.toString(true)) + case closeCollect, closeCollectObject: + var opener tokenType = openCollect + var collectOperator = collectOpType + if currentToken.TokenType == closeCollectObject { + opener = openCollectObject + collectOperator = collectObjectOpType + } + + for len(opStack) > 0 && opStack[len(opStack)-1].TokenType != opener { + missingClosingTokenErr := validateNoOpenTokens(opStack[len(opStack)-1]) + if missingClosingTokenErr != nil { + return nil, missingClosingTokenErr + } + opStack, result = popOpToResult(opStack, result) + } + if len(opStack) == 0 { + return nil, errors.New("Bad path expression, got close collect brackets without matching opening bracket") + } + // now we should have [ as the last element on the opStack, get rid of it + opStack = opStack[0 : len(opStack)-1] + log.Debugf("deleting open bracket from opstack") + + //and append a collect to the result + + // hack - see if there's the optional traverse flag + // on the close op - move it to the traverse array op + // allows for .["cat"]? + prefs := traversePreferences{} + closeTokenMatch := currentToken.Match + if closeTokenMatch[len(closeTokenMatch)-1:] == "?" { + prefs.OptionalTraverse = true + } + result = append(result, &Operation{OperationType: collectOperator}) + log.Debugf("put collect onto the result") + if opener != openCollect { + result = append(result, &Operation{OperationType: shortPipeOpType}) + log.Debugf("put shortpipe onto the result") + } + + //traverseArrayCollect is a sneaky op that needs to be included too + //when closing a ] + if len(opStack) > 0 && opStack[len(opStack)-1].Operation != nil && opStack[len(opStack)-1].Operation.OperationType == traverseArrayOpType { + opStack[len(opStack)-1].Operation.Preferences = prefs + opStack, result = popOpToResult(opStack, result) + } + + case closeBracket: + for len(opStack) > 0 && opStack[len(opStack)-1].TokenType != openBracket { + missingClosingTokenErr := validateNoOpenTokens(opStack[len(opStack)-1]) + if missingClosingTokenErr != nil { + return nil, missingClosingTokenErr + } + + opStack, result = popOpToResult(opStack, result) + } + if len(opStack) == 0 { + return nil, errors.New("bad expression, got close brackets without matching opening bracket") + } + // now we should have ( as the last element on the opStack, get rid of it + opStack = opStack[0 : len(opStack)-1] + + default: + var currentPrecedence = currentToken.Operation.OperationType.Precedence + // pop off higher precedent operators onto the result + for len(opStack) > 0 && + opStack[len(opStack)-1].TokenType == operationToken && + opStack[len(opStack)-1].Operation.OperationType.Precedence > currentPrecedence { + opStack, result = popOpToResult(opStack, result) + } + // add this operator to the opStack + opStack = append(opStack, currentToken) + log.Debugf("put %v onto the opstack", currentToken.toString(true)) + } + } + + log.Debugf("opstackLen: %v", len(opStack)) + if len(opStack) > 0 { + log.Debugf("opstack:") + for _, token := range opStack { + log.Debugf("- %v", token.toString(true)) + } + + return nil, fmt.Errorf("bad expression - probably missing close bracket on %v", opStack[len(opStack)-1].toString(false)) + } + + if log.IsEnabledFor(logging.DEBUG) { + log.Debugf("PostFix Result:") + for _, currentToken := range result { + log.Debugf("> %v", currentToken.toString()) + } + } + + return result, nil +} diff --git a/external/yq/pkg/yqlib/expression_processing_test.go b/external/yq/pkg/yqlib/expression_processing_test.go new file mode 100755 index 0000000..ffc6700 --- /dev/null +++ b/external/yq/pkg/yqlib/expression_processing_test.go @@ -0,0 +1,344 @@ +package yqlib + +import ( + "fmt" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +var variableWithNewLine = `"cat +"` + +var pathTests = []struct { + path string + expectedTokens []interface{} + expectedPostFix []interface{} +}{ + { + `envsubst(ne)`, + append(make([]interface{}, 0), "ENVSUBST_NO_EMPTY"), + append(make([]interface{}, 0), "ENVSUBST_NO_EMPTY"), + }, + { + `envsubst(nu)`, + append(make([]interface{}, 0), "ENVSUBST_NO_UNSET"), + append(make([]interface{}, 0), "ENVSUBST_NO_UNSET"), + }, + { + `envsubst(nu, ne)`, + append(make([]interface{}, 0), "ENVSUBST_NO_EMPTY_NO_UNSET"), + append(make([]interface{}, 0), "ENVSUBST_NO_EMPTY_NO_UNSET"), + }, + { + `envsubst(ne, nu)`, + append(make([]interface{}, 0), "ENVSUBST_NO_EMPTY_NO_UNSET"), + append(make([]interface{}, 0), "ENVSUBST_NO_EMPTY_NO_UNSET"), + }, + { + `[.a, .b]`, + append(make([]interface{}, 0), "[", "a", "UNION", "b", "]"), + append(make([]interface{}, 0), "a", "b", "UNION", "COLLECT"), + }, + { + `.[env(myenv)]`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "ENV", "]"), + append(make([]interface{}, 0), "SELF", "ENV", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.["cat"].["dog"]`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "cat (string)", "]", "SHORT_PIPE", "SELF", "TRAVERSE_ARRAY", "[", "dog (string)", "]"), + append(make([]interface{}, 0), "SELF", "cat (string)", "COLLECT", "TRAVERSE_ARRAY", "SELF", "dog (string)", "COLLECT", "TRAVERSE_ARRAY", "SHORT_PIPE"), + }, + { + `.["cat"]`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "cat (string)", "]"), + append(make([]interface{}, 0), "SELF", "cat (string)", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + "with(.a;.=3)", + append(make([]interface{}, 0), "WITH", "(", "a", "BLOCK", "SELF", "ASSIGN", "3 (int64)", ")"), + append(make([]interface{}, 0), "a", "SELF", "3 (int64)", "ASSIGN", "BLOCK", "WITH"), + }, + { + "0x12", + append(make([]interface{}, 0), "18 (int64)"), + append(make([]interface{}, 0), "18 (int64)"), + }, + { + "0X12", + append(make([]interface{}, 0), "18 (int64)"), + append(make([]interface{}, 0), "18 (int64)"), + }, + { + ".a\n", + append(make([]interface{}, 0), "a"), + append(make([]interface{}, 0), "a"), + }, + { + variableWithNewLine, + append(make([]interface{}, 0), "cat\n (string)"), + append(make([]interface{}, 0), "cat\n (string)"), + }, + { + `.[0]`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "0 (int64)", "]"), + append(make([]interface{}, 0), "SELF", "0 (int64)", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.[0][1]`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "0 (int64)", "]", "TRAVERSE_ARRAY", "[", "1 (int64)", "]"), + append(make([]interface{}, 0), "SELF", "0 (int64)", "COLLECT", "TRAVERSE_ARRAY", "1 (int64)", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `"\""`, + append(make([]interface{}, 0), "\" (string)"), + append(make([]interface{}, 0), "\" (string)"), + }, + { + `[]|join(".")`, + append(make([]interface{}, 0), "[", "EMPTY", "]", "PIPE", "JOIN", "(", ". (string)", ")"), + append(make([]interface{}, 0), "EMPTY", "COLLECT", ". (string)", "JOIN", "PIPE"), + }, + { + `{"cool": .b or .c}`, + append(make([]interface{}, 0), "{", "cool (string)", "CREATE_MAP", "b", "OR", "c", "}"), + append(make([]interface{}, 0), "cool (string)", "b", "c", "OR", "CREATE_MAP", "COLLECT_OBJECT", "SHORT_PIPE"), + }, + { + `{"cool": []|join(".")}`, + append(make([]interface{}, 0), "{", "cool (string)", "CREATE_MAP", "[", "EMPTY", "]", "PIPE", "JOIN", "(", ". (string)", ")", "}"), + append(make([]interface{}, 0), "cool (string)", "EMPTY", "COLLECT", ". (string)", "JOIN", "PIPE", "CREATE_MAP", "COLLECT_OBJECT", "SHORT_PIPE"), + }, + { + `.a as $item ireduce (0; . + $item)`, // note - add code to shuffle reduce to this position for postfix + append(make([]interface{}, 0), "a", "ASSIGN_VARIABLE", "GET_VARIABLE", "REDUCE", "(", "0 (int64)", "BLOCK", "SELF", "ADD", "GET_VARIABLE", ")"), + append(make([]interface{}, 0), "a", "GET_VARIABLE", "ASSIGN_VARIABLE", "0 (int64)", "SELF", "GET_VARIABLE", "ADD", "BLOCK", "REDUCE"), + }, + { + `.a | .b | .c`, + append(make([]interface{}, 0), "a", "PIPE", "b", "PIPE", "c"), + append(make([]interface{}, 0), "a", "b", "c", "PIPE", "PIPE"), + }, + { + `[]`, + append(make([]interface{}, 0), "[", "EMPTY", "]"), + append(make([]interface{}, 0), "EMPTY", "COLLECT"), + }, + { + `{}`, + append(make([]interface{}, 0), "{", "EMPTY", "}"), + append(make([]interface{}, 0), "EMPTY", "COLLECT_OBJECT", "SHORT_PIPE"), + }, + { + `[{}]`, + append(make([]interface{}, 0), "[", "{", "EMPTY", "}", "]"), + append(make([]interface{}, 0), "EMPTY", "COLLECT_OBJECT", "SHORT_PIPE", "COLLECT"), + }, + { + `.realnames as $names | $names["anon"]`, + append(make([]interface{}, 0), "realnames", "ASSIGN_VARIABLE", "GET_VARIABLE", "PIPE", "GET_VARIABLE", "TRAVERSE_ARRAY", "[", "anon (string)", "]"), + append(make([]interface{}, 0), "realnames", "GET_VARIABLE", "ASSIGN_VARIABLE", "GET_VARIABLE", "anon (string)", "COLLECT", "TRAVERSE_ARRAY", "PIPE"), + }, + { + `.b[.a]`, + append(make([]interface{}, 0), "b", "TRAVERSE_ARRAY", "[", "a", "]"), + append(make([]interface{}, 0), "b", "a", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.b[.a]?`, + append(make([]interface{}, 0), "b", "TRAVERSE_ARRAY", "[", "a", "]"), + append(make([]interface{}, 0), "b", "a", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.[]`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "EMPTY", "]"), + append(make([]interface{}, 0), "SELF", "EMPTY", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.a[]`, + append(make([]interface{}, 0), "a", "TRAVERSE_ARRAY", "[", "EMPTY", "]"), + append(make([]interface{}, 0), "a", "EMPTY", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.a[]?`, + append(make([]interface{}, 0), "a", "TRAVERSE_ARRAY", "[", "EMPTY", "]"), + append(make([]interface{}, 0), "a", "EMPTY", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.a.[]`, + append(make([]interface{}, 0), "a", "SHORT_PIPE", "SELF", "TRAVERSE_ARRAY", "[", "EMPTY", "]"), + append(make([]interface{}, 0), "a", "SELF", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "SHORT_PIPE"), + }, + { + `.a[0]`, + append(make([]interface{}, 0), "a", "TRAVERSE_ARRAY", "[", "0 (int64)", "]"), + append(make([]interface{}, 0), "a", "0 (int64)", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.a[0]?`, + append(make([]interface{}, 0), "a", "TRAVERSE_ARRAY", "[", "0 (int64)", "]"), + append(make([]interface{}, 0), "a", "0 (int64)", "COLLECT", "TRAVERSE_ARRAY"), + }, + { + `.a.[0]`, + append(make([]interface{}, 0), "a", "SHORT_PIPE", "SELF", "TRAVERSE_ARRAY", "[", "0 (int64)", "]"), + append(make([]interface{}, 0), "a", "SELF", "0 (int64)", "COLLECT", "TRAVERSE_ARRAY", "SHORT_PIPE"), + }, + { + `.a[].c`, + append(make([]interface{}, 0), "a", "TRAVERSE_ARRAY", "[", "EMPTY", "]", "SHORT_PIPE", "c"), + append(make([]interface{}, 0), "a", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "c", "SHORT_PIPE"), + }, + { + `[3]`, + append(make([]interface{}, 0), "[", "3 (int64)", "]"), + append(make([]interface{}, 0), "3 (int64)", "COLLECT"), + }, + { + `.key.array + .key.array2`, + append(make([]interface{}, 0), "key", "SHORT_PIPE", "array", "ADD", "key", "SHORT_PIPE", "array2"), + append(make([]interface{}, 0), "key", "array", "SHORT_PIPE", "key", "array2", "SHORT_PIPE", "ADD"), + }, + { + `.key.array * .key.array2`, + append(make([]interface{}, 0), "key", "SHORT_PIPE", "array", "MULTIPLY", "key", "SHORT_PIPE", "array2"), + append(make([]interface{}, 0), "key", "array", "SHORT_PIPE", "key", "array2", "SHORT_PIPE", "MULTIPLY"), + }, + { + `.key.array // .key.array2`, + append(make([]interface{}, 0), "key", "SHORT_PIPE", "array", "ALTERNATIVE", "key", "SHORT_PIPE", "array2"), + append(make([]interface{}, 0), "key", "array", "SHORT_PIPE", "key", "array2", "SHORT_PIPE", "ALTERNATIVE"), + }, + { + `.a | .[].b == "apple"`, + append(make([]interface{}, 0), "a", "PIPE", "SELF", "TRAVERSE_ARRAY", "[", "EMPTY", "]", "SHORT_PIPE", "b", "EQUALS", "apple (string)"), + append(make([]interface{}, 0), "a", "SELF", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "b", "SHORT_PIPE", "apple (string)", "EQUALS", "PIPE"), + }, + { + `(.a | .[].b) == "apple"`, + append(make([]interface{}, 0), "(", "a", "PIPE", "SELF", "TRAVERSE_ARRAY", "[", "EMPTY", "]", "SHORT_PIPE", "b", ")", "EQUALS", "apple (string)"), + append(make([]interface{}, 0), "a", "SELF", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "b", "SHORT_PIPE", "PIPE", "apple (string)", "EQUALS"), + }, + { + `.[] | select(. == "*at")`, + append(make([]interface{}, 0), "SELF", "TRAVERSE_ARRAY", "[", "EMPTY", "]", "PIPE", "SELECT", "(", "SELF", "EQUALS", "*at (string)", ")"), + append(make([]interface{}, 0), "SELF", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "SELF", "*at (string)", "EQUALS", "SELECT", "PIPE"), + }, + { + `[true]`, + append(make([]interface{}, 0), "[", "true (bool)", "]"), + append(make([]interface{}, 0), "true (bool)", "COLLECT"), + }, + { + `[true, false]`, + append(make([]interface{}, 0), "[", "true (bool)", "UNION", "false (bool)", "]"), + append(make([]interface{}, 0), "true (bool)", "false (bool)", "UNION", "COLLECT"), + }, + { + `"mike": .a`, + append(make([]interface{}, 0), "mike (string)", "CREATE_MAP", "a"), + append(make([]interface{}, 0), "mike (string)", "a", "CREATE_MAP"), + }, + { + `.a: "mike"`, + append(make([]interface{}, 0), "a", "CREATE_MAP", "mike (string)"), + append(make([]interface{}, 0), "a", "mike (string)", "CREATE_MAP"), + }, + { + `{"mike": .a}`, + append(make([]interface{}, 0), "{", "mike (string)", "CREATE_MAP", "a", "}"), + append(make([]interface{}, 0), "mike (string)", "a", "CREATE_MAP", "COLLECT_OBJECT", "SHORT_PIPE"), + }, + { + `{.a: "mike"}`, + append(make([]interface{}, 0), "{", "a", "CREATE_MAP", "mike (string)", "}"), + append(make([]interface{}, 0), "a", "mike (string)", "CREATE_MAP", "COLLECT_OBJECT", "SHORT_PIPE"), + }, + { + `{.a: .c, .b.[]: .f.g[]}`, + append(make([]interface{}, 0), "{", "a", "CREATE_MAP", "c", "UNION", "b", "SHORT_PIPE", "SELF", "TRAVERSE_ARRAY", "[", "EMPTY", "]", "CREATE_MAP", "f", "SHORT_PIPE", "g", "TRAVERSE_ARRAY", "[", "EMPTY", "]", "}"), + append(make([]interface{}, 0), "a", "c", "CREATE_MAP", "b", "SELF", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "SHORT_PIPE", "f", "g", "EMPTY", "COLLECT", "TRAVERSE_ARRAY", "SHORT_PIPE", "CREATE_MAP", "UNION", "COLLECT_OBJECT", "SHORT_PIPE"), + }, + { + `explode(.a.b)`, + append(make([]interface{}, 0), "EXPLODE", "(", "a", "SHORT_PIPE", "b", ")"), + append(make([]interface{}, 0), "a", "b", "SHORT_PIPE", "EXPLODE"), + }, + { + `.a.b style="folded"`, + append(make([]interface{}, 0), "a", "SHORT_PIPE", "b", "ASSIGN_STYLE", "folded (string)"), + append(make([]interface{}, 0), "a", "b", "SHORT_PIPE", "folded (string)", "ASSIGN_STYLE"), + }, + { + `tag == "str"`, + append(make([]interface{}, 0), "GET_TAG", "EQUALS", "str (string)"), + append(make([]interface{}, 0), "GET_TAG", "str (string)", "EQUALS"), + }, + { + `. tag= "str"`, + append(make([]interface{}, 0), "SELF", "ASSIGN_TAG", "str (string)"), + append(make([]interface{}, 0), "SELF", "str (string)", "ASSIGN_TAG"), + }, + { + `lineComment == "str"`, + append(make([]interface{}, 0), "GET_COMMENT", "EQUALS", "str (string)"), + append(make([]interface{}, 0), "GET_COMMENT", "str (string)", "EQUALS"), + }, + { + `. lineComment= "str"`, + append(make([]interface{}, 0), "SELF", "ASSIGN_COMMENT", "str (string)"), + append(make([]interface{}, 0), "SELF", "str (string)", "ASSIGN_COMMENT"), + }, + { + `. lineComment |= "str"`, + append(make([]interface{}, 0), "SELF", "ASSIGN_COMMENT", "str (string)"), + append(make([]interface{}, 0), "SELF", "str (string)", "ASSIGN_COMMENT"), + }, + { + `.a.b tag="!!str"`, + append(make([]interface{}, 0), "a", "SHORT_PIPE", "b", "ASSIGN_TAG", "!!str (string)"), + append(make([]interface{}, 0), "a", "b", "SHORT_PIPE", "!!str (string)", "ASSIGN_TAG"), + }, + { + `""`, + append(make([]interface{}, 0), " (string)"), + append(make([]interface{}, 0), " (string)"), + }, + { + `.foo* | (. style="flow")`, + append(make([]interface{}, 0), "foo*", "PIPE", "(", "SELF", "ASSIGN_STYLE", "flow (string)", ")"), + append(make([]interface{}, 0), "foo*", "SELF", "flow (string)", "ASSIGN_STYLE", "PIPE"), + }, +} + +var tokeniser = newParticipleLexer() +var postFixer = newExpressionPostFixer() + +func TestPathParsing(t *testing.T) { + for _, tt := range pathTests { + tokens, err := tokeniser.Tokenise(tt.path) + if err != nil { + t.Error(tt.path, err) + } + var tokenValues []interface{} + for _, token := range tokens { + tokenValues = append(tokenValues, token.toString(false)) + } + test.AssertResultComplexWithContext(t, tt.expectedTokens, tokenValues, fmt.Sprintf("tokenise: %v", tt.path)) + + results, errorP := postFixer.ConvertToPostfix(tokens) + + var readableResults []interface{} + for _, token := range results { + readableResults = append(readableResults, token.toString()) + } + + if errorP != nil { + t.Error(tt.path, err) + } + + test.AssertResultComplexWithContext(t, tt.expectedPostFix, readableResults, fmt.Sprintf("postfix: %v", tt.path)) + + } +} diff --git a/external/yq/pkg/yqlib/file_utils.go b/external/yq/pkg/yqlib/file_utils.go new file mode 100755 index 0000000..307e459 --- /dev/null +++ b/external/yq/pkg/yqlib/file_utils.go @@ -0,0 +1,85 @@ +package yqlib + +import ( + "fmt" + "io" + "os" +) + +func tryRenameFile(from string, to string) error { + if renameError := os.Rename(from, to); renameError != nil { + log.Debugf("Error renaming from %v to %v, attempting to copy contents", from, to) + log.Debug(renameError.Error()) + log.Debug("going to try copying instead") + // can't do this rename when running in docker to a file targeted in a mounted volume, + // so gracefully degrade to copying the entire contents. + if copyError := copyFileContents(from, to); copyError != nil { + return fmt.Errorf("failed copying from %v to %v: %w", from, to, copyError) + } + tryRemoveTempFile(from) + } + return nil +} + +func tryRemoveTempFile(filename string) { + log.Debug("Removing temp file: %v", filename) + removeErr := os.Remove(filename) + if removeErr != nil { + log.Errorf("Failed to remove temp file: %v", filename) + } +} + +// thanks https://stackoverflow.com/questions/21060945/simple-way-to-copy-a-file-in-golang +func copyFileContents(src, dst string) (err error) { + // ignore CWE-22 gosec issue - that's more targeted for http based apps that run in a public directory, + // and ensuring that it's not possible to give a path to a file outside thar directory. + + in, err := os.Open(src) // #nosec + if err != nil { + return err + } + defer safelyCloseFile(in) + out, err := os.Create(dst) // #nosec + if err != nil { + return err + } + defer safelyCloseFile(out) + if _, err = io.Copy(out, in); err != nil { + return err + } + return out.Sync() +} + +func SafelyCloseReader(reader io.Reader) { + switch reader := reader.(type) { + case *os.File: + safelyCloseFile(reader) + } +} + +func safelyCloseFile(file *os.File) { + err := file.Close() + if err != nil { + log.Error("Error closing file!") + log.Error(err.Error()) + } +} + +func createTempFile() (*os.File, error) { + _, err := os.Stat(os.TempDir()) + if os.IsNotExist(err) { + err = os.Mkdir(os.TempDir(), 0700) + if err != nil { + return nil, err + } + } else if err != nil { + return nil, err + } + + file, err := os.CreateTemp("", "temp") + if err != nil { + return nil, err + } + + return file, err +} diff --git a/external/yq/pkg/yqlib/front_matter.go b/external/yq/pkg/yqlib/front_matter.go new file mode 100755 index 0000000..e192f44 --- /dev/null +++ b/external/yq/pkg/yqlib/front_matter.go @@ -0,0 +1,94 @@ +package yqlib + +import ( + "bufio" + "errors" + "io" + "os" +) + +type frontMatterHandler interface { + Split() error + GetYamlFrontMatterFilename() string + GetContentReader() io.Reader + CleanUp() +} + +type frontMatterHandlerImpl struct { + originalFilename string + yamlFrontMatterFilename string + contentReader io.Reader +} + +func NewFrontMatterHandler(originalFilename string) frontMatterHandler { + return &frontMatterHandlerImpl{originalFilename, "", nil} +} + +func (f *frontMatterHandlerImpl) GetYamlFrontMatterFilename() string { + return f.yamlFrontMatterFilename +} + +func (f *frontMatterHandlerImpl) GetContentReader() io.Reader { + return f.contentReader +} + +func (f *frontMatterHandlerImpl) CleanUp() { + tryRemoveTempFile(f.yamlFrontMatterFilename) +} + +// Splits the given file by yaml front matter +// yaml content will be saved to first temporary file +// remaining content will be saved to second temporary file +func (f *frontMatterHandlerImpl) Split() error { + var reader *bufio.Reader + var err error + if f.originalFilename == "-" { + reader = bufio.NewReader(os.Stdin) + } else { + file, err := os.Open(f.originalFilename) // #nosec + if err != nil { + return err + } + reader = bufio.NewReader(file) + } + f.contentReader = reader + + yamlTempFile, err := createTempFile() + if err != nil { + return err + } + f.yamlFrontMatterFilename = yamlTempFile.Name() + log.Debug("yamlTempFile: %v", yamlTempFile.Name()) + + lineCount := 0 + + for { + peekBytes, err := reader.Peek(3) + if errors.Is(err, io.EOF) { + // we've finished reading the yaml content..I guess + break + } else if err != nil { + return err + } + if lineCount > 0 && string(peekBytes) == "---" { + // we've finished reading the yaml content.. + break + } + line, errReading := reader.ReadString('\n') + lineCount = lineCount + 1 + if errReading != nil && !errors.Is(errReading, io.EOF) { + return errReading + } + + _, errWriting := yamlTempFile.WriteString(line) + + if errWriting != nil { + return errWriting + } + } + + safelyCloseFile(yamlTempFile) + + return nil + +} diff --git a/external/yq/pkg/yqlib/front_matter_test.go b/external/yq/pkg/yqlib/front_matter_test.go new file mode 100755 index 0000000..47547c5 --- /dev/null +++ b/external/yq/pkg/yqlib/front_matter_test.go @@ -0,0 +1,143 @@ +package yqlib + +import ( + "io" + "os" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +func createTestFile(content string) string { + tempFile, err := createTempFile() + if err != nil { + panic(err) + } + + _, err = tempFile.Write([]byte(content)) + if err != nil { + panic(err) + } + + safelyCloseFile(tempFile) + + return tempFile.Name() +} + +func readFile(filename string) string { + bytes, err := os.ReadFile(filename) + if err != nil { + panic(err) + } + return string(bytes) +} + +func TestFrontMatterSplitWithLeadingSep(t *testing.T) { + file := createTestFile(`--- +a: apple +b: banana +--- +not a +yaml: doc +`) + + expectedYamlFm := `--- +a: apple +b: banana +` + + expectedContent := `--- +not a +yaml: doc +` + + fmHandler := NewFrontMatterHandler(file) + err := fmHandler.Split() + if err != nil { + panic(err) + } + + yamlFm := readFile(fmHandler.GetYamlFrontMatterFilename()) + + test.AssertResult(t, expectedYamlFm, yamlFm) + + contentBytes, err := io.ReadAll(fmHandler.GetContentReader()) + if err != nil { + panic(err) + } + test.AssertResult(t, expectedContent, string(contentBytes)) + + tryRemoveTempFile(file) + fmHandler.CleanUp() +} + +func TestFrontMatterSplitWithNoLeadingSep(t *testing.T) { + file := createTestFile(`a: apple +b: banana +--- +not a +yaml: doc +`) + + expectedYamlFm := `a: apple +b: banana +` + + expectedContent := `--- +not a +yaml: doc +` + + fmHandler := NewFrontMatterHandler(file) + err := fmHandler.Split() + if err != nil { + panic(err) + } + + yamlFm := readFile(fmHandler.GetYamlFrontMatterFilename()) + + test.AssertResult(t, expectedYamlFm, yamlFm) + + contentBytes, err := io.ReadAll(fmHandler.GetContentReader()) + if err != nil { + panic(err) + } + test.AssertResult(t, expectedContent, string(contentBytes)) + + tryRemoveTempFile(file) + fmHandler.CleanUp() +} + +func TestFrontMatterSplitWithArray(t *testing.T) { + file := createTestFile(`[1,2,3] +--- +not a +yaml: doc +`) + + expectedYamlFm := "[1,2,3]\n" + + expectedContent := `--- +not a +yaml: doc +` + + fmHandler := NewFrontMatterHandler(file) + err := fmHandler.Split() + if err != nil { + panic(err) + } + + yamlFm := readFile(fmHandler.GetYamlFrontMatterFilename()) + + test.AssertResult(t, expectedYamlFm, yamlFm) + + contentBytes, err := io.ReadAll(fmHandler.GetContentReader()) + if err != nil { + panic(err) + } + test.AssertResult(t, expectedContent, string(contentBytes)) + + tryRemoveTempFile(file) + fmHandler.CleanUp() +} diff --git a/external/yq/pkg/yqlib/json_test.go b/external/yq/pkg/yqlib/json_test.go new file mode 100755 index 0000000..66ec114 --- /dev/null +++ b/external/yq/pkg/yqlib/json_test.go @@ -0,0 +1,413 @@ +package yqlib + +import ( + "bufio" + "bytes" + "fmt" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +const complexExpectYaml = `D0, P[], (!!map)::a: Easy! as one two three +b: + c: 2 + d: + - 3 + - 4 +` + +const sampleNdJson = `{"this": "is a multidoc json file"} +{"each": ["line is a valid json document"]} +{"a number": 4} +` + +const sampleNdJsonKey = `{"a": "first", "b": "next", "ab": "last"}` + +const expectedJsonKeysInOrder = `a: first +b: next +ab: last +` + +const expectedNdJsonYaml = `this: is a multidoc json file +--- +each: + - line is a valid json document +--- +a number: 4 +` + +const expectedRoundTripSampleNdJson = `{"this":"is a multidoc json file"} +{"each":["line is a valid json document"]} +{"a number":4} +` + +const expectedUpdatedMultilineJson = `{"this":"is a multidoc json file"} +{"each":["line is a valid json document","cool"]} +{"a number":4} +` + +const sampleMultiLineJson = `{ + "this": "is a multidoc json file" +} +{ + "it": [ + "has", + "consecutive", + "json documents" + ] +} +{ + "a number": 4 +} +` + +const roundTripMultiLineJson = `{ + "this": "is a multidoc json file" +} +{ + "it": [ + "has", + "consecutive", + "json documents" + ] +} +{ + "a number": 4 +} +` + +var jsonScenarios = []formatScenario{ + { + description: "Parse json: simple", + subdescription: "JSON is a subset of yaml, so all you need to do is prettify the output", + input: `{"cat": "meow"}`, + expected: "D0, P[], (!!map)::cat: meow\n", + }, + { + description: "bad json", + skipDoc: true, + input: `{"a": 1 "b": 2}`, + expectedError: `bad file 'sample.yml': invalid character '"' after object key:value pair`, + scenarioType: "decode-error", + }, + { + description: "Parse json: complex", + subdescription: "JSON is a subset of yaml, so all you need to do is prettify the output", + input: `{"a":"Easy! as one two three","b":{"c":2,"d":[3,4]}}`, + expected: complexExpectYaml, + }, + { + description: "Encode json: simple", + input: `cat: meow`, + indent: 2, + expected: "{\n \"cat\": \"meow\"\n}\n", + scenarioType: "encode", + }, + { + description: "Encode json: simple - in one line", + input: `cat: meow # this is a comment, and it will be dropped.`, + indent: 0, + expected: "{\"cat\":\"meow\"}\n", + scenarioType: "encode", + }, + { + description: "Encode json: comments", + input: `cat: meow # this is a comment, and it will be dropped.`, + indent: 2, + expected: "{\n \"cat\": \"meow\"\n}\n", + scenarioType: "encode", + }, + { + description: "Encode json: anchors", + subdescription: "Anchors are dereferenced", + input: "cat: &ref meow\nanotherCat: *ref", + indent: 2, + expected: "{\n \"cat\": \"meow\",\n \"anotherCat\": \"meow\"\n}\n", + scenarioType: "encode", + }, + { + description: "Encode json: multiple results", + subdescription: "Each matching node is converted into a json doc. This is best used with 0 indent (json document per line)", + input: `things: [{stuff: cool}, {whatever: cat}]`, + expression: `.things[]`, + indent: 0, + expected: "{\"stuff\":\"cool\"}\n{\"whatever\":\"cat\"}\n", + scenarioType: "encode", + }, + { + description: "Roundtrip NDJSON", + subdescription: "Unfortunately the json encoder strips leading spaces of values.", + input: sampleNdJson, + expected: expectedRoundTripSampleNdJson, + scenarioType: "roundtrip-ndjson", + }, + { + description: "Roundtrip multi-document JSON", + subdescription: "The NDJSON parser can also handle multiple multi-line json documents in a single file!", + input: sampleMultiLineJson, + expected: roundTripMultiLineJson, + scenarioType: "roundtrip-multi", + }, + { + description: "Update a specific document in a multi-document json", + subdescription: "Documents are indexed by the `documentIndex` or `di` operator.", + input: sampleNdJson, + expected: expectedUpdatedMultilineJson, + expression: `(select(di == 1) | .each ) += "cool"`, + scenarioType: "roundtrip-ndjson", + }, + { + description: "Find and update a specific document in a multi-document json", + subdescription: "Use expressions as you normally would.", + input: sampleNdJson, + expected: expectedUpdatedMultilineJson, + expression: `(select(has("each")) | .each ) += "cool"`, + scenarioType: "roundtrip-ndjson", + }, + { + description: "Decode NDJSON", + input: sampleNdJson, + expected: expectedNdJsonYaml, + scenarioType: "decode-ndjson", + }, + { + description: "Decode NDJSON, maintain key order", + skipDoc: true, + input: sampleNdJsonKey, + expected: expectedJsonKeysInOrder, + scenarioType: "decode-ndjson", + }, + { + description: "numbers", + skipDoc: true, + input: "[3, 3.0, 3.1, -1]", + expected: "- 3\n- 3\n- 3.1\n- -1\n", + scenarioType: "decode-ndjson", + }, + { + description: "number single", + skipDoc: true, + input: "3", + expected: "3\n", + scenarioType: "decode-ndjson", + }, + { + description: "empty string", + skipDoc: true, + input: `""`, + expected: "\"\"\n", + scenarioType: "decode-ndjson", + }, + { + description: "strings", + skipDoc: true, + input: `["", "cat"]`, + expected: "- \"\"\n- cat\n", + scenarioType: "decode-ndjson", + }, + { + description: "null", + skipDoc: true, + input: `null`, + expected: "null\n", + scenarioType: "decode-ndjson", + }, + { + description: "booleans", + skipDoc: true, + input: `[true, false]`, + expected: "- true\n- false\n", + scenarioType: "decode-ndjson", + }, +} + +func documentRoundtripNdJsonScenario(w *bufio.Writer, s formatScenario, indent int) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.json file of:\n") + writeOrPanic(w, fmt.Sprintf("```json\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=json -o=json -I=%v '%v' sample.json\n```\n", indent, expression)) + } else { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=json -o=json -I=%v sample.json\n```\n", indent)) + } + + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", mustProcessFormatScenario(s, NewJSONDecoder(), NewJSONEncoder(indent, false, false)))) +} + +func documentDecodeNdJsonScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.json file of:\n") + writeOrPanic(w, fmt.Sprintf("```json\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=json '%v' sample.json\n```\n", expression)) + } else { + writeOrPanic(w, "```bash\nyq -p=json sample.json\n```\n") + } + + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", mustProcessFormatScenario(s, NewJSONDecoder(), NewYamlEncoder(s.indent, false, ConfiguredYamlPreferences)))) +} + +func decodeJSON(t *testing.T, jsonString string) *CandidateNode { + docs, err := readDocument(jsonString, "sample.json", 0) + + if err != nil { + t.Error(err) + return nil + } + + exp, err := getExpressionParser().ParseExpression(PrettyPrintExp) + + if err != nil { + t.Error(err) + return nil + } + + context, err := NewDataTreeNavigator().GetMatchingNodes(Context{MatchingNodes: docs}, exp) + + if err != nil { + t.Error(err) + return nil + } + + return context.MatchingNodes.Front().Value.(*CandidateNode) +} + +func testJSONScenario(t *testing.T, s formatScenario) { + switch s.scenarioType { + case "encode", "decode": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewJSONEncoder(s.indent, false, false)), s.description) + case "": + var actual = resultToString(t, decodeJSON(t, s.input)) + test.AssertResultWithContext(t, s.expected, actual, s.description) + case "decode-ndjson": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewJSONDecoder(), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "roundtrip-ndjson": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewJSONDecoder(), NewJSONEncoder(0, false, false)), s.description) + case "roundtrip-multi": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewJSONDecoder(), NewJSONEncoder(2, false, false)), s.description) + case "decode-error": + result, err := processFormatScenario(s, NewJSONDecoder(), NewJSONEncoder(2, false, false)) + if err == nil { + t.Errorf("Expected error '%v' but it worked: %v", s.expectedError, result) + } else { + test.AssertResultComplexWithContext(t, s.expectedError, err.Error(), s.description) + } + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func documentJSONDecodeScenario(t *testing.T, w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.json file of:\n") + writeOrPanic(w, fmt.Sprintf("```json\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, "```bash\nyq -P '.' sample.json\n```\n") + writeOrPanic(w, "will output\n") + + var output bytes.Buffer + printer := NewSimpleYamlPrinter(bufio.NewWriter(&output), YamlOutputFormat, true, false, 2, true) + + node := decodeJSON(t, s.input) + + err := printer.PrintResults(node.AsList()) + if err != nil { + t.Error(err) + return + } + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", output.String())) +} + +func documentJSONScenario(t *testing.T, w *bufio.Writer, i interface{}) { + s := i.(formatScenario) + if s.skipDoc { + return + } + switch s.scenarioType { + case "": + documentJSONDecodeScenario(t, w, s) + case "encode": + documentJSONEncodeScenario(w, s) + case "decode-ndjson": + documentDecodeNdJsonScenario(w, s) + case "roundtrip-ndjson": + documentRoundtripNdJsonScenario(w, s, 0) + case "roundtrip-multi": + documentRoundtripNdJsonScenario(w, s, 2) + + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func documentJSONEncodeScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + if expression == "" { + expression = "." + } + + if s.indent == 2 { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -o=json '%v' sample.yml\n```\n", expression)) + } else { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -o=json -I=%v '%v' sample.yml\n```\n", s.indent, expression)) + } + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```json\n%v```\n\n", mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewJSONEncoder(s.indent, false, false)))) +} + +func TestJSONScenarios(t *testing.T) { + for _, tt := range jsonScenarios { + testJSONScenario(t, tt) + } + genericScenarios := make([]interface{}, len(jsonScenarios)) + for i, s := range jsonScenarios { + genericScenarios[i] = s + } + documentScenarios(t, "usage", "convert", genericScenarios, documentJSONScenario) +} diff --git a/external/yq/pkg/yqlib/lexer.go b/external/yq/pkg/yqlib/lexer.go new file mode 100755 index 0000000..259dbd3 --- /dev/null +++ b/external/yq/pkg/yqlib/lexer.go @@ -0,0 +1,183 @@ +package yqlib + +import ( + "fmt" + "regexp" +) + +type expressionTokeniser interface { + Tokenise(expression string) ([]*token, error) +} + +type tokenType uint32 + +const ( + operationToken = 1 << iota + openBracket + closeBracket + openCollect + closeCollect + openCollectObject + closeCollectObject + traverseArrayCollect +) + +type token struct { + TokenType tokenType + Operation *Operation + AssignOperation *Operation // e.g. tag (GetTag) op becomes AssignTag if '=' follows it + CheckForPostTraverse bool // e.g. [1]cat should really be [1].cat + Match string +} + +func (t *token) toString(detail bool) string { + if t.TokenType == operationToken { + if detail { + return fmt.Sprintf("%v (%v)", t.Operation.toString(), t.Operation.OperationType.Precedence) + } + return t.Operation.toString() + } else if t.TokenType == openBracket { + return "(" + } else if t.TokenType == closeBracket { + return ")" + } else if t.TokenType == openCollect { + return "[" + } else if t.TokenType == closeCollect { + return "]" + } else if t.TokenType == openCollectObject { + return "{" + } else if t.TokenType == closeCollectObject { + return "}" + } else if t.TokenType == traverseArrayCollect { + return ".[" + + } else { + return "NFI" + } +} + +func unwrap(value string) string { + return value[1 : len(value)-1] +} + +func extractNumberParameter(value string) (int, error) { + parameterParser := regexp.MustCompile(`.*\(([0-9]+)\)`) + matches := parameterParser.FindStringSubmatch(value) + var indent, errParsingInt = parseInt(matches[1]) + if errParsingInt != nil { + return 0, errParsingInt + } + return indent, nil +} + +func hasOptionParameter(value string, option string) bool { + parameterParser := regexp.MustCompile(`.*\([^\)]*\)`) + matches := parameterParser.FindStringSubmatch(value) + if len(matches) == 0 { + return false + } + parameterString := matches[0] + optionParser := regexp.MustCompile(fmt.Sprintf("\\b%v\\b", option)) + return len(optionParser.FindStringSubmatch(parameterString)) > 0 +} + +func postProcessTokens(tokens []*token) []*token { + var postProcessedTokens = make([]*token, 0) + + skipNextToken := false + + for index := range tokens { + if skipNextToken { + skipNextToken = false + } else { + postProcessedTokens, skipNextToken = handleToken(tokens, index, postProcessedTokens) + } + } + + return postProcessedTokens +} + +func tokenIsOpType(token *token, opType *operationType) bool { + return token.TokenType == operationToken && token.Operation.OperationType == opType +} + +func handleToken(tokens []*token, index int, postProcessedTokens []*token) (tokensAccum []*token, skipNextToken bool) { + skipNextToken = false + currentToken := tokens[index] + + log.Debug("processing %v", currentToken.toString(true)) + + if currentToken.TokenType == traverseArrayCollect { + // `.[exp]`` works by creating a traversal array of [self, exp] and piping that into the traverse array operator + //need to put a traverse array then a collect currentToken + // do this by adding traverse then converting currentToken to collect + + log.Debug(" adding self") + op := &Operation{OperationType: selfReferenceOpType, StringValue: "SELF"} + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: op}) + + log.Debug(" adding traverse array") + op = &Operation{OperationType: traverseArrayOpType, StringValue: "TRAVERSE_ARRAY"} + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: op}) + + currentToken = &token{TokenType: openCollect} + + } + + if tokenIsOpType(currentToken, createMapOpType) { + log.Debugf("tokenIsOpType: createMapOpType") + // check the previous token is '[', means we are slice, but dont have a first number + if tokens[index-1].TokenType == traverseArrayCollect { + log.Debugf("previous token is : traverseArrayOpType") + // need to put the number 0 before this token, as that is implied + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: createValueOperation(0, "0")}) + } + } + + if index != len(tokens)-1 && currentToken.AssignOperation != nil && + tokenIsOpType(tokens[index+1], assignOpType) { + log.Debug(" its an update assign") + currentToken.Operation = currentToken.AssignOperation + currentToken.Operation.UpdateAssign = tokens[index+1].Operation.UpdateAssign + skipNextToken = true + } + + log.Debug(" adding token to the fixed list") + postProcessedTokens = append(postProcessedTokens, currentToken) + + if tokenIsOpType(currentToken, createMapOpType) { + log.Debugf("tokenIsOpType: createMapOpType") + // check the next token is ']', means we are slice, but dont have a second number + if index != len(tokens)-1 && tokens[index+1].TokenType == closeCollect { + log.Debugf("next token is : closeCollect") + // need to put the number 0 before this token, as that is implied + lengthOp := &Operation{OperationType: lengthOpType} + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: lengthOp}) + } + } + + if index != len(tokens)-1 && + ((currentToken.TokenType == openCollect && tokens[index+1].TokenType == closeCollect) || + (currentToken.TokenType == openCollectObject && tokens[index+1].TokenType == closeCollectObject)) { + log.Debug(" adding empty") + op := &Operation{OperationType: emptyOpType, StringValue: "EMPTY"} + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: op}) + } + + if index != len(tokens)-1 && currentToken.CheckForPostTraverse && + + (tokenIsOpType(tokens[index+1], traversePathOpType) || + (tokens[index+1].TokenType == traverseArrayCollect)) { + log.Debug(" adding pipe because the next thing is traverse") + op := &Operation{OperationType: shortPipeOpType, Value: "PIPE", StringValue: "."} + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: op}) + } + if index != len(tokens)-1 && currentToken.CheckForPostTraverse && + tokens[index+1].TokenType == openCollect { + + log.Debug(" adding traverArray because next is opencollect") + op := &Operation{OperationType: traverseArrayOpType} + postProcessedTokens = append(postProcessedTokens, &token{TokenType: operationToken, Operation: op}) + } + return postProcessedTokens, skipNextToken +} diff --git a/external/yq/pkg/yqlib/lexer_participle.go b/external/yq/pkg/yqlib/lexer_participle.go new file mode 100755 index 0000000..04f6213 --- /dev/null +++ b/external/yq/pkg/yqlib/lexer_participle.go @@ -0,0 +1,554 @@ +package yqlib + +import ( + "strconv" + "strings" + + "github.com/alecthomas/participle/v2/lexer" +) + +var participleYqRules = []*participleYqRule{ + {"LINE_COMMENT", `line_?comment|lineComment`, opTokenWithPrefs(getCommentOpType, assignCommentOpType, commentOpPreferences{LineComment: true}), 0}, + {"HEAD_COMMENT", `head_?comment|headComment`, opTokenWithPrefs(getCommentOpType, assignCommentOpType, commentOpPreferences{HeadComment: true}), 0}, + {"FOOT_COMMENT", `foot_?comment|footComment`, opTokenWithPrefs(getCommentOpType, assignCommentOpType, commentOpPreferences{FootComment: true}), 0}, + + {"OpenBracket", `\(`, literalToken(openBracket, false), 0}, + {"CloseBracket", `\)`, literalToken(closeBracket, true), 0}, + {"OpenTraverseArrayCollect", `\.\[`, literalToken(traverseArrayCollect, false), 0}, + + {"OpenCollect", `\[`, literalToken(openCollect, false), 0}, + {"CloseCollect", `\]\??`, literalToken(closeCollect, true), 0}, + + {"OpenCollectObject", `\{`, literalToken(openCollectObject, false), 0}, + {"CloseCollectObject", `\}`, literalToken(closeCollectObject, true), 0}, + + {"RecursiveDecentIncludingKeys", `\.\.\.`, recursiveDecentOpToken(true), 0}, + {"RecursiveDecent", `\.\.`, recursiveDecentOpToken(false), 0}, + + {"GetVariable", `\$[a-zA-Z_\-0-9]+`, getVariableOpToken(), 0}, + {"AsignAsVariable", `as`, opTokenWithPrefs(assignVariableOpType, nil, assignVarPreferences{}), 0}, + {"AsignRefVariable", `ref`, opTokenWithPrefs(assignVariableOpType, nil, assignVarPreferences{IsReference: true}), 0}, + + {"CreateMap", `:\s*`, opToken(createMapOpType), 0}, + simpleOp("length", lengthOpType), + simpleOp("line", lineOpType), + simpleOp("column", columnOpType), + simpleOp("eval", evalOpType), + + {"MapValues", `map_?values`, opToken(mapValuesOpType), 0}, + simpleOp("map", mapOpType), + simpleOp("pick", pickOpType), + + {"FlattenWithDepth", `flatten\([0-9]+\)`, flattenWithDepth(), 0}, + {"Flatten", `flatten`, opTokenWithPrefs(flattenOpType, nil, flattenPreferences{depth: -1}), 0}, + + simpleOp("format_datetime", formatDateTimeOpType), + simpleOp("now", nowOpType), + simpleOp("tz", tzOpType), + simpleOp("with_dtf", withDtFormatOpType), + simpleOp("error", errorOpType), + simpleOp("sortKeys", sortKeysOpType), + simpleOp("sort_?keys", sortKeysOpType), + + {"ArrayToMap", "array_?to_?map", expressionOpToken(`(.[] | select(. != null) ) as $i ireduce({}; .[$i | key] = $i)`), 0}, + + {"YamlEncodeWithIndent", `to_?yaml\([0-9]+\)`, encodeParseIndent(YamlOutputFormat), 0}, + {"XMLEncodeWithIndent", `to_?xml\([0-9]+\)`, encodeParseIndent(XMLOutputFormat), 0}, + {"JSONEncodeWithIndent", `to_?json\([0-9]+\)`, encodeParseIndent(JSONOutputFormat), 0}, + + {"YamlDecode", `from_?yaml|@yamld|from_?json|@jsond`, decodeOp(YamlInputFormat), 0}, + {"YamlEncode", `to_?yaml|@yaml`, encodeWithIndent(YamlOutputFormat, 2), 0}, + + {"JSONEncode", `to_?json`, encodeWithIndent(JSONOutputFormat, 2), 0}, + {"JSONEncodeNoIndent", `@json`, encodeWithIndent(JSONOutputFormat, 0), 0}, + + {"PropertiesDecode", `from_?props|@propsd`, decodeOp(PropertiesInputFormat), 0}, + {"PropsEncode", `to_?props|@props`, encodeWithIndent(PropsOutputFormat, 2), 0}, + + {"XmlDecode", `from_?xml|@xmld`, decodeOp(XMLInputFormat), 0}, + {"XMLEncode", `to_?xml`, encodeWithIndent(XMLOutputFormat, 2), 0}, + {"XMLEncodeNoIndent", `@xml`, encodeWithIndent(XMLOutputFormat, 0), 0}, + + {"CSVDecode", `from_?csv|@csvd`, decodeOp(CSVObjectInputFormat), 0}, + {"CSVEncode", `to_?csv|@csv`, encodeWithIndent(CSVOutputFormat, 0), 0}, + + {"TSVDecode", `from_?tsv|@tsvd`, decodeOp(TSVObjectInputFormat), 0}, + {"TSVEncode", `to_?tsv|@tsv`, encodeWithIndent(TSVOutputFormat, 0), 0}, + + {"Base64d", `@base64d`, decodeOp(Base64InputFormat), 0}, + {"Base64", `@base64`, encodeWithIndent(Base64OutputFormat, 0), 0}, + + {"LoadXML", `load_?xml|xml_?load`, loadOp(NewXMLDecoder(ConfiguredXMLPreferences), false), 0}, + + {"LoadBase64", `load_?base64`, loadOp(NewBase64Decoder(), false), 0}, + + {"LoadProperties", `load_?props`, loadOp(NewPropertiesDecoder(), false), 0}, + + {"LoadString", `load_?str|str_?load`, loadOp(nil, true), 0}, + + {"LoadYaml", `load`, loadOp(NewYamlDecoder(ConfiguredYamlPreferences), false), 0}, + + {"SplitDocument", `splitDoc|split_?doc`, opToken(splitDocumentOpType), 0}, + + simpleOp("select", selectOpType), + simpleOp("has", hasOpType), + simpleOp("unique_?by", uniqueByOpType), + simpleOp("unique", uniqueOpType), + + simpleOp("group_?by", groupByOpType), + simpleOp("explode", explodeOpType), + simpleOp("or", orOpType), + simpleOp("and", andOpType), + simpleOp("not", notOpType), + simpleOp("ireduce", reduceOpType), + + simpleOp("join", joinStringOpType), + simpleOp("sub", subStringOpType), + simpleOp("match", matchOpType), + simpleOp("capture", captureOpType), + simpleOp("test", testOpType), + + simpleOp("sort_?by", sortByOpType), + simpleOp("sort", sortOpType), + + simpleOp("reverse", reverseOpType), + + simpleOp("any_c", anyConditionOpType), + simpleOp("any", anyOpType), + + simpleOp("all_c", allConditionOpType), + simpleOp("all", allOpType), + + simpleOp("contains", containsOpType), + simpleOp("split", splitStringOpType), + simpleOp("parent", getParentOpType), + + simpleOp("keys", keysOpType), + simpleOp("key", getKeyOpType), + simpleOp("is_?key", isKeyOpType), + + simpleOp("file_?name|fileName", getFilenameOpType), + simpleOp("file_?index|fileIndex|fi", getFileIndexOpType), + simpleOp("path", getPathOpType), + simpleOp("set_?path", setPathOpType), + simpleOp("del_?paths", delPathsOpType), + + simpleOp("to_?entries|toEntries", toEntriesOpType), + simpleOp("from_?entries|fromEntries", fromEntriesOpType), + simpleOp("with_?entries|withEntries", withEntriesOpType), + + simpleOp("with", withOpType), + + simpleOp("collect", collectOpType), + simpleOp("del", deleteChildOpType), + + assignableOp("style", getStyleOpType, assignStyleOpType), + assignableOp("tag|type", getTagOpType, assignTagOpType), + assignableOp("anchor", getAnchorOpType, assignAnchorOpType), + assignableOp("alias", getAliasOpType, assignAliasOpType), + + {"ALL_COMMENTS", `comments\s*=`, assignAllCommentsOp(false), 0}, + {"ALL_COMMENTS_ASSIGN_RELATIVE", `comments\s*\|=`, assignAllCommentsOp(true), 0}, + + {"Block", `;`, opToken(blockOpType), 0}, + {"Alternative", `\/\/`, opToken(alternativeOpType), 0}, + + {"DocumentIndex", `documentIndex|document_?index|di`, opToken(getDocumentIndexOpType), 0}, + + {"Uppercase", `upcase|ascii_?upcase`, opTokenWithPrefs(changeCaseOpType, nil, changeCasePrefs{ToUpperCase: true}), 0}, + {"Downcase", `downcase|ascii_?downcase`, opTokenWithPrefs(changeCaseOpType, nil, changeCasePrefs{ToUpperCase: false}), 0}, + simpleOp("trim", trimOpType), + + {"HexValue", `0[xX][0-9A-Fa-f]+`, hexValue(), 0}, + {"FloatValueScientific", `-?[1-9](\.\d+)?[Ee][-+]?\d+`, floatValue(), 0}, + {"FloatValue", `-?\d+(\.\d+)`, floatValue(), 0}, + + {"NumberValue", `-?\d+`, numberValue(), 0}, + + {"TrueBooleanValue", `[Tt][Rr][Uu][Ee]`, booleanValue(true), 0}, + {"FalseBooleanValue", `[Ff][Aa][Ll][Ss][Ee]`, booleanValue(false), 0}, + + {"NullValue", `[Nn][Uu][Ll][Ll]|~`, nullValue(), 0}, + + {"QuotedStringValue", `"([^"\\]*(\\.[^"\\]*)*)"`, stringValue(), 0}, + + {"StrEnvOp", `strenv\([^\)]+\)`, envOp(true), 0}, + {"EnvOp", `env\([^\)]+\)`, envOp(false), 0}, + + {"EnvSubstWithOptions", `envsubst\((ne|nu|ff| |,)+\)`, envSubstWithOptions(), 0}, + simpleOp("envsubst", envsubstOpType), + + {"Equals", `\s*==\s*`, opToken(equalsOpType), 0}, + {"NotEquals", `\s*!=\s*`, opToken(notEqualsOpType), 0}, + + {"GreaterThanEquals", `\s*>=\s*`, opTokenWithPrefs(compareOpType, nil, compareTypePref{OrEqual: true, Greater: true}), 0}, + {"LessThanEquals", `\s*<=\s*`, opTokenWithPrefs(compareOpType, nil, compareTypePref{OrEqual: true, Greater: false}), 0}, + + {"GreaterThan", `\s*>\s*`, opTokenWithPrefs(compareOpType, nil, compareTypePref{OrEqual: false, Greater: true}), 0}, + {"LessThan", `\s*<\s*`, opTokenWithPrefs(compareOpType, nil, compareTypePref{OrEqual: false, Greater: false}), 0}, + + {"AssignRelative", `\|=[c]*`, assignOpToken(true), 0}, + {"Assign", `=[c]*`, assignOpToken(false), 0}, + + {`whitespace`, `[ \t\n]+`, nil, 0}, + + {"WrappedPathElement", `\."[^ "]+"\??`, pathToken(true), 0}, + {"PathElement", `\.[^ ;\}\{\:\[\],\|\.\[\(\)=\n]+\??`, pathToken(false), 0}, + {"Pipe", `\|`, opToken(pipeOpType), 0}, + {"Self", `\.`, opToken(selfReferenceOpType), 0}, + + {"Union", `,`, opToken(unionOpType), 0}, + + {"MultiplyAssign", `\*=[\+|\?cdn]*`, multiplyWithPrefs(multiplyAssignOpType), 0}, + {"Multiply", `\*[\+|\?cdn]*`, multiplyWithPrefs(multiplyOpType), 0}, + + {"AddAssign", `\+=`, opToken(addAssignOpType), 0}, + {"Add", `\+`, opToken(addOpType), 0}, + + {"SubtractAssign", `\-=`, opToken(subtractAssignOpType), 0}, + {"Subtract", `\-`, opToken(subtractOpType), 0}, +} + +type yqAction func(lexer.Token) (*token, error) + +type participleYqRule struct { + Name string + Pattern string + CreateYqToken yqAction + ParticipleTokenType lexer.TokenType +} + +type participleLexer struct { + lexerDefinition lexer.StringDefinition +} + +func simpleOp(name string, opType *operationType) *participleYqRule { + return &participleYqRule{strings.ToUpper(string(name[1])) + name[1:], name, opToken(opType), 0} +} + +func assignableOp(name string, opType *operationType, assignOpType *operationType) *participleYqRule { + return &participleYqRule{strings.ToUpper(string(name[1])) + name[1:], name, opTokenWithPrefs(opType, assignOpType, nil), 0} +} + +func newParticipleLexer() expressionTokeniser { + simpleRules := make([]lexer.SimpleRule, len(participleYqRules)) + for i, yqRule := range participleYqRules { + simpleRules[i] = lexer.SimpleRule{Name: yqRule.Name, Pattern: yqRule.Pattern} + } + lexerDefinition := lexer.MustSimple(simpleRules) + symbols := lexerDefinition.Symbols() + + for _, yqRule := range participleYqRules { + yqRule.ParticipleTokenType = symbols[yqRule.Name] + } + + return &participleLexer{lexerDefinition} +} + +func pathToken(wrapped bool) yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + prefs := traversePreferences{} + + if value[len(value)-1:] == "?" { + prefs.OptionalTraverse = true + value = value[:len(value)-1] + } + + value = value[1:] + if wrapped { + value = unwrap(value) + } + log.Debug("PathToken %v", value) + op := &Operation{OperationType: traversePathOpType, Value: value, StringValue: value, Preferences: prefs} + return &token{TokenType: operationToken, Operation: op, CheckForPostTraverse: true}, nil + } +} + +func recursiveDecentOpToken(includeMapKeys bool) yqAction { + prefs := recursiveDescentPreferences{ + RecurseArray: true, + TraversePreferences: traversePreferences{ + DontFollowAlias: true, + IncludeMapKeys: includeMapKeys, + }, + } + return opTokenWithPrefs(recursiveDescentOpType, nil, prefs) +} + +func opTokenWithPrefs(opType *operationType, assignOpType *operationType, preferences interface{}) yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + op := &Operation{OperationType: opType, Value: opType.Type, StringValue: value, Preferences: preferences} + var assign *Operation + if assignOpType != nil { + assign = &Operation{OperationType: assignOpType, Value: assignOpType.Type, StringValue: value, Preferences: preferences} + } + return &token{TokenType: operationToken, Operation: op, AssignOperation: assign}, nil + } +} + +func expressionOpToken(expression string) yqAction { + return func(rawToken lexer.Token) (*token, error) { + prefs := expressionOpPreferences{expression: expression} + expressionOp := &Operation{OperationType: expressionOpType, Preferences: prefs} + return &token{TokenType: operationToken, Operation: expressionOp}, nil + } +} + +func flattenWithDepth() yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + var depth, errParsingInt = extractNumberParameter(value) + if errParsingInt != nil { + return nil, errParsingInt + } + + prefs := flattenPreferences{depth: depth} + op := &Operation{OperationType: flattenOpType, Value: flattenOpType.Type, StringValue: value, Preferences: prefs} + return &token{TokenType: operationToken, Operation: op}, nil + } +} + +func assignAllCommentsOp(updateAssign bool) yqAction { + return func(rawToken lexer.Token) (*token, error) { + log.Debug("assignAllCommentsOp %v", rawToken.Value) + value := rawToken.Value + op := &Operation{ + OperationType: assignCommentOpType, + Value: assignCommentOpType.Type, + StringValue: value, + UpdateAssign: updateAssign, + Preferences: commentOpPreferences{LineComment: true, HeadComment: true, FootComment: true}, + } + return &token{TokenType: operationToken, Operation: op}, nil + } +} + +func assignOpToken(updateAssign bool) yqAction { + return func(rawToken lexer.Token) (*token, error) { + log.Debug("assignOpToken %v", rawToken.Value) + value := rawToken.Value + prefs := assignPreferences{DontOverWriteAnchor: true} + if strings.Contains(value, "c") { + prefs.ClobberCustomTags = true + } + op := &Operation{OperationType: assignOpType, Value: assignOpType.Type, StringValue: value, UpdateAssign: updateAssign, Preferences: prefs} + return &token{TokenType: operationToken, Operation: op}, nil + } +} + +func booleanValue(val bool) yqAction { + return func(rawToken lexer.Token) (*token, error) { + return &token{TokenType: operationToken, Operation: createValueOperation(val, rawToken.Value)}, nil + } +} + +func nullValue() yqAction { + return func(rawToken lexer.Token) (*token, error) { + return &token{TokenType: operationToken, Operation: createValueOperation(nil, rawToken.Value)}, nil + } +} + +func stringValue() yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := unwrap(rawToken.Value) + value = strings.ReplaceAll(value, "\\\"", "\"") + return &token{TokenType: operationToken, Operation: createValueOperation(value, value)}, nil + } +} + +func envOp(strenv bool) yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + preferences := envOpPreferences{} + + if strenv { + // strenv( ) + value = value[7 : len(value)-1] + preferences.StringValue = true + } else { + //env( ) + value = value[4 : len(value)-1] + } + + envOperation := createValueOperation(value, value) + envOperation.OperationType = envOpType + envOperation.Preferences = preferences + + return &token{TokenType: operationToken, Operation: envOperation}, nil + } +} + +func envSubstWithOptions() yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + noEmpty := hasOptionParameter(value, "ne") + noUnset := hasOptionParameter(value, "nu") + failFast := hasOptionParameter(value, "ff") + envsubstOpType.Type = "ENVSUBST" + prefs := envOpPreferences{NoUnset: noUnset, NoEmpty: noEmpty, FailFast: failFast} + if noEmpty { + envsubstOpType.Type = envsubstOpType.Type + "_NO_EMPTY" + } + if noUnset { + envsubstOpType.Type = envsubstOpType.Type + "_NO_UNSET" + } + + op := &Operation{OperationType: envsubstOpType, Value: envsubstOpType.Type, StringValue: value, Preferences: prefs} + return &token{TokenType: operationToken, Operation: op}, nil + } +} + +func multiplyWithPrefs(op *operationType) yqAction { + return func(rawToken lexer.Token) (*token, error) { + prefs := multiplyPreferences{} + prefs.AssignPrefs = assignPreferences{} + options := rawToken.Value + if strings.Contains(options, "+") { + prefs.AppendArrays = true + } + if strings.Contains(options, "?") { + prefs.TraversePrefs = traversePreferences{DontAutoCreate: true} + } + if strings.Contains(options, "n") { + prefs.AssignPrefs.OnlyWriteNull = true + } + if strings.Contains(options, "d") { + prefs.DeepMergeArrays = true + } + if strings.Contains(options, "c") { + prefs.AssignPrefs.ClobberCustomTags = true + } + prefs.TraversePrefs.DontFollowAlias = true + op := &Operation{OperationType: op, Value: multiplyOpType.Type, StringValue: options, Preferences: prefs} + return &token{TokenType: operationToken, Operation: op}, nil + } + +} + +func getVariableOpToken() yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + + value = value[1:] + + getVarOperation := createValueOperation(value, value) + getVarOperation.OperationType = getVariableOpType + + return &token{TokenType: operationToken, Operation: getVarOperation, CheckForPostTraverse: true}, nil + } +} + +func hexValue() yqAction { + return func(rawToken lexer.Token) (*token, error) { + var originalString = rawToken.Value + var numberString = originalString[2:] + log.Debugf("numberString: %v", numberString) + var number, errParsingInt = strconv.ParseInt(numberString, 16, 64) + if errParsingInt != nil { + return nil, errParsingInt + } + + return &token{TokenType: operationToken, Operation: createValueOperation(number, originalString)}, nil + } +} + +func floatValue() yqAction { + return func(rawToken lexer.Token) (*token, error) { + var numberString = rawToken.Value + var number, errParsingInt = strconv.ParseFloat(numberString, 64) + if errParsingInt != nil { + return nil, errParsingInt + } + return &token{TokenType: operationToken, Operation: createValueOperation(number, numberString)}, nil + } +} + +func numberValue() yqAction { + return func(rawToken lexer.Token) (*token, error) { + var numberString = rawToken.Value + var number, errParsingInt = strconv.ParseInt(numberString, 10, 64) + if errParsingInt != nil { + return nil, errParsingInt + } + + return &token{TokenType: operationToken, Operation: createValueOperation(number, numberString)}, nil + } +} + +func encodeParseIndent(outputFormat PrinterOutputFormat) yqAction { + return func(rawToken lexer.Token) (*token, error) { + value := rawToken.Value + var indent, errParsingInt = extractNumberParameter(value) + if errParsingInt != nil { + return nil, errParsingInt + } + + prefs := encoderPreferences{format: outputFormat, indent: indent} + op := &Operation{OperationType: encodeOpType, Value: encodeOpType.Type, StringValue: value, Preferences: prefs} + return &token{TokenType: operationToken, Operation: op}, nil + } +} + +func encodeWithIndent(outputFormat PrinterOutputFormat, indent int) yqAction { + prefs := encoderPreferences{format: outputFormat, indent: indent} + return opTokenWithPrefs(encodeOpType, nil, prefs) +} + +func decodeOp(inputFormat InputFormat) yqAction { + prefs := decoderPreferences{format: inputFormat} + return opTokenWithPrefs(decodeOpType, nil, prefs) +} + +func loadOp(decoder Decoder, loadAsString bool) yqAction { + prefs := loadPrefs{decoder: decoder, loadAsString: loadAsString} + return opTokenWithPrefs(loadOpType, nil, prefs) +} + +func opToken(op *operationType) yqAction { + return opTokenWithPrefs(op, nil, nil) +} + +func literalToken(tt tokenType, checkForPost bool) yqAction { + return func(rawToken lexer.Token) (*token, error) { + return &token{TokenType: tt, CheckForPostTraverse: checkForPost, Match: rawToken.Value}, nil + } +} + +func (p *participleLexer) getYqDefinition(rawToken lexer.Token) *participleYqRule { + for _, yqRule := range participleYqRules { + if yqRule.ParticipleTokenType == rawToken.Type { + return yqRule + } + } + return &participleYqRule{} +} + +func (p *participleLexer) Tokenise(expression string) ([]*token, error) { + myLexer, err := p.lexerDefinition.LexString("", expression) + if err != nil { + return nil, err + } + tokens := make([]*token, 0) + + for { + rawToken, e := myLexer.Next() + if e != nil { + return nil, e + } else if rawToken.Type == lexer.EOF { + return postProcessTokens(tokens), nil + } + + definition := p.getYqDefinition(rawToken) + if definition.CreateYqToken != nil { + token, e := definition.CreateYqToken(rawToken) + if e != nil { + return nil, e + } + tokens = append(tokens, token) + } + + } + +} diff --git a/external/yq/pkg/yqlib/lexer_participle_test.go b/external/yq/pkg/yqlib/lexer_participle_test.go new file mode 100755 index 0000000..a1defe4 --- /dev/null +++ b/external/yq/pkg/yqlib/lexer_participle_test.go @@ -0,0 +1,658 @@ +package yqlib + +import ( + "testing" + + "github.com/alecthomas/repr" + "github.com/mikefarah/yq/v4/test" + yaml "gopkg.in/yaml.v3" +) + +type participleLexerScenario struct { + expression string + tokens []*token +} + +var participleLexerScenarios = []participleLexerScenario{ + { + expression: ".[:3]", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: selfReferenceOpType, + StringValue: "SELF", + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traverseArrayOpType, + StringValue: "TRAVERSE_ARRAY", + }, + }, + { + TokenType: openCollect, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: valueOpType, + Value: 0, + StringValue: "0", + CandidateNode: &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!int", + Value: "0", + }, + }, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: createMapOpType, + Value: "CREATE_MAP", + StringValue: ":", + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: valueOpType, + Value: 3, + StringValue: "3", + CandidateNode: &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.Kind(8), + Tag: "!!int", + Value: "3", + }, + }, + }, + }, + { + TokenType: closeCollect, + CheckForPostTraverse: true, + Match: "]", + }, + }, + }, + { + expression: ".[-2:]", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: selfReferenceOpType, + StringValue: "SELF", + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traverseArrayOpType, + StringValue: "TRAVERSE_ARRAY", + }, + }, + { + TokenType: openCollect, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: valueOpType, + Value: -2, + StringValue: "-2", + CandidateNode: &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!int", + Value: "-2", + }, + }, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: createMapOpType, + Value: "CREATE_MAP", + StringValue: ":", + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: lengthOpType, + }, + }, + { + TokenType: closeCollect, + CheckForPostTraverse: true, + Match: "]", + }, + }, + }, + { + expression: ".a", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: ".a.b", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: shortPipeOpType, + Value: "PIPE", + StringValue: ".", + Preferences: nil, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "b", + StringValue: "b", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: ".a.b?", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: shortPipeOpType, + Value: "PIPE", + StringValue: ".", + Preferences: nil, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "b", + StringValue: "b", + Preferences: traversePreferences{ + OptionalTraverse: true, + }, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: `.a."b?"`, + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: shortPipeOpType, + Value: "PIPE", + StringValue: ".", + Preferences: nil, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "b?", + StringValue: "b?", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: ` .a ."b?"`, + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: shortPipeOpType, + Value: "PIPE", + StringValue: ".", + Preferences: nil, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "b?", + StringValue: "b?", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: `.a | .b`, + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: pipeOpType, + Value: "PIPE", + StringValue: "|", + Preferences: nil, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "b", + StringValue: "b", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: "(.a)", + tokens: []*token{ + { + TokenType: openBracket, + Match: "(", + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: closeBracket, + Match: ")", + CheckForPostTraverse: true, + }, + }, + }, + { + expression: "..", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: recursiveDescentOpType, + Value: "RECURSIVE_DESCENT", + StringValue: "..", + Preferences: recursiveDescentPreferences{ + RecurseArray: true, + TraversePreferences: traversePreferences{ + DontFollowAlias: true, + IncludeMapKeys: false, + }, + }, + }, + }, + }, + }, + { + expression: "...", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: recursiveDescentOpType, + Value: "RECURSIVE_DESCENT", + StringValue: "...", + Preferences: recursiveDescentPreferences{ + RecurseArray: true, + TraversePreferences: traversePreferences{ + DontFollowAlias: true, + IncludeMapKeys: true, + }, + }, + }, + }, + }, + }, + { + expression: ".a,.b", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "a", + StringValue: "a", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: unionOpType, + Value: "UNION", + StringValue: ",", + Preferences: nil, + }, + }, + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: traversePathOpType, + Value: "b", + StringValue: "b", + Preferences: traversePreferences{}, + }, + CheckForPostTraverse: true, + }, + }, + }, + { + expression: "map_values", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: mapValuesOpType, + Value: "MAP_VALUES", + StringValue: "map_values", + Preferences: nil, + }, + }, + }, + }, + { + expression: "mapvalues", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: mapValuesOpType, + Value: "MAP_VALUES", + StringValue: "mapvalues", + Preferences: nil, + }, + }, + }, + }, + { + expression: "flatten(3)", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: flattenOpType, + Value: "FLATTEN_BY", + StringValue: "flatten(3)", + Preferences: flattenPreferences{depth: 3}, + }, + }, + }, + }, + { + expression: "flatten", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: flattenOpType, + Value: "FLATTEN_BY", + StringValue: "flatten", + Preferences: flattenPreferences{depth: -1}, + }, + }, + }, + }, + { + expression: "length", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: lengthOpType, + Value: "LENGTH", + StringValue: "length", + Preferences: nil, + }, + }, + }, + }, + { + expression: "format_datetime", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: formatDateTimeOpType, + Value: "FORMAT_DATE_TIME", + StringValue: "format_datetime", + Preferences: nil, + }, + }, + }, + }, + { + expression: "to_yaml(3)", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: encodeOpType, + Value: "ENCODE", + StringValue: "to_yaml(3)", + Preferences: encoderPreferences{ + format: YamlOutputFormat, + indent: 3, + }, + }, + }, + }, + }, + { + expression: "tojson(2)", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: encodeOpType, + Value: "ENCODE", + StringValue: "tojson(2)", + Preferences: encoderPreferences{ + format: JSONOutputFormat, + indent: 2, + }, + }, + }, + }, + }, + { + expression: "@yaml", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: encodeOpType, + Value: "ENCODE", + StringValue: "@yaml", + Preferences: encoderPreferences{ + format: YamlOutputFormat, + indent: 2, + }, + }, + }, + }, + }, + { + expression: "to_props", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: encodeOpType, + Value: "ENCODE", + StringValue: "to_props", + Preferences: encoderPreferences{ + format: PropsOutputFormat, + indent: 2, + }, + }, + }, + }, + }, + { + expression: "@base64d", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: decodeOpType, + Value: "DECODE", + StringValue: "@base64d", + Preferences: decoderPreferences{ + format: Base64InputFormat, + }, + }, + }, + }, + }, + { + expression: "@base64", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: encodeOpType, + Value: "ENCODE", + StringValue: "@base64", + Preferences: encoderPreferences{ + format: Base64OutputFormat, + }, + }, + }, + }, + }, + { + expression: "@yamld", + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: decodeOpType, + Value: "DECODE", + StringValue: "@yamld", + Preferences: decoderPreferences{ + format: YamlInputFormat, + }, + }, + }, + }, + }, + { + expression: `"string with a \""`, + tokens: []*token{ + { + TokenType: operationToken, + Operation: &Operation{ + OperationType: valueOpType, + Value: `string with a "`, + StringValue: `string with a "`, + Preferences: nil, + CandidateNode: &CandidateNode{ + Node: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: `string with a "`, + }, + }, + }, + }, + }, + }, +} + +func TestParticipleLexer(t *testing.T) { + lexer := newParticipleLexer() + + for _, scenario := range participleLexerScenarios { + actual, err := lexer.Tokenise(scenario.expression) + if err != nil { + t.Error(err) + } else { + test.AssertResultWithContext(t, repr.String(scenario.tokens, repr.Indent(" ")), repr.String(actual, repr.Indent(" ")), scenario.expression) + } + + } +} diff --git a/external/yq/pkg/yqlib/lib.go b/external/yq/pkg/yqlib/lib.go new file mode 100755 index 0000000..6ea1300 --- /dev/null +++ b/external/yq/pkg/yqlib/lib.go @@ -0,0 +1,497 @@ +// Use the top level Evaluator or StreamEvaluator to evaluate expressions and return matches. +package yqlib + +import ( + "bytes" + "container/list" + "fmt" + "math" + "strconv" + "strings" + + logging "gopkg.in/op/go-logging.v1" + yaml "gopkg.in/yaml.v3" +) + +var ExpressionParser ExpressionParserInterface + +func InitExpressionParser() { + if ExpressionParser == nil { + ExpressionParser = newExpressionParser() + } +} + +var log = logging.MustGetLogger("yq-lib") + +var PrettyPrintExp = `(... | (select(tag != "!!str"), select(tag == "!!str") | select(test("(?i)^(y|yes|n|no|on|off)$") | not)) ) style=""` + +// GetLogger returns the yq logger instance. +func GetLogger() *logging.Logger { + return log +} + +type operationType struct { + Type string + NumArgs uint // number of arguments to the op + Precedence uint + Handler operatorHandler +} + +var orOpType = &operationType{Type: "OR", NumArgs: 2, Precedence: 20, Handler: orOperator} +var andOpType = &operationType{Type: "AND", NumArgs: 2, Precedence: 20, Handler: andOperator} +var reduceOpType = &operationType{Type: "REDUCE", NumArgs: 2, Precedence: 35, Handler: reduceOperator} + +var blockOpType = &operationType{Type: "BLOCK", Precedence: 10, NumArgs: 2, Handler: emptyOperator} + +var unionOpType = &operationType{Type: "UNION", NumArgs: 2, Precedence: 10, Handler: unionOperator} + +var pipeOpType = &operationType{Type: "PIPE", NumArgs: 2, Precedence: 30, Handler: pipeOperator} + +var assignOpType = &operationType{Type: "ASSIGN", NumArgs: 2, Precedence: 40, Handler: assignUpdateOperator} +var addAssignOpType = &operationType{Type: "ADD_ASSIGN", NumArgs: 2, Precedence: 40, Handler: addAssignOperator} +var subtractAssignOpType = &operationType{Type: "SUBTRACT_ASSIGN", NumArgs: 2, Precedence: 40, Handler: subtractAssignOperator} + +var assignAttributesOpType = &operationType{Type: "ASSIGN_ATTRIBUTES", NumArgs: 2, Precedence: 40, Handler: assignAttributesOperator} +var assignStyleOpType = &operationType{Type: "ASSIGN_STYLE", NumArgs: 2, Precedence: 40, Handler: assignStyleOperator} +var assignVariableOpType = &operationType{Type: "ASSIGN_VARIABLE", NumArgs: 2, Precedence: 40, Handler: assignVariableOperator} +var assignTagOpType = &operationType{Type: "ASSIGN_TAG", NumArgs: 2, Precedence: 40, Handler: assignTagOperator} +var assignCommentOpType = &operationType{Type: "ASSIGN_COMMENT", NumArgs: 2, Precedence: 40, Handler: assignCommentsOperator} +var assignAnchorOpType = &operationType{Type: "ASSIGN_ANCHOR", NumArgs: 2, Precedence: 40, Handler: assignAnchorOperator} +var assignAliasOpType = &operationType{Type: "ASSIGN_ALIAS", NumArgs: 2, Precedence: 40, Handler: assignAliasOperator} + +var multiplyOpType = &operationType{Type: "MULTIPLY", NumArgs: 2, Precedence: 42, Handler: multiplyOperator} +var multiplyAssignOpType = &operationType{Type: "MULTIPLY_ASSIGN", NumArgs: 2, Precedence: 42, Handler: multiplyAssignOperator} + +var addOpType = &operationType{Type: "ADD", NumArgs: 2, Precedence: 42, Handler: addOperator} +var subtractOpType = &operationType{Type: "SUBTRACT", NumArgs: 2, Precedence: 42, Handler: subtractOperator} +var alternativeOpType = &operationType{Type: "ALTERNATIVE", NumArgs: 2, Precedence: 42, Handler: alternativeOperator} + +var equalsOpType = &operationType{Type: "EQUALS", NumArgs: 2, Precedence: 40, Handler: equalsOperator} +var notEqualsOpType = &operationType{Type: "NOT_EQUALS", NumArgs: 2, Precedence: 40, Handler: notEqualsOperator} + +var compareOpType = &operationType{Type: "COMPARE", NumArgs: 2, Precedence: 40, Handler: compareOperator} + +// createmap needs to be above union, as we use union to build the components of the objects +var createMapOpType = &operationType{Type: "CREATE_MAP", NumArgs: 2, Precedence: 15, Handler: createMapOperator} + +var shortPipeOpType = &operationType{Type: "SHORT_PIPE", NumArgs: 2, Precedence: 45, Handler: pipeOperator} + +var lengthOpType = &operationType{Type: "LENGTH", NumArgs: 0, Precedence: 50, Handler: lengthOperator} +var lineOpType = &operationType{Type: "LINE", NumArgs: 0, Precedence: 50, Handler: lineOperator} +var columnOpType = &operationType{Type: "LINE", NumArgs: 0, Precedence: 50, Handler: columnOperator} + +var expressionOpType = &operationType{Type: "EXP", NumArgs: 0, Precedence: 50, Handler: expressionOperator} + +var collectOpType = &operationType{Type: "COLLECT", NumArgs: 1, Precedence: 50, Handler: collectOperator} +var mapOpType = &operationType{Type: "MAP", NumArgs: 1, Precedence: 50, Handler: mapOperator} +var errorOpType = &operationType{Type: "ERROR", NumArgs: 1, Precedence: 50, Handler: errorOperator} +var pickOpType = &operationType{Type: "PICK", NumArgs: 1, Precedence: 50, Handler: pickOperator} +var evalOpType = &operationType{Type: "EVAL", NumArgs: 1, Precedence: 50, Handler: evalOperator} +var mapValuesOpType = &operationType{Type: "MAP_VALUES", NumArgs: 1, Precedence: 50, Handler: mapValuesOperator} + +var formatDateTimeOpType = &operationType{Type: "FORMAT_DATE_TIME", NumArgs: 1, Precedence: 50, Handler: formatDateTime} +var withDtFormatOpType = &operationType{Type: "WITH_DATE_TIME_FORMAT", NumArgs: 1, Precedence: 50, Handler: withDateTimeFormat} +var nowOpType = &operationType{Type: "NOW", NumArgs: 0, Precedence: 50, Handler: nowOp} +var tzOpType = &operationType{Type: "TIMEZONE", NumArgs: 1, Precedence: 50, Handler: tzOp} + +var encodeOpType = &operationType{Type: "ENCODE", NumArgs: 0, Precedence: 50, Handler: encodeOperator} +var decodeOpType = &operationType{Type: "DECODE", NumArgs: 0, Precedence: 50, Handler: decodeOperator} + +var anyOpType = &operationType{Type: "ANY", NumArgs: 0, Precedence: 50, Handler: anyOperator} +var allOpType = &operationType{Type: "ALL", NumArgs: 0, Precedence: 50, Handler: allOperator} +var containsOpType = &operationType{Type: "CONTAINS", NumArgs: 1, Precedence: 50, Handler: containsOperator} +var anyConditionOpType = &operationType{Type: "ANY_CONDITION", NumArgs: 1, Precedence: 50, Handler: anyOperator} +var allConditionOpType = &operationType{Type: "ALL_CONDITION", NumArgs: 1, Precedence: 50, Handler: allOperator} + +var toEntriesOpType = &operationType{Type: "TO_ENTRIES", NumArgs: 0, Precedence: 50, Handler: toEntriesOperator} +var fromEntriesOpType = &operationType{Type: "FROM_ENTRIES", NumArgs: 0, Precedence: 50, Handler: fromEntriesOperator} +var withEntriesOpType = &operationType{Type: "WITH_ENTRIES", NumArgs: 1, Precedence: 50, Handler: withEntriesOperator} + +var withOpType = &operationType{Type: "WITH", NumArgs: 1, Precedence: 50, Handler: withOperator} + +var splitDocumentOpType = &operationType{Type: "SPLIT_DOC", NumArgs: 0, Precedence: 50, Handler: splitDocumentOperator} +var getVariableOpType = &operationType{Type: "GET_VARIABLE", NumArgs: 0, Precedence: 55, Handler: getVariableOperator} +var getStyleOpType = &operationType{Type: "GET_STYLE", NumArgs: 0, Precedence: 50, Handler: getStyleOperator} +var getTagOpType = &operationType{Type: "GET_TAG", NumArgs: 0, Precedence: 50, Handler: getTagOperator} + +var getKeyOpType = &operationType{Type: "GET_KEY", NumArgs: 0, Precedence: 50, Handler: getKeyOperator} +var isKeyOpType = &operationType{Type: "IS_KEY", NumArgs: 0, Precedence: 50, Handler: isKeyOperator} +var getParentOpType = &operationType{Type: "GET_PARENT", NumArgs: 0, Precedence: 50, Handler: getParentOperator} + +var getCommentOpType = &operationType{Type: "GET_COMMENT", NumArgs: 0, Precedence: 50, Handler: getCommentsOperator} +var getAnchorOpType = &operationType{Type: "GET_ANCHOR", NumArgs: 0, Precedence: 50, Handler: getAnchorOperator} +var getAliasOpType = &operationType{Type: "GET_ALIAS", NumArgs: 0, Precedence: 50, Handler: getAliasOperator} +var getDocumentIndexOpType = &operationType{Type: "GET_DOCUMENT_INDEX", NumArgs: 0, Precedence: 50, Handler: getDocumentIndexOperator} +var getFilenameOpType = &operationType{Type: "GET_FILENAME", NumArgs: 0, Precedence: 50, Handler: getFilenameOperator} +var getFileIndexOpType = &operationType{Type: "GET_FILE_INDEX", NumArgs: 0, Precedence: 50, Handler: getFileIndexOperator} + +var getPathOpType = &operationType{Type: "GET_PATH", NumArgs: 0, Precedence: 50, Handler: getPathOperator} +var setPathOpType = &operationType{Type: "SET_PATH", NumArgs: 1, Precedence: 50, Handler: setPathOperator} +var delPathsOpType = &operationType{Type: "DEL_PATHS", NumArgs: 1, Precedence: 50, Handler: delPathsOperator} + +var explodeOpType = &operationType{Type: "EXPLODE", NumArgs: 1, Precedence: 50, Handler: explodeOperator} +var sortByOpType = &operationType{Type: "SORT_BY", NumArgs: 1, Precedence: 50, Handler: sortByOperator} +var reverseOpType = &operationType{Type: "REVERSE", NumArgs: 0, Precedence: 50, Handler: reverseOperator} +var sortOpType = &operationType{Type: "SORT", NumArgs: 0, Precedence: 50, Handler: sortOperator} + +var sortKeysOpType = &operationType{Type: "SORT_KEYS", NumArgs: 1, Precedence: 50, Handler: sortKeysOperator} + +var joinStringOpType = &operationType{Type: "JOIN", NumArgs: 1, Precedence: 50, Handler: joinStringOperator} +var subStringOpType = &operationType{Type: "SUBSTR", NumArgs: 1, Precedence: 50, Handler: substituteStringOperator} +var matchOpType = &operationType{Type: "MATCH", NumArgs: 1, Precedence: 50, Handler: matchOperator} +var captureOpType = &operationType{Type: "CAPTURE", NumArgs: 1, Precedence: 50, Handler: captureOperator} +var testOpType = &operationType{Type: "TEST", NumArgs: 1, Precedence: 50, Handler: testOperator} +var splitStringOpType = &operationType{Type: "SPLIT", NumArgs: 1, Precedence: 50, Handler: splitStringOperator} +var changeCaseOpType = &operationType{Type: "CHANGE_CASE", NumArgs: 0, Precedence: 50, Handler: changeCaseOperator} +var trimOpType = &operationType{Type: "TRIM", NumArgs: 0, Precedence: 50, Handler: trimSpaceOperator} + +var loadOpType = &operationType{Type: "LOAD", NumArgs: 1, Precedence: 50, Handler: loadYamlOperator} + +var keysOpType = &operationType{Type: "KEYS", NumArgs: 0, Precedence: 50, Handler: keysOperator} + +var collectObjectOpType = &operationType{Type: "COLLECT_OBJECT", NumArgs: 0, Precedence: 50, Handler: collectObjectOperator} +var traversePathOpType = &operationType{Type: "TRAVERSE_PATH", NumArgs: 0, Precedence: 55, Handler: traversePathOperator} +var traverseArrayOpType = &operationType{Type: "TRAVERSE_ARRAY", NumArgs: 2, Precedence: 50, Handler: traverseArrayOperator} + +var selfReferenceOpType = &operationType{Type: "SELF", NumArgs: 0, Precedence: 55, Handler: selfOperator} +var valueOpType = &operationType{Type: "VALUE", NumArgs: 0, Precedence: 50, Handler: valueOperator} +var envOpType = &operationType{Type: "ENV", NumArgs: 0, Precedence: 50, Handler: envOperator} +var notOpType = &operationType{Type: "NOT", NumArgs: 0, Precedence: 50, Handler: notOperator} +var emptyOpType = &operationType{Type: "EMPTY", Precedence: 50, Handler: emptyOperator} + +var envsubstOpType = &operationType{Type: "ENVSUBST", NumArgs: 0, Precedence: 50, Handler: envsubstOperator} + +var recursiveDescentOpType = &operationType{Type: "RECURSIVE_DESCENT", NumArgs: 0, Precedence: 50, Handler: recursiveDescentOperator} + +var selectOpType = &operationType{Type: "SELECT", NumArgs: 1, Precedence: 50, Handler: selectOperator} +var hasOpType = &operationType{Type: "HAS", NumArgs: 1, Precedence: 50, Handler: hasOperator} +var uniqueOpType = &operationType{Type: "UNIQUE", NumArgs: 0, Precedence: 50, Handler: unique} +var uniqueByOpType = &operationType{Type: "UNIQUE_BY", NumArgs: 1, Precedence: 50, Handler: uniqueBy} +var groupByOpType = &operationType{Type: "GROUP_BY", NumArgs: 1, Precedence: 50, Handler: groupBy} +var flattenOpType = &operationType{Type: "FLATTEN_BY", NumArgs: 0, Precedence: 50, Handler: flattenOp} +var deleteChildOpType = &operationType{Type: "DELETE", NumArgs: 1, Precedence: 40, Handler: deleteChildOperator} + +type Operation struct { + OperationType *operationType + Value interface{} + StringValue string + CandidateNode *CandidateNode // used for Value Path elements + Preferences interface{} + UpdateAssign bool // used for assign ops, when true it means we evaluate the rhs given the lhs +} + +func recurseNodeArrayEqual(lhs *yaml.Node, rhs *yaml.Node) bool { + if len(lhs.Content) != len(rhs.Content) { + return false + } + + for index := 0; index < len(lhs.Content); index = index + 1 { + if !recursiveNodeEqual(lhs.Content[index], rhs.Content[index]) { + return false + } + } + return true +} + +func findInArray(array *yaml.Node, item *yaml.Node) int { + + for index := 0; index < len(array.Content); index = index + 1 { + if recursiveNodeEqual(array.Content[index], item) { + return index + } + } + return -1 +} + +func findKeyInMap(dataMap *yaml.Node, item *yaml.Node) int { + + for index := 0; index < len(dataMap.Content); index = index + 2 { + if recursiveNodeEqual(dataMap.Content[index], item) { + return index + } + } + return -1 +} + +func recurseNodeObjectEqual(lhs *yaml.Node, rhs *yaml.Node) bool { + if len(lhs.Content) != len(rhs.Content) { + return false + } + + for index := 0; index < len(lhs.Content); index = index + 2 { + key := lhs.Content[index] + value := lhs.Content[index+1] + + indexInRHS := findInArray(rhs, key) + + if indexInRHS == -1 || !recursiveNodeEqual(value, rhs.Content[indexInRHS+1]) { + return false + } + } + return true +} + +func guessTagFromCustomType(node *yaml.Node) string { + if strings.HasPrefix(node.Tag, "!!") { + return node.Tag + } else if node.Value == "" { + log.Warning("node has no value to guess the type with") + return node.Tag + } + dataBucket, errorReading := parseSnippet(node.Value) + + if errorReading != nil { + log.Warning("could not guess underlying tag type %v", errorReading) + return node.Tag + } + guessedTag := unwrapDoc(dataBucket).Tag + log.Info("im guessing the tag %v is a %v", node.Tag, guessedTag) + return guessedTag +} + +func parseSnippet(value string) (*yaml.Node, error) { + if value == "" { + return &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!null", + }, nil + } + decoder := NewYamlDecoder(ConfiguredYamlPreferences) + err := decoder.Init(strings.NewReader(value)) + if err != nil { + return nil, err + } + parsedNode, err := decoder.Decode() + if err != nil { + return nil, err + } + if len(parsedNode.Node.Content) == 0 { + return nil, fmt.Errorf("bad data") + } + return unwrapDoc(parsedNode.Node), err +} + +func recursiveNodeEqual(lhs *yaml.Node, rhs *yaml.Node) bool { + if lhs.Kind != rhs.Kind { + return false + } + + if lhs.Kind == yaml.ScalarNode { + //process custom tags of scalar nodes. + //dont worry about matching tags of maps or arrays. + + lhsTag := guessTagFromCustomType(lhs) + rhsTag := guessTagFromCustomType(rhs) + + if lhsTag != rhsTag { + return false + } + } + + if lhs.Tag == "!!null" { + return true + + } else if lhs.Kind == yaml.ScalarNode { + return lhs.Value == rhs.Value + } else if lhs.Kind == yaml.SequenceNode { + return recurseNodeArrayEqual(lhs, rhs) + } else if lhs.Kind == yaml.MappingNode { + return recurseNodeObjectEqual(lhs, rhs) + } + return false +} + +func deepCloneContent(content []*yaml.Node) []*yaml.Node { + clonedContent := make([]*yaml.Node, len(content)) + for i, child := range content { + clonedContent[i] = deepClone(child) + } + return clonedContent +} + +func deepCloneNoContent(node *yaml.Node) *yaml.Node { + return deepCloneWithOptions(node, false) +} +func deepClone(node *yaml.Node) *yaml.Node { + return deepCloneWithOptions(node, true) +} + +func deepCloneWithOptions(node *yaml.Node, cloneContent bool) *yaml.Node { + if node == nil { + return nil + } + var clonedContent []*yaml.Node + if cloneContent { + clonedContent = deepCloneContent(node.Content) + } + return &yaml.Node{ + Content: clonedContent, + Kind: node.Kind, + Style: node.Style, + Tag: node.Tag, + Value: node.Value, + Anchor: node.Anchor, + Alias: deepClone(node.Alias), + HeadComment: node.HeadComment, + LineComment: node.LineComment, + FootComment: node.FootComment, + Line: node.Line, + Column: node.Column, + } +} + +// yaml numbers can be hex encoded... +func parseInt64(numberString string) (string, int64, error) { + if strings.HasPrefix(numberString, "0x") || + strings.HasPrefix(numberString, "0X") { + num, err := strconv.ParseInt(numberString[2:], 16, 64) + return "0x%X", num, err + } + num, err := strconv.ParseInt(numberString, 10, 64) + return "%v", num, err +} + +func parseInt(numberString string) (int, error) { + var err error + var parsed int64 + if strings.HasPrefix(numberString, "0x") || + strings.HasPrefix(numberString, "0X") { + parsed, err = strconv.ParseInt(numberString[2:], 16, 64) + } else { + parsed, err = strconv.ParseInt(numberString, 10, 64) + } + + if err != nil { + return 0, err + } else if parsed > math.MaxInt || parsed < math.MinInt { + return 0, fmt.Errorf("%v is not within [%v, %v]", parsed, math.MinInt, math.MaxInt) + } + + return int(parsed), err +} + +func createStringScalarNode(stringValue string) *yaml.Node { + var node = &yaml.Node{Kind: yaml.ScalarNode} + node.Value = stringValue + node.Tag = "!!str" + return node +} + +func createScalarNode(value interface{}, stringValue string) *yaml.Node { + var node = &yaml.Node{Kind: yaml.ScalarNode} + node.Value = stringValue + + switch value.(type) { + case float32, float64: + node.Tag = "!!float" + case int, int64, int32: + node.Tag = "!!int" + case bool: + node.Tag = "!!bool" + case string: + node.Tag = "!!str" + case nil: + node.Tag = "!!null" + } + return node +} + +func headAndLineComment(node *yaml.Node) string { + return headComment(node) + lineComment(node) +} + +func headComment(node *yaml.Node) string { + return strings.Replace(node.HeadComment, "#", "", 1) +} + +func lineComment(node *yaml.Node) string { + return strings.Replace(node.LineComment, "#", "", 1) +} + +func footComment(node *yaml.Node) string { + return strings.Replace(node.FootComment, "#", "", 1) +} + +func createValueOperation(value interface{}, stringValue string) *Operation { + var node = createScalarNode(value, stringValue) + + return &Operation{ + OperationType: valueOpType, + Value: value, + StringValue: stringValue, + CandidateNode: &CandidateNode{Node: node}, + } +} + +// debugging purposes only +func (p *Operation) toString() string { + if p == nil { + return "OP IS NIL" + } + if p.OperationType == traversePathOpType { + return fmt.Sprintf("%v", p.Value) + } else if p.OperationType == selfReferenceOpType { + return "SELF" + } else if p.OperationType == valueOpType { + return fmt.Sprintf("%v (%T)", p.Value, p.Value) + } else { + return fmt.Sprintf("%v", p.OperationType.Type) + } +} + +// use for debugging only +func NodesToString(collection *list.List) string { + if !log.IsEnabledFor(logging.DEBUG) { + return "" + } + + result := fmt.Sprintf("%v results\n", collection.Len()) + for el := collection.Front(); el != nil; el = el.Next() { + result = result + "\n" + NodeToString(el.Value.(*CandidateNode)) + } + return result +} + +func NodeToString(node *CandidateNode) string { + if !log.IsEnabledFor(logging.DEBUG) { + return "" + } + value := node.Node + if value == nil { + return "-- nil --" + } + buf := new(bytes.Buffer) + encoder := yaml.NewEncoder(buf) + errorEncoding := encoder.Encode(value) + if errorEncoding != nil { + log.Error("Error debugging node, %v", errorEncoding.Error()) + } + errorClosingEncoder := encoder.Close() + if errorClosingEncoder != nil { + log.Error("Error closing encoder: ", errorClosingEncoder.Error()) + } + tag := value.Tag + if value.Kind == yaml.DocumentNode { + tag = "doc" + } else if value.Kind == yaml.AliasNode { + tag = "alias" + } + return fmt.Sprintf(`D%v, P%v, (%v)::%v`, node.Document, node.Path, tag, buf.String()) +} + +func KindString(kind yaml.Kind) string { + switch kind { + case yaml.ScalarNode: + return "ScalarNode" + case yaml.SequenceNode: + return "SequenceNode" + case yaml.MappingNode: + return "MappingNode" + case yaml.DocumentNode: + return "DocumentNode" + case yaml.AliasNode: + return "AliasNode" + default: + return "unknown!" + } +} diff --git a/external/yq/pkg/yqlib/lib_test.go b/external/yq/pkg/yqlib/lib_test.go new file mode 100755 index 0000000..fb3d5c7 --- /dev/null +++ b/external/yq/pkg/yqlib/lib_test.go @@ -0,0 +1,104 @@ +package yqlib + +import ( + "testing" + + "github.com/mikefarah/yq/v4/test" + yaml "gopkg.in/yaml.v3" +) + +func TestGetLogger(t *testing.T) { + l := GetLogger() + if l != log { + t.Fatal("GetLogger should return the yq logger instance, not a copy") + } +} + +type parseSnippetScenario struct { + snippet string + expected *yaml.Node + expectedError string +} + +var parseSnippetScenarios = []parseSnippetScenario{ + { + snippet: ":", + expectedError: "yaml: did not find expected key", + }, + { + snippet: "", + expected: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!null", + }, + }, + { + snippet: "null", + expected: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!null", + Value: "null", + Line: 1, + Column: 1, + }, + }, + { + snippet: "3", + expected: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!int", + Value: "3", + Line: 1, + Column: 1, + }, + }, + { + snippet: "cat", + expected: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: "cat", + Line: 1, + Column: 1, + }, + }, + { + snippet: "3.1", + expected: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!float", + Value: "3.1", + Line: 1, + Column: 1, + }, + }, + { + snippet: "true", + expected: &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!bool", + Value: "true", + Line: 1, + Column: 1, + }, + }, +} + +func TestParseSnippet(t *testing.T) { + for _, tt := range parseSnippetScenarios { + actual, err := parseSnippet(tt.snippet) + if tt.expectedError != "" { + if err == nil { + t.Errorf("Expected error '%v' but it worked!", tt.expectedError) + } else { + test.AssertResultComplexWithContext(t, tt.expectedError, err.Error(), tt.snippet) + } + return + } + if err != nil { + t.Error(tt.snippet) + t.Error(err) + } + test.AssertResultComplexWithContext(t, tt.expected, actual, tt.snippet) + } +} diff --git a/external/yq/pkg/yqlib/matchKeyString.go b/external/yq/pkg/yqlib/matchKeyString.go new file mode 100755 index 0000000..bfea235 --- /dev/null +++ b/external/yq/pkg/yqlib/matchKeyString.go @@ -0,0 +1,58 @@ +package yqlib + +func matchKey(name string, pattern string) (matched bool) { + if pattern == "" { + return name == pattern + } + log.Debug("pattern: %v", pattern) + if pattern == "*" { + log.Debug("wild!") + return true + } + return deepMatch(name, pattern) +} + +// deepMatch reports whether the name matches the pattern in linear time. +// Source https://research.swtch.com/glob +func deepMatch(name, pattern string) bool { + px := 0 + nx := 0 + nextPx := 0 + nextNx := 0 + for px < len(pattern) || nx < len(name) { + if px < len(pattern) { + c := pattern[px] + switch c { + default: // ordinary character + if nx < len(name) && name[nx] == c { + px++ + nx++ + continue + } + case '?': // single-character wildcard + if nx < len(name) { + px++ + nx++ + continue + } + case '*': // zero-or-more-character wildcard + // Try to match at nx. + // If that doesn't work out, + // restart at nx+1 next. + nextPx = px + nextNx = nx + 1 + px++ + continue + } + } + // Mismatch. Maybe restart. + if 0 < nextNx && nextNx <= len(name) { + px = nextPx + nx = nextNx + continue + } + return false + } + // Matched all of pattern to all of name. Success. + return true +} diff --git a/external/yq/pkg/yqlib/matchKeyString_test.go b/external/yq/pkg/yqlib/matchKeyString_test.go new file mode 100755 index 0000000..3cacb4a --- /dev/null +++ b/external/yq/pkg/yqlib/matchKeyString_test.go @@ -0,0 +1,40 @@ +package yqlib + +import ( + "strings" + "testing" +) + +func TestDeepMatch(t *testing.T) { + var tests = []struct { + name string + pattern string + ok bool + }{ + {"", "", true}, + {"", "x", false}, + {"x", "", false}, + {"abc", "abc", true}, + {"abc", "*", true}, + {"abc", "*c", true}, + {"abc", "*b", false}, + {"abc", "a*", true}, + {"abc", "b*", false}, + {"a", "a*", true}, + {"a", "*a", true}, + {"axbxcxdxe", "a*b*c*d*e*", true}, + {"axbxcxdxexxx", "a*b*c*d*e*", true}, + {"abxbbxdbxebxczzx", "a*b?c*x", true}, + {"abxbbxdbxebxczzy", "a*b?c*x", false}, + {strings.Repeat("a", 100), "a*a*a*a*b", false}, + {"xxx", "*x", true}, + } + + for _, tt := range tests { + t.Run(tt.name+" "+tt.pattern, func(t *testing.T) { + if want, got := tt.ok, deepMatch(tt.name, tt.pattern); want != got { + t.Errorf("Expected %v got %v", want, got) + } + }) + } +} diff --git a/external/yq/pkg/yqlib/operator_add.go b/external/yq/pkg/yqlib/operator_add.go new file mode 100755 index 0000000..f0281bd --- /dev/null +++ b/external/yq/pkg/yqlib/operator_add.go @@ -0,0 +1,209 @@ +package yqlib + +import ( + "fmt" + "strconv" + "strings" + "time" + + yaml "gopkg.in/yaml.v3" +) + +func createAddOp(lhs *ExpressionNode, rhs *ExpressionNode) *ExpressionNode { + return &ExpressionNode{Operation: &Operation{OperationType: addOpType}, + LHS: lhs, + RHS: rhs} +} + +func addAssignOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + return compoundAssignFunction(d, context, expressionNode, createAddOp) +} + +func toNodes(candidate *CandidateNode, lhs *CandidateNode) ([]*yaml.Node, error) { + if candidate.Node.Tag == "!!null" { + return []*yaml.Node{}, nil + } + clone, err := candidate.Copy() + if err != nil { + return nil, err + } + + switch candidate.Node.Kind { + case yaml.SequenceNode: + return clone.Node.Content, nil + default: + if len(lhs.Node.Content) > 0 { + clone.Node.Style = lhs.Node.Content[0].Style + } + return []*yaml.Node{clone.Node}, nil + } + +} + +func addOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("Add operator") + + return crossFunction(d, context.ReadOnlyClone(), expressionNode, add, false) +} + +func add(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + lhs.Node = unwrapDoc(lhs.Node) + rhs.Node = unwrapDoc(rhs.Node) + + lhsNode := lhs.Node + + if lhsNode.Tag == "!!null" { + return lhs.CreateReplacement(rhs.Node), nil + } + + target := lhs.CreateReplacement(&yaml.Node{ + Anchor: lhs.Node.Anchor, + }) + + switch lhsNode.Kind { + case yaml.MappingNode: + if rhs.Node.Kind != yaml.MappingNode { + return nil, fmt.Errorf("%v (%v) cannot be added to a %v (%v)", rhs.Node.Tag, rhs.GetNicePath(), lhsNode.Tag, lhs.GetNicePath()) + } + addMaps(target, lhs, rhs) + case yaml.SequenceNode: + if err := addSequences(target, lhs, rhs); err != nil { + return nil, err + } + + case yaml.ScalarNode: + if rhs.Node.Kind != yaml.ScalarNode { + return nil, fmt.Errorf("%v (%v) cannot be added to a %v (%v)", rhs.Node.Tag, rhs.GetNicePath(), lhsNode.Tag, lhs.GetNicePath()) + } + target.Node.Kind = yaml.ScalarNode + target.Node.Style = lhsNode.Style + if err := addScalars(context, target, lhsNode, rhs.Node); err != nil { + return nil, err + } + } + return target, nil +} + +func addScalars(context Context, target *CandidateNode, lhs *yaml.Node, rhs *yaml.Node) error { + lhsTag := lhs.Tag + rhsTag := guessTagFromCustomType(rhs) + lhsIsCustom := false + if !strings.HasPrefix(lhsTag, "!!") { + // custom tag - we have to have a guess + lhsTag = guessTagFromCustomType(lhs) + lhsIsCustom = true + } + + isDateTime := lhs.Tag == "!!timestamp" + + // if the lhs is a string, it might be a timestamp in a custom format. + if lhsTag == "!!str" && context.GetDateTimeLayout() != time.RFC3339 { + _, err := parseDateTime(context.GetDateTimeLayout(), lhs.Value) + isDateTime = err == nil + } + + if isDateTime { + return addDateTimes(context.GetDateTimeLayout(), target, lhs, rhs) + + } else if lhsTag == "!!str" { + target.Node.Tag = lhs.Tag + target.Node.Value = lhs.Value + rhs.Value + } else if rhsTag == "!!str" { + target.Node.Tag = rhs.Tag + target.Node.Value = lhs.Value + rhs.Value + } else if lhsTag == "!!int" && rhsTag == "!!int" { + format, lhsNum, err := parseInt64(lhs.Value) + if err != nil { + return err + } + _, rhsNum, err := parseInt64(rhs.Value) + if err != nil { + return err + } + sum := lhsNum + rhsNum + target.Node.Tag = lhs.Tag + target.Node.Value = fmt.Sprintf(format, sum) + } else if (lhsTag == "!!int" || lhsTag == "!!float") && (rhsTag == "!!int" || rhsTag == "!!float") { + lhsNum, err := strconv.ParseFloat(lhs.Value, 64) + if err != nil { + return err + } + rhsNum, err := strconv.ParseFloat(rhs.Value, 64) + if err != nil { + return err + } + sum := lhsNum + rhsNum + if lhsIsCustom { + target.Node.Tag = lhs.Tag + } else { + target.Node.Tag = "!!float" + } + target.Node.Value = fmt.Sprintf("%v", sum) + } else { + return fmt.Errorf("%v cannot be added to %v", lhsTag, rhsTag) + } + return nil +} + +func addDateTimes(layout string, target *CandidateNode, lhs *yaml.Node, rhs *yaml.Node) error { + + duration, err := time.ParseDuration(rhs.Value) + if err != nil { + return fmt.Errorf("unable to parse duration [%v]: %w", rhs.Value, err) + } + + currentTime, err := parseDateTime(layout, lhs.Value) + if err != nil { + return err + } + + newTime := currentTime.Add(duration) + target.Node.Value = newTime.Format(layout) + return nil + +} + +func addSequences(target *CandidateNode, lhs *CandidateNode, rhs *CandidateNode) error { + target.Node.Kind = yaml.SequenceNode + if len(lhs.Node.Content) > 0 { + target.Node.Style = lhs.Node.Style + } + target.Node.Tag = lhs.Node.Tag + + extraNodes, err := toNodes(rhs, lhs) + if err != nil { + return err + } + + target.Node.Content = append(deepCloneContent(lhs.Node.Content), extraNodes...) + return nil + +} + +func addMaps(target *CandidateNode, lhsC *CandidateNode, rhsC *CandidateNode) { + lhs := lhsC.Node + rhs := rhsC.Node + + target.Node.Content = make([]*yaml.Node, len(lhs.Content)) + copy(target.Node.Content, lhs.Content) + + for index := 0; index < len(rhs.Content); index = index + 2 { + key := rhs.Content[index] + value := rhs.Content[index+1] + log.Debug("finding %v", key.Value) + indexInLHS := findKeyInMap(target.Node, key) + log.Debug("indexInLhs %v", indexInLHS) + if indexInLHS < 0 { + // not in there, append it + target.Node.Content = append(target.Node.Content, key, value) + } else { + // it's there, replace it + target.Node.Content[indexInLHS+1] = value + } + } + target.Node.Kind = yaml.MappingNode + if len(lhs.Content) > 0 { + target.Node.Style = lhs.Style + } + target.Node.Tag = lhs.Tag +} diff --git a/external/yq/pkg/yqlib/operator_add_test.go b/external/yq/pkg/yqlib/operator_add_test.go new file mode 100755 index 0000000..b745251 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_add_test.go @@ -0,0 +1,383 @@ +package yqlib + +import ( + "testing" +) + +var addOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `[{a: foo, b: bar}, {a: 1, b: 2}]`, + expression: ".[] | .a + .b", + expected: []string{ + "D0, P[0 a], (!!str)::foobar\n", + "D0, P[1 a], (!!int)::3\n", + }, + }, + { + skipDoc: true, + document: `a: key`, + expression: `. += {"key": "b"}`, + expected: []string{ + "D0, P[], (!!map)::a: key\nkey: b\n", + }, + }, + { + skipDoc: true, + document: `[[c], [b]]`, + expression: `.[] | . += "a"`, + expected: []string{ + "D0, P[0], (!!seq)::[c, a]\n", + "D0, P[1], (!!seq)::[b, a]\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: "(.a + .b) as $x", + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + skipDoc: true, + document: `a: 0`, + expression: ".a += .b.c", + expected: []string{ + "D0, P[], (doc)::a: 0\n", + }, + }, + + { + description: "Concatenate arrays", + document: `{a: [1,2], b: [3,4]}`, + expression: `.a + .b`, + expected: []string{ + "D0, P[a], (!!seq)::[1, 2, 3, 4]\n", + }, + }, + { + description: "Concatenate to existing array", + subdescription: "Note that the styling of `a` is kept.", + document: "a: [1,2]\nb:\n - 3\n - 4", + dontFormatInputForDoc: true, + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: [1, 2, 3, 4]\nb:\n - 3\n - 4\n", + }, + }, + { + skipDoc: true, + expression: `[1] + ([2], [3])`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n- 2\n", + "D0, P[], (!!seq)::- 1\n- 3\n", + }, + }, + { + description: "Concatenate null to array", + document: `{a: [1,2]}`, + expression: `.a + null`, + expected: []string{ + "D0, P[a], (!!seq)::[1, 2]\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to empty array", + document: `{a: []}`, + expression: `.a + "cat"`, + expected: []string{ + "D0, P[a], (!!seq)::- cat\n", + }, + }, + { + description: "Append to existing array", + subdescription: "Note that the styling is copied from existing array elements", + dontFormatInputForDoc: true, + document: `a: ['dog']`, + expression: `.a += "cat"`, + expected: []string{ + "D0, P[], (doc)::a: ['dog', 'cat']\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to existing array", + subdescription: "does not modify original", + document: `{a: ['dog'], b: cat}`, + expression: `.a = .a + .b`, + expected: []string{ + "D0, P[], (doc)::{a: ['dog', 'cat'], b: cat}\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to empty array", + document: `a: []`, + expression: `.a += "cat"`, + expected: []string{ + "D0, P[], (doc)::a:\n - cat\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to existing array", + document: `a: [dog]`, + expression: `.a += "cat"`, + expected: []string{ + "D0, P[], (doc)::a: [dog, cat]\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to empty object", + document: `{a: {}}`, + expression: `.a + {"b": "cat"}`, + expected: []string{ + "D0, P[a], (!!map)::b: cat\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to existing object", + document: `{a: {c: dog}}`, + expression: `.a + {"b": "cat"}`, + expected: []string{ + "D0, P[a], (!!map)::{c: dog, b: cat}\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to existing object", + subdescription: "matches stylig", + document: "a:\n c: dog", + expression: `.a + {"b": "cat"}`, + expected: []string{ + "D0, P[a], (!!map)::c: dog\nb: cat\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to empty object in place", + document: `a: {}`, + expression: `.a += {"b": "cat"}`, + expected: []string{ + "D0, P[], (doc)::a:\n b: cat\n", + }, + }, + { + skipDoc: true, + description: "Concatenate to existing object in place", + document: `a: {c: dog}`, + expression: `.a += {"b": "cat"}`, + expected: []string{ + "D0, P[], (doc)::a: {c: dog, b: cat}\n", + }, + }, + { + description: "Add new object to array", + document: `a: [{dog: woof}]`, + expression: `.a + {"cat": "meow"}`, + expected: []string{ + "D0, P[a], (!!seq)::[{dog: woof}, {cat: meow}]\n", + }, + }, + { + description: "Relative append", + document: `a: { a1: {b: [cat]}, a2: {b: [dog]}, a3: {} }`, + expression: `.a[].b += ["mouse"]`, + expected: []string{ + "D0, P[], (doc)::a: {a1: {b: [cat, mouse]}, a2: {b: [dog, mouse]}, a3: {b: [mouse]}}\n", + }, + }, + { + description: "String concatenation", + document: `{a: cat, b: meow}`, + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::{a: catmeow, b: meow}\n", + }, + }, + { + description: "String concatenation - str + int", + skipDoc: true, + document: `{a: !cool cat, b: meow}`, + expression: `.a + 3`, + expected: []string{ + "D0, P[a], (!cool)::cat3\n", + }, + }, + { + description: "String concatenation - int + str", + skipDoc: true, + document: `{a: !cool cat, b: meow}`, + expression: `3 + .a`, + expected: []string{ + "D0, P[], (!cool)::3cat\n", + }, + }, + { + description: "Number addition - float", + subdescription: "If the lhs or rhs are floats then the expression will be calculated with floats.", + document: `{a: 3, b: 4.9}`, + expression: `.a = .a + .b`, + expected: []string{ + "D0, P[], (doc)::{a: 7.9, b: 4.9}\n", + }, + }, + { + description: "Number addition - int", + subdescription: "If both the lhs and rhs are ints then the expression will be calculated with ints.", + document: `{a: 3, b: 4}`, + expression: `.a = .a + .b`, + expected: []string{ + "D0, P[], (doc)::{a: 7, b: 4}\n", + }, + }, + { + description: "Increment numbers", + document: `{a: 3, b: 5}`, + expression: `.[] += 1`, + expected: []string{ + "D0, P[], (doc)::{a: 4, b: 6}\n", + }, + }, + { + description: "Date addition", + subdescription: "You can add durations to dates. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: `a: 2021-01-01T00:00:00Z`, + expression: `.a += "3h10m"`, + expected: []string{ + "D0, P[], (doc)::a: 2021-01-01T03:10:00Z\n", + }, + }, + { + description: "Date addition -date only", + skipDoc: true, + document: `a: 2021-01-01`, + expression: `.a += "24h"`, + expected: []string{ + "D0, P[], (doc)::a: 2021-01-02T00:00:00Z\n", + }, + }, + { + description: "Date addition - custom format", + subdescription: "You can add durations to dates. See [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: `a: Saturday, 15-Dec-01 at 2:59AM GMT`, + expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a += "3h1m")`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 6:00AM GMT\n", + }, + }, + { + skipDoc: true, + description: "Date addition - custom format", + subdescription: "You can add durations to dates. See [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: `a: !cat Saturday, 15-Dec-01 at 2:59AM GMT`, + expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a += "3h1m")`, + expected: []string{ + "D0, P[], (doc)::a: !cat Saturday, 15-Dec-01 at 6:00AM GMT\n", + }, + }, + { + description: "Add to null", + subdescription: "Adding to null simply returns the rhs", + expression: `null + "cat"`, + expected: []string{ + "D0, P[], (!!str)::cat\n", + }, + }, + { + description: "Add maps to shallow merge", + subdescription: "Adding objects together shallow merges them. Use `*` to deeply merge.", + document: "a: {thing: {name: Astuff, value: x}, a1: cool}\nb: {thing: {name: Bstuff, legs: 3}, b1: neat}", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: {thing: {name: Bstuff, legs: 3}, a1: cool, b1: neat}\nb: {thing: {name: Bstuff, legs: 3}, b1: neat}\n", + }, + }, + { + description: "Custom types: that are really strings", + subdescription: "When custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse cat\nb: !goat _meow", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: !horse cat_meow\nb: !goat _meow\n", + }, + }, + { + description: "Custom types: that are really numbers", + subdescription: "When custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse 1.2\nb: !goat 2.3", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: !horse 3.5\nb: !goat 2.3\n", + }, + }, + { + skipDoc: true, + document: "a: !horse 2\nb: !goat 2.3", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: !horse 4.3\nb: !goat 2.3\n", + }, + }, + { + skipDoc: true, + document: "a: 2\nb: !goat 2.3", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: 4.3\nb: !goat 2.3\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really ints", + document: "a: !horse 2\nb: !goat 3", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: !horse 5\nb: !goat 3\n", + }, + }, + { + description: "Custom types: that are really arrays", + skipDoc: true, + subdescription: "when custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse [a]\nb: !goat [b]", + expression: `.a += .b`, + expected: []string{ + "D0, P[], (doc)::a: !horse [a, b]\nb: !goat [b]\n", + }, + }, + { + skipDoc: true, + description: "Keep anchors", + document: "a: &horse [1]", + expression: `.a += 2`, + expected: []string{ + "D0, P[], (doc)::a: &horse [1, 2]\n", + }, + }, + { + skipDoc: true, + description: "Add sequence to map", + document: "a: {x: cool}", + expression: `.a += [2]`, + expectedError: "!!seq () cannot be added to a !!map (a)", + }, + { + skipDoc: true, + description: "Add sequence to scalar", + document: "a: cool", + expression: `.a += [2]`, + expectedError: "!!seq () cannot be added to a !!str (a)", + }, +} + +func TestAddOperatorScenarios(t *testing.T) { + for _, tt := range addOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "add", addOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_alternative.go b/external/yq/pkg/yqlib/operator_alternative.go new file mode 100755 index 0000000..ca8569f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_alternative.go @@ -0,0 +1,44 @@ +package yqlib + +func alternativeOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- alternative") + prefs := crossFunctionPreferences{ + CalcWhenEmpty: true, + Calculation: alternativeFunc, + LhsResultValue: func(lhs *CandidateNode) (*CandidateNode, error) { + if lhs == nil { + return nil, nil + } + truthy, err := isTruthy(lhs) + if err != nil { + return nil, err + } + if truthy { + return lhs, nil + } + return nil, nil + }, + } + return crossFunctionWithPrefs(d, context, expressionNode, prefs) +} + +func alternativeFunc(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + if lhs == nil { + return rhs, nil + } + if rhs == nil { + return lhs, nil + } + lhs.Node = unwrapDoc(lhs.Node) + rhs.Node = unwrapDoc(rhs.Node) + log.Debugf("Alternative LHS: %v", lhs.Node.Tag) + log.Debugf("- RHS: %v", rhs.Node.Tag) + + isTrue, err := isTruthy(lhs) + if err != nil { + return nil, err + } else if isTrue { + return lhs, nil + } + return rhs, nil +} diff --git a/external/yq/pkg/yqlib/operator_alternative_test.go b/external/yq/pkg/yqlib/operator_alternative_test.go new file mode 100755 index 0000000..7410663 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_alternative_test.go @@ -0,0 +1,113 @@ +package yqlib + +import ( + "testing" +) + +var alternativeOperatorScenarios = []expressionScenario{ + { + // to match jq - we do not use a readonly clone context on the LHS. + skipDoc: true, + expression: `.b // .c`, + document: `a: bridge`, + expected: []string{ + "D0, P[c], (!!null)::null\n", + }, + }, + { + skipDoc: true, + expression: `(.b // "hello") as $x`, + document: `a: bridge`, + expected: []string{ + "D0, P[], (doc)::a: bridge\n", + }, + }, + { + skipDoc: true, + expression: `.a // .b`, + document: `a: 2`, + expected: []string{ + "D0, P[a], (!!int)::2\n", + }, + }, + { + description: "LHS is defined", + expression: `.a // "hello"`, + document: `{a: bridge}`, + expected: []string{ + "D0, P[a], (!!str)::bridge\n", + }, + }, + { + expression: `select(tag == "seq") // "cat"`, + skipDoc: true, + document: `a: frog`, + expected: []string{ + "D0, P[], (!!str)::cat\n", + }, + }, + { + description: "LHS is not defined", + expression: `.a // "hello"`, + document: `{}`, + expected: []string{ + "D0, P[], (!!str)::hello\n", + }, + }, + { + description: "LHS is null", + expression: `.a // "hello"`, + document: `{a: ~}`, + expected: []string{ + "D0, P[], (!!str)::hello\n", + }, + }, + { + description: "LHS is false", + expression: `.a // "hello"`, + document: `{a: false}`, + expected: []string{ + "D0, P[], (!!str)::hello\n", + }, + }, + { + description: "RHS is an expression", + expression: `.a // .b`, + document: `{a: false, b: cat}`, + expected: []string{ + "D0, P[b], (!!str)::cat\n", + }, + }, + { + skipDoc: true, + expression: `false // true`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "Update or create - entity exists", + subdescription: "This initialises `a` if it's not present", + expression: "(.a // (.a = 0)) += 1", + document: `a: 1`, + expected: []string{ + "D0, P[], (doc)::a: 2\n", + }, + }, + { + description: "Update or create - entity does not exist", + subdescription: "This initialises `a` if it's not present", + expression: "(.a // (.a = 0)) += 1", + document: `b: camel`, + expected: []string{ + "D0, P[], (!!map)::b: camel\na: 1\n", + }, + }, +} + +func TestAlternativeOperatorScenarios(t *testing.T) { + for _, tt := range alternativeOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "alternative-default-value", alternativeOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_anchors_aliases.go b/external/yq/pkg/yqlib/operator_anchors_aliases.go new file mode 100755 index 0000000..caaf364 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_anchors_aliases.go @@ -0,0 +1,300 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func assignAliasOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("AssignAlias operator!") + + aliasName := "" + if !expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + if rhs.MatchingNodes.Front() != nil { + aliasName = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + + if err != nil { + return Context{}, err + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + log.Debugf("Setting aliasName : %v", candidate.GetKey()) + + if expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + if rhs.MatchingNodes.Front() != nil { + aliasName = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + if aliasName != "" { + candidate.Node.Kind = yaml.AliasNode + candidate.Node.Value = aliasName + } + } + return context, nil +} + +func getAliasOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetAlias operator!") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: candidate.Node.Value, Tag: "!!str"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + return context.ChildContext(results), nil +} + +func assignAnchorOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("AssignAnchor operator!") + + anchorName := "" + if !expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + anchorName = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + + if err != nil { + return Context{}, err + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + log.Debugf("Setting anchorName of : %v", candidate.GetKey()) + + if expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + anchorName = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + candidate.Node.Anchor = anchorName + } + return context, nil +} + +func getAnchorOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetAnchor operator!") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + anchor := candidate.Node.Anchor + node := &yaml.Node{Kind: yaml.ScalarNode, Value: anchor, Tag: "!!str"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + return context.ChildContext(results), nil +} + +func explodeOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- ExplodeOperation") + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + rhs, err := d.GetMatchingNodes(context.SingleChildContext(candidate), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + for childEl := rhs.MatchingNodes.Front(); childEl != nil; childEl = childEl.Next() { + err = explodeNode(childEl.Value.(*CandidateNode).Node, context) + if err != nil { + return Context{}, err + } + } + + } + + return context, nil +} + +func reconstructAliasedMap(node *yaml.Node, context Context) error { + var newContent = list.New() + // can I short cut here by prechecking if there's an anchor in the map? + // no it needs to recurse in overrideEntry. + + for index := 0; index < len(node.Content); index = index + 2 { + keyNode := node.Content[index] + valueNode := node.Content[index+1] + log.Debugf("traversing %v", keyNode.Value) + if keyNode.Value != "<<" { + err := overrideEntry(node, keyNode, valueNode, index, context.ChildContext(newContent)) + if err != nil { + return err + } + } else { + if valueNode.Kind == yaml.SequenceNode { + log.Debugf("an alias merge list!") + for index := len(valueNode.Content) - 1; index >= 0; index = index - 1 { + aliasNode := valueNode.Content[index] + err := applyAlias(node, aliasNode.Alias, index, context.ChildContext(newContent)) + if err != nil { + return err + } + } + } else { + log.Debugf("an alias merge!") + err := applyAlias(node, valueNode.Alias, index, context.ChildContext(newContent)) + if err != nil { + return err + } + } + } + } + node.Content = make([]*yaml.Node, newContent.Len()) + index := 0 + for newEl := newContent.Front(); newEl != nil; newEl = newEl.Next() { + node.Content[index] = newEl.Value.(*yaml.Node) + index++ + } + return nil +} + +func explodeNode(node *yaml.Node, context Context) error { + node.Anchor = "" + switch node.Kind { + case yaml.SequenceNode, yaml.DocumentNode: + for index, contentNode := range node.Content { + log.Debugf("exploding index %v", index) + errorInContent := explodeNode(contentNode, context) + if errorInContent != nil { + return errorInContent + } + } + return nil + case yaml.AliasNode: + log.Debugf("its an alias!") + if node.Alias != nil { + node.Kind = node.Alias.Kind + node.Style = node.Alias.Style + node.Tag = node.Alias.Tag + node.Content = deepCloneContent(node.Alias.Content) + node.Value = node.Alias.Value + node.Alias = nil + } + return nil + case yaml.MappingNode: + // //check the map has an alias in it + hasAlias := false + for index := 0; index < len(node.Content); index = index + 2 { + keyNode := node.Content[index] + if keyNode.Value == "<<" { + hasAlias = true + break + } + } + + if hasAlias { + // this is a slow op, which is why we want to check before running it. + return reconstructAliasedMap(node, context) + } + // this map has no aliases, but it's kids might + for index := 0; index < len(node.Content); index = index + 2 { + keyNode := node.Content[index] + valueNode := node.Content[index+1] + err := explodeNode(keyNode, context) + if err != nil { + return err + } + err = explodeNode(valueNode, context) + if err != nil { + return err + } + } + return nil + default: + return nil + } +} + +func applyAlias(node *yaml.Node, alias *yaml.Node, aliasIndex int, newContent Context) error { + if alias == nil { + return nil + } + if alias.Kind != yaml.MappingNode { + return fmt.Errorf("merge anchor only supports maps, got %v instead", alias.Tag) + } + for index := 0; index < len(alias.Content); index = index + 2 { + keyNode := alias.Content[index] + log.Debugf("applying alias key %v", keyNode.Value) + valueNode := alias.Content[index+1] + err := overrideEntry(node, keyNode, valueNode, aliasIndex, newContent) + if err != nil { + return err + } + } + return nil +} + +func overrideEntry(node *yaml.Node, key *yaml.Node, value *yaml.Node, startIndex int, newContent Context) error { + + err := explodeNode(value, newContent) + + if err != nil { + return err + } + + for newEl := newContent.MatchingNodes.Front(); newEl != nil; newEl = newEl.Next() { + valueEl := newEl.Next() // move forward twice + keyNode := newEl.Value.(*yaml.Node) + log.Debugf("checking new content %v:%v", keyNode.Value, valueEl.Value.(*yaml.Node).Value) + if keyNode.Value == key.Value && keyNode.Alias == nil && key.Alias == nil { + log.Debugf("overridign new content") + valueEl.Value = value + return nil + } + newEl = valueEl // move forward twice + } + + for index := startIndex + 2; index < len(node.Content); index = index + 2 { + keyNode := node.Content[index] + + if keyNode.Value == key.Value && keyNode.Alias == nil { + log.Debugf("content will be overridden at index %v", index) + return nil + } + } + + err = explodeNode(key, newContent) + if err != nil { + return err + } + log.Debugf("adding %v:%v", key.Value, value.Value) + newContent.MatchingNodes.PushBack(key) + newContent.MatchingNodes.PushBack(value) + return nil +} diff --git a/external/yq/pkg/yqlib/operator_anchors_aliases_test.go b/external/yq/pkg/yqlib/operator_anchors_aliases_test.go new file mode 100755 index 0000000..07a3fdf --- /dev/null +++ b/external/yq/pkg/yqlib/operator_anchors_aliases_test.go @@ -0,0 +1,244 @@ +package yqlib + +import ( + "testing" +) + +var specDocument = `- &CENTER { x: 1, y: 2 } +- &LEFT { x: 0, y: 2 } +- &BIG { r: 10 } +- &SMALL { r: 1 } +` + +var expectedSpecResult = "D0, P[4], (!!map)::x: 1\ny: 2\nr: 10\n" + +var simpleArrayRef = ` +item_value: &item_value + value: true + +thingOne: + name: item_1 + <<: *item_value + +thingTwo: + name: item_2 + <<: *item_value +` + +var expectedUpdatedArrayRef = `D0, P[], (doc)::item_value: &item_value + value: true +thingOne: + name: item_1 + value: false +thingTwo: + name: item_2 + !!merge <<: *item_value +` + +var anchorOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + description: "merge anchor not map", + document: "a: &a\n - 0\nc:\n <<: [*a]\n", + expectedError: "merge anchor only supports maps, got !!seq instead", + expression: "explode(.)", + }, + { + description: "Merge one map", + subdescription: "see https://yaml.org/type/merge.html", + document: specDocument + "- << : *CENTER\n r: 10\n", + expression: ".[4] | explode(.)", + expected: []string{expectedSpecResult}, + }, + { + description: "Merge multiple maps", + subdescription: "see https://yaml.org/type/merge.html", + document: specDocument + "- << : [ *CENTER, *BIG ]\n", + expression: ".[4] | explode(.)", + expected: []string{"D0, P[4], (!!map)::r: 10\nx: 1\ny: 2\n"}, + }, + { + description: "Override", + subdescription: "see https://yaml.org/type/merge.html", + document: specDocument + "- << : [ *BIG, *LEFT, *SMALL ]\n x: 1\n", + expression: ".[4] | explode(.)", + expected: []string{"D0, P[4], (!!map)::r: 10\nx: 1\ny: 2\n"}, + }, + { + description: "Get anchor", + document: `a: &billyBob cat`, + expression: `.a | anchor`, + expected: []string{ + "D0, P[a], (!!str)::billyBob\n", + }, + }, + { + description: "Set anchor", + document: `a: cat`, + expression: `.a anchor = "foobar"`, + expected: []string{ + "D0, P[], (doc)::a: &foobar cat\n", + }, + }, + { + description: "Set anchor relatively using assign-update", + document: `a: {b: cat}`, + expression: `.a anchor |= .b`, + expected: []string{ + "D0, P[], (doc)::a: &cat {b: cat}\n", + }, + }, + { + skipDoc: true, + document: `a: {c: cat}`, + expression: `.a anchor |= .b`, + expected: []string{ + "D0, P[], (doc)::a: {c: cat}\n", + }, + }, + { + skipDoc: true, + document: `a: {c: cat}`, + expression: `.a anchor = .b`, + expected: []string{ + "D0, P[], (doc)::a: {c: cat}\n", + }, + }, + { + description: "Get alias", + document: `{b: &billyBob meow, a: *billyBob}`, + expression: `.a | alias`, + expected: []string{ + "D0, P[a], (!!str)::billyBob\n", + }, + }, + { + description: "Set alias", + document: `{b: &meow purr, a: cat}`, + expression: `.a alias = "meow"`, + expected: []string{ + "D0, P[], (doc)::{b: &meow purr, a: *meow}\n", + }, + }, + { + description: "Set alias to blank does nothing", + document: `{b: &meow purr, a: cat}`, + expression: `.a alias = ""`, + expected: []string{ + "D0, P[], (doc)::{b: &meow purr, a: cat}\n", + }, + }, + { + skipDoc: true, + document: `{b: &meow purr, a: cat}`, + expression: `.a alias = .c`, + expected: []string{ + "D0, P[], (doc)::{b: &meow purr, a: cat}\n", + }, + }, + { + skipDoc: true, + document: `{b: &meow purr, a: cat}`, + expression: `.a alias |= .c`, + expected: []string{ + "D0, P[], (doc)::{b: &meow purr, a: cat}\n", + }, + }, + { + description: "Set alias relatively using assign-update", + document: `{b: &meow purr, a: {f: meow}}`, + expression: `.a alias |= .f`, + expected: []string{ + "D0, P[], (doc)::{b: &meow purr, a: *meow}\n", + }, + }, + { + description: "Explode alias and anchor", + document: `{f : {a: &a cat, b: *a}}`, + expression: `explode(.f)`, + expected: []string{ + "D0, P[], (doc)::{f: {a: cat, b: cat}}\n", + }, + }, + { + description: "Explode with no aliases or anchors", + document: `a: mike`, + expression: `explode(.a)`, + expected: []string{ + "D0, P[], (doc)::a: mike\n", + }, + }, + { + description: "Explode with alias keys", + document: `{f : {a: &a cat, *a: b}}`, + expression: `explode(.f)`, + expected: []string{ + "D0, P[], (doc)::{f: {a: cat, cat: b}}\n", + }, + }, + { + description: "Explode with merge anchors", + document: mergeDocSample, + expression: `explode(.)`, + expected: []string{`D0, P[], (doc)::foo: + a: foo_a + thing: foo_thing + c: foo_c +bar: + b: bar_b + thing: bar_thing + c: bar_c +foobarList: + b: bar_b + thing: foo_thing + c: foobarList_c + a: foo_a +foobar: + c: foo_c + a: foo_a + thing: foobar_thing +`}, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foo* | explode(.) | (. style="flow")`, + expected: []string{ + "D0, P[foo], (!!map)::{a: foo_a, thing: foo_thing, c: foo_c}\n", + "D0, P[foobarList], (!!map)::{b: bar_b, thing: foo_thing, c: foobarList_c, a: foo_a}\n", + "D0, P[foobar], (!!map)::{c: foo_c, a: foo_a, thing: foobar_thing}\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foo* | explode(explode(.)) | (. style="flow")`, + expected: []string{ + "D0, P[foo], (!!map)::{a: foo_a, thing: foo_thing, c: foo_c}\n", + "D0, P[foobarList], (!!map)::{b: bar_b, thing: foo_thing, c: foobarList_c, a: foo_a}\n", + "D0, P[foobar], (!!map)::{c: foo_c, a: foo_a, thing: foobar_thing}\n", + }, + }, + { + skipDoc: true, + document: `{f : {a: &a cat, b: &b {f: *a}, *a: *b}}`, + expression: `explode(.f)`, + expected: []string{ + "D0, P[], (doc)::{f: {a: cat, b: {f: cat}, cat: {f: cat}}}\n", + }, + }, + { + description: "Dereference and update a field", + subdescription: "`Use explode with multiply to dereference an object", + document: simpleArrayRef, + expression: `.thingOne |= explode(.) * {"value": false}`, + expected: []string{expectedUpdatedArrayRef}, + }, +} + +func TestAnchorAliasOperatorScenarios(t *testing.T) { + for _, tt := range anchorOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "anchor-and-alias-operators", anchorOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_array_to_map_test.go b/external/yq/pkg/yqlib/operator_array_to_map_test.go new file mode 100755 index 0000000..406fec1 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_array_to_map_test.go @@ -0,0 +1,23 @@ +package yqlib + +import ( + "testing" +) + +var arrayToMapScenarios = []expressionScenario{ + { + description: "Simple example", + document: `cool: [null, null, hello]`, + expression: `.cool |= array_to_map`, + expected: []string{ + "D0, P[], (doc)::cool:\n 2: hello\n", + }, + }, +} + +func TestArrayToMapScenarios(t *testing.T) { + for _, tt := range arrayToMapScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "array-to-map", arrayToMapScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_assign.go b/external/yq/pkg/yqlib/operator_assign.go new file mode 100755 index 0000000..f21f452 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_assign.go @@ -0,0 +1,101 @@ +package yqlib + +type assignPreferences struct { + DontOverWriteAnchor bool + OnlyWriteNull bool + ClobberCustomTags bool +} + +func assignUpdateFunc(prefs assignPreferences) crossFunctionCalculation { + return func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + rhs.Node = unwrapDoc(rhs.Node) + if !prefs.OnlyWriteNull || lhs.Node.Tag == "!!null" { + lhs.UpdateFrom(rhs, prefs) + } + return lhs, nil + } +} + +// they way *= (multipleAssign) is handled, we set the multiplePrefs +// on the node, not assignPrefs. Long story. +func getAssignPreferences(preferences interface{}) assignPreferences { + prefs := assignPreferences{} + + switch typedPref := preferences.(type) { + case assignPreferences: + prefs = typedPref + case multiplyPreferences: + prefs = typedPref.AssignPrefs + } + return prefs +} + +func assignUpdateOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + + prefs := getAssignPreferences(expressionNode.Operation.Preferences) + + log.Debug("assignUpdateOperator prefs: %v", prefs) + + if !expressionNode.Operation.UpdateAssign { + // this works because we already ran against LHS with an editable context. + _, err := crossFunction(d, context.ReadOnlyClone(), expressionNode, assignUpdateFunc(prefs), false) + return context, err + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + rhs, err := d.GetMatchingNodes(context.SingleChildContext(candidate), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + + // grab the first value + first := rhs.MatchingNodes.Front() + + if first != nil { + rhsCandidate := first.Value.(*CandidateNode) + rhsCandidate.Node = unwrapDoc(rhsCandidate.Node) + candidate.UpdateFrom(rhsCandidate, prefs) + } + } + + return context, nil +} + +// does not update content or values +func assignAttributesOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debug("getting lhs matching nodes for update") + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + + // grab the first value + first := rhs.MatchingNodes.Front() + + if first != nil { + prefs := assignPreferences{} + if expressionNode.Operation.Preferences != nil { + prefs = expressionNode.Operation.Preferences.(assignPreferences) + } + if !prefs.OnlyWriteNull || candidate.Node.Tag == "!!null" { + candidate.UpdateAttributesFrom(first.Value.(*CandidateNode), prefs) + } + } + } + return context, nil +} diff --git a/external/yq/pkg/yqlib/operator_assign_test.go b/external/yq/pkg/yqlib/operator_assign_test.go new file mode 100755 index 0000000..4a7cd20 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_assign_test.go @@ -0,0 +1,235 @@ +package yqlib + +import ( + "testing" +) + +var assignOperatorScenarios = []expressionScenario{ + { + description: "Create yaml file", + expression: `.a.b = "cat" | .x = "frog"`, + expected: []string{ + "D0, P[], ()::a:\n b: cat\nx: frog\n", + }, + }, + { + skipDoc: true, + document: "{}", + expression: `.a |= .b`, + expected: []string{ + "D0, P[], (doc)::a: null\n", + }, + }, + { + skipDoc: true, + document: "{}", + expression: `.a = .b`, + expected: []string{ + "D0, P[], (doc)::a: null\n", + }, + }, + { + skipDoc: true, + description: "self reference", + document: "a: cat", + expression: `.a = [.a]`, + expected: []string{ + "D0, P[], (doc)::a:\n - cat\n", + }, + }, + { + skipDoc: true, + description: "change to number when old value is valid number", + document: `a: "3"`, + expression: `.a = 3`, + expected: []string{ + "D0, P[], (doc)::a: 3\n", + }, + }, + { + skipDoc: true, + description: "change to bool when old value is valid bool", + document: `a: "true"`, + expression: `.a = true`, + expected: []string{ + "D0, P[], (doc)::a: true\n", + }, + }, + { + skipDoc: true, + description: "update custom tag string, dont clobber style", + document: `a: !cat "meow"`, + expression: `.a = "woof"`, + expected: []string{ + "D0, P[], (doc)::a: !cat \"woof\"\n", + }, + }, + { + description: "Update node to be the child value", + document: `{a: {b: {g: foof}}}`, + expression: `.a |= .b`, + expected: []string{ + "D0, P[], (doc)::{a: {g: foof}}\n", + }, + }, + { + description: "Double elements in an array", + document: `[1,2,3]`, + expression: `.[] |= . * 2`, + expected: []string{ + "D0, P[], (doc)::[2, 4, 6]\n", + }, + }, + { + description: "Update node from another file", + subdescription: "Note this will also work when the second file is a scalar (string/number)", + document: `{a: apples}`, + document2: "{b: bob}", + expression: `select(fileIndex==0).a = select(fileIndex==1) | select(fileIndex==0)`, + expected: []string{ + "D0, P[], (doc)::{a: {b: bob}}\n", + }, + }, + { + description: "Update node to be the sibling value", + document: `{a: {b: child}, b: sibling}`, + expression: `.a = .b`, + expected: []string{ + "D0, P[], (doc)::{a: sibling, b: sibling}\n", + }, + }, + { + description: "Updated multiple paths", + document: `{a: fieldA, b: fieldB, c: fieldC}`, + expression: `(.a, .c) = "potato"`, + expected: []string{ + "D0, P[], (doc)::{a: potato, b: fieldB, c: potato}\n", + }, + }, + { + description: "Update string value", + document: `{a: {b: apple}}`, + expression: `.a.b = "frog"`, + expected: []string{ + "D0, P[], (doc)::{a: {b: frog}}\n", + }, + }, + { + description: "Update string value via |=", + subdescription: "Note there is no difference between `=` and `|=` when the RHS is a scalar", + document: `{a: {b: apple}}`, + expression: `.a.b |= "frog"`, + expected: []string{ + "D0, P[], (doc)::{a: {b: frog}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {b: apple}}`, + expression: `.a.b | (. |= "frog")`, + expected: []string{ + "D0, P[a b], (!!str)::frog\n", + }, + }, + { + skipDoc: true, + document: `{a: {b: apple}}`, + expression: `.a.b |= 5`, + expected: []string{ + "D0, P[], (doc)::{a: {b: 5}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {b: apple}}`, + expression: `.a.b |= 3.142`, + expected: []string{ + "D0, P[], (doc)::{a: {b: 3.142}}\n", + }, + }, + { + description: "Update deeply selected results", + subdescription: "Note that the LHS is wrapped in brackets! This is to ensure we don't first filter out the yaml and then update the snippet.", + document: `{a: {b: apple, c: cactus}}`, + expression: `(.a[] | select(. == "apple")) = "frog"`, + expected: []string{ + "D0, P[], (doc)::{a: {b: frog, c: cactus}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {b: apple, c: cactus}}`, + expression: `(.a.[] | select(. == "apple")) = "frog"`, + expected: []string{ + "D0, P[], (doc)::{a: {b: frog, c: cactus}}\n", + }, + }, + { + description: "Update array values", + document: `[candy, apple, sandy]`, + expression: `(.[] | select(. == "*andy")) = "bogs"`, + expected: []string{ + "D0, P[], (doc)::[bogs, apple, bogs]\n", + }, + }, + { + description: "Update empty object", + dontFormatInputForDoc: true, + document: `{}`, + expression: `.a.b |= "bogs"`, + expected: []string{ + "D0, P[], (doc)::a:\n b: bogs\n", + }, + }, + { + description: "Update node value that has an anchor", + subdescription: "Anchor will remaple", + dontFormatInputForDoc: true, + document: `a: &cool cat`, + expression: `.a = "dog"`, + expected: []string{ + "D0, P[], (doc)::a: &cool dog\n", + }, + }, + { + description: "Update empty object and array", + dontFormatInputForDoc: true, + document: `{}`, + expression: `.a.b.[0] |= "bogs"`, + expected: []string{ + "D0, P[], (doc)::a:\n b:\n - bogs\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: `.a.b.[1].c |= "bogs"`, + expected: []string{ + "D0, P[], (doc)::a:\n b:\n - null\n - c: bogs\n", + }, + }, + { + description: "Custom types are maintained by default", + document: "a: !cat meow\nb: !dog woof", + expression: `.a = .b`, + expected: []string{ + "D0, P[], (doc)::a: !cat woof\nb: !dog woof\n", + }, + }, + { + description: "Custom types: clovver", + subdescription: "Use the `c` option to clobber custom tags", + document: "a: !cat meow\nb: !dog woof", + expression: `.a =c .b`, + expected: []string{ + "D0, P[], (doc)::a: !dog woof\nb: !dog woof\n", + }, + }, +} + +func TestAssignOperatorScenarios(t *testing.T) { + for _, tt := range assignOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "assign-update", assignOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_booleans.go b/external/yq/pkg/yqlib/operator_booleans.go new file mode 100755 index 0000000..d919b9a --- /dev/null +++ b/external/yq/pkg/yqlib/operator_booleans.go @@ -0,0 +1,175 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func isTruthyNode(node *yaml.Node) (bool, error) { + value := true + if node.Tag == "!!null" { + return false, nil + } + if node.Kind == yaml.ScalarNode && node.Tag == "!!bool" { + errDecoding := node.Decode(&value) + if errDecoding != nil { + return false, errDecoding + } + + } + return value, nil +} + +func isTruthy(c *CandidateNode) (bool, error) { + node := unwrapDoc(c.Node) + return isTruthyNode(node) +} + +func getBoolean(candidate *CandidateNode) (bool, error) { + if candidate != nil { + candidate.Node = unwrapDoc(candidate.Node) + return isTruthy(candidate) + } + return false, nil +} + +func getOwner(lhs *CandidateNode, rhs *CandidateNode) *CandidateNode { + owner := lhs + + if lhs == nil && rhs == nil { + owner = &CandidateNode{} + } else if lhs == nil { + owner = rhs + } + return owner +} + +func returnRhsTruthy(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + owner := getOwner(lhs, rhs) + rhsBool, err := getBoolean(rhs) + if err != nil { + return nil, err + } + + return createBooleanCandidate(owner, rhsBool), nil +} + +func returnLHSWhen(targetBool bool) func(lhs *CandidateNode) (*CandidateNode, error) { + return func(lhs *CandidateNode) (*CandidateNode, error) { + var err error + var lhsBool bool + + if lhsBool, err = getBoolean(lhs); err != nil || lhsBool != targetBool { + return nil, err + } + owner := &CandidateNode{} + if lhs != nil { + owner = lhs + } + return createBooleanCandidate(owner, targetBool), nil + } +} + +func findBoolean(wantBool bool, d *dataTreeNavigator, context Context, expressionNode *ExpressionNode, sequenceNode *yaml.Node) (bool, error) { + for _, node := range sequenceNode.Content { + + if expressionNode != nil { + //need to evaluate the expression against the node + candidate := &CandidateNode{Node: node} + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode) + if err != nil { + return false, err + } + if rhs.MatchingNodes.Len() > 0 { + node = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node + } else { + // no results found, ignore this entry + continue + } + } + + truthy, err := isTruthyNode(node) + if err != nil { + return false, err + } + if truthy == wantBool { + return true, nil + } + } + return false, nil +} + +func allOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + if candidateNode.Kind != yaml.SequenceNode { + return Context{}, fmt.Errorf("any only supports arrays, was %v", candidateNode.Tag) + } + booleanResult, err := findBoolean(false, d, context, expressionNode.RHS, candidateNode) + if err != nil { + return Context{}, err + } + result := createBooleanCandidate(candidate, !booleanResult) + results.PushBack(result) + } + return context.ChildContext(results), nil +} + +func anyOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + if candidateNode.Kind != yaml.SequenceNode { + return Context{}, fmt.Errorf("any only supports arrays, was %v", candidateNode.Tag) + } + booleanResult, err := findBoolean(true, d, context, expressionNode.RHS, candidateNode) + if err != nil { + return Context{}, err + } + result := createBooleanCandidate(candidate, booleanResult) + results.PushBack(result) + } + return context.ChildContext(results), nil +} + +func orOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + prefs := crossFunctionPreferences{ + CalcWhenEmpty: true, + Calculation: returnRhsTruthy, + LhsResultValue: returnLHSWhen(true), + } + return crossFunctionWithPrefs(d, context.ReadOnlyClone(), expressionNode, prefs) +} + +func andOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + prefs := crossFunctionPreferences{ + CalcWhenEmpty: true, + Calculation: returnRhsTruthy, + LhsResultValue: returnLHSWhen(false), + } + return crossFunctionWithPrefs(d, context.ReadOnlyClone(), expressionNode, prefs) +} + +func notOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- notOperation") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + log.Debug("notOperation checking %v", candidate) + truthy, errDecoding := isTruthy(candidate) + if errDecoding != nil { + return Context{}, errDecoding + } + result := createBooleanCandidate(candidate, !truthy) + results.PushBack(result) + } + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_booleans_test.go b/external/yq/pkg/yqlib/operator_booleans_test.go new file mode 100755 index 0000000..f5735bb --- /dev/null +++ b/external/yq/pkg/yqlib/operator_booleans_test.go @@ -0,0 +1,258 @@ +package yqlib + +import ( + "testing" +) + +var booleanOperatorScenarios = []expressionScenario{ + { + description: "`or` example", + expression: `true or false`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "b: hi", + expression: `.a or .c`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "b: false", + expression: `.b or .c`, + expected: []string{ + "D0, P[b], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "b: hi", + expression: `select(.a or .b)`, + expected: []string{ + "D0, P[], (doc)::b: hi\n", + }, + }, + { + skipDoc: true, + document: "b: hi", + expression: `select((.a and .b) | not)`, + expected: []string{ + "D0, P[], (doc)::b: hi\n", + }, + }, + { + skipDoc: true, + description: "And should not run 2nd arg if first is false", + expression: `false and test(3)`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + description: "Or should not run 2nd arg if first is true", + expression: `true or test(3)`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "`and` example", + expression: `true and false`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + document: "[{a: bird, b: dog}, {a: frog, b: bird}, {a: cat, b: fly}]", + description: "Matching nodes with select, equals and or", + expression: `[.[] | select(.a == "cat" or .b == "dog")]`, + expected: []string{ + "D0, P[], (!!seq)::- {a: bird, b: dog}\n- {a: cat, b: fly}\n", + }, + }, + { + description: "`any` returns true if any boolean in a given array is true", + document: `[false, true]`, + expression: "any", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "`any` returns false for an empty array", + document: `[]`, + expression: "any", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "`any_c` returns true if any element in the array is true for the given condition.", + document: "a: [rad, awesome]\nb: [meh, whatever]", + expression: `.[] |= any_c(. == "awesome")`, + expected: []string{ + "D0, P[], (doc)::a: true\nb: false\n", + }, + }, + { + skipDoc: true, + document: `[{pet: cat}]`, + expression: `any_c(.name == "harry") as $c`, + expected: []string{ + "D0, P[], (doc)::[{pet: cat}]\n", + }, + }, + { + skipDoc: true, + document: `[{pet: cat}]`, + expression: `all_c(.name == "harry") as $c`, + expected: []string{ + "D0, P[], (doc)::[{pet: cat}]\n", + }, + }, + { + skipDoc: true, + document: `[false, false]`, + expression: "any", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "`all` returns true if all booleans in a given array are true", + document: `[true, true]`, + expression: "all", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: `[false, true]`, + expression: "all", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "`all` returns true for an empty array", + document: `[]`, + expression: "all", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "`all_c` returns true if all elements in the array are true for the given condition.", + document: "a: [rad, awesome]\nb: [meh, 12]", + expression: `.[] |= all_c(tag == "!!str")`, + expected: []string{ + "D0, P[], (doc)::a: true\nb: false\n", + }, + }, + { + skipDoc: true, + expression: `false or false`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `{a: true, b: false}`, + expression: `.[] or (false, true)`, + expected: []string{ + "D0, P[a], (!!bool)::true\n", + "D0, P[b], (!!bool)::false\n", + "D0, P[b], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: `{a: true, b: false}`, + expression: `.[] and (false, true)`, + expected: []string{ + "D0, P[a], (!!bool)::false\n", + "D0, P[a], (!!bool)::true\n", + "D0, P[b], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: `(.a.b or .c) as $x`, + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: `(.a.b and .c) as $x`, + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + description: "Not true is false", + expression: `true | not`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Not false is true", + expression: `false | not`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "String values considered to be true", + expression: `"cat" | not`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Empty string value considered to be true", + expression: `"" | not`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Numbers are considered to be true", + expression: `1 | not`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Zero is considered to be true", + expression: `0 | not`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + + description: "Null is considered to be false", + expression: `~ | not`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, +} + +func TestBooleanOperatorScenarios(t *testing.T) { + for _, tt := range booleanOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "boolean-operators", booleanOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_collect.go b/external/yq/pkg/yqlib/operator_collect.go new file mode 100755 index 0000000..a7f2546 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_collect.go @@ -0,0 +1,74 @@ +package yqlib + +import ( + "container/list" + + yaml "gopkg.in/yaml.v3" +) + +func collectTogether(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (*CandidateNode, error) { + collectedNode := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + collectExpResults, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode) + if err != nil { + return nil, err + } + for result := collectExpResults.MatchingNodes.Front(); result != nil; result = result.Next() { + resultC := result.Value.(*CandidateNode) + log.Debugf("found this: %v", NodeToString(resultC)) + collectedNode.Content = append(collectedNode.Content, unwrapDoc(resultC.Node)) + } + } + return &CandidateNode{Node: collectedNode}, nil +} + +func collectOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- collectOperation") + + if context.MatchingNodes.Len() == 0 { + node := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq", Value: "[]"} + candidate := &CandidateNode{Node: node} + return context.SingleChildContext(candidate), nil + } + + var evaluateAllTogether = true + for matchEl := context.MatchingNodes.Front(); matchEl != nil; matchEl = matchEl.Next() { + evaluateAllTogether = evaluateAllTogether && matchEl.Value.(*CandidateNode).EvaluateTogether + if !evaluateAllTogether { + break + } + } + + if evaluateAllTogether { + collectedNode, err := collectTogether(d, context, expressionNode.RHS) + if err != nil { + return Context{}, err + } + return context.SingleChildContext(collectedNode), nil + + } + + var results = list.New() + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + collectedNode := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + collectCandidate := candidate.CreateReplacement(collectedNode) + + collectExpResults, err := d.GetMatchingNodes(context.SingleChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + for result := collectExpResults.MatchingNodes.Front(); result != nil; result = result.Next() { + resultC := result.Value.(*CandidateNode) + log.Debugf("found this: %v", NodeToString(resultC)) + collectedNode.Content = append(collectedNode.Content, unwrapDoc(resultC.Node)) + } + + results.PushBack(collectCandidate) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_collect_object.go b/external/yq/pkg/yqlib/operator_collect_object.go new file mode 100755 index 0000000..59417a6 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_collect_object.go @@ -0,0 +1,101 @@ +package yqlib + +import ( + "container/list" + + yaml "gopkg.in/yaml.v3" +) + +/* +[Mike: cat, Bob: dog] +[Thing: rabbit, peter: sam] + +==> cross multiply + +{Mike: cat, Thing: rabbit} +{Mike: cat, peter: sam} +... +*/ + +func collectObjectOperator(d *dataTreeNavigator, originalContext Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- collectObjectOperation") + + context := originalContext.WritableClone() + + if context.MatchingNodes.Len() == 0 { + node := &yaml.Node{Kind: yaml.MappingNode, Tag: "!!map", Value: "{}"} + candidate := &CandidateNode{Node: node} + return context.SingleChildContext(candidate), nil + } + first := context.MatchingNodes.Front().Value.(*CandidateNode) + var rotated = make([]*list.List, len(first.Node.Content)) + + for i := 0; i < len(first.Node.Content); i++ { + rotated[i] = list.New() + } + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidateNode := el.Value.(*CandidateNode) + for i := 0; i < len(first.Node.Content); i++ { + rotated[i].PushBack(candidateNode.CreateChildInArray(i, candidateNode.Node.Content[i])) + } + } + + newObject := list.New() + for i := 0; i < len(first.Node.Content); i++ { + additions, err := collect(d, context.ChildContext(list.New()), rotated[i]) + if err != nil { + return Context{}, err + } + newObject.PushBackList(additions.MatchingNodes) + } + + return context.ChildContext(newObject), nil + +} + +func collect(d *dataTreeNavigator, context Context, remainingMatches *list.List) (Context, error) { + if remainingMatches.Len() == 0 { + return context, nil + } + + candidate := remainingMatches.Remove(remainingMatches.Front()).(*CandidateNode) + + splatted, err := splat(context.SingleChildContext(candidate), + traversePreferences{DontFollowAlias: true, IncludeMapKeys: false}) + + for splatEl := splatted.MatchingNodes.Front(); splatEl != nil; splatEl = splatEl.Next() { + splatEl.Value.(*CandidateNode).Path = nil + } + + if err != nil { + return Context{}, err + } + + if context.MatchingNodes.Len() == 0 { + return collect(d, splatted, remainingMatches) + } + + newAgg := list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + aggCandidate := el.Value.(*CandidateNode) + for splatEl := splatted.MatchingNodes.Front(); splatEl != nil; splatEl = splatEl.Next() { + splatCandidate := splatEl.Value.(*CandidateNode) + newCandidate, err := aggCandidate.Copy() + if err != nil { + return Context{}, err + } + + newCandidate.Path = nil + + newCandidate, err = multiply(multiplyPreferences{AppendArrays: false})(d, context, newCandidate, splatCandidate) + if err != nil { + return Context{}, err + } + newAgg.PushBack(newCandidate) + } + } + return collect(d, context.ChildContext(newAgg), remainingMatches) + +} diff --git a/external/yq/pkg/yqlib/operator_collect_object_test.go b/external/yq/pkg/yqlib/operator_collect_object_test.go new file mode 100755 index 0000000..eda96ad --- /dev/null +++ b/external/yq/pkg/yqlib/operator_collect_object_test.go @@ -0,0 +1,171 @@ +package yqlib + +import ( + "testing" +) + +var collectObjectOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `[{name: cat}, {name: dog}]`, + expression: `.[] | {.name: "great"}`, + expected: []string{ + "D0, P[], (!!map)::cat: great\n", + "D0, P[], (!!map)::dog: great\n", + }, + }, + { + skipDoc: true, + document: "a: []", + expression: `.a += [{"key": "att2", "value": "val2"}]`, + expected: []string{ + "D0, P[], (doc)::a:\n - key: att2\n value: val2\n", + }, + }, + { + skipDoc: true, + document: "", + expression: `.a += {"key": "att2", "value": "val2"}`, + expected: []string{ + "D0, P[], ()::a:\n key: att2\n value: val2\n", + }, + }, + { + skipDoc: true, + document: "", + expression: `.a += [0]`, + expected: []string{ + "D0, P[], ()::a:\n - 0\n", + }, + }, + { + description: `Collect empty object`, + document: ``, + expression: `{}`, + expected: []string{ + "D0, P[], (!!map)::{}\n", + }, + }, + { + description: `Wrap (prefix) existing object`, + document: "{name: Mike}\n", + expression: `{"wrap": .}`, + expected: []string{ + "D0, P[], (!!map)::wrap: {name: Mike}\n", + }, + }, + { + skipDoc: true, + document: "{name: Mike}\n", + document2: "{name: Bob}\n", + expression: `{"wrap": .}`, + expected: []string{ + "D0, P[], (!!map)::wrap: {name: Mike}\n", + "D0, P[], (!!map)::wrap: {name: Bob}\n", + }, + }, + { + skipDoc: true, + document: "{name: Mike}\n---\n{name: Bob}", + expression: `{"wrap": .}`, + expected: []string{ + "D0, P[], (!!map)::wrap: {name: Mike}\n", + "D0, P[], (!!map)::wrap: {name: Bob}\n", + }, + }, + { + skipDoc: true, + document: `{name: Mike, age: 32}`, + expression: `{.name: .age}`, + expected: []string{ + "D0, P[], (!!map)::Mike: 32\n", + }, + }, + { + description: `Using splat to create multiple objects`, + document: `{name: Mike, pets: [cat, dog]}`, + expression: `{.name: .pets.[]}`, + expected: []string{ + "D0, P[], (!!map)::Mike: cat\n", + "D0, P[], (!!map)::Mike: dog\n", + }, + }, + { + description: `Working with multiple documents`, + dontFormatInputForDoc: false, + document: "{name: Mike, pets: [cat, dog]}\n---\n{name: Rosey, pets: [monkey, sheep]}", + expression: `{.name: .pets.[]}`, + expected: []string{ + "D0, P[], (!!map)::Mike: cat\n", + "D0, P[], (!!map)::Mike: dog\n", + "D0, P[], (!!map)::Rosey: monkey\n", + "D0, P[], (!!map)::Rosey: sheep\n", + }, + }, + { + skipDoc: true, + document: `{name: Mike, pets: [cat, dog], food: [hotdog, burger]}`, + expression: `{.name: .pets.[], "f":.food.[]}`, + expected: []string{ + "D0, P[], (!!map)::Mike: cat\nf: hotdog\n", + "D0, P[], (!!map)::Mike: cat\nf: burger\n", + "D0, P[], (!!map)::Mike: dog\nf: hotdog\n", + "D0, P[], (!!map)::Mike: dog\nf: burger\n", + }, + }, + { + skipDoc: true, + document: "name: Mike\npets:\n cows:\n - apl\n - bba", + document2: "name: Rosey\npets:\n sheep:\n - frog\n - meow", + expression: `{"a":.name, "b":.pets}`, + expected: []string{ + "D0, P[], (!!map)::a: Mike\nb:\n cows:\n - apl\n - bba\n", + "D0, P[], (!!map)::a: Rosey\nb:\n sheep:\n - frog\n - meow\n", + }, + }, + { + description: "Creating yaml from scratch", + document: ``, + expression: `{"wrap": "frog"}`, + expected: []string{ + "D0, P[], (!!map)::wrap: frog\n", + }, + }, + { + skipDoc: true, + expression: `{"wrap": "frog", "bing": "bong"}`, + expected: []string{ + "D0, P[], (!!map)::wrap: frog\nbing: bong\n", + }, + }, + { + skipDoc: true, + document: `{name: Mike}`, + expression: `{"wrap": .}`, + expected: []string{ + "D0, P[], (!!map)::wrap: {name: Mike}\n", + }, + }, + { + skipDoc: true, + document: `{name: Mike}`, + expression: `{"wrap": {"further": .}} | (.. style= "flow")`, + expected: []string{ + "D0, P[], (!!map)::{wrap: {further: {name: Mike}}}\n", + }, + }, + { + description: "Creating yaml from scratch with multiple objects", + expression: `(.a.b = "foo") | (.d.e = "bar")`, + expected: []string{ + "D0, P[], ()::a:\n b: foo\nd:\n e: bar\n", + }, + }, +} + +func TestCollectObjectOperatorScenarios(t *testing.T) { + for _, tt := range collectObjectOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "create-collect-into-object", collectObjectOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_collect_test.go b/external/yq/pkg/yqlib/operator_collect_test.go new file mode 100755 index 0000000..b75f95f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_collect_test.go @@ -0,0 +1,129 @@ +package yqlib + +import ( + "testing" +) + +var collectOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: ``, + expression: `.a += [0]`, + expected: []string{ + "D0, P[], ()::a:\n - 0\n", + }, + }, + { + skipDoc: true, + expression: `[1,2,3]`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n- 2\n- 3\n", + }, + }, + { + skipDoc: true, + description: "update in collect", + expression: `[.a = "cat"]`, + expected: []string{ + "D0, P[], (!!seq)::- a: cat\n", + }, + }, + { + description: "Collect empty", + document: ``, + expression: `[]`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + skipDoc: true, + document: "{a: apple}\n---\n{b: frog}", + expression: `[.]`, + expected: []string{ + "D0, P[], (!!seq)::- {a: apple}\n- {b: frog}\n", + }, + }, + { + description: "with comments", + skipDoc: true, + document: "# abc\n[{a: apple}]\n\n# xyz\n", + + expression: `[.[]]`, + expected: []string{ + "D0, P[], (!!seq)::- {a: apple}\n", + }, + }, + { + skipDoc: true, + document: ``, + expression: `[3]`, + expected: []string{ + "D0, P[], (!!seq)::- 3\n", + }, + }, + { + description: "Collect single", + document: ``, + expression: `["cat"]`, + expected: []string{ + "D0, P[], (!!seq)::- cat\n", + }, + }, + { + document: ``, + skipDoc: true, + expression: `[true]`, + expected: []string{ + "D0, P[], (!!seq)::- true\n", + }, + }, + { + description: "Collect many", + document: `{a: cat, b: dog}`, + expression: `[.a, .b]`, + expected: []string{ + "D0, P[], (!!seq)::- cat\n- dog\n", + }, + }, + { + document: ``, + skipDoc: true, + expression: `collect(1)`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n", + }, + }, + { + document: `[1,2,3]`, + skipDoc: true, + expression: `[.[]]`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n- 2\n- 3\n", + }, + }, + { + document: `a: {b: [1,2,3]}`, + expression: `[.a.b.[]]`, + skipDoc: true, + expected: []string{ + "D0, P[], (!!seq)::- 1\n- 2\n- 3\n", + }, + }, + { + skipDoc: true, + document: `[{name: cat, thing: bor}, {name: dog}]`, + expression: `.[] | [.name]`, + expected: []string{ + "D0, P[0], (!!seq)::- cat\n", + "D0, P[1], (!!seq)::- dog\n", + }, + }, +} + +func TestCollectOperatorScenarios(t *testing.T) { + for _, tt := range collectOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "collect-into-array", collectOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_column.go b/external/yq/pkg/yqlib/operator_column.go new file mode 100755 index 0000000..ac7d339 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_column.go @@ -0,0 +1,23 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func columnOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("columnOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", candidate.Node.Column), Tag: "!!int"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_column_test.go b/external/yq/pkg/yqlib/operator_column_test.go new file mode 100755 index 0000000..3684588 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_column_test.go @@ -0,0 +1,47 @@ +package yqlib + +import ( + "testing" +) + +var columnOperatorScenarios = []expressionScenario{ + { + description: "Returns column of _value_ node", + document: "a: cat\nb: bob", + expression: `.b | column`, + expected: []string{ + "D0, P[b], (!!int)::4\n", + }, + }, + { + description: "Returns column of _key_ node", + subdescription: "Pipe through the key operator to get the column of the key", + document: "a: cat\nb: bob", + expression: `.b | key | column`, + expected: []string{ + "D0, P[b], (!!int)::1\n", + }, + }, + { + description: "First column is 1", + document: "a: cat", + expression: `.a | key | column`, + expected: []string{ + "D0, P[a], (!!int)::1\n", + }, + }, + { + description: "No column data is 0", + expression: `{"a": "new entry"} | column`, + expected: []string{ + "D0, P[], (!!int)::0\n", + }, + }, +} + +func TestColumnOperatorScenarios(t *testing.T) { + for _, tt := range columnOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "column", columnOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_comments.go b/external/yq/pkg/yqlib/operator_comments.go new file mode 100755 index 0000000..5bbe2e5 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_comments.go @@ -0,0 +1,124 @@ +package yqlib + +import ( + "bufio" + "bytes" + "container/list" + "regexp" + + yaml "gopkg.in/yaml.v3" +) + +type commentOpPreferences struct { + LineComment bool + HeadComment bool + FootComment bool +} + +func assignCommentsOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("AssignComments operator!") + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + + if err != nil { + return Context{}, err + } + + preferences := expressionNode.Operation.Preferences.(commentOpPreferences) + + comment := "" + if !expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + comment = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + if expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + comment = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + log.Debugf("Setting comment of : %v", candidate.GetKey()) + if preferences.LineComment { + candidate.Node.LineComment = comment + } + if preferences.HeadComment { + candidate.Node.HeadComment = comment + candidate.LeadingContent = "" // clobber the leading content, if there was any. + } + if preferences.FootComment && candidate.Node.Kind == yaml.DocumentNode && comment != "" { + candidate.TrailingContent = "# " + comment + } else if preferences.FootComment && candidate.Node.Kind == yaml.DocumentNode { + candidate.TrailingContent = comment + + } else if preferences.FootComment && candidate.Node.Kind != yaml.DocumentNode { + candidate.Node.FootComment = comment + candidate.TrailingContent = "" + } + + } + return context, nil +} + +func getCommentsOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + preferences := expressionNode.Operation.Preferences.(commentOpPreferences) + var startCommentCharaterRegExp = regexp.MustCompile(`^# `) + var subsequentCommentCharaterRegExp = regexp.MustCompile(`\n# `) + + log.Debugf("GetComments operator!") + var results = list.New() + + yamlPrefs := NewDefaultYamlPreferences() + yamlPrefs.PrintDocSeparators = false + yamlPrefs.UnwrapScalar = false + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + comment := "" + if preferences.LineComment { + comment = candidate.Node.LineComment + } else if preferences.HeadComment && candidate.LeadingContent != "" { + var chompRegexp = regexp.MustCompile(`\n$`) + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + var encoder = NewYamlEncoder(2, false, yamlPrefs) + if err := encoder.PrintLeadingContent(writer, candidate.LeadingContent); err != nil { + return Context{}, err + } + if err := writer.Flush(); err != nil { + return Context{}, err + } + comment = output.String() + comment = chompRegexp.ReplaceAllString(comment, "") + } else if preferences.HeadComment { + comment = candidate.Node.HeadComment + } else if preferences.FootComment && candidate.Node.Kind == yaml.DocumentNode && candidate.TrailingContent != "" { + comment = candidate.TrailingContent + } else if preferences.FootComment { + comment = candidate.Node.FootComment + } + comment = startCommentCharaterRegExp.ReplaceAllString(comment, "") + comment = subsequentCommentCharaterRegExp.ReplaceAllString(comment, "\n") + + node := &yaml.Node{Kind: yaml.ScalarNode, Value: comment, Tag: "!!str"} + result := candidate.CreateReplacement(node) + result.LeadingContent = "" // don't include the leading yaml content when retrieving a comment + results.PushBack(result) + } + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_comments_test.go b/external/yq/pkg/yqlib/operator_comments_test.go new file mode 100755 index 0000000..e117e18 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_comments_test.go @@ -0,0 +1,270 @@ +package yqlib + +import ( + "testing" +) + +var expectedWhereIsMyCommentMapKey = `D0, P[], (!!seq)::- p: "" + isKey: false + hc: "" + lc: "" + fc: "" +- p: hello + isKey: true + hc: "" + lc: hello-world-comment + fc: "" +- p: hello + isKey: false + hc: "" + lc: "" + fc: "" +- p: hello.message + isKey: true + hc: "" + lc: "" + fc: "" +- p: hello.message + isKey: false + hc: "" + lc: "" + fc: "" +` + +var expectedWhereIsMyCommentArray = `D0, P[], (!!seq)::- p: "" + isKey: false + hc: "" + lc: "" + fc: "" +- p: name + isKey: true + hc: "" + lc: "" + fc: "" +- p: name + isKey: false + hc: "" + lc: "" + fc: "" +- p: name.0 + isKey: false + hc: under-name-comment + lc: "" + fc: "" +` + +var commentOperatorScenarios = []expressionScenario{ + { + description: "Set line comment", + subdescription: "Set the comment on the key node for more reliability (see below).", + document: `a: cat`, + expression: `.a line_comment="single"`, + expected: []string{ + "D0, P[], (doc)::a: cat # single\n", + }, + }, + { + description: "Set line comment of a maps/arrays", + subdescription: "For maps and arrays, you need to set the line comment on the _key_ node. This will also work for scalars.", + document: "a:\n b: things", + expression: `(.a | key) line_comment="single"`, + expected: []string{ + "D0, P[], (doc)::a: # single\n b: things\n", + }, + }, + { + skipDoc: true, + document: "a: cat\nb: dog", + expression: `.a line_comment=.b`, + expected: []string{ + "D0, P[], (doc)::a: cat # dog\nb: dog\n", + }, + }, + { + skipDoc: true, + document: "a: cat\n---\na: dog", + expression: `.a line_comment |= documentIndex`, + expected: []string{ + "D0, P[], (doc)::a: cat # 0\n", + "D1, P[], (doc)::a: dog # 1\n", + }, + }, + { + description: "Use update assign to perform relative updates", + document: "a: cat\nb: dog", + expression: `.. line_comment |= .`, + expected: []string{ + "D0, P[], (!!map)::a: cat # cat\nb: dog # dog\n", + }, + }, + { + skipDoc: true, + document: "a: cat\nb: dog", + expression: `.. comments |= .`, + expected: []string{ + "D0, P[], (!!map)::a: cat # cat\n# cat\n\n# cat\nb: dog # dog\n# dog\n\n# dog\n", + }, + }, + { + description: "Where is the comment - map key example", + subdescription: "The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value).\nFrom this, you can see the 'hello-world-comment' is actually on the 'hello' key", + document: "hello: # hello-world-comment\n message: world", + expression: `[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]`, + expected: []string{ + expectedWhereIsMyCommentMapKey, + }, + }, + { + description: "Retrieve comment - map key example", + subdescription: "From the previous example, we know that the comment is on the 'hello' _key_ as a lineComment", + document: "hello: # hello-world-comment\n message: world", + expression: `.hello | key | line_comment`, + expected: []string{ + "D0, P[hello], (!!str)::hello-world-comment\n", + }, + }, + { + description: "Where is the comment - array example", + subdescription: "The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value).\nFrom this, you can see the 'under-name-comment' is actually on the first child", + document: "name:\n # under-name-comment\n - first-array-child", + expression: `[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]`, + expected: []string{ + expectedWhereIsMyCommentArray, + }, + }, + { + description: "Retrieve comment - array example", + subdescription: "From the previous example, we know that the comment is on the first child as a headComment", + document: "name:\n # under-name-comment\n - first-array-child", + expression: `.name[0] | headComment`, + expected: []string{ + "D0, P[name 0], (!!str)::under-name-comment\n", + }, + }, + { + description: "Set head comment", + document: `a: cat`, + expression: `. head_comment="single"`, + expected: []string{ + "D0, P[], (doc)::# single\n\na: cat\n", + }, + }, + { + description: "Set head comment of a map entry", + document: "f: foo\na:\n b: cat", + expression: `(.a | key) head_comment="single"`, + expected: []string{ + "D0, P[], (doc)::f: foo\n# single\na:\n b: cat\n", + }, + }, + { + description: "Set foot comment, using an expression", + document: `a: cat`, + expression: `. foot_comment=.a`, + expected: []string{ + "D0, P[], (doc)::a: cat\n# cat\n", + }, + }, + { + skipDoc: true, + description: "Set foot comment, using an expression", + document: "a: cat\n\n# hi", + expression: `. foot_comment=""`, + expected: []string{ + "D0, P[], (doc)::a: cat\n", + }, + }, + { + skipDoc: true, + document: `a: cat`, + expression: `. foot_comment=.b.d`, + expected: []string{ + "D0, P[], (doc)::a: cat\n", + }, + }, + { + skipDoc: true, + document: `a: cat`, + expression: `. foot_comment|=.b.d`, + expected: []string{ + "D0, P[], (doc)::a: cat\n", + }, + }, + { + description: "Remove comment", + document: "a: cat # comment\nb: dog # leave this", + expression: `.a line_comment=""`, + expected: []string{ + "D0, P[], (doc)::a: cat\nb: dog # leave this\n", + }, + }, + { + description: "Remove (strip) all comments", + subdescription: "Note the use of `...` to ensure key nodes are included.", + document: "# hi\n\na: cat # comment\n\n# great\n\nb: # key comment", + expression: `... comments=""`, + expected: []string{ + "D0, P[], (!!map)::a: cat\nb:\n", + }, + }, + { + description: "Get line comment", + document: "# welcome!\n\na: cat # meow\n\n# have a great day", + expression: `.a | line_comment`, + expected: []string{ + "D0, P[a], (!!str)::meow\n", + }, + }, + { + description: "Get head comment", + dontFormatInputForDoc: true, + document: "# welcome!\n\na: cat # meow\n\n# have a great day", + expression: `. | head_comment`, + expected: []string{ + "D0, P[], (!!str)::welcome!\n", + }, + }, + { + skipDoc: true, + description: "strip trailing comment recurse all", + document: "a: cat\n\n# haha", + expression: `... comments= ""`, + expected: []string{ + "D0, P[], (!!map)::a: cat\n", + }, + }, + { + skipDoc: true, + description: "strip trailing comment recurse values", + document: "a: cat\n\n# haha", + expression: `.. comments= ""`, + expected: []string{ + "D0, P[], (!!map)::a: cat\n", + }, + }, + { + description: "Head comment with document split", + dontFormatInputForDoc: true, + document: "# welcome!\n---\n# bob\na: cat # meow\n\n# have a great day", + expression: `head_comment`, + expected: []string{ + "D0, P[], (!!str)::welcome!\nbob\n", + }, + }, + { + description: "Get foot comment", + dontFormatInputForDoc: true, + document: "# welcome!\n\na: cat # meow\n\n# have a great day\n# no really", + expression: `. | foot_comment`, + expected: []string{ + "D0, P[], (!!str)::have a great day\nno really\n", + }, + }, +} + +func TestCommentOperatorScenarios(t *testing.T) { + for _, tt := range commentOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "comment-operators", commentOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_contains.go b/external/yq/pkg/yqlib/operator_contains.go new file mode 100755 index 0000000..d07a645 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_contains.go @@ -0,0 +1,111 @@ +package yqlib + +import ( + "fmt" + "strings" + + yaml "gopkg.in/yaml.v3" +) + +func containsOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + return crossFunction(d, context.ReadOnlyClone(), expressionNode, containsWithNodes, false) +} + +func containsArrayElement(array *yaml.Node, item *yaml.Node) (bool, error) { + for index := 0; index < len(array.Content); index = index + 1 { + containedInArray, err := contains(array.Content[index], item) + if err != nil { + return false, err + } + if containedInArray { + return true, nil + } + } + return false, nil +} + +func containsArray(lhs *yaml.Node, rhs *yaml.Node) (bool, error) { + if rhs.Kind != yaml.SequenceNode { + return containsArrayElement(lhs, rhs) + } + for index := 0; index < len(rhs.Content); index = index + 1 { + itemInArray, err := containsArrayElement(lhs, rhs.Content[index]) + if err != nil { + return false, err + } + if !itemInArray { + return false, nil + } + } + return true, nil +} + +func containsObject(lhs *yaml.Node, rhs *yaml.Node) (bool, error) { + if rhs.Kind != yaml.MappingNode { + return false, nil + } + for index := 0; index < len(rhs.Content); index = index + 2 { + rhsKey := rhs.Content[index] + rhsValue := rhs.Content[index+1] + log.Debugf("Looking for %v in the lhs", rhsKey.Value) + lhsKeyIndex := findInArray(lhs, rhsKey) + log.Debugf("index is %v", lhsKeyIndex) + if lhsKeyIndex < 0 || lhsKeyIndex%2 != 0 { + return false, nil + } + lhsValue := lhs.Content[lhsKeyIndex+1] + log.Debugf("lhsValue is %v", lhsValue.Value) + + itemInArray, err := contains(lhsValue, rhsValue) + log.Debugf("rhsValue is %v", rhsValue.Value) + if err != nil { + return false, err + } + if !itemInArray { + return false, nil + } + } + return true, nil +} + +func containsScalars(lhs *yaml.Node, rhs *yaml.Node) (bool, error) { + if lhs.Tag == "!!str" { + return strings.Contains(lhs.Value, rhs.Value), nil + } + return lhs.Value == rhs.Value, nil +} + +func contains(lhs *yaml.Node, rhs *yaml.Node) (bool, error) { + switch lhs.Kind { + case yaml.MappingNode: + return containsObject(lhs, rhs) + case yaml.SequenceNode: + return containsArray(lhs, rhs) + case yaml.ScalarNode: + if rhs.Kind != yaml.ScalarNode || lhs.Tag != rhs.Tag { + return false, nil + } + if lhs.Tag == "!!null" { + return rhs.Tag == "!!null", nil + } + return containsScalars(lhs, rhs) + } + + return false, fmt.Errorf("%v not yet supported for contains", lhs.Tag) +} + +func containsWithNodes(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + lhs.Node = unwrapDoc(lhs.Node) + rhs.Node = unwrapDoc(rhs.Node) + + if lhs.Node.Kind != rhs.Node.Kind { + return nil, fmt.Errorf("%v cannot check contained in %v", rhs.Node.Tag, lhs.Node.Tag) + } + + result, err := contains(lhs.Node, rhs.Node) + if err != nil { + return nil, err + } + + return createBooleanCandidate(lhs, result), nil +} diff --git a/external/yq/pkg/yqlib/operator_contains_test.go b/external/yq/pkg/yqlib/operator_contains_test.go new file mode 100755 index 0000000..f714ace --- /dev/null +++ b/external/yq/pkg/yqlib/operator_contains_test.go @@ -0,0 +1,91 @@ +package yqlib + +import "testing" + +var containsOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + expression: `null | contains(~)`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + expression: `3 | contains(3)`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + expression: `3 | contains(32)`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Array contains array", + subdescription: "Array is equal or subset of", + document: `["foobar", "foobaz", "blarp"]`, + expression: `contains(["baz", "bar"])`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "Array has a subset array", + subdescription: "Subtract the superset array from the subset, if there's anything left, it's not a subset", + document: `["foobar", "foobaz", "blarp"]`, + expression: `["baz", "bar"] - . | length == 0`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + expression: `["dog", "cat", "giraffe"] | contains(["camel"])`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Object included in array", + document: `{"foo": 12, "bar":[1,2,{"barp":12, "blip":13}]}`, + expression: `contains({"bar": [{"barp": 12}]})`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "Object not included in array", + document: `{"foo": 12, "bar":[1,2,{"barp":12, "blip":13}]}`, + expression: `contains({"foo": 12, "bar": [{"barp": 15}]})`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "String contains substring", + document: `"foobar"`, + expression: `contains("bar")`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "String equals string", + document: `"meow"`, + expression: `contains("meow")`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, +} + +func TestContainsOperatorScenarios(t *testing.T) { + for _, tt := range containsOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "contains", containsOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_create_map.go b/external/yq/pkg/yqlib/operator_create_map.go new file mode 100755 index 0000000..84582c9 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_create_map.go @@ -0,0 +1,85 @@ +package yqlib + +import ( + "container/list" + + "gopkg.in/yaml.v3" +) + +func createMapOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- createMapOperation") + + //each matchingNodes entry should turn into a sequence of keys to create. + //then collect object should do a cross function of the same index sequence for all matches. + + var path []interface{} + + var document uint + + sequences := list.New() + + if context.MatchingNodes.Len() > 0 { + + for matchingNodeEl := context.MatchingNodes.Front(); matchingNodeEl != nil; matchingNodeEl = matchingNodeEl.Next() { + matchingNode := matchingNodeEl.Value.(*CandidateNode) + sequenceNode, err := sequenceFor(d, context, matchingNode, expressionNode) + if err != nil { + return Context{}, err + } + sequences.PushBack(sequenceNode) + } + } else { + sequenceNode, err := sequenceFor(d, context, nil, expressionNode) + if err != nil { + return Context{}, err + } + sequences.PushBack(sequenceNode) + } + + return context.SingleChildContext(&CandidateNode{Node: listToNodeSeq(sequences), Document: document, Path: path}), nil + +} + +func sequenceFor(d *dataTreeNavigator, context Context, matchingNode *CandidateNode, expressionNode *ExpressionNode) (*CandidateNode, error) { + var path []interface{} + var document uint + var matches = list.New() + + if matchingNode != nil { + path = matchingNode.Path + document = matchingNode.Document + matches.PushBack(matchingNode) + } + + mapPairs, err := crossFunction(d, context.ChildContext(matches), expressionNode, + func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + node := yaml.Node{Kind: yaml.MappingNode, Tag: "!!map"} + log.Debugf("LHS:", NodeToString(lhs)) + log.Debugf("RHS:", NodeToString(rhs)) + node.Content = []*yaml.Node{ + unwrapDoc(lhs.Node), + unwrapDoc(rhs.Node), + } + + return &CandidateNode{Node: &node, Document: document, Path: path}, nil + }, false) + + if err != nil { + return nil, err + } + innerList := listToNodeSeq(mapPairs.MatchingNodes) + innerList.Style = yaml.FlowStyle + return &CandidateNode{Node: innerList, Document: document, Path: path}, nil +} + +// NOTE: here the document index gets dropped so we +// no longer know where the node originates from. +func listToNodeSeq(list *list.List) *yaml.Node { + node := yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + for entry := list.Front(); entry != nil; entry = entry.Next() { + entryCandidate := entry.Value.(*CandidateNode) + log.Debugf("Collecting %v into sequence", NodeToString(entryCandidate)) + node.Content = append(node.Content, entryCandidate.Node) + } + return &node +} diff --git a/external/yq/pkg/yqlib/operator_create_map_test.go b/external/yq/pkg/yqlib/operator_create_map_test.go new file mode 100755 index 0000000..6a97246 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_create_map_test.go @@ -0,0 +1,81 @@ +package yqlib + +import ( + "testing" +) + +var createMapOperatorScenarios = []expressionScenario{ + { + document: ``, + expression: `"frog": "jumps"`, + expected: []string{ + "D0, P[], (!!seq)::- [{frog: jumps}]\n", + }, + }, + { + document: `{name: Mike, age: 32}`, + expression: `.name: .age`, + expected: []string{ + "D0, P[], (!!seq)::- [{Mike: 32}]\n", + }, + }, + { + document: `{name: Mike, pets: [cat, dog]}`, + expression: `.name: .pets.[]`, + expected: []string{ + "D0, P[], (!!seq)::- [{Mike: cat}, {Mike: dog}]\n", + }, + }, + { + document: `{name: Mike, pets: [cat, dog], food: [hotdog, burger]}`, + expression: `.name: .pets.[], "f":.food.[]`, + expected: []string{ + "D0, P[], (!!seq)::- [{Mike: cat}, {Mike: dog}]\n", + "D0, P[], (!!seq)::- [{f: hotdog}, {f: burger}]\n", + }, + }, + { + document: "{name: Mike, pets: [cat, dog], food: [hotdog, burger]}\n---\n{name: Fred, pets: [mouse], food: [pizza, onion, apple]}", + expression: `.name: .pets.[], "f":.food.[]`, + expected: []string{ + "D0, P[], (!!seq)::- [{Mike: cat}, {Mike: dog}]\n- [{Fred: mouse}]\n", + "D0, P[], (!!seq)::- [{f: hotdog}, {f: burger}]\n- [{f: pizza}, {f: onion}, {f: apple}]\n", + }, + }, + { + document: `{name: Mike, pets: {cows: [apl, bba]}}`, + expression: `"a":.name, "b":.pets`, + expected: []string{ + "D0, P[], (!!seq)::- [{a: Mike}]\n", + "D0, P[], (!!seq)::- [{b: {cows: [apl, bba]}}]\n", + }, + }, + { + document: `{name: Mike}`, + expression: `"wrap": .`, + expected: []string{ + "D0, P[], (!!seq)::- [{wrap: {name: Mike}}]\n", + }, + }, + { + document: "{name: Mike}\n---\n{name: Bob}", + expression: `"wrap": .`, + expected: []string{ + "D0, P[], (!!seq)::- [{wrap: {name: Mike}}]\n- [{wrap: {name: Bob}}]\n", + }, + }, + { + document: "{name: Mike}\n---\n{name: Bob}", + expression: `"wrap": ., .name: "great"`, + expected: []string{ + "D0, P[], (!!seq)::- [{wrap: {name: Mike}}]\n- [{wrap: {name: Bob}}]\n", + "D0, P[], (!!seq)::- [{Mike: great}]\n- [{Bob: great}]\n", + }, + }, +} + +func TestCreateMapOperatorScenarios(t *testing.T) { + for _, tt := range createMapOperatorScenarios { + testScenario(t, &tt) + } +} diff --git a/external/yq/pkg/yqlib/operator_datetime.go b/external/yq/pkg/yqlib/operator_datetime.go new file mode 100755 index 0000000..c3ec05f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_datetime.go @@ -0,0 +1,131 @@ +package yqlib + +import ( + "container/list" + "errors" + "fmt" + "time" + + "gopkg.in/yaml.v3" +) + +func getStringParamter(parameterName string, d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (string, error) { + result, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode) + + if err != nil { + return "", err + } else if result.MatchingNodes.Len() == 0 { + return "", fmt.Errorf("could not find %v for format_time", parameterName) + } + + return result.MatchingNodes.Front().Value.(*CandidateNode).Node.Value, nil +} + +func withDateTimeFormat(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + if expressionNode.RHS.Operation.OperationType == blockOpType || expressionNode.RHS.Operation.OperationType == unionOpType { + layout, err := getStringParamter("layout", d, context, expressionNode.RHS.LHS) + if err != nil { + return Context{}, fmt.Errorf("could not get date time format: %w", err) + } + context.SetDateTimeLayout(layout) + return d.GetMatchingNodes(context, expressionNode.RHS.RHS) + + } + return Context{}, errors.New(`must provide a date time format string and an expression, e.g. with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; )`) + +} + +// for unit tests +var Now = time.Now + +func nowOp(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + node := &yaml.Node{ + Tag: "!!timestamp", + Kind: yaml.ScalarNode, + Value: Now().Format(time.RFC3339), + } + + return context.SingleChildContext(&CandidateNode{Node: node}), nil + +} + +func parseDateTime(layout string, datestring string) (time.Time, error) { + + parsedTime, err := time.Parse(layout, datestring) + if err != nil && layout == time.RFC3339 { + // try parsing the date time with only the date + return time.Parse("2006-01-02", datestring) + } + return parsedTime, err + +} + +func formatDateTime(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + format, err := getStringParamter("format", d, context, expressionNode.RHS) + layout := context.GetDateTimeLayout() + + if err != nil { + return Context{}, err + } + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + parsedTime, err := parseDateTime(layout, candidate.Node.Value) + if err != nil { + return Context{}, fmt.Errorf("could not parse datetime of [%v]: %w", candidate.GetNicePath(), err) + } + formattedTimeStr := parsedTime.Format(format) + + node, errorReading := parseSnippet(formattedTimeStr) + if errorReading != nil { + log.Debugf("could not parse %v - lets just leave it as a string: %w", formattedTimeStr, errorReading) + node = &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: formattedTimeStr, + } + } + + results.PushBack(candidate.CreateReplacement(node)) + } + + return context.ChildContext(results), nil +} + +func tzOp(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + timezoneStr, err := getStringParamter("timezone", d, context, expressionNode.RHS) + layout := context.GetDateTimeLayout() + + if err != nil { + return Context{}, err + } + var results = list.New() + + timezone, err := time.LoadLocation(timezoneStr) + if err != nil { + return Context{}, fmt.Errorf("could not load tz [%v]: %w", timezoneStr, err) + } + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + parsedTime, err := parseDateTime(layout, candidate.Node.Value) + if err != nil { + return Context{}, fmt.Errorf("could not parse datetime of [%v] using layout [%v]: %w", candidate.GetNicePath(), layout, err) + } + tzTime := parsedTime.In(timezone) + + node := &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: candidate.Node.Tag, + Value: tzTime.Format(layout), + } + + results.PushBack(candidate.CreateReplacement(node)) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_datetime_test.go b/external/yq/pkg/yqlib/operator_datetime_test.go new file mode 100755 index 0000000..a1d2692 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_datetime_test.go @@ -0,0 +1,120 @@ +package yqlib + +import ( + "testing" +) + +var dateTimeOperatorScenarios = []expressionScenario{ + { + description: "Format: from standard RFC3339 format", + subdescription: "Providing a single parameter assumes a standard RFC3339 datetime format. If the target format is not a valid yaml datetime format, the result will be a string tagged node.", + document: `a: 2001-12-15T02:59:43.1Z`, + expression: `.a |= format_datetime("Monday, 02-Jan-06 at 3:04PM")`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 2:59AM\n", + }, + }, + { + description: "Format: from custom date time", + subdescription: "Use with_dtf to set a custom datetime format for parsing.", + document: `a: Saturday, 15-Dec-01 at 2:59AM`, + expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM"; format_datetime("2006-01-02"))`, + expected: []string{ + "D0, P[], (doc)::a: 2001-12-15\n", + }, + }, + { + description: "Format: get the day of the week", + document: `a: 2001-12-15`, + expression: `.a | format_datetime("Monday")`, + expected: []string{ + "D0, P[a], (!!str)::Saturday\n", + }, + }, + { + description: "Now", + document: "a: cool", + expression: `.updated = now`, + expected: []string{ + "D0, P[], (doc)::a: cool\nupdated: 2021-05-19T01:02:03Z\n", + }, + }, + { + description: "Timezone: from standard RFC3339 format", + subdescription: "Returns a new datetime in the specified timezone. Specify standard IANA Time Zone format or 'utc', 'local'. When given a single parameter, this assumes the datetime is in RFC3339 format.", + + document: "a: cool", + expression: `.updated = (now | tz("Australia/Sydney"))`, + expected: []string{ + "D0, P[], (doc)::a: cool\nupdated: 2021-05-19T11:02:03+10:00\n", + }, + }, + { + description: "Timezone: with custom format", + subdescription: "Specify standard IANA Time Zone format or 'utc', 'local'", + document: "a: Saturday, 15-Dec-01 at 2:59AM GMT", + expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; tz("Australia/Sydney"))`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n", + }, + }, + { + description: "Add and tz custom format", + subdescription: "Specify standard IANA Time Zone format or 'utc', 'local'", + document: "a: Saturday, 15-Dec-01 at 2:59AM GMT", + expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; tz("Australia/Sydney"))`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n", + }, + }, + { + description: "Date addition", + document: `a: 2021-01-01T00:00:00Z`, + expression: `.a += "3h10m"`, + expected: []string{ + "D0, P[], (doc)::a: 2021-01-01T03:10:00Z\n", + }, + }, + { + description: "Date subtraction", + subdescription: "You can subtract durations from dates. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/datetime#date-time-formattings) for more information.", + document: `a: 2021-01-01T03:10:00Z`, + expression: `.a -= "3h10m"`, + expected: []string{ + "D0, P[], (doc)::a: 2021-01-01T00:00:00Z\n", + }, + }, + { + description: "Date addition - custom format", + document: `a: Saturday, 15-Dec-01 at 2:59AM GMT`, + expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; .a += "3h1m")`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 6:00AM GMT\n", + }, + }, + { + description: "Date script with custom format", + subdescription: "You can embed full expressions in with_dtf if needed.", + document: `a: Saturday, 15-Dec-01 at 2:59AM GMT`, + expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; .a = (.a + "3h1m" | tz("Australia/Perth")))`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 2:00PM AWST\n", + }, + }, + { + description: "allow comma", + skipDoc: true, + document: "a: Saturday, 15-Dec-01 at 2:59AM GMT", + expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST", tz("Australia/Sydney"))`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n", + }, + }, +} + +func TestDatetimeOperatorScenarios(t *testing.T) { + for _, tt := range dateTimeOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "datetime", dateTimeOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_delete.go b/external/yq/pkg/yqlib/operator_delete.go new file mode 100755 index 0000000..eb475da --- /dev/null +++ b/external/yq/pkg/yqlib/operator_delete.go @@ -0,0 +1,92 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func deleteChildOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + nodesToDelete, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + //need to iterate backwards to ensure correct indices when deleting multiple + for el := nodesToDelete.MatchingNodes.Back(); el != nil; el = el.Prev() { + candidate := el.Value.(*CandidateNode) + + if candidate.Node.Kind == yaml.DocumentNode { + //need to delete this node from context. + newResults := list.New() + for item := context.MatchingNodes.Front(); item != nil; item = item.Next() { + nodeInContext := item.Value.(*CandidateNode) + if nodeInContext.Node != candidate.Node { + newResults.PushBack(nodeInContext) + } else { + log.Info("Need to delete this %v", NodeToString(nodeInContext)) + } + } + return context.ChildContext(newResults), nil + } else if candidate.Parent == nil { + //problem: context may already be '.a' and then I pass in '.a.a2'. + // should pass in .a2. + log.Info("Could not find parent of %v", NodeToString(candidate)) + return context, nil + } + + parentNode := candidate.Parent.Node + childPath := candidate.Path[len(candidate.Path)-1] + + if parentNode.Kind == yaml.MappingNode { + deleteFromMap(candidate.Parent, childPath) + } else if parentNode.Kind == yaml.SequenceNode { + deleteFromArray(candidate.Parent, childPath) + } else { + return Context{}, fmt.Errorf("Cannot delete nodes from parent of tag %v", parentNode.Tag) + } + } + return context, nil +} + +func deleteFromMap(candidate *CandidateNode, childPath interface{}) { + log.Debug("deleteFromMap") + node := unwrapDoc(candidate.Node) + contents := node.Content + newContents := make([]*yaml.Node, 0) + + for index := 0; index < len(contents); index = index + 2 { + key := contents[index] + value := contents[index+1] + + childCandidate := candidate.CreateChildInMap(key, value) + + shouldDelete := key.Value == childPath + + log.Debugf("shouldDelete %v ? %v", childCandidate.GetKey(), shouldDelete) + + if !shouldDelete { + newContents = append(newContents, key, value) + } + } + node.Content = newContents +} + +func deleteFromArray(candidate *CandidateNode, childPath interface{}) { + log.Debug("deleteFromArray") + node := unwrapDoc(candidate.Node) + contents := node.Content + newContents := make([]*yaml.Node, 0) + + for index := 0; index < len(contents); index = index + 1 { + value := contents[index] + + shouldDelete := fmt.Sprintf("%v", index) == fmt.Sprintf("%v", childPath) + + if !shouldDelete { + newContents = append(newContents, value) + } + } + node.Content = newContents +} diff --git a/external/yq/pkg/yqlib/operator_delete_test.go b/external/yq/pkg/yqlib/operator_delete_test.go new file mode 100755 index 0000000..afc938c --- /dev/null +++ b/external/yq/pkg/yqlib/operator_delete_test.go @@ -0,0 +1,185 @@ +package yqlib + +import ( + "testing" +) + +var deleteOperatorScenarios = []expressionScenario{ + { + description: "Delete entry in map", + document: `{a: cat, b: dog}`, + expression: `del(.b)`, + expected: []string{ + "D0, P[], (doc)::{a: cat}\n", + }, + }, + { + description: "Delete nested entry in map", + document: `{a: {a1: fred, a2: frood}}`, + expression: `del(.a.a1)`, + expected: []string{ + "D0, P[], (doc)::{a: {a2: frood}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {a1: fred, a2: frood}}`, + expression: `.a | del(.a1)`, + expected: []string{ + "D0, P[a], (!!map)::{a2: frood}\n", + }, + }, + { + skipDoc: true, + description: "delete whole document", + document2: `a: slow`, + document: `a: fast`, + expression: `del(select(.a == "fast"))`, + expected: []string{ + "D0, P[], (doc)::a: slow\n", + }, + }, + { + skipDoc: true, + document: `a: [1,2,3]`, + expression: `.a | del(.[1])`, + expected: []string{ + "D0, P[a], (!!seq)::[1, 3]\n", + }, + }, + { + skipDoc: true, + document: `[0, {a: cat, b: dog}]`, + expression: `.[1] | del(.a)`, + expected: []string{ + "D0, P[1], (!!map)::{b: dog}\n", + }, + }, + { + skipDoc: true, + document: `[{a: cat, b: dog}]`, + expression: `.[0] | del(.a)`, + expected: []string{ + "D0, P[0], (!!map)::{b: dog}\n", + }, + }, + { + skipDoc: true, + document: `[{a: {b: thing, c: frog}}]`, + expression: `.[0].a | del(.b)`, + expected: []string{ + "D0, P[0 a], (!!map)::{c: frog}\n", + }, + }, + { + skipDoc: true, + document: `[{a: {b: thing, c: frog}}]`, + expression: `.[0] | del(.a.b)`, + expected: []string{ + "D0, P[0], (!!map)::{a: {c: frog}}\n", + }, + }, + { + skipDoc: true, + document: `{a: [0, {b: thing, c: frog}]}`, + expression: `.a[1] | del(.b)`, + expected: []string{ + "D0, P[a 1], (!!map)::{c: frog}\n", + }, + }, + { + skipDoc: true, + document: `{a: [0, {b: thing, c: frog}]}`, + expression: `.a | del(.[1].b)`, + expected: []string{ + "D0, P[a], (!!seq)::[0, {c: frog}]\n", + }, + }, + { + skipDoc: true, + document: `{a: {a1: fred, a2: frood}}`, + expression: `del(.. | select(.=="frood"))`, + expected: []string{ + "D0, P[], (!!map)::{a: {a1: fred}}\n", + }, + }, + { + description: "Delete entry in array", + document: `[1,2,3]`, + expression: `del(.[1])`, + expected: []string{ + "D0, P[], (doc)::[1, 3]\n", + }, + }, + { + skipDoc: true, + document: `a: [1,2,3]`, + expression: `del(.a[])`, + expected: []string{ + "D0, P[], (doc)::a: []\n", + }, + }, + { + skipDoc: true, + document: `a: [10,x,10, 10, x, 10]`, + expression: `del(.a[] | select(. == 10))`, + expected: []string{ + "D0, P[], (doc)::a: [x, x]\n", + }, + }, + { + skipDoc: true, + document: `a: {thing1: yep, thing2: cool, thing3: hi, b: {thing1: cool, great: huh}}`, + expression: `del(..)`, + expected: []string{ + "D0, P[], (!!map)::{}\n", + }, + }, + { + skipDoc: true, + document: `a: {thing1: yep, thing2: cool, thing3: hi, b: {thing1: cool, great: huh}}`, + expression: `del(.. | select(tag == "!!map") | (.b.thing1,.thing2))`, + expected: []string{ + "D0, P[], (!!map)::a: {thing1: yep, thing3: hi, b: {great: huh}}\n", + }, + }, + { + description: "Delete nested entry in array", + document: `[{a: cat, b: dog}]`, + expression: `del(.[0].a)`, + expected: []string{ + "D0, P[], (doc)::[{b: dog}]\n", + }, + }, + { + description: "Delete no matches", + document: `{a: cat, b: dog}`, + expression: `del(.c)`, + expected: []string{ + "D0, P[], (doc)::{a: cat, b: dog}\n", + }, + }, + { + description: "Delete matching entries", + document: `{a: cat, b: dog, c: bat}`, + expression: `del( .[] | select(. == "*at") )`, + expected: []string{ + "D0, P[], (doc)::{b: dog}\n", + }, + }, + { + description: "Recursively delete matching keys", + document: `{a: {name: frog, b: {name: blog, age: 12}}}`, + expression: `del(.. | select(has("name")).name)`, + expected: []string{ + "D0, P[], (!!map)::{a: {b: {age: 12}}}\n", + }, + }, +} + +func TestDeleteOperatorScenarios(t *testing.T) { + for _, tt := range deleteOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "delete", deleteOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_document_index.go b/external/yq/pkg/yqlib/operator_document_index.go new file mode 100755 index 0000000..566fe9d --- /dev/null +++ b/external/yq/pkg/yqlib/operator_document_index.go @@ -0,0 +1,20 @@ +package yqlib + +import ( + "container/list" + "fmt" + + "gopkg.in/yaml.v3" +) + +func getDocumentIndexOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", candidate.Document), Tag: "!!int"} + scalar := candidate.CreateReplacement(node) + results.PushBack(scalar) + } + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_document_index_test.go b/external/yq/pkg/yqlib/operator_document_index_test.go new file mode 100755 index 0000000..e0d8268 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_document_index_test.go @@ -0,0 +1,58 @@ +package yqlib + +import ( + "testing" +) + +var documentIndexScenarios = []expressionScenario{ + { + description: "Retrieve a document index", + document: "a: cat\n---\na: frog\n", + expression: `.a | document_index`, + expected: []string{ + "D0, P[a], (!!int)::0\n", + "D1, P[a], (!!int)::1\n", + }, + }, + { + description: "Retrieve a document index, shorthand", + document: "a: cat\n---\na: frog\n", + expression: `.a | di`, + expected: []string{ + "D0, P[a], (!!int)::0\n", + "D1, P[a], (!!int)::1\n", + }, + }, + { + description: "Filter by document index", + document: "a: cat\n---\na: frog\n", + expression: `select(document_index == 1)`, + expected: []string{ + "D1, P[], (doc)::a: frog\n", + }, + }, + { + description: "Filter by document index shorthand", + document: "a: cat\n---\na: frog\n", + expression: `select(di == 1)`, + expected: []string{ + "D1, P[], (doc)::a: frog\n", + }, + }, + { + description: "Print Document Index with matches", + document: "a: cat\n---\na: frog\n", + expression: `.a | ({"match": ., "doc": document_index})`, + expected: []string{ + "D0, P[], (!!map)::match: cat\ndoc: 0\n", + "D0, P[], (!!map)::match: frog\ndoc: 1\n", + }, + }, +} + +func TestDocumentIndexScenarios(t *testing.T) { + for _, tt := range documentIndexScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "document-index", documentIndexScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_encoder_decoder.go b/external/yq/pkg/yqlib/operator_encoder_decoder.go new file mode 100755 index 0000000..8f41389 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_encoder_decoder.go @@ -0,0 +1,141 @@ +package yqlib + +import ( + "bufio" + "bytes" + "container/list" + "regexp" + "strings" + + "gopkg.in/yaml.v3" +) + +func configureEncoder(format PrinterOutputFormat, indent int) Encoder { + switch format { + case JSONOutputFormat: + return NewJSONEncoder(indent, false, false) + case PropsOutputFormat: + return NewPropertiesEncoder(true) + case CSVOutputFormat: + return NewCsvEncoder(',') + case TSVOutputFormat: + return NewCsvEncoder('\t') + case YamlOutputFormat: + return NewYamlEncoder(indent, false, ConfiguredYamlPreferences) + case XMLOutputFormat: + return NewXMLEncoder(indent, ConfiguredXMLPreferences) + case Base64OutputFormat: + return NewBase64Encoder() + } + panic("invalid encoder") +} + +func encodeToString(candidate *CandidateNode, prefs encoderPreferences) (string, error) { + var output bytes.Buffer + log.Debug("printing with indent: %v", prefs.indent) + + encoder := configureEncoder(prefs.format, prefs.indent) + + printer := NewPrinter(encoder, NewSinglePrinterWriter(bufio.NewWriter(&output))) + err := printer.PrintResults(candidate.AsList()) + return output.String(), err +} + +type encoderPreferences struct { + format PrinterOutputFormat + indent int +} + +/* encodes object as yaml string */ + +func encodeOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + preferences := expressionNode.Operation.Preferences.(encoderPreferences) + var results = list.New() + + hasOnlyOneNewLine := regexp.MustCompile("[^\n].*\n$") + endWithNewLine := regexp.MustCompile(".*\n$") + chomper := regexp.MustCompile("\n+$") + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + stringValue, err := encodeToString(candidate, preferences) + + if err != nil { + return Context{}, err + } + + // remove trailing newlines if needed. + // check if we originally decoded this path, and the original thing had a single line. + originalList := context.GetVariable("decoded: " + candidate.GetKey()) + if originalList != nil && originalList.Len() > 0 && hasOnlyOneNewLine.MatchString(stringValue) { + + original := originalList.Front().Value.(*CandidateNode) + originalNode := unwrapDoc(original.Node) + // original block did not have a new line at the end, get rid of this one too + if !endWithNewLine.MatchString(originalNode.Value) { + stringValue = chomper.ReplaceAllString(stringValue, "") + } + } + + // dont print a new line when printing json on a single line. + if (preferences.format == JSONOutputFormat && preferences.indent == 0) || + preferences.format == CSVOutputFormat || + preferences.format == TSVOutputFormat { + stringValue = chomper.ReplaceAllString(stringValue, "") + } + + stringContentNode := &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!str", Value: stringValue} + results.PushBack(candidate.CreateReplacement(stringContentNode)) + } + return context.ChildContext(results), nil +} + +type decoderPreferences struct { + format InputFormat +} + +/* takes a string and decodes it back into an object */ +func decodeOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + preferences := expressionNode.Operation.Preferences.(decoderPreferences) + + var decoder Decoder + switch preferences.format { + case YamlInputFormat: + decoder = NewYamlDecoder(ConfiguredYamlPreferences) + case XMLInputFormat: + decoder = NewXMLDecoder(ConfiguredXMLPreferences) + case Base64InputFormat: + decoder = NewBase64Decoder() + case PropertiesInputFormat: + decoder = NewPropertiesDecoder() + case CSVObjectInputFormat: + decoder = NewCSVObjectDecoder(',') + case TSVObjectInputFormat: + decoder = NewCSVObjectDecoder('\t') + } + + var results = list.New() + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + context.SetVariable("decoded: "+candidate.GetKey(), candidate.AsList()) + + log.Debugf("got: [%v]", candidate.Node.Value) + + err := decoder.Init(strings.NewReader(unwrapDoc(candidate.Node).Value)) + if err != nil { + return Context{}, err + } + + decodedNode, errorReading := decoder.Decode() + if errorReading != nil { + return Context{}, errorReading + } + //first node is a doc + node := unwrapDoc(decodedNode.Node) + + results.PushBack(candidate.CreateReplacement(node)) + } + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_encoder_decoder_test.go b/external/yq/pkg/yqlib/operator_encoder_decoder_test.go new file mode 100755 index 0000000..e3961fb --- /dev/null +++ b/external/yq/pkg/yqlib/operator_encoder_decoder_test.go @@ -0,0 +1,285 @@ +package yqlib + +import ( + "testing" +) + +var prefix = "D0, P[], (doc)::a:\n cool:\n bob: dylan\n" + +var encoderDecoderOperatorScenarios = []expressionScenario{ + { + description: "Encode value as json string", + document: `{a: {cool: "thing"}}`, + expression: `.b = (.a | to_json)`, + expected: []string{ + `D0, P[], (doc)::{a: {cool: "thing"}, b: "{\n \"cool\": \"thing\"\n}\n"} +`, + }, + }, + { + description: "Encode value as json string, on one line", + subdescription: "Pass in a 0 indent to print json on a single line.", + document: `{a: {cool: "thing"}}`, + expression: `.b = (.a | to_json(0))`, + expected: []string{ + `D0, P[], (doc)::{a: {cool: "thing"}, b: '{"cool":"thing"}'} +`, + }, + }, + { + description: "Encode value as json string, on one line shorthand", + subdescription: "Pass in a 0 indent to print json on a single line.", + document: `{a: {cool: "thing"}}`, + expression: `.b = (.a | @json)`, + expected: []string{ + `D0, P[], (doc)::{a: {cool: "thing"}, b: '{"cool":"thing"}'} +`, + }, + }, + { + description: "Decode a json encoded string", + subdescription: "Keep in mind JSON is a subset of YAML. If you want idiomatic yaml, pipe through the style operator to clear out the JSON styling.", + document: `a: '{"cool":"thing"}'`, + expression: `.a | from_json | ... style=""`, + expected: []string{ + "D0, P[a], (!!map)::cool: thing\n", + }, + }, + { + skipDoc: true, + document: `{a: {cool: "thing"}}`, + expression: `.b = (.a | to_props)`, + expected: []string{ + `D0, P[], (doc)::{a: {cool: "thing"}, b: "cool = thing\n"} +`, + }, + }, + { + description: "Encode value as props string", + document: `{a: {cool: "thing"}}`, + expression: `.b = (.a | @props)`, + expected: []string{ + `D0, P[], (doc)::{a: {cool: "thing"}, b: "cool = thing\n"} +`, + }, + }, + { + description: "Decode props encoded string", + document: `a: "cats=great\ndogs=cool as well"`, + expression: `.a |= @propsd`, + expected: []string{ + "D0, P[], (doc)::a:\n cats: great\n dogs: cool as well\n", + }, + }, + { + description: "Decode csv encoded string", + document: `a: "cats,dogs\ngreat,cool as well"`, + expression: `.a |= @csvd`, + expected: []string{ + "D0, P[], (doc)::a:\n - cats: great\n dogs: cool as well\n", + }, + }, + { + description: "Decode tsv encoded string", + document: `a: "cats dogs\ngreat cool as well"`, + expression: `.a |= @tsvd`, + expected: []string{ + "D0, P[], (doc)::a:\n - cats: great\n dogs: cool as well\n", + }, + }, + { + skipDoc: true, + document: "a:\n cool:\n bob: dylan", + expression: `.b = (.a | @yaml)`, + expected: []string{ + prefix + "b: |\n cool:\n bob: dylan\n", + }, + }, + { + description: "Encode value as yaml string", + subdescription: "Indent defaults to 2", + document: "a:\n cool:\n bob: dylan", + expression: `.b = (.a | to_yaml)`, + expected: []string{ + prefix + "b: |\n cool:\n bob: dylan\n", + }, + }, + { + description: "Encode value as yaml string, with custom indentation", + subdescription: "You can specify the indentation level as the first parameter.", + document: "a:\n cool:\n bob: dylan", + expression: `.b = (.a | to_yaml(8))`, + expected: []string{ + prefix + "b: |\n cool:\n bob: dylan\n", + }, + }, + { + skipDoc: true, + document: `{a: {cool: "thing"}}`, + expression: `.b = (.a | to_yaml)`, + expected: []string{ + `D0, P[], (doc)::{a: {cool: "thing"}, b: "{cool: \"thing\"}\n"} +`, + }, + }, + { + description: "Decode a yaml encoded string", + document: `a: "foo: bar"`, + expression: `.b = (.a | from_yaml)`, + expected: []string{ + "D0, P[], (doc)::a: \"foo: bar\"\nb:\n foo: bar\n", + }, + }, + { + description: "Update a multiline encoded yaml string", + dontFormatInputForDoc: true, + document: "a: |\n foo: bar\n baz: dog\n", + expression: `.a |= (from_yaml | .foo = "cat" | to_yaml)`, + expected: []string{ + "D0, P[], (doc)::a: |\n foo: cat\n baz: dog\n", + }, + }, + { + skipDoc: true, + dontFormatInputForDoc: true, + document: "a: |-\n foo: bar\n baz: dog\n", + expression: `.a |= (from_yaml | .foo = "cat" | to_yaml)`, + expected: []string{ + "D0, P[], (doc)::a: |-\n foo: cat\n baz: dog\n", + }, + }, + { + description: "Update a single line encoded yaml string", + dontFormatInputForDoc: true, + document: "a: 'foo: bar'", + expression: `.a |= (from_yaml | .foo = "cat" | to_yaml)`, + expected: []string{ + "D0, P[], (doc)::a: 'foo: cat'\n", + }, + }, + { + description: "Encode array of scalars as csv string", + subdescription: "Scalars are strings, numbers and booleans.", + document: `[cat, "thing1,thing2", true, 3.40]`, + expression: `@csv`, + expected: []string{ + "D0, P[], (!!str)::cat,\"thing1,thing2\",true,3.40\n", + }, + }, + { + description: "Encode array of arrays as csv string", + document: `[[cat, "thing1,thing2", true, 3.40], [dog, thing3, false, 12]]`, + expression: `@csv`, + expected: []string{ + "D0, P[], (!!str)::cat,\"thing1,thing2\",true,3.40\ndog,thing3,false,12\n", + }, + }, + { + description: "Encode array of array scalars as tsv string", + subdescription: "Scalars are strings, numbers and booleans.", + document: `[[cat, "thing1,thing2", true, 3.40], [dog, thing3, false, 12]]`, + expression: `@tsv`, + expected: []string{ + "D0, P[], (!!str)::cat\tthing1,thing2\ttrue\t3.40\ndog\tthing3\tfalse\t12\n", + }, + }, + { + skipDoc: true, + dontFormatInputForDoc: true, + document: "a: \"foo: bar\"", + expression: `.a |= (from_yaml | .foo = {"a": "frog"} | to_yaml)`, + expected: []string{ + "D0, P[], (doc)::a: \"foo:\\n a: frog\"\n", + }, + }, + { + description: "Encode value as xml string", + document: `{a: {cool: {foo: "bar", +@id: hi}}}`, + expression: `.a | to_xml`, + expected: []string{ + "D0, P[a], (!!str)::\n bar\n\n\n", + }, + }, + { + description: "Encode value as xml string on a single line", + document: `{a: {cool: {foo: "bar", +@id: hi}}}`, + expression: `.a | @xml`, + expected: []string{ + "D0, P[a], (!!str)::bar\n\n", + }, + }, + { + description: "Encode value as xml string with custom indentation", + document: `{a: {cool: {foo: "bar", +@id: hi}}}`, + expression: `{"cat": .a | to_xml(1)}`, + expected: []string{ + "D0, P[], (!!map)::cat: |\n \n bar\n \n", + }, + }, + { + description: "Decode a xml encoded string", + document: `a: "bar"`, + expression: `.b = (.a | from_xml)`, + expected: []string{ + "D0, P[], (doc)::a: \"bar\"\nb:\n foo: bar\n", + }, + }, + { + description: "Encode a string to base64", + document: "coolData: a special string", + expression: ".coolData | @base64", + expected: []string{ + "D0, P[coolData], (!!str)::YSBzcGVjaWFsIHN0cmluZw==\n", + }, + }, + { + description: "Encode a yaml document to base64", + subdescription: "Pipe through @yaml first to convert to a string, then use @base64 to encode it.", + document: "a: apple", + expression: "@yaml | @base64", + expected: []string{ + "D0, P[], (!!str)::YTogYXBwbGUK\n", + }, + }, + { + description: "Decode a base64 encoded string", + subdescription: "Decoded data is assumed to be a string.", + document: "coolData: V29ya3Mgd2l0aCBVVEYtMTYg8J+Yig==", + expression: ".coolData | @base64d", + expected: []string{ + "D0, P[coolData], (!!str)::Works with UTF-16 😊\n", + }, + }, + { + description: "Decode a base64 encoded yaml document", + subdescription: "Pipe through `from_yaml` to parse the decoded base64 string as a yaml document.", + document: "coolData: YTogYXBwbGUK", + expression: ".coolData |= (@base64d | from_yaml)", + expected: []string{ + "D0, P[], (doc)::coolData:\n a: apple\n", + }, + }, + { + description: "empty base64 decode", + skipDoc: true, + expression: `"" | @base64d`, + expected: []string{ + "D0, P[], (!!str)::\n", + }, + }, + { + description: "empty xml decode", + skipDoc: true, + expression: `"" | @xmld`, + expected: []string{ + "D0, P[], (!!null)::\n", + }, + }, +} + +func TestEncoderDecoderOperatorScenarios(t *testing.T) { + for _, tt := range encoderDecoderOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "encode-decode", encoderDecoderOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_entries.go b/external/yq/pkg/yqlib/operator_entries.go new file mode 100755 index 0000000..2af9fe9 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_entries.go @@ -0,0 +1,180 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func entrySeqFor(key *yaml.Node, value *yaml.Node) *yaml.Node { + var keyKey = &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!str", Value: "key"} + var valueKey = &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!str", Value: "value"} + + return &yaml.Node{ + Kind: yaml.MappingNode, + Tag: "!!map", + Content: []*yaml.Node{keyKey, key, valueKey, value}, + } +} + +func toEntriesFromMap(candidateNode *CandidateNode) *CandidateNode { + var sequence = &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + var entriesNode = candidateNode.CreateReplacementWithDocWrappers(sequence) + + var contents = unwrapDoc(candidateNode.Node).Content + for index := 0; index < len(contents); index = index + 2 { + key := contents[index] + value := contents[index+1] + + sequence.Content = append(sequence.Content, entrySeqFor(key, value)) + } + return entriesNode +} + +func toEntriesfromSeq(candidateNode *CandidateNode) *CandidateNode { + var sequence = &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + var entriesNode = candidateNode.CreateReplacementWithDocWrappers(sequence) + + var contents = unwrapDoc(candidateNode.Node).Content + for index := 0; index < len(contents); index = index + 1 { + key := &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!int", Value: fmt.Sprintf("%v", index)} + value := contents[index] + + sequence.Content = append(sequence.Content, entrySeqFor(key, value)) + } + return entriesNode +} + +func toEntriesOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + + switch candidateNode.Kind { + case yaml.MappingNode: + results.PushBack(toEntriesFromMap(candidate)) + + case yaml.SequenceNode: + results.PushBack(toEntriesfromSeq(candidate)) + default: + if candidateNode.Tag != "!!null" { + return Context{}, fmt.Errorf("%v has no keys", candidate.Node.Tag) + } + } + } + + return context.ChildContext(results), nil +} + +func parseEntry(entry *yaml.Node, position int) (*yaml.Node, *yaml.Node, error) { + prefs := traversePreferences{DontAutoCreate: true} + candidateNode := &CandidateNode{Node: entry} + + keyResults, err := traverseMap(Context{}, candidateNode, createStringScalarNode("key"), prefs, false) + + if err != nil { + return nil, nil, err + } else if keyResults.Len() != 1 { + return nil, nil, fmt.Errorf("expected to find one 'key' entry but found %v in position %v", keyResults.Len(), position) + } + + valueResults, err := traverseMap(Context{}, candidateNode, createStringScalarNode("value"), prefs, false) + + if err != nil { + return nil, nil, err + } else if valueResults.Len() != 1 { + return nil, nil, fmt.Errorf("expected to find one 'value' entry but found %v in position %v", valueResults.Len(), position) + } + + return keyResults.Front().Value.(*CandidateNode).Node, valueResults.Front().Value.(*CandidateNode).Node, nil + +} + +func fromEntries(candidateNode *CandidateNode) (*CandidateNode, error) { + var node = &yaml.Node{Kind: yaml.MappingNode, Tag: "!!map"} + var mapCandidateNode = candidateNode.CreateReplacementWithDocWrappers(node) + + var contents = unwrapDoc(candidateNode.Node).Content + + for index := 0; index < len(contents); index = index + 1 { + key, value, err := parseEntry(contents[index], index) + if err != nil { + return nil, err + } + + node.Content = append(node.Content, key, value) + } + return mapCandidateNode, nil +} + +func fromEntriesOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + + switch candidateNode.Kind { + case yaml.SequenceNode: + mapResult, err := fromEntries(candidate) + if err != nil { + return Context{}, err + } + results.PushBack(mapResult) + default: + return Context{}, fmt.Errorf("from entries only runs against arrays") + } + } + + return context.ChildContext(results), nil +} + +func withEntriesOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + //to_entries on the context + toEntries, err := toEntriesOperator(d, context, expressionNode) + if err != nil { + return Context{}, err + } + + var results = list.New() + + for el := toEntries.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + //run expression against entries + // splat toEntries and pipe it into Rhs + splatted, err := splat(context.SingleChildContext(candidate), traversePreferences{}) + if err != nil { + return Context{}, err + } + + result, err := d.GetMatchingNodes(splatted, expressionNode.RHS) + log.Debug("expressionNode.Rhs %v", expressionNode.RHS.Operation.OperationType) + log.Debug("result %v", result) + if err != nil { + return Context{}, err + } + + selfExpression := &ExpressionNode{Operation: &Operation{OperationType: selfReferenceOpType}} + collected, err := collectTogether(d, result, selfExpression) + if err != nil { + return Context{}, err + } + collected.LeadingContent = candidate.LeadingContent + collected.TrailingContent = candidate.TrailingContent + + log.Debugf("**** collected %v", collected.LeadingContent) + + fromEntries, err := fromEntriesOperator(d, context.SingleChildContext(collected), expressionNode) + if err != nil { + return Context{}, err + } + results.PushBackList(fromEntries.MatchingNodes) + + } + + //from_entries on the result + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_entries_test.go b/external/yq/pkg/yqlib/operator_entries_test.go new file mode 100755 index 0000000..9313323 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_entries_test.go @@ -0,0 +1,107 @@ +package yqlib + +import ( + "testing" +) + +var entriesOperatorScenarios = []expressionScenario{ + { + description: "to_entries Map", + document: `{a: 1, b: 2}`, + expression: `to_entries`, + expected: []string{ + "D0, P[], (!!seq)::- key: a\n value: 1\n- key: b\n value: 2\n", + }, + }, + { + description: "to_entries Array", + document: `[a, b]`, + expression: `to_entries`, + expected: []string{ + "D0, P[], (!!seq)::- key: 0\n value: a\n- key: 1\n value: b\n", + }, + }, + { + description: "to_entries null", + document: `null`, + expression: `to_entries`, + expected: []string{}, + }, + { + description: "from_entries map", + document: `{a: 1, b: 2}`, + expression: `to_entries | from_entries`, + expected: []string{ + "D0, P[], (!!map)::a: 1\nb: 2\n", + }, + }, + { + description: "from_entries with numeric key indexes", + subdescription: "from_entries always creates a map, even for numeric keys", + document: `[a,b]`, + expression: `to_entries | from_entries`, + expected: []string{ + "D0, P[], (!!map)::0: a\n1: b\n", + }, + }, + { + description: "Use with_entries to update keys", + document: `{a: 1, b: 2}`, + expression: `with_entries(.key |= "KEY_" + .)`, + expected: []string{ + "D0, P[], (!!map)::KEY_a: 1\nKEY_b: 2\n", + }, + }, + { + description: "Custom sort map keys", + subdescription: "Use to_entries to convert to an array of key/value pairs, sort the array using sort/sort_by/etc, and convert it back.", + document: `{a: 1, c: 3, b: 2}`, + expression: `to_entries | sort_by(.key) | reverse | from_entries`, + expected: []string{ + "D0, P[], (!!map)::c: 3\nb: 2\na: 1\n", + }, + }, + { + skipDoc: true, + document: `{a: 1, b: 2}`, + document2: `{c: 1, d: 2}`, + expression: `with_entries(.key |= "KEY_" + .)`, + expected: []string{ + "D0, P[], (!!map)::KEY_a: 1\nKEY_b: 2\n", + "D0, P[], (!!map)::KEY_c: 1\nKEY_d: 2\n", + }, + }, + { + skipDoc: true, + document: `[{a: 1, b: 2}, {c: 1, d: 2}]`, + expression: `.[] | with_entries(.key |= "KEY_" + .)`, + expected: []string{ + "D0, P[], (!!map)::KEY_a: 1\nKEY_b: 2\n", + "D0, P[], (!!map)::KEY_c: 1\nKEY_d: 2\n", + }, + }, + { + description: "Use with_entries to filter the map", + document: `{a: { b: bird }, c: { d: dog }}`, + expression: `with_entries(select(.value | has("b")))`, + expected: []string{ + "D0, P[], (!!map)::a: {b: bird}\n", + }, + }, + { + description: "Use with_entries to filter the map; head comment", + skipDoc: true, + document: "# abc\n{a: { b: bird }, c: { d: dog }}\n# xyz", + expression: `with_entries(select(.value | has("b")))`, + expected: []string{ + "D0, P[], (!!map)::# abc\na: {b: bird}\n# xyz\n", + }, + }, +} + +func TestEntriesOperatorScenarios(t *testing.T) { + for _, tt := range entriesOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "entries", entriesOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_env.go b/external/yq/pkg/yqlib/operator_env.go new file mode 100755 index 0000000..ed3f51e --- /dev/null +++ b/external/yq/pkg/yqlib/operator_env.go @@ -0,0 +1,90 @@ +package yqlib + +import ( + "container/list" + "fmt" + "os" + "strings" + + parse "github.com/a8m/envsubst/parse" + yaml "gopkg.in/yaml.v3" +) + +type envOpPreferences struct { + StringValue bool + NoUnset bool + NoEmpty bool + FailFast bool +} + +func envOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + envName := expressionNode.Operation.CandidateNode.Node.Value + log.Debug("EnvOperator, env name:", envName) + + rawValue := os.Getenv(envName) + + preferences := expressionNode.Operation.Preferences.(envOpPreferences) + + var node *yaml.Node + if preferences.StringValue { + node = &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!str", + Value: rawValue, + } + } else if rawValue == "" { + return Context{}, fmt.Errorf("Value for env variable '%v' not provided in env()", envName) + } else { + var dataBucket yaml.Node + decoder := yaml.NewDecoder(strings.NewReader(rawValue)) + errorReading := decoder.Decode(&dataBucket) + if errorReading != nil { + return Context{}, errorReading + } + //first node is a doc + node = unwrapDoc(&dataBucket) + } + log.Debug("ENV tag", node.Tag) + log.Debug("ENV value", node.Value) + log.Debug("ENV Kind", node.Kind) + + target := &CandidateNode{Node: node} + + return context.SingleChildContext(target), nil +} + +func envsubstOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + preferences := envOpPreferences{} + if expressionNode.Operation.Preferences != nil { + preferences = expressionNode.Operation.Preferences.(envOpPreferences) + } + + parser := parse.New("string", os.Environ(), + &parse.Restrictions{NoUnset: preferences.NoUnset, NoEmpty: preferences.NoEmpty}) + + if preferences.FailFast { + parser.Mode = parse.Quick + } else { + parser.Mode = parse.AllErrors + } + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + if node.Tag != "!!str" { + log.Warning("EnvSubstOperator, env name:", node.Tag, node.Value) + return Context{}, fmt.Errorf("cannot substitute with %v, can only substitute strings. Hint: Most often you'll want to use '|=' over '=' for this operation", node.Tag) + } + + value, err := parser.Parse(node.Value) + if err != nil { + return Context{}, err + } + targetNode := &yaml.Node{Kind: yaml.ScalarNode, Value: value, Tag: "!!str"} + result := candidate.CreateReplacement(targetNode) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_env_test.go b/external/yq/pkg/yqlib/operator_env_test.go new file mode 100755 index 0000000..7f403dd --- /dev/null +++ b/external/yq/pkg/yqlib/operator_env_test.go @@ -0,0 +1,170 @@ +package yqlib + +import ( + "testing" +) + +var envOperatorScenarios = []expressionScenario{ + { + description: "Read string environment variable", + environmentVariables: map[string]string{"myenv": "cat meow"}, + expression: `.a = env(myenv)`, + expected: []string{ + "D0, P[], ()::a: cat meow\n", + }, + }, + { + description: "Read boolean environment variable", + environmentVariables: map[string]string{"myenv": "true"}, + expression: `.a = env(myenv)`, + expected: []string{ + "D0, P[], ()::a: true\n", + }, + }, + { + description: "Read numeric environment variable", + environmentVariables: map[string]string{"myenv": "12"}, + expression: `.a = env(myenv)`, + expected: []string{ + "D0, P[], ()::a: 12\n", + }, + }, + { + description: "Read yaml environment variable", + environmentVariables: map[string]string{"myenv": "{b: fish}"}, + expression: `.a = env(myenv)`, + expected: []string{ + "D0, P[], ()::a: {b: fish}\n", + }, + }, + { + description: "Read boolean environment variable as a string", + environmentVariables: map[string]string{"myenv": "true"}, + expression: `.a = strenv(myenv)`, + expected: []string{ + "D0, P[], ()::a: \"true\"\n", + }, + }, + { + description: "Read numeric environment variable as a string", + environmentVariables: map[string]string{"myenv": "12"}, + expression: `.a = strenv(myenv)`, + expected: []string{ + "D0, P[], ()::a: \"12\"\n", + }, + }, + { + description: "Dynamically update a path from an environment variable", + subdescription: "The env variable can be any valid yq expression.", + document: `{a: {b: [{name: dog}, {name: cat}]}}`, + environmentVariables: map[string]string{"pathEnv": ".a.b[0].name", "valueEnv": "moo"}, + expression: `eval(strenv(pathEnv)) = strenv(valueEnv)`, + expected: []string{ + "D0, P[], (doc)::{a: {b: [{name: moo}, {name: cat}]}}\n", + }, + }, + { + description: "Dynamic key lookup with environment variable", + environmentVariables: map[string]string{"myenv": "cat"}, + document: `{cat: meow, dog: woof}`, + expression: `.[env(myenv)]`, + expected: []string{ + "D0, P[cat], (!!str)::meow\n", + }, + }, + { + description: "Replace strings with envsubst", + environmentVariables: map[string]string{"myenv": "cat"}, + expression: `"the ${myenv} meows" | envsubst`, + expected: []string{ + "D0, P[], (!!str)::the cat meows\n", + }, + }, + { + description: "Replace strings with envsubst, missing variables", + expression: `"the ${myenvnonexisting} meows" | envsubst`, + expected: []string{ + "D0, P[], (!!str)::the meows\n", + }, + }, + { + description: "Replace strings with envsubst(nu), missing variables", + subdescription: "(nu) not unset, will fail if there are unset (missing) variables", + expression: `"the ${myenvnonexisting} meows" | envsubst(nu)`, + expectedError: "variable ${myenvnonexisting} not set", + }, + { + description: "Replace strings with envsubst(ne), missing variables", + subdescription: "(ne) not empty, only validates set variables", + expression: `"the ${myenvnonexisting} meows" | envsubst(ne)`, + expected: []string{ + "D0, P[], (!!str)::the meows\n", + }, + }, + { + description: "Replace strings with envsubst(ne), empty variable", + subdescription: "(ne) not empty, will fail if a references variable is empty", + environmentVariables: map[string]string{"myenv": ""}, + expression: `"the ${myenv} meows" | envsubst(ne)`, + expectedError: "variable ${myenv} set but empty", + }, + { + description: "Replace strings with envsubst, missing variables with defaults", + expression: `"the ${myenvnonexisting-dog} meows" | envsubst`, + expected: []string{ + "D0, P[], (!!str)::the dog meows\n", + }, + }, + { + description: "Replace strings with envsubst(nu), missing variables with defaults", + subdescription: "Having a default specified skips over the missing variable.", + expression: `"the ${myenvnonexisting-dog} meows" | envsubst(nu)`, + expected: []string{ + "D0, P[], (!!str)::the dog meows\n", + }, + }, + { + description: "Replace strings with envsubst(ne), missing variables with defaults", + subdescription: "Fails, because the variable is explicitly set to blank.", + environmentVariables: map[string]string{"myEmptyEnv": ""}, + expression: `"the ${myEmptyEnv-dog} meows" | envsubst(ne)`, + expectedError: "variable ${myEmptyEnv} set but empty", + }, + { + description: "Replace string environment variable in document", + environmentVariables: map[string]string{"myenv": "cat meow"}, + document: "{v: \"${myenv}\"}", + expression: `.v |= envsubst`, + expected: []string{ + "D0, P[], (doc)::{v: \"cat meow\"}\n", + }, + }, + { + description: "(Default) Return all envsubst errors", + subdescription: "By default, all errors are returned at once.", + expression: `"the ${notThere} ${alsoNotThere}" | envsubst(nu)`, + expectedError: "variable ${notThere} not set\nvariable ${alsoNotThere} not set", + }, + { + description: "Fail fast, return the first envsubst error (and abort)", + expression: `"the ${notThere} ${alsoNotThere}" | envsubst(nu,ff)`, + expectedError: "variable ${notThere} not set", + }, + { + description: "with header/footer", + skipDoc: true, + environmentVariables: map[string]string{"myenv": "cat meow"}, + document: "# abc\n{v: \"${myenv}\"}\n# xyz\n", + expression: `(.. | select(tag == "!!str")) |= envsubst`, + expected: []string{ + "D0, P[], (!!map)::# abc\n{v: \"cat meow\"}\n# xyz\n", + }, + }, +} + +func TestEnvOperatorScenarios(t *testing.T) { + for _, tt := range envOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "env-variable-operators", envOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_equals.go b/external/yq/pkg/yqlib/operator_equals.go new file mode 100755 index 0000000..313c7a4 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_equals.go @@ -0,0 +1,54 @@ +package yqlib + +import "gopkg.in/yaml.v3" + +func equalsOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- equalsOperation") + return crossFunction(d, context.ReadOnlyClone(), expressionNode, isEquals(false), true) +} + +func isEquals(flip bool) func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + return func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + value := false + log.Debugf("-- isEquals cross function") + if lhs == nil && rhs == nil { + owner := &CandidateNode{} + return createBooleanCandidate(owner, !flip), nil + } else if lhs == nil { + log.Debugf("lhs nil, but rhs is not") + rhsNode := unwrapDoc(rhs.Node) + value := rhsNode.Tag == "!!null" + if flip { + value = !value + } + return createBooleanCandidate(rhs, value), nil + } else if rhs == nil { + log.Debugf("lhs not nil, but rhs is") + lhsNode := unwrapDoc(lhs.Node) + value := lhsNode.Tag == "!!null" + if flip { + value = !value + } + return createBooleanCandidate(lhs, value), nil + } + + lhsNode := unwrapDoc(lhs.Node) + rhsNode := unwrapDoc(rhs.Node) + + if lhsNode.Tag == "!!null" { + value = (rhsNode.Tag == "!!null") + } else if lhsNode.Kind == yaml.ScalarNode && rhsNode.Kind == yaml.ScalarNode { + value = matchKey(lhsNode.Value, rhsNode.Value) + } + log.Debugf("%v == %v ? %v", NodeToString(lhs), NodeToString(rhs), value) + if flip { + value = !value + } + return createBooleanCandidate(lhs, value), nil + } +} + +func notEqualsOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- notEqualsOperator") + return crossFunction(d, context.ReadOnlyClone(), expressionNode, isEquals(true), true) +} diff --git a/external/yq/pkg/yqlib/operator_equals_test.go b/external/yq/pkg/yqlib/operator_equals_test.go new file mode 100755 index 0000000..70b9f88 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_equals_test.go @@ -0,0 +1,190 @@ +package yqlib + +import ( + "testing" +) + +var equalsOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + expression: ".a == .b", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: `a: cat`, + expression: ".a == .b", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `a: cat`, + expression: ".b == .a", + expected: []string{ + "D0, P[a], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "cat", + document2: "dog", + expression: "select(fi==0) == select(fi==1)", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "{}", + expression: "(.a == .b) as $x", + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + skipDoc: true, + document: "{}", + expression: ".a == .b", + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: "{}", + expression: "(.a != .b) as $x", + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + skipDoc: true, + document: "{}", + expression: ".a != .b", + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: "{a: {b: 10}}", + expression: "select(.c != null)", + expected: []string{}, + }, + { + skipDoc: true, + document: "{a: {b: 10}}", + expression: "select(.d == .c)", + expected: []string{ + "D0, P[], (doc)::{a: {b: 10}}\n", + }, + }, + { + skipDoc: true, + document: "{a: {b: 10}}", + expression: "select(null == .c)", + expected: []string{ + "D0, P[], (doc)::{a: {b: 10}}\n", + }, + }, + { + skipDoc: true, + document: "{a: { b: {things: \"\"}, f: [1], g: [] }}", + expression: ".. | select(. == \"\")", + expected: []string{ + "D0, P[a b things], (!!str)::\n", + }, + }, + { + description: "Match string", + document: `[cat,goat,dog]`, + expression: `.[] | (. == "*at")`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + "D0, P[1], (!!bool)::true\n", + "D0, P[2], (!!bool)::false\n", + }, + }, + { + description: "Don't match string", + document: `[cat,goat,dog]`, + expression: `.[] | (. != "*at")`, + expected: []string{ + "D0, P[0], (!!bool)::false\n", + "D0, P[1], (!!bool)::false\n", + "D0, P[2], (!!bool)::true\n", + }, + }, + { + description: "Match number", + document: `[3, 4, 5]`, + expression: `.[] | (. == 4)`, + expected: []string{ + "D0, P[0], (!!bool)::false\n", + "D0, P[1], (!!bool)::true\n", + "D0, P[2], (!!bool)::false\n", + }, + }, + { + description: "Don't match number", + document: `[3, 4, 5]`, + expression: `.[] | (. != 4)`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + "D0, P[1], (!!bool)::false\n", + "D0, P[2], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: `a: { cat: {b: apple, c: whatever}, pat: {b: banana} }`, + expression: `.a | (.[].b == "apple")`, + expected: []string{ + "D0, P[a cat b], (!!bool)::true\n", + "D0, P[a pat b], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: ``, + expression: `null == null`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "Match nulls", + document: ``, + expression: `null == ~`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + description: "Non existent key doesn't equal a value", + document: "a: frog", + expression: `select(.b != "thing")`, + expected: []string{ + "D0, P[], (doc)::a: frog\n", + }, + }, + { + description: "Two non existent keys are equal", + document: "a: frog", + expression: `select(.b == .c)`, + expected: []string{ + "D0, P[], (doc)::a: frog\n", + }, + }, +} + +func TestEqualOperatorScenarios(t *testing.T) { + for _, tt := range equalsOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "equals", equalsOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_error.go b/external/yq/pkg/yqlib/operator_error.go new file mode 100755 index 0000000..8b0e3a9 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_error.go @@ -0,0 +1,20 @@ +package yqlib + +import ( + "fmt" +) + +func errorOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("-- errorOperation") + + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + errorMessage := "aborted" + if rhs.MatchingNodes.Len() > 0 { + errorMessage = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + return Context{}, fmt.Errorf(errorMessage) +} diff --git a/external/yq/pkg/yqlib/operator_error_test.go b/external/yq/pkg/yqlib/operator_error_test.go new file mode 100755 index 0000000..845686d --- /dev/null +++ b/external/yq/pkg/yqlib/operator_error_test.go @@ -0,0 +1,40 @@ +package yqlib + +import "testing" + +const validationExpression = ` + with(env(numberOfCats); select(tag == "!!int") or error("numberOfCats is not a number :(")) | + .numPets = env(numberOfCats) +` + +var errorOperatorScenarios = []expressionScenario{ + { + description: "Validate a particular value", + document: `a: hello`, + expression: `select(.a == "howdy") or error(".a [" + .a + "] is not howdy!")`, + expectedError: ".a [hello] is not howdy!", + }, + { + description: "Validate the environment variable is a number - invalid", + environmentVariables: map[string]string{"numberOfCats": "please"}, + expression: `env(numberOfCats) | select(tag == "!!int") or error("numberOfCats is not a number :(")`, + expectedError: "numberOfCats is not a number :(", + }, + { + description: "Validate the environment variable is a number - valid", + subdescription: "`with` can be a convenient way of encapsulating validation.", + environmentVariables: map[string]string{"numberOfCats": "3"}, + document: "name: Bob\nfavouriteAnimal: cat\n", + expression: validationExpression, + expected: []string{ + "D0, P[], (doc)::name: Bob\nfavouriteAnimal: cat\nnumPets: 3\n", + }, + }, +} + +func TestErrorOperatorScenarios(t *testing.T) { + for _, tt := range errorOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "error", errorOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_eval.go b/external/yq/pkg/yqlib/operator_eval.go new file mode 100755 index 0000000..78037e9 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_eval.go @@ -0,0 +1,42 @@ +package yqlib + +import ( + "container/list" +) + +func evalOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("Eval") + pathExpStrResults, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + expressions := make([]*ExpressionNode, pathExpStrResults.MatchingNodes.Len()) + expIndex := 0 + //parse every expression + for pathExpStrEntry := pathExpStrResults.MatchingNodes.Front(); pathExpStrEntry != nil; pathExpStrEntry = pathExpStrEntry.Next() { + expressionStrCandidate := pathExpStrEntry.Value.(*CandidateNode) + + expressions[expIndex], err = ExpressionParser.ParseExpression(expressionStrCandidate.Node.Value) + if err != nil { + return Context{}, err + } + + expIndex++ + } + + results := list.New() + + for matchEl := context.MatchingNodes.Front(); matchEl != nil; matchEl = matchEl.Next() { + for expIndex = 0; expIndex < len(expressions); expIndex++ { + result, err := d.GetMatchingNodes(context, expressions[expIndex]) + if err != nil { + return Context{}, err + } + results.PushBackList(result.MatchingNodes) + } + } + + return context.ChildContext(results), nil + +} diff --git a/external/yq/pkg/yqlib/operator_eval_test.go b/external/yq/pkg/yqlib/operator_eval_test.go new file mode 100755 index 0000000..3bff5a1 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_eval_test.go @@ -0,0 +1,34 @@ +package yqlib + +import ( + "testing" +) + +var evalOperatorScenarios = []expressionScenario{ + + { + description: "Dynamically evaluate a path", + document: `{pathExp: '.a.b[] | select(.name == "cat")', a: {b: [{name: dog}, {name: cat}]}}`, + expression: `eval(.pathExp)`, + expected: []string{ + "D0, P[a b 1], (!!map)::{name: cat}\n", + }, + }, + { + description: "Dynamically update a path from an environment variable", + subdescription: "The env variable can be any valid yq expression.", + document: `{a: {b: [{name: dog}, {name: cat}]}}`, + environmentVariables: map[string]string{"pathEnv": ".a.b[0].name", "valueEnv": "moo"}, + expression: `eval(strenv(pathEnv)) = strenv(valueEnv)`, + expected: []string{ + "D0, P[], (doc)::{a: {b: [{name: moo}, {name: cat}]}}\n", + }, + }, +} + +func TestEvalOperatorsScenarios(t *testing.T) { + for _, tt := range evalOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "eval", evalOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_expression.go b/external/yq/pkg/yqlib/operator_expression.go new file mode 100755 index 0000000..e451f0e --- /dev/null +++ b/external/yq/pkg/yqlib/operator_expression.go @@ -0,0 +1,16 @@ +package yqlib + +type expressionOpPreferences struct { + expression string +} + +func expressionOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + prefs := expressionNode.Operation.Preferences.(expressionOpPreferences) + expNode, err := ExpressionParser.ParseExpression(prefs.expression) + if err != nil { + return Context{}, err + } + + return d.GetMatchingNodes(context, expNode) +} diff --git a/external/yq/pkg/yqlib/operator_file.go b/external/yq/pkg/yqlib/operator_file.go new file mode 100755 index 0000000..c0ffaad --- /dev/null +++ b/external/yq/pkg/yqlib/operator_file.go @@ -0,0 +1,38 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func getFilenameOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetFilename") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: candidate.Filename, Tag: "!!str"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} + +func getFileIndexOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetFileIndex") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", candidate.FileIndex), Tag: "!!int"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_file_test.go b/external/yq/pkg/yqlib/operator_file_test.go new file mode 100755 index 0000000..3ad7224 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_file_test.go @@ -0,0 +1,57 @@ +package yqlib + +import ( + "testing" +) + +var fileOperatorScenarios = []expressionScenario{ + { + description: "Get filename", + document: `{a: cat}`, + expression: `filename`, + expected: []string{ + "D0, P[], (!!str)::sample.yml\n", + }, + }, + { + description: "Get file index", + document: `{a: cat}`, + expression: `file_index`, + expected: []string{ + "D0, P[], (!!int)::0\n", + }, + }, + { + description: "Get file indices of multiple documents", + document: `{a: cat}`, + document2: `{a: cat}`, + expression: `file_index`, + expected: []string{ + "D0, P[], (!!int)::0\n", + "D0, P[], (!!int)::1\n", + }, + }, + { + description: "Get file index alias", + document: `{a: cat}`, + expression: `fi`, + expected: []string{ + "D0, P[], (!!int)::0\n", + }, + }, + { + skipDoc: true, + document: "a: cat\nb: dog", + expression: `.. lineComment |= filename`, + expected: []string{ + "D0, P[], (!!map)::a: cat # sample.yml\nb: dog # sample.yml\n", + }, + }, +} + +func TestFileOperatorsScenarios(t *testing.T) { + for _, tt := range fileOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "file-operators", fileOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_flatten.go b/external/yq/pkg/yqlib/operator_flatten.go new file mode 100755 index 0000000..e7ccf99 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_flatten.go @@ -0,0 +1,54 @@ +package yqlib + +import ( + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +type flattenPreferences struct { + depth int +} + +func flatten(node *yaml.Node, depth int) { + if depth == 0 { + return + } + if node.Kind != yaml.SequenceNode { + return + } + content := node.Content + newSeq := make([]*yaml.Node, 0) + + for i := 0; i < len(content); i++ { + if content[i].Kind == yaml.SequenceNode { + flatten(content[i], depth-1) + for j := 0; j < len(content[i].Content); j++ { + newSeq = append(newSeq, content[i].Content[j]) + } + } else { + newSeq = append(newSeq, content[i]) + } + } + node.Content = newSeq +} + +func flattenOp(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("-- flatten Operator") + depth := expressionNode.Operation.Preferences.(flattenPreferences).depth + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + if candidateNode.Kind != yaml.SequenceNode { + return Context{}, fmt.Errorf("Only arrays are supported for flatten") + } + + flatten(candidateNode, depth) + + } + + return context, nil + +} diff --git a/external/yq/pkg/yqlib/operator_flatten_test.go b/external/yq/pkg/yqlib/operator_flatten_test.go new file mode 100755 index 0000000..add71e1 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_flatten_test.go @@ -0,0 +1,48 @@ +package yqlib + +import ( + "testing" +) + +var flattenOperatorScenarios = []expressionScenario{ + { + description: "Flatten", + subdescription: "Recursively flattens all arrays", + document: `[1, [2], [[3]]]`, + expression: `flatten`, + expected: []string{ + "D0, P[], (doc)::[1, 2, 3]\n", + }, + }, + { + description: "Flatten with depth of one", + document: `[1, [2], [[3]]]`, + expression: `flatten(1)`, + expected: []string{ + "D0, P[], (doc)::[1, 2, [3]]\n", + }, + }, + { + description: "Flatten empty array", + document: `[[]]`, + expression: `flatten`, + expected: []string{ + "D0, P[], (doc)::[]\n", + }, + }, + { + description: "Flatten array of objects", + document: `[{foo: bar}, [{foo: baz}]]`, + expression: `flatten`, + expected: []string{ + "D0, P[], (doc)::[{foo: bar}, {foo: baz}]\n", + }, + }, +} + +func TestFlattenOperatorScenarios(t *testing.T) { + for _, tt := range flattenOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "flatten", flattenOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_group_by.go b/external/yq/pkg/yqlib/operator_group_by.go new file mode 100755 index 0000000..3bb70b5 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_group_by.go @@ -0,0 +1,76 @@ +package yqlib + +import ( + "container/list" + "fmt" + + "github.com/elliotchance/orderedmap" + yaml "gopkg.in/yaml.v3" +) + +func processIntoGroups(d *dataTreeNavigator, context Context, rhsExp *ExpressionNode, node *yaml.Node) (*orderedmap.OrderedMap, error) { + var newMatches = orderedmap.NewOrderedMap() + for _, node := range node.Content { + child := &CandidateNode{Node: node} + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(child), rhsExp) + + if err != nil { + return nil, err + } + + keyValue := "null" + + if rhs.MatchingNodes.Len() > 0 { + first := rhs.MatchingNodes.Front() + keyCandidate := first.Value.(*CandidateNode) + keyValue = keyCandidate.Node.Value + } + + groupList, exists := newMatches.Get(keyValue) + + if !exists { + groupList = list.New() + newMatches.Set(keyValue, groupList) + } + groupList.(*list.List).PushBack(node) + } + return newMatches, nil +} + +func groupBy(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("-- groupBy Operator") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + + if candidateNode.Kind != yaml.SequenceNode { + return Context{}, fmt.Errorf("Only arrays are supported for group by") + } + + newMatches, err := processIntoGroups(d, context, expressionNode.RHS, candidateNode) + + if err != nil { + return Context{}, err + } + + resultNode := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + for groupEl := newMatches.Front(); groupEl != nil; groupEl = groupEl.Next() { + groupResultNode := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + groupList := groupEl.Value.(*list.List) + for groupItem := groupList.Front(); groupItem != nil; groupItem = groupItem.Next() { + groupResultNode.Content = append(groupResultNode.Content, groupItem.Value.(*yaml.Node)) + } + + resultNode.Content = append(resultNode.Content, groupResultNode) + } + + results.PushBack(candidate.CreateReplacement(resultNode)) + + } + + return context.ChildContext(results), nil + +} diff --git a/external/yq/pkg/yqlib/operator_group_by_test.go b/external/yq/pkg/yqlib/operator_group_by_test.go new file mode 100755 index 0000000..2c7803d --- /dev/null +++ b/external/yq/pkg/yqlib/operator_group_by_test.go @@ -0,0 +1,31 @@ +package yqlib + +import ( + "testing" +) + +var groupByOperatorScenarios = []expressionScenario{ + { + description: "Group by field", + document: `[{foo: 1, bar: 10}, {foo: 3, bar: 100}, {foo: 1, bar: 1}]`, + expression: `group_by(.foo)`, + expected: []string{ + "D0, P[], (!!seq)::- - {foo: 1, bar: 10}\n - {foo: 1, bar: 1}\n- - {foo: 3, bar: 100}\n", + }, + }, + { + description: "Group by field, with nuls", + document: `[{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}]`, + expression: `group_by(.foo)`, + expected: []string{ + "D0, P[], (!!seq)::- - {cat: dog}\n - {no: foo for you}\n- - {foo: 1, bar: 10}\n - {foo: 1, bar: 1}\n- - {foo: 3, bar: 100}\n", + }, + }, +} + +func TestGroupByOperatorScenarios(t *testing.T) { + for _, tt := range groupByOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "group-by", groupByOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_has.go b/external/yq/pkg/yqlib/operator_has.go new file mode 100755 index 0000000..01d7a1f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_has.go @@ -0,0 +1,59 @@ +package yqlib + +import ( + "container/list" + "strconv" + + yaml "gopkg.in/yaml.v3" +) + +func hasOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("-- hasOperation") + var results = list.New() + + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + + wantedKey := "null" + wanted := &yaml.Node{Tag: "!!null"} + if rhs.MatchingNodes.Len() != 0 { + wanted = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node + wantedKey = wanted.Value + } + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + // grab the first value + candidateNode := unwrapDoc(candidate.Node) + var contents = candidateNode.Content + switch candidateNode.Kind { + case yaml.MappingNode: + candidateHasKey := false + for index := 0; index < len(contents) && !candidateHasKey; index = index + 2 { + key := contents[index] + if key.Value == wantedKey { + candidateHasKey = true + } + } + results.PushBack(createBooleanCandidate(candidate, candidateHasKey)) + case yaml.SequenceNode: + candidateHasKey := false + if wanted.Tag == "!!int" { + var number, errParsingInt = strconv.ParseInt(wantedKey, 10, 64) + if errParsingInt != nil { + return Context{}, errParsingInt + } + candidateHasKey = int64(len(contents)) > number + } + results.PushBack(createBooleanCandidate(candidate, candidateHasKey)) + default: + results.PushBack(createBooleanCandidate(candidate, false)) + } + } + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_has_test.go b/external/yq/pkg/yqlib/operator_has_test.go new file mode 100755 index 0000000..3a63133 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_has_test.go @@ -0,0 +1,81 @@ +package yqlib + +import ( + "testing" +) + +var hasOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `a: hello`, + expression: `has("a")`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: `a: hello`, + expression: `has(.b) as $c`, + expected: []string{ + "D0, P[], (doc)::a: hello\n", + }, + }, + { + skipDoc: true, + document: `a: hello`, + expression: `has(.b)`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + description: "Has map key", + document: `- a: "yes" +- a: ~ +- a: +- b: nope +`, + expression: `.[] | has("a")`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + "D0, P[1], (!!bool)::true\n", + "D0, P[2], (!!bool)::true\n", + "D0, P[3], (!!bool)::false\n", + }, + }, + { + description: "Select, checking for existence of deep paths", + subdescription: "Simply pipe in parent expressions into `has`", + document: "- {a: {b: {c: cat}}}\n- {a: {b: {d: dog}}}", + expression: `.[] | select(.a.b | has("c"))`, + expected: []string{ + "D0, P[0], (!!map)::{a: {b: {c: cat}}}\n", + }, + }, + { + dontFormatInputForDoc: true, + description: "Has array index", + document: `- [] +- [1] +- [1, 2] +- [1, null] +- [1, 2, 3] +`, + expression: `.[] | has(1)`, + expected: []string{ + "D0, P[0], (!!bool)::false\n", + "D0, P[1], (!!bool)::false\n", + "D0, P[2], (!!bool)::true\n", + "D0, P[3], (!!bool)::true\n", + "D0, P[4], (!!bool)::true\n", + }, + }, +} + +func TestHasOperatorScenarios(t *testing.T) { + for _, tt := range hasOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "has", hasOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_keys.go b/external/yq/pkg/yqlib/operator_keys.go new file mode 100755 index 0000000..0e77310 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_keys.go @@ -0,0 +1,85 @@ +package yqlib + +import ( + "container/list" + "fmt" + + "gopkg.in/yaml.v3" +) + +func isKeyOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- isKeyOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + results.PushBack(createBooleanCandidate(candidate, candidate.IsMapKey)) + } + + return context.ChildContext(results), nil +} + +func getKeyOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- getKeyOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + if candidate.Key != nil { + results.PushBack(candidate.CreateReplacement(candidate.Key)) + } + } + + return context.ChildContext(results), nil + +} + +func keysOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- keysOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + var targetNode *yaml.Node + if node.Kind == yaml.MappingNode { + targetNode = getMapKeys(node) + } else if node.Kind == yaml.SequenceNode { + targetNode = getIndicies(node) + } else { + return Context{}, fmt.Errorf("Cannot get keys of %v, keys only works for maps and arrays", node.Tag) + } + + result := candidate.CreateReplacement(targetNode) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} + +func getMapKeys(node *yaml.Node) *yaml.Node { + contents := make([]*yaml.Node, 0) + for index := 0; index < len(node.Content); index = index + 2 { + contents = append(contents, node.Content[index]) + } + return &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq", Content: contents} +} + +func getIndicies(node *yaml.Node) *yaml.Node { + var contents = make([]*yaml.Node, len(node.Content)) + + for index := range node.Content { + contents[index] = &yaml.Node{ + Kind: yaml.ScalarNode, + Tag: "!!int", + Value: fmt.Sprintf("%v", index), + } + } + + return &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq", Content: contents} +} diff --git a/external/yq/pkg/yqlib/operator_keys_test.go b/external/yq/pkg/yqlib/operator_keys_test.go new file mode 100755 index 0000000..3f821b5 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_keys_test.go @@ -0,0 +1,119 @@ +package yqlib + +import ( + "testing" +) + +var expectedIsKey = `D0, P[], (!!seq)::- p: "" + isKey: false + tag: '!!map' +- p: a + isKey: true + tag: '!!str' +- p: a + isKey: false + tag: '!!map' +- p: a.b + isKey: true + tag: '!!str' +- p: a.b + isKey: false + tag: '!!seq' +- p: a.b.0 + isKey: false + tag: '!!str' +- p: a.c + isKey: true + tag: '!!str' +- p: a.c + isKey: false + tag: '!!str' +` + +var keysOperatorScenarios = []expressionScenario{ + { + description: "Map keys", + document: `{dog: woof, cat: meow}`, + expression: `keys`, + expected: []string{ + "D0, P[], (!!seq)::- dog\n- cat\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: `keys`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + description: "Array keys", + document: `[apple, banana]`, + expression: `keys`, + expected: []string{ + "D0, P[], (!!seq)::- 0\n- 1\n", + }, + }, + { + skipDoc: true, + document: `[]`, + expression: `keys`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + description: "Retrieve array key", + document: "[1,2,3]", + expression: `.[1] | key`, + expected: []string{ + "D0, P[1], (!!int)::1\n", + }, + }, + { + description: "Retrieve map key", + document: "a: thing", + expression: `.a | key`, + expected: []string{ + "D0, P[a], (!!str)::a\n", + }, + }, + { + description: "No key", + document: "{}", + expression: `key`, + expected: []string{}, + }, + { + description: "Update map key", + document: "a:\n x: 3\n y: 4", + expression: `(.a.x | key) = "meow"`, + expected: []string{ + "D0, P[], (doc)::a:\n meow: 3\n y: 4\n", + }, + }, + { + description: "Get comment from map key", + document: "a: \n # comment on key\n x: 3\n y: 4", + expression: `.a.x | key | headComment`, + expected: []string{ + "D0, P[a x], (!!str)::comment on key\n", + }, + }, + { + description: "Check node is a key", + document: "a: \n b: [cat]\n c: frog\n", + expression: `[... | { "p": path | join("."), "isKey": is_key, "tag": tag }]`, + expected: []string{ + expectedIsKey, + }, + }, +} + +func TestKeysOperatorScenarios(t *testing.T) { + for _, tt := range keysOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "keys", keysOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_length.go b/external/yq/pkg/yqlib/operator_length.go new file mode 100755 index 0000000..46f1c8c --- /dev/null +++ b/external/yq/pkg/yqlib/operator_length.go @@ -0,0 +1,39 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func lengthOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- lengthOperation") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + targetNode := unwrapDoc(candidate.Node) + var length int + switch targetNode.Kind { + case yaml.ScalarNode: + if targetNode.Tag == "!!null" { + length = 0 + } else { + length = len(targetNode.Value) + } + case yaml.MappingNode: + length = len(targetNode.Content) / 2 + case yaml.SequenceNode: + length = len(targetNode.Content) + default: + length = 0 + } + + node := &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", length), Tag: "!!int"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_length_test.go b/external/yq/pkg/yqlib/operator_length_test.go new file mode 100755 index 0000000..dee240a --- /dev/null +++ b/external/yq/pkg/yqlib/operator_length_test.go @@ -0,0 +1,66 @@ +package yqlib + +import ( + "testing" +) + +var lengthOperatorScenarios = []expressionScenario{ + { + description: "String length", + subdescription: "returns length of string", + document: `{a: cat}`, + expression: `.a | length`, + expected: []string{ + "D0, P[a], (!!int)::3\n", + }, + }, + { + description: "null length", + document: `{a: null}`, + expression: `.a | length`, + expected: []string{ + "D0, P[a], (!!int)::0\n", + }, + }, + { + skipDoc: true, + document: `{a: ~}`, + expression: `.a | length`, + expected: []string{ + "D0, P[a], (!!int)::0\n", + }, + }, + { + skipDoc: true, + document: "# abc\n{a: key no exist}", + expression: `.b | length`, + expected: []string{ + "D0, P[b], (!!int)::0\n", + }, + }, + { + description: "Map length", + subdescription: "returns number of entries", + document: `{a: cat, c: dog}`, + expression: `length`, + expected: []string{ + "D0, P[], (!!int)::2\n", + }, + }, + { + description: "Array length", + subdescription: "returns number of elements", + document: `[2,4,6,8]`, + expression: `length`, + expected: []string{ + "D0, P[], (!!int)::4\n", + }, + }, +} + +func TestLengthOperatorScenarios(t *testing.T) { + for _, tt := range lengthOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "length", lengthOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_line.go b/external/yq/pkg/yqlib/operator_line.go new file mode 100755 index 0000000..1535e05 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_line.go @@ -0,0 +1,23 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func lineOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("lineOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", candidate.Node.Line), Tag: "!!int"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_line_test.go b/external/yq/pkg/yqlib/operator_line_test.go new file mode 100755 index 0000000..e376524 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_line_test.go @@ -0,0 +1,47 @@ +package yqlib + +import ( + "testing" +) + +var lineOperatorScenarios = []expressionScenario{ + { + description: "Returns line of _value_ node", + document: "a: cat\nb:\n c: cat", + expression: `.b | line`, + expected: []string{ + "D0, P[b], (!!int)::3\n", + }, + }, + { + description: "Returns line of _key_ node", + subdescription: "Pipe through the key operator to get the line of the key", + document: "a: cat\nb:\n c: cat", + expression: `.b | key| line`, + expected: []string{ + "D0, P[b], (!!int)::2\n", + }, + }, + { + description: "First line is 1", + document: "a: cat", + expression: `.a | line`, + expected: []string{ + "D0, P[a], (!!int)::1\n", + }, + }, + { + description: "No line data is 0", + expression: `{"a": "new entry"} | line`, + expected: []string{ + "D0, P[], (!!int)::0\n", + }, + }, +} + +func TestLineOperatorScenarios(t *testing.T) { + for _, tt := range lineOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "line", lineOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_load.go b/external/yq/pkg/yqlib/operator_load.go new file mode 100755 index 0000000..eda63b7 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_load.go @@ -0,0 +1,97 @@ +package yqlib + +import ( + "bufio" + "container/list" + "fmt" + "os" + + "gopkg.in/yaml.v3" +) + +type loadPrefs struct { + loadAsString bool + decoder Decoder +} + +func loadString(filename string) (*CandidateNode, error) { + // ignore CWE-22 gosec issue - that's more targeted for http based apps that run in a public directory, + // and ensuring that it's not possible to give a path to a file outside that directory. + + filebytes, err := os.ReadFile(filename) // #nosec + if err != nil { + return nil, err + } + + return &CandidateNode{Node: &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!str", Value: string(filebytes)}}, nil +} + +func loadYaml(filename string, decoder Decoder) (*CandidateNode, error) { + + file, err := os.Open(filename) // #nosec + if err != nil { + return nil, err + } + reader := bufio.NewReader(file) + + documents, err := readDocuments(reader, filename, 0, decoder) + if err != nil { + return nil, err + } + + if documents.Len() == 0 { + // return null candidate + return &CandidateNode{Node: &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!null"}}, nil + } else if documents.Len() == 1 { + return documents.Front().Value.(*CandidateNode), nil + + } else { + sequenceNode := &CandidateNode{Node: &yaml.Node{Kind: yaml.SequenceNode}} + for doc := documents.Front(); doc != nil; doc = doc.Next() { + sequenceNode.Node.Content = append(sequenceNode.Node.Content, unwrapDoc(doc.Value.(*CandidateNode).Node)) + } + return sequenceNode, nil + } +} + +func loadYamlOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("loadYamlOperator") + + loadPrefs := expressionNode.Operation.Preferences.(loadPrefs) + + // need to evaluate the 1st parameter against the context + // and return the data accordingly. + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + if rhs.MatchingNodes.Front() == nil { + return Context{}, fmt.Errorf("Filename expression returned nil") + } + nameCandidateNode := rhs.MatchingNodes.Front().Value.(*CandidateNode) + + filename := nameCandidateNode.Node.Value + + var contentsCandidate *CandidateNode + + if loadPrefs.loadAsString { + contentsCandidate, err = loadString(filename) + } else { + contentsCandidate, err = loadYaml(filename, loadPrefs.decoder) + } + if err != nil { + return Context{}, fmt.Errorf("Failed to load %v: %w", filename, err) + } + + results.PushBack(contentsCandidate) + + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_load_test.go b/external/yq/pkg/yqlib/operator_load_test.go new file mode 100755 index 0000000..67a73e1 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_load_test.go @@ -0,0 +1,107 @@ +package yqlib + +import ( + "testing" +) + +var loadScenarios = []expressionScenario{ + { + skipDoc: true, + description: "Load empty file with a comment", + expression: `load("../../examples/empty.yaml")`, + expected: []string{ + "D0, P[], (doc)::# comment\n\n", + }, + }, + { + skipDoc: true, + description: "Load empty file with no comment", + expression: `load("../../examples/empty-no-comment.yaml")`, + expected: []string{ + "D0, P[], (!!null)::\n", + }, + }, + { + skipDoc: true, + description: "Load multiple documents", + expression: `load("../../examples/multiple_docs_small.yaml")`, + expected: []string{ + "D0, P[], ()::- a: Easy! as one two three\n- another:\n document: here\n- - 1\n - 2\n", + }, + }, + { + description: "Simple example", + document: `{myFile: "../../examples/thing.yml"}`, + expression: `load(.myFile)`, + expected: []string{ + "D0, P[], (doc)::a: apple is included\nb: cool.\n", + }, + }, + { + description: "Replace node with referenced file", + subdescription: "Note that you can modify the filename in the load operator if needed.", + document: `{something: {file: "thing.yml"}}`, + expression: `.something |= load("../../examples/" + .file)`, + expected: []string{ + "D0, P[], (doc)::{something: {a: apple is included, b: cool.}}\n", + }, + }, + { + description: "Replace _all_ nodes with referenced file", + subdescription: "Recursively match all the nodes (`..`) and then filter the ones that have a 'file' attribute. ", + document: `{something: {file: "thing.yml"}, over: {here: [{file: "thing.yml"}]}}`, + expression: `(.. | select(has("file"))) |= load("../../examples/" + .file)`, + expected: []string{ + "D0, P[], (!!map)::{something: {a: apple is included, b: cool.}, over: {here: [{a: apple is included, b: cool.}]}}\n", + }, + }, + { + description: "Replace node with referenced file as string", + subdescription: "This will work for any text based file", + document: `{something: {file: "thing.yml"}}`, + expression: `.something |= load_str("../../examples/" + .file)`, + expected: []string{ + "D0, P[], (doc)::{something: \"a: apple is included\\nb: cool.\"}\n", + }, + }, + { + description: "Load from XML", + document: "cool: things", + expression: `.more_stuff = load_xml("../../examples/small.xml")`, + expected: []string{ + "D0, P[], (doc)::cool: things\nmore_stuff:\n this: is some xml\n", + }, + }, + { + description: "Load from Properties", + document: "cool: things", + expression: `.more_stuff = load_props("../../examples/small.properties")`, + expected: []string{ + "D0, P[], (doc)::cool: things\nmore_stuff:\n this:\n is: a properties file\n", + }, + }, + { + description: "Merge from properties", + subdescription: "This can be used as a convenient way to update a yaml document", + document: "this:\n is: from yaml\n cool: ay\n", + expression: `. *= load_props("../../examples/small.properties")`, + expected: []string{ + "D0, P[], (!!map)::this:\n is: a properties file\n cool: ay\n", + }, + }, + { + description: "Load from base64 encoded file", + document: "cool: things", + expression: `.more_stuff = load_base64("../../examples/base64.txt")`, + expected: []string{ + "D0, P[], (doc)::cool: things\nmore_stuff: my secret chilli recipe is....\n", + }, + }, +} + +func TestLoadScenarios(t *testing.T) { + for _, tt := range loadScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "load", loadScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_map.go b/external/yq/pkg/yqlib/operator_map.go new file mode 100755 index 0000000..ec1a5ed --- /dev/null +++ b/external/yq/pkg/yqlib/operator_map.go @@ -0,0 +1,64 @@ +package yqlib + +import ( + "container/list" +) + +func mapValuesOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + //run expression against entries + // splat toEntries and pipe it into Rhs + splatted, err := splat(context.SingleChildContext(candidate), traversePreferences{}) + if err != nil { + return Context{}, err + } + + assignUpdateExp := &ExpressionNode{ + Operation: &Operation{OperationType: assignOpType, UpdateAssign: true}, + RHS: expressionNode.RHS, + } + _, err = assignUpdateOperator(d, splatted, assignUpdateExp) + if err != nil { + return Context{}, err + } + + } + + return context, nil +} + +func mapOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + //run expression against entries + // splat toEntries and pipe it into Rhs + splatted, err := splat(context.SingleChildContext(candidate), traversePreferences{}) + if err != nil { + return Context{}, err + } + + result, err := d.GetMatchingNodes(splatted, expressionNode.RHS) + log.Debug("expressionNode.Rhs %v", expressionNode.RHS.Operation.OperationType) + log.Debug("result %v", result) + if err != nil { + return Context{}, err + } + + selfExpression := &ExpressionNode{Operation: &Operation{OperationType: selfReferenceOpType}} + collected, err := collectTogether(d, result, selfExpression) + if err != nil { + return Context{}, err + } + collected.Node.Style = unwrapDoc(candidate.Node).Style + + results.PushBack(collected) + + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_map_test.go b/external/yq/pkg/yqlib/operator_map_test.go new file mode 100755 index 0000000..715df33 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_map_test.go @@ -0,0 +1,51 @@ +package yqlib + +import ( + "testing" +) + +var mapOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `[1,2,3]`, + document2: `[5,6,7]`, + expression: `map(. + 1)`, + expected: []string{ + "D0, P[], (!!seq)::[2, 3, 4]\n", + "D0, P[], (!!seq)::[6, 7, 8]\n", + }, + }, + { + description: "Map array", + document: `[1,2,3]`, + expression: `map(. + 1)`, + expected: []string{ + "D0, P[], (!!seq)::[2, 3, 4]\n", + }, + }, + { + skipDoc: true, + document: `{a: 1, b: 2, c: 3}`, + document2: `{x: 10, y: 20, z: 30}`, + expression: `map_values(. + 1)`, + expected: []string{ + "D0, P[], (doc)::{a: 2, b: 3, c: 4}\n", + "D0, P[], (doc)::{x: 11, y: 21, z: 31}\n", + }, + }, + { + description: "Map object values", + document: `{a: 1, b: 2, c: 3}`, + expression: `map_values(. + 1)`, + expected: []string{ + "D0, P[], (doc)::{a: 2, b: 3, c: 4}\n", + }, + }, +} + +func TestMapOperatorScenarios(t *testing.T) { + for _, tt := range mapOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "map", mapOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_multiply.go b/external/yq/pkg/yqlib/operator_multiply.go new file mode 100755 index 0000000..ac27ad1 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_multiply.go @@ -0,0 +1,203 @@ +package yqlib + +import ( + "container/list" + "fmt" + "strconv" + "strings" + + "github.com/jinzhu/copier" + yaml "gopkg.in/yaml.v3" +) + +type multiplyPreferences struct { + AppendArrays bool + DeepMergeArrays bool + TraversePrefs traversePreferences + AssignPrefs assignPreferences +} + +func createMultiplyOp(prefs interface{}) func(lhs *ExpressionNode, rhs *ExpressionNode) *ExpressionNode { + return func(lhs *ExpressionNode, rhs *ExpressionNode) *ExpressionNode { + return &ExpressionNode{Operation: &Operation{OperationType: multiplyOpType, Preferences: prefs}, + LHS: lhs, + RHS: rhs} + } +} + +func multiplyAssignOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var multiplyPrefs = expressionNode.Operation.Preferences + + return compoundAssignFunction(d, context, expressionNode, createMultiplyOp(multiplyPrefs)) +} + +func multiplyOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- MultiplyOperator") + return crossFunction(d, context, expressionNode, multiply(expressionNode.Operation.Preferences.(multiplyPreferences)), false) +} + +func getComments(lhs *CandidateNode, rhs *CandidateNode) (leadingContent string, headComment string, footComment string) { + leadingContent = rhs.LeadingContent + headComment = rhs.Node.HeadComment + footComment = rhs.Node.FootComment + if lhs.Node.HeadComment != "" || lhs.LeadingContent != "" { + headComment = lhs.Node.HeadComment + leadingContent = lhs.LeadingContent + } + + if lhs.Node.FootComment != "" { + footComment = lhs.Node.FootComment + } + return leadingContent, headComment, footComment +} + +func multiply(preferences multiplyPreferences) func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + return func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + // need to do this before unWrapping the potential document node + leadingContent, headComment, footComment := getComments(lhs, rhs) + lhs.Node = unwrapDoc(lhs.Node) + rhs.Node = unwrapDoc(rhs.Node) + log.Debugf("Multiplying LHS: %v", lhs.Node.Tag) + log.Debugf("- RHS: %v", rhs.Node.Tag) + + if lhs.Node.Kind == yaml.MappingNode && rhs.Node.Kind == yaml.MappingNode || + (lhs.Node.Kind == yaml.SequenceNode && rhs.Node.Kind == yaml.SequenceNode) { + var newBlank = CandidateNode{} + err := copier.CopyWithOption(&newBlank, lhs, copier.Option{IgnoreEmpty: true, DeepCopy: true}) + if err != nil { + return nil, err + } + newBlank.LeadingContent = leadingContent + newBlank.Node.HeadComment = headComment + newBlank.Node.FootComment = footComment + + return mergeObjects(d, context.WritableClone(), &newBlank, rhs, preferences) + } + return multiplyScalars(lhs, rhs) + } +} + +func multiplyScalars(lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + lhsTag := lhs.Node.Tag + rhsTag := guessTagFromCustomType(rhs.Node) + lhsIsCustom := false + if !strings.HasPrefix(lhsTag, "!!") { + // custom tag - we have to have a guess + lhsTag = guessTagFromCustomType(lhs.Node) + lhsIsCustom = true + } + + if lhsTag == "!!int" && rhsTag == "!!int" { + return multiplyIntegers(lhs, rhs) + } else if (lhsTag == "!!int" || lhsTag == "!!float") && (rhsTag == "!!int" || rhsTag == "!!float") { + return multiplyFloats(lhs, rhs, lhsIsCustom) + } + return nil, fmt.Errorf("Cannot multiply %v with %v", lhs.Node.Tag, rhs.Node.Tag) +} + +func multiplyFloats(lhs *CandidateNode, rhs *CandidateNode, lhsIsCustom bool) (*CandidateNode, error) { + target := lhs.CreateReplacement(&yaml.Node{}) + target.Node.Kind = yaml.ScalarNode + target.Node.Style = lhs.Node.Style + if lhsIsCustom { + target.Node.Tag = lhs.Node.Tag + } else { + target.Node.Tag = "!!float" + } + + lhsNum, err := strconv.ParseFloat(lhs.Node.Value, 64) + if err != nil { + return nil, err + } + rhsNum, err := strconv.ParseFloat(rhs.Node.Value, 64) + if err != nil { + return nil, err + } + target.Node.Value = fmt.Sprintf("%v", lhsNum*rhsNum) + return target, nil +} + +func multiplyIntegers(lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + target := lhs.CreateReplacement(&yaml.Node{}) + target.Node.Kind = yaml.ScalarNode + target.Node.Style = lhs.Node.Style + target.Node.Tag = lhs.Node.Tag + + format, lhsNum, err := parseInt64(lhs.Node.Value) + if err != nil { + return nil, err + } + _, rhsNum, err := parseInt64(rhs.Node.Value) + if err != nil { + return nil, err + } + target.Node.Value = fmt.Sprintf(format, lhsNum*rhsNum) + return target, nil +} + +func mergeObjects(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode, preferences multiplyPreferences) (*CandidateNode, error) { + var results = list.New() + + // only need to recurse the array if we are doing a deep merge + prefs := recursiveDescentPreferences{RecurseArray: preferences.DeepMergeArrays, + TraversePreferences: traversePreferences{DontFollowAlias: true, IncludeMapKeys: true}} + log.Debugf("merge - preferences.DeepMergeArrays %v", preferences.DeepMergeArrays) + log.Debugf("merge - preferences.AppendArrays %v", preferences.AppendArrays) + err := recursiveDecent(results, context.SingleChildContext(rhs), prefs) + if err != nil { + return nil, err + } + + var pathIndexToStartFrom int + if results.Front() != nil { + pathIndexToStartFrom = len(results.Front().Value.(*CandidateNode).Path) + } + + for el := results.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + if candidate.Node.Tag == "!!merge" { + continue + } + + err := applyAssignment(d, context, pathIndexToStartFrom, lhs, candidate, preferences) + if err != nil { + return nil, err + } + } + return lhs, nil +} + +func applyAssignment(d *dataTreeNavigator, context Context, pathIndexToStartFrom int, lhs *CandidateNode, rhs *CandidateNode, preferences multiplyPreferences) error { + shouldAppendArrays := preferences.AppendArrays + log.Debugf("merge - applyAssignment lhs %v, rhs: %v", lhs.GetKey(), rhs.GetKey()) + + lhsPath := rhs.Path[pathIndexToStartFrom:] + log.Debugf("merge - lhsPath %v", lhsPath) + + assignmentOp := &Operation{OperationType: assignAttributesOpType, Preferences: preferences.AssignPrefs} + if shouldAppendArrays && rhs.Node.Kind == yaml.SequenceNode { + assignmentOp.OperationType = addAssignOpType + log.Debugf("merge - assignmentOp.OperationType = addAssignOpType") + } else if !preferences.DeepMergeArrays && rhs.Node.Kind == yaml.SequenceNode || + (rhs.Node.Kind == yaml.ScalarNode || rhs.Node.Kind == yaml.AliasNode) { + assignmentOp.OperationType = assignOpType + assignmentOp.UpdateAssign = false + log.Debugf("merge - rhs.Node.Kind == yaml.SequenceNode: %v", rhs.Node.Kind == yaml.SequenceNode) + log.Debugf("merge - rhs.Node.Kind == yaml.ScalarNode: %v", rhs.Node.Kind == yaml.ScalarNode) + log.Debugf("merge - rhs.Node.Kind == yaml.AliasNode: %v", rhs.Node.Kind == yaml.AliasNode) + log.Debugf("merge - assignmentOp.OperationType = assignOpType, no updateassign") + } else { + log.Debugf("merge - assignmentOp := &Operation{OperationType: assignAttributesOpType}") + } + rhsOp := &Operation{OperationType: valueOpType, CandidateNode: rhs} + + assignmentOpNode := &ExpressionNode{ + Operation: assignmentOp, + LHS: createTraversalTree(lhsPath, preferences.TraversePrefs, rhs.IsMapKey), + RHS: &ExpressionNode{Operation: rhsOp}, + } + + _, err := d.GetMatchingNodes(context.SingleChildContext(lhs), assignmentOpNode) + + return err +} diff --git a/external/yq/pkg/yqlib/operator_multiply_test.go b/external/yq/pkg/yqlib/operator_multiply_test.go new file mode 100755 index 0000000..4c9a206 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_multiply_test.go @@ -0,0 +1,589 @@ +package yqlib + +import ( + "testing" +) + +var doc1 = `list: +# Hi this is a comment. +# Hello this is another comment. +- "abc"` + +var doc2 = `list2: +# This is yet another comment. +# Indeed this is yet another comment. +- "123"` + +var docExpected = `D0, P[], (!!map)::list: + # Hi this is a comment. + # Hello this is another comment. + - "abc" +list2: + # This is yet another comment. + # Indeed this is yet another comment. + - "123" +` + +var mergeArrayWithAnchors = `sample: +- &a +- <<: *a +` + +var mergeArraysObjectKeysText = ` +This is a fairly complex expression - you can use it as is by providing the environment variables as seen in the example below. + +It merges in the array provided in the second file into the first - matching on equal keys. + +Explanation: + +The approach, at a high level, is to reduce into a merged map (keyed by the unique key) +and then convert that back into an array. + +First the expression will create a map from the arrays keyed by the idPath, the unique field we want to merge by. +The reduce operator is merging '({}; . * $item )', so array elements with the matching key will be merged together. + +Next, we convert the map back to an array, using reduce again, concatenating all the map values together. + +Finally, we set the result of the merged array back into the first doc. + +Thanks Kev from [stackoverflow](https://stackoverflow.com/a/70109529/1168223) +` + +var mergeExpression = ` +( + (( (eval(strenv(originalPath)) + eval(strenv(otherPath))) | .[] | {(eval(strenv(idPath))): .}) as $item ireduce ({}; . * $item )) as $uniqueMap + | ( $uniqueMap | to_entries | .[]) as $item ireduce([]; . + $item.value) +) as $mergedArray +| select(fi == 0) | (eval(strenv(originalPath))) = $mergedArray +` + +var docWithHeader = `# here + +a: apple +` + +var nodeWithHeader = `node: + # here + a: apple +` + +var docNoComments = `b: banana +` + +var docWithFooter = `a: apple + +# footer +` + +var nodeWithFooter = `a: apple +# footer` + +var document = `a: &cat {name: cat} +b: {name: dog} +c: + <<: *cat +` + +var multiplyOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: mergeArrayWithAnchors, + expression: `. * .`, + expected: []string{ + "D0, P[], (!!map)::sample:\n - &a\n - !!merge <<: *a\n", + }, + }, + { + skipDoc: true, + document: `[[c], [b]]`, + expression: `.[] | . *+ ["a"]`, + expected: []string{ + "D0, P[0], (!!seq)::[c, a]\n", + "D0, P[1], (!!seq)::[b, a]\n", + }, + }, + { + skipDoc: true, + document: docWithHeader, + document2: docNoComments, + expression: `select(fi == 0) * select(fi == 1)`, + expected: []string{ + "D0, P[], (!!map)::# here\na: apple\nb: banana\n", + }, + }, + { + skipDoc: true, + document: nodeWithHeader, + document2: docNoComments, + expression: `(select(fi == 0) | .node) * select(fi == 1)`, + expected: []string{ + "D0, P[node], (!!map)::# here\na: apple\nb: banana\n", + }, + }, + { + skipDoc: true, + document: docNoComments, + document2: docWithHeader, + expression: `select(fi == 0) * select(fi == 1)`, + expected: []string{ + "D0, P[], (!!map)::# here\nb: banana\na: apple\n", + }, + }, + { + skipDoc: true, + document: docNoComments, + document2: nodeWithHeader, + expression: `select(fi == 0) * (select(fi == 1) | .node)`, + expected: []string{ + "D0, P[], (!!map)::b: banana\n# here\na: apple\n", + }, + }, + { + skipDoc: true, + document: docWithFooter, + document2: docNoComments, + expression: `select(fi == 0) * select(fi == 1)`, + expected: []string{ + "D0, P[], (!!map)::a: apple\nb: banana\n# footer\n", + }, + }, + { + skipDoc: true, + document: nodeWithFooter, + document2: docNoComments, + expression: `select(fi == 0) * select(fi == 1)`, + expected: []string{ // not sure why there's an extra newline *shrug* + "D0, P[], (!!map)::a: apple\n# footer\n\nb: banana\n", + }, + }, + { + description: "doc 2 has footer", + skipDoc: true, + document: docNoComments, + document2: docWithFooter, + expression: `select(fi == 0) * select(fi == 1)`, + expected: []string{ + "D0, P[], (!!map)::b: banana\na: apple\n# footer\n", + }, + }, + { + description: "Multiply integers", + document: "a: 3\nb: 4", + expression: `.a *= .b`, + expected: []string{ + "D0, P[], (doc)::a: 12\nb: 4\n", + }, + }, + { + skipDoc: true, + document: doc1, + document2: doc2, + expression: `select(fi == 0) * select(fi == 1)`, + expected: []string{ + docExpected, + }, + }, + { + skipDoc: true, + expression: `.x = {"things": "whatever"} * {}`, + expected: []string{ + "D0, P[], ()::x:\n things: whatever\n", + }, + }, + { + skipDoc: true, + expression: `.x = {} * {"things": "whatever"}`, + expected: []string{ + "D0, P[], ()::x:\n things: whatever\n", + }, + }, + { + skipDoc: true, + expression: `3 * 4.5`, + expected: []string{ + "D0, P[], (!!float)::13.5\n", + }, + }, + { + skipDoc: true, + expression: `4.5 * 3`, + expected: []string{ + "D0, P[], (!!float)::13.5\n", + }, + }, + { + skipDoc: true, + document: `{a: {also: [1]}, b: {also: me}}`, + expression: `. * {"a" : .b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {also: me}, b: {also: me}}\n", + }, + }, + { + skipDoc: true, + document: "# b\nb:\n # a\n a: cat", + expression: "{} * .", + expected: []string{ + "D0, P[], (!!map)::# b\nb:\n # a\n a: cat\n", + }, + }, + { + skipDoc: true, + document: "# b\nb:\n # a\n a: cat", + expression: ". * {}", + expected: []string{ + "D0, P[], (!!map)::# b\nb:\n # a\n a: cat\n", + }, + }, + { + skipDoc: true, + document: `{a: &a { b: &b { c: &c cat } } }`, + expression: `{} * .`, + expected: []string{ + "D0, P[], (!!map)::a: &a\n b: &b\n c: &c cat\n", + }, + }, + { + skipDoc: true, + document: `{a: 2, b: 5}`, + document2: `{a: 3, b: 10}`, + expression: `.a * .b`, + expected: []string{ + "D0, P[a], (!!int)::10\n", + "D0, P[a], (!!int)::20\n", + "D0, P[a], (!!int)::15\n", + "D0, P[a], (!!int)::30\n", + }, + }, + { + skipDoc: true, + document: `{a: 2}`, + document2: `{b: 10}`, + expression: `select(fi ==0) * select(fi==1)`, + expected: []string{ + "D0, P[], (!!map)::{a: 2, b: 10}\n", + }, + }, + { + skipDoc: true, + expression: `{} * {"cat":"dog"}`, + expected: []string{ + "D0, P[], (!!map)::cat: dog\n", + }, + }, + { + skipDoc: true, + document: `{a: {also: me}, b: {also: [1]}}`, + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {also: [1]}, b: {also: [1]}}\n", + }, + }, + { + description: "Merge objects together, returning merged result only", + document: `{a: {field: me, fieldA: cat}, b: {field: {g: wizz}, fieldB: dog}}`, + expression: `.a * .b`, + expected: []string{ + "D0, P[a], (!!map)::{field: {g: wizz}, fieldA: cat, fieldB: dog}\n", + }, + }, + { + description: "Merge objects together, returning parent object", + document: `{a: {field: me, fieldA: cat}, b: {field: {g: wizz}, fieldB: dog}}`, + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {field: {g: wizz}, fieldA: cat, fieldB: dog}, b: {field: {g: wizz}, fieldB: dog}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {also: {g: wizz}}, b: {also: me}}`, + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {also: me}, b: {also: me}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {also: {g: wizz}}, b: {also: [1]}}`, + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {also: [1]}, b: {also: [1]}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {also: [1]}, b: {also: {g: wizz}}}`, + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {also: {g: wizz}}, b: {also: {g: wizz}}}\n", + }, + }, + { + skipDoc: true, + document: `{a: {things: great}, b: {also: me}}`, + expression: `. * {"a": .b}`, + expected: []string{ + "D0, P[], (!!map)::{a: {things: great, also: me}, b: {also: me}}\n", + }, + }, + { + description: "Merge keeps style of LHS", + dontFormatInputForDoc: true, + document: "a: {things: great}\nb:\n also: \"me\"", + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::a: {things: great, also: \"me\"}\nb:\n also: \"me\"\n", + }, + }, + { + description: "Merge arrays", + document: `{a: [1,2,3], b: [3,4,5]}`, + expression: `. * {"a":.b}`, + expected: []string{ + "D0, P[], (!!map)::{a: [3, 4, 5], b: [3, 4, 5]}\n", + }, + }, + { + skipDoc: true, + document: `{a: [1], b: [2]}`, + expression: `.a *+ .b`, + expected: []string{ + "D0, P[a], (!!seq)::[1, 2]\n", + }, + }, + { + description: "Merge, only existing fields", + document: `{a: {thing: one, cat: frog}, b: {missing: two, thing: two}}`, + expression: `.a *? .b`, + expected: []string{ + "D0, P[a], (!!map)::{thing: two, cat: frog}\n", + }, + }, + { + description: "Merge, only new fields", + document: `{a: {thing: one, cat: frog}, b: {missing: two, thing: two}}`, + expression: `.a *n .b`, + expected: []string{ + "D0, P[a], (!!map)::{thing: one, cat: frog, missing: two}\n", + }, + }, + { + skipDoc: true, + document: `{a: [{thing: one}], b: [{missing: two, thing: two}]}`, + expression: `.a *?d .b`, + expected: []string{ + "D0, P[a], (!!seq)::[{thing: two}]\n", + }, + }, + { + skipDoc: true, + document: `{a: [{thing: one}], b: [{missing: two, thing: two}]}`, + expression: `.a *nd .b`, + expected: []string{ + "D0, P[a], (!!seq)::[{thing: one, missing: two}]\n", + }, + }, + { + skipDoc: true, + document: `{a: {array: [1]}, b: {}}`, + expression: `.b *+ .a`, + expected: []string{ + "D0, P[b], (!!map)::array: [1]\n", + }, + }, + { + description: "Merge, appending arrays", + document: `{a: {array: [1, 2, animal: dog], value: coconut}, b: {array: [3, 4, animal: cat], value: banana}}`, + expression: `.a *+ .b`, + expected: []string{ + "D0, P[a], (!!map)::{array: [1, 2, {animal: dog}, 3, 4, {animal: cat}], value: banana}\n", + }, + }, + { + description: "Merge, only existing fields, appending arrays", + document: `{a: {thing: [1,2]}, b: {thing: [3,4], another: [1]}}`, + expression: `.a *?+ .b`, + expected: []string{ + "D0, P[a], (!!map)::{thing: [1, 2, 3, 4]}\n", + }, + }, + { + description: "Merge, only new fields, appending arrays", + subdescription: "Append (+) with (n) has no effect.", + skipDoc: true, + document: `{a: {thing: [1,2]}, b: {thing: [3,4], another: [1]}}`, + expression: `.a *n+ .b`, + expected: []string{ + "D0, P[a], (!!map)::{thing: [1, 2], another: [1]}\n", + }, + }, + { + description: "Merge, deeply merging arrays", + subdescription: "Merging arrays deeply means arrays are merge like objects, with indexes as their key. In this case, we merge the first item in the array, and do nothing with the second.", + document: `{a: [{name: fred, age: 12}, {name: bob, age: 32}], b: [{name: fred, age: 34}]}`, + expression: `.a *d .b`, + expected: []string{ + "D0, P[a], (!!seq)::[{name: fred, age: 34}, {name: bob, age: 32}]\n", + }, + }, + { + description: "Merge arrays of objects together, matching on a key", + subdescription: mergeArraysObjectKeysText, + document: `{myArray: [{a: apple, b: appleB}, {a: kiwi, b: kiwiB}, {a: banana, b: bananaB}], something: else}`, + document2: `newArray: [{a: banana, c: bananaC}, {a: apple, b: appleB2}, {a: dingo, c: dingoC}]`, + environmentVariables: map[string]string{"originalPath": ".myArray", "otherPath": ".newArray", "idPath": ".a"}, + expression: mergeExpression, + expected: []string{ + "D0, P[], (doc)::{myArray: [{a: apple, b: appleB2}, {a: kiwi, b: kiwiB}, {a: banana, b: bananaB, c: bananaC}, {a: dingo, c: dingoC}], something: else}\n", + }, + }, + { + description: "Merge to prefix an element", + document: `{a: cat, b: dog}`, + expression: `. * {"a": {"c": .a}}`, + expected: []string{ + "D0, P[], (!!map)::{a: {c: cat}, b: dog}\n", + }, + }, + { + description: "Merge with simple aliases", + document: `{a: &cat {c: frog}, b: {f: *cat}, c: {g: thongs}}`, + expression: `.c * .b`, + expected: []string{ + "D0, P[c], (!!map)::{g: thongs, f: *cat}\n", + }, + }, + { + description: "Merge copies anchor names", + document: `{a: {c: &cat frog}, b: {f: *cat}, c: {g: thongs}}`, + expression: `.c * .a`, + expected: []string{ + "D0, P[c], (!!map)::{g: thongs, c: &cat frog}\n", + }, + }, + { + description: "Merge with merge anchors", + document: mergeDocSample, + expression: `.foobar * .foobarList`, + expected: []string{ + "D0, P[foobar], (!!map)::c: foobarList_c\n!!merge <<: [*foo, *bar]\nthing: foobar_thing\nb: foobarList_b\n", + }, + }, + { + skipDoc: true, + document: document, + expression: `.b * .c`, + expected: []string{ + "D0, P[b], (!!map)::{name: dog, <<: *cat}\n", + }, + }, + { + description: "Custom types: that are really numbers", + subdescription: "When custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse 2\nb: !goat 3", + expression: ".a = .a * .b", + expected: []string{ + "D0, P[], (doc)::a: !horse 6\nb: !goat 3\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really numbers", + document: "a: !horse 2.5\nb: !goat 3.5", + expression: ".a = .a * .b", + expected: []string{ + "D0, P[], (doc)::a: !horse 8.75\nb: !goat 3.5\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really numbers", + document: "a: 2\nb: !goat 3.5", + expression: ".a = .a * .b", + expected: []string{ + "D0, P[], (doc)::a: !!float 7\nb: !goat 3.5\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really arrays", + document: "a: !horse [1,2]\nb: !goat [3]", + expression: ".a = .a * .b", + expected: []string{ + "D0, P[], (doc)::a: !horse [3]\nb: !goat [3]\n", + }, + }, + { + description: "Custom types: that are really maps", + subdescription: "Custom tags will be maintained.", + document: "a: !horse {cat: meow}\nb: !goat {dog: woof}", + expression: ".a = .a * .b", + expected: []string{ + "D0, P[], (doc)::a: !horse {cat: meow, dog: woof}\nb: !goat {dog: woof}\n", + }, + }, + { + description: "Custom types: clobber tags", + subdescription: "Use the `c` option to clobber custom tags. Note that the second tag is now used", + document: "a: !horse {cat: meow}\nb: !goat {dog: woof}", + expression: ".a *=c .b", + expected: []string{ + "D0, P[], (doc)::a: !goat {cat: meow, dog: woof}\nb: !goat {dog: woof}\n", + }, + }, + { + skipDoc: true, + description: "Custom types: clobber tags - *=", + subdescription: "Use the `c` option to clobber custom tags - on both the `=` and `*` operator. Note that the second tag is now used", + document: "a: !horse {cat: meow}\nb: !goat {dog: woof}", + expression: ".a =c .a *c .b", + expected: []string{ + "D0, P[], (doc)::a: !goat {cat: meow, dog: woof}\nb: !goat {dog: woof}\n", + }, + }, + { + skipDoc: true, + description: "Custom types: dont clobber tags - *=", + subdescription: "Use the `c` option to clobber custom tags - on both the `=` and `*` operator. Note that the second tag is now used", + document: "a: !horse {cat: meow}\nb: !goat {dog: woof}", + expression: ".a *= .b", + expected: []string{ + "D0, P[], (doc)::a: !horse {cat: meow, dog: woof}\nb: !goat {dog: woof}\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really maps", + document: "a: {cat: !horse meow}\nb: {cat: 5}", + expression: ".a = .a * .b", + expected: []string{ + "D0, P[], (doc)::a: {cat: !horse 5}\nb: {cat: 5}\n", + }, + }, + { + skipDoc: true, + description: "Relative merge, new fields only", + document: "a: {a: original}\n", + expression: `.a *=n load("../../examples/thing.yml")`, + expected: []string{ + "D0, P[], (doc)::a: {a: original, b: cool.}\n", + }, + }, + { + skipDoc: true, + description: "Relative merge", + document: "a: {a: original}\n", + expression: `.a *= load("../../examples/thing.yml")`, + expected: []string{ + "D0, P[], (doc)::a: {a: apple is included, b: cool.}\n", + }, + }, +} + +func TestMultiplyOperatorScenarios(t *testing.T) { + for _, tt := range multiplyOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "multiply-merge", multiplyOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_parent.go b/external/yq/pkg/yqlib/operator_parent.go new file mode 100755 index 0000000..ab0f03d --- /dev/null +++ b/external/yq/pkg/yqlib/operator_parent.go @@ -0,0 +1,19 @@ +package yqlib + +import "container/list" + +func getParentOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- getParentOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + if candidate.Parent != nil { + results.PushBack(candidate.Parent) + } + } + + return context.ChildContext(results), nil + +} diff --git a/external/yq/pkg/yqlib/operator_parent_test.go b/external/yq/pkg/yqlib/operator_parent_test.go new file mode 100755 index 0000000..35afd67 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_parent_test.go @@ -0,0 +1,37 @@ +package yqlib + +import ( + "testing" +) + +var parentOperatorScenarios = []expressionScenario{ + { + description: "Simple example", + document: `a: {nested: cat}`, + expression: `.a.nested | parent`, + expected: []string{ + "D0, P[a], (!!map)::{nested: cat}\n", + }, + }, + { + description: "Parent of nested matches", + document: `{a: {fruit: apple, name: bob}, b: {fruit: banana, name: sam}}`, + expression: `.. | select(. == "banana") | parent`, + expected: []string{ + "D0, P[b], (!!map)::{fruit: banana, name: sam}\n", + }, + }, + { + description: "No parent", + document: `{}`, + expression: `parent`, + expected: []string{}, + }, +} + +func TestParentOperatorScenarios(t *testing.T) { + for _, tt := range parentOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "parent", parentOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_path.go b/external/yq/pkg/yqlib/operator_path.go new file mode 100755 index 0000000..3905d37 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_path.go @@ -0,0 +1,172 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func createPathNodeFor(pathElement interface{}) *yaml.Node { + switch pathElement := pathElement.(type) { + case string: + return &yaml.Node{Kind: yaml.ScalarNode, Value: pathElement, Tag: "!!str"} + default: + return &yaml.Node{Kind: yaml.ScalarNode, Value: fmt.Sprintf("%v", pathElement), Tag: "!!int"} + } +} + +func getPathArrayFromNode(funcName string, node *yaml.Node) ([]interface{}, error) { + if node.Kind != yaml.SequenceNode { + return nil, fmt.Errorf("%v: expected path array, but got %v instead", funcName, node.Tag) + } + + path := make([]interface{}, len(node.Content)) + + for i, childNode := range node.Content { + if childNode.Tag == "!!str" { + path[i] = childNode.Value + } else if childNode.Tag == "!!int" { + number, err := parseInt(childNode.Value) + if err != nil { + return nil, fmt.Errorf("%v: could not parse %v as an int: %w", funcName, childNode.Value, err) + } + path[i] = number + } else { + return nil, fmt.Errorf("%v: expected either a !!str or !!int in the path, found %v instead", funcName, childNode.Tag) + } + + } + return path, nil +} + +// SETPATH(pathArray; value) +func setPathOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("SetPath") + + if expressionNode.RHS.Operation.OperationType != blockOpType { + return Context{}, fmt.Errorf("SETPATH must be given a block (;), got %v instead", expressionNode.RHS.Operation.OperationType.Type) + } + + lhsPathContext, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS.LHS) + + if err != nil { + return Context{}, err + } + + if lhsPathContext.MatchingNodes.Len() != 1 { + return Context{}, fmt.Errorf("SETPATH: expected single path but found %v results instead", lhsPathContext.MatchingNodes.Len()) + } + lhsValue := lhsPathContext.MatchingNodes.Front().Value.(*CandidateNode) + + lhsPath, err := getPathArrayFromNode("SETPATH", lhsValue.Node) + + if err != nil { + return Context{}, err + } + + lhsTraversalTree := createTraversalTree(lhsPath, traversePreferences{}, false) + + assignmentOp := &Operation{OperationType: assignOpType} + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + targetContextValue, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS.RHS) + if err != nil { + return Context{}, err + } + + if targetContextValue.MatchingNodes.Len() != 1 { + return Context{}, fmt.Errorf("SETPATH: expected single value on RHS but found %v", targetContextValue.MatchingNodes.Len()) + } + + rhsOp := &Operation{OperationType: valueOpType, CandidateNode: targetContextValue.MatchingNodes.Front().Value.(*CandidateNode)} + + assignmentOpNode := &ExpressionNode{ + Operation: assignmentOp, + LHS: lhsTraversalTree, + RHS: &ExpressionNode{Operation: rhsOp}, + } + + _, err = d.GetMatchingNodes(context.SingleChildContext(candidate), assignmentOpNode) + + if err != nil { + return Context{}, err + } + + } + return context, nil +} + +func delPathsOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("delPaths") + // single RHS expression that returns an array of paths (array of arrays) + + pathArraysContext, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + if pathArraysContext.MatchingNodes.Len() != 1 { + return Context{}, fmt.Errorf("DELPATHS: expected single value but found %v", pathArraysContext.MatchingNodes.Len()) + } + pathArraysNode := pathArraysContext.MatchingNodes.Front().Value.(*CandidateNode).Node + + if pathArraysNode.Tag != "!!seq" { + return Context{}, fmt.Errorf("DELPATHS: expected a sequence of sequences, but found %v", pathArraysNode.Tag) + } + + updatedContext := context + + for i, child := range pathArraysNode.Content { + + if child.Tag != "!!seq" { + return Context{}, fmt.Errorf("DELPATHS: expected entry [%v] to be a sequence, but its a %v. Note that delpaths takes an array of path arrays, e.g. [[\"a\", \"b\"]]", i, child.Tag) + } + childPath, err := getPathArrayFromNode("DELPATHS", child) + + if err != nil { + return Context{}, err + } + + childTraversalExp := createTraversalTree(childPath, traversePreferences{}, false) + deleteChildOp := &Operation{OperationType: deleteChildOpType} + + deleteChildOpNode := &ExpressionNode{ + Operation: deleteChildOp, + RHS: childTraversalExp, + } + + updatedContext, err = d.GetMatchingNodes(updatedContext, deleteChildOpNode) + + if err != nil { + return Context{}, err + } + + } + + return updatedContext, nil + +} + +func getPathOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetPath") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + + content := make([]*yaml.Node, len(candidate.Path)) + for pathIndex := 0; pathIndex < len(candidate.Path); pathIndex++ { + path := candidate.Path[pathIndex] + content[pathIndex] = createPathNodeFor(path) + } + node.Content = content + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_path_test.go b/external/yq/pkg/yqlib/operator_path_test.go new file mode 100755 index 0000000..084ba9d --- /dev/null +++ b/external/yq/pkg/yqlib/operator_path_test.go @@ -0,0 +1,146 @@ +package yqlib + +import ( + "testing" +) + +var documentToPrune = ` +parentA: bob +parentB: + child1: i am child1 + child2: i am child2 +parentC: + child1: me child1 + child2: me child2 +` + +var pathOperatorScenarios = []expressionScenario{ + { + description: "Map path", + document: `{a: {b: cat}}`, + expression: `.a.b | path`, + expected: []string{ + "D0, P[a b], (!!seq)::- a\n- b\n", + }, + }, + { + skipDoc: true, + document: `a: + b: + c: + - 0 + - 1 + - 2 + - 3`, + expression: `.a.b.c.[]`, + expected: []string{ + "D0, P[a b c 0], (!!int)::0\n", + "D0, P[a b c 1], (!!int)::1\n", + "D0, P[a b c 2], (!!int)::2\n", + "D0, P[a b c 3], (!!int)::3\n", + }, + }, + { + description: "Get map key", + document: `{a: {b: cat}}`, + expression: `.a.b | path | .[-1]`, + expected: []string{ + "D0, P[a b -1], (!!str)::b\n", + }, + }, + { + description: "Array path", + document: `{a: [cat, dog]}`, + expression: `.a.[] | select(. == "dog") | path`, + expected: []string{ + "D0, P[a 1], (!!seq)::- a\n- 1\n", + }, + }, + { + description: "Get array index", + document: `{a: [cat, dog]}`, + expression: `.a.[] | select(. == "dog") | path | .[-1]`, + expected: []string{ + "D0, P[a 1 -1], (!!int)::1\n", + }, + }, + { + description: "Print path and value", + document: `{a: [cat, dog, frog]}`, + expression: `.a[] | select(. == "*og") | [{"path":path, "value":.}]`, + expected: []string{ + "D0, P[a 1], (!!seq)::- path:\n - a\n - 1\n value: dog\n", + "D0, P[a 2], (!!seq)::- path:\n - a\n - 2\n value: frog\n", + }, + }, + { + description: "Set path", + document: `{a: {b: cat}}`, + expression: `setpath(["a", "b"]; "things")`, + expected: []string{ + "D0, P[], (doc)::{a: {b: things}}\n", + }, + }, + { + description: "Set on empty document", + expression: `setpath(["a", "b"]; "things")`, + expected: []string{ + "D0, P[], ()::a:\n b: things\n", + }, + }, + { + description: "Set path to prune deep paths", + subdescription: "Like pick but recursive. This uses `ireduce` to deeply set the selected paths into an empty object,", + document: documentToPrune, + expression: "(.parentB.child2, .parentC.child1) as $i\n ireduce({}; setpath($i | path; $i))", + expected: []string{ + "D0, P[], (!!map)::parentB:\n child2: i am child2\nparentC:\n child1: me child1\n", + }, + }, + { + description: "Set array path", + document: `a: [cat, frog]`, + expression: `setpath(["a", 0]; "things")`, + expected: []string{ + "D0, P[], (doc)::a: [things, frog]\n", + }, + }, + { + description: "Set array path empty", + expression: `setpath(["a", 0]; "things")`, + expected: []string{ + "D0, P[], ()::a:\n - things\n", + }, + }, + { + description: "Delete path", + subdescription: "Notice delpaths takes an _array_ of paths.", + document: `{a: {b: cat, c: dog, d: frog}}`, + expression: `delpaths([["a", "c"], ["a", "d"]])`, + expected: []string{ + "D0, P[], (doc)::{a: {b: cat}}\n", + }, + }, + { + description: "Delete array path", + document: `a: [cat, frog]`, + expression: `delpaths([["a", 0]])`, + expected: []string{ + "D0, P[], (doc)::a: [frog]\n", + }, + }, + { + description: "Delete - wrong parameter", + subdescription: "delpaths does not work with a single path array", + document: `a: [cat, frog]`, + expression: `delpaths(["a", 0])`, + expectedError: "DELPATHS: expected entry [0] to be a sequence, but its a !!str. Note that delpaths takes an array of path arrays, e.g. [[\"a\", \"b\"]]", + }, +} + +func TestPathOperatorsScenarios(t *testing.T) { + for _, tt := range pathOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "path", pathOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_pick.go b/external/yq/pkg/yqlib/operator_pick.go new file mode 100755 index 0000000..416d947 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_pick.go @@ -0,0 +1,86 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func pickMap(original *yaml.Node, indices *yaml.Node) *yaml.Node { + + filteredContent := make([]*yaml.Node, 0) + for index := 0; index < len(indices.Content); index = index + 1 { + keyToFind := indices.Content[index] + + indexInMap := findKeyInMap(original, keyToFind) + if indexInMap > -1 { + clonedKey := deepClone(original.Content[indexInMap]) + clonedValue := deepClone(original.Content[indexInMap+1]) + filteredContent = append(filteredContent, clonedKey, clonedValue) + } + } + + newNode := deepCloneNoContent(original) + newNode.Content = filteredContent + + return newNode +} + +func pickSequence(original *yaml.Node, indices *yaml.Node) (*yaml.Node, error) { + + filteredContent := make([]*yaml.Node, 0) + for index := 0; index < len(indices.Content); index = index + 1 { + indexInArray, err := parseInt(indices.Content[index].Value) + if err != nil { + return nil, fmt.Errorf("cannot index array with %v", indices.Content[index].Value) + } + + if indexInArray > -1 && indexInArray < len(original.Content) { + filteredContent = append(filteredContent, deepClone(original.Content[indexInArray])) + } + } + + newNode := deepCloneNoContent(original) + newNode.Content = filteredContent + + return newNode, nil +} + +func pickOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("Pick") + + contextIndicesToPick, err := d.GetMatchingNodes(context, expressionNode.RHS) + + if err != nil { + return Context{}, err + } + indicesToPick := &yaml.Node{} + if contextIndicesToPick.MatchingNodes.Len() > 0 { + indicesToPick = contextIndicesToPick.MatchingNodes.Front().Value.(*CandidateNode).Node + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + + var replacement *yaml.Node + if node.Kind == yaml.MappingNode { + replacement = pickMap(node, indicesToPick) + } else if node.Kind == yaml.SequenceNode { + replacement, err = pickSequence(node, indicesToPick) + if err != nil { + return Context{}, err + } + + } else { + return Context{}, fmt.Errorf("cannot pick indicies from type %v (%v)", node.Tag, candidate.GetNicePath()) + } + + results.PushBack(candidate.CreateReplacementWithDocWrappers(replacement)) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_pick_test.go b/external/yq/pkg/yqlib/operator_pick_test.go new file mode 100755 index 0000000..52fe9e2 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_pick_test.go @@ -0,0 +1,60 @@ +package yqlib + +import ( + "testing" +) + +var pickOperatorScenarios = []expressionScenario{ + { + description: "Pick keys from map", + subdescription: "Note that the order of the keys matches the pick order and non existent keys are skipped.", + document: "myMap: {cat: meow, dog: bark, thing: hamster, hamster: squeek}\n", + expression: `.myMap |= pick(["hamster", "cat", "goat"])`, + expected: []string{ + "D0, P[], (doc)::myMap: {hamster: squeek, cat: meow}\n", + }, + }, + { + description: "Pick keys from map", + skipDoc: true, + document: "!things myMap: {cat: meow, dog: bark, thing: hamster, hamster: squeek}\n", + expression: `.myMap |= pick(["hamster", "cat", "goat"])`, + expected: []string{ + "D0, P[], (doc)::!things myMap: {hamster: squeek, cat: meow}\n", + }, + }, + { + description: "Pick keys from map with comments", + skipDoc: true, + document: "# abc\nmyMap: {cat: meow, dog: bark, thing: hamster, hamster: squeek}\n# xyz\n", + expression: `.myMap |= pick(["hamster", "cat", "goat"])`, + expected: []string{ + "D0, P[], (doc)::# abc\nmyMap: {hamster: squeek, cat: meow}\n# xyz\n", + }, + }, + { + description: "Pick indices from array", + subdescription: "Note that the order of the indexes matches the pick order and non existent indexes are skipped.", + document: `[cat, leopard, lion]`, + expression: `pick([2, 0, 734, -5])`, + expected: []string{ + "D0, P[], (!!seq)::[lion, cat]\n", + }, + }, + { + description: "Pick indices from array with comments", + skipDoc: true, + document: "# abc\n[cat, leopard, lion]\n# xyz", + expression: `pick([2, 0, 734, -5])`, + expected: []string{ + "D0, P[], (!!seq)::# abc\n[lion, cat]\n# xyz\n", + }, + }, +} + +func TestPickOperatorScenarios(t *testing.T) { + for _, tt := range pickOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "pick", pickOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_pipe.go b/external/yq/pkg/yqlib/operator_pipe.go new file mode 100755 index 0000000..77813c6 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_pipe.go @@ -0,0 +1,18 @@ +package yqlib + +func pipeOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + //lhs may update the variable context, we should pass that into the RHS + // BUT we still return the original context back (see jq) + // https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|... + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + rhs, err := d.GetMatchingNodes(lhs, expressionNode.RHS) + if err != nil { + return Context{}, err + } + return context.ChildContext(rhs.MatchingNodes), nil +} diff --git a/external/yq/pkg/yqlib/operator_pipe_test.go b/external/yq/pkg/yqlib/operator_pipe_test.go new file mode 100755 index 0000000..9e97960 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_pipe_test.go @@ -0,0 +1,31 @@ +package yqlib + +import ( + "testing" +) + +var pipeOperatorScenarios = []expressionScenario{ + { + description: "Simple Pipe", + document: `{a: {b: cat}}`, + expression: `.a | .b`, + expected: []string{ + "D0, P[a b], (!!str)::cat\n", + }, + }, + { + description: "Multiple updates", + document: `{a: cow, b: sheep, c: same}`, + expression: `.a = "cat" | .b = "dog"`, + expected: []string{ + "D0, P[], (doc)::{a: cat, b: dog, c: same}\n", + }, + }, +} + +func TestPipeOperatorScenarios(t *testing.T) { + for _, tt := range pipeOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "pipe", pipeOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_recursive_descent.go b/external/yq/pkg/yqlib/operator_recursive_descent.go new file mode 100755 index 0000000..bb58384 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_recursive_descent.go @@ -0,0 +1,50 @@ +package yqlib + +import ( + "container/list" + + yaml "gopkg.in/yaml.v3" +) + +type recursiveDescentPreferences struct { + TraversePreferences traversePreferences + RecurseArray bool +} + +func recursiveDescentOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + var results = list.New() + + preferences := expressionNode.Operation.Preferences.(recursiveDescentPreferences) + err := recursiveDecent(results, context, preferences) + if err != nil { + return Context{}, err + } + + return context.ChildContext(results), nil +} + +func recursiveDecent(results *list.List, context Context, preferences recursiveDescentPreferences) error { + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + candidate.Node = unwrapDoc(candidate.Node) + + log.Debugf("Recursive Decent, added %v", NodeToString(candidate)) + results.PushBack(candidate) + + if candidate.Node.Kind != yaml.AliasNode && len(candidate.Node.Content) > 0 && + (preferences.RecurseArray || candidate.Node.Kind != yaml.SequenceNode) { + + children, err := splat(context.SingleChildContext(candidate), preferences.TraversePreferences) + + if err != nil { + return err + } + err = recursiveDecent(results, children, preferences) + if err != nil { + return err + } + } + } + return nil +} diff --git a/external/yq/pkg/yqlib/operator_recursive_descent_test.go b/external/yq/pkg/yqlib/operator_recursive_descent_test.go new file mode 100755 index 0000000..45e63cf --- /dev/null +++ b/external/yq/pkg/yqlib/operator_recursive_descent_test.go @@ -0,0 +1,237 @@ +package yqlib + +import ( + "testing" +) + +var recursiveDescentOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `{}`, + expression: `..`, + expected: []string{ + "D0, P[], (!!map)::{}\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: `...`, + expected: []string{ + "D0, P[], (!!map)::{}\n", + }, + }, + { + skipDoc: true, + document: `[]`, + expression: `..`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + skipDoc: true, + document: `[]`, + expression: `...`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + skipDoc: true, + document: `cat`, + expression: `..`, + expected: []string{ + "D0, P[], (!!str)::cat\n", + }, + }, + { + skipDoc: true, + document: `cat`, + expression: `...`, + expected: []string{ + "D0, P[], (!!str)::cat\n", + }, + }, + { + description: "Recurse map (values only)", + document: `{a: frog}`, + expression: `..`, + expected: []string{ + "D0, P[], (!!map)::{a: frog}\n", + "D0, P[a], (!!str)::frog\n", + }, + }, + { + description: "Recursively find nodes with keys", + subdescription: "Note that this example has wrapped the expression in `[]` to show that there are two matches returned. You do not have to wrap in `[]` in your path expression.", + document: `{a: {name: frog, b: {name: blog, age: 12}}}`, + expression: `[.. | select(has("name"))]`, + expected: []string{ + "D0, P[], (!!seq)::- {name: frog, b: {name: blog, age: 12}}\n- {name: blog, age: 12}\n", + }, + }, + { + description: "Recursively find nodes with values", + document: `{a: {nameA: frog, b: {nameB: frog, age: 12}}}`, + expression: `.. | select(. == "frog")`, + expected: []string{ + "D0, P[a nameA], (!!str)::frog\n", + "D0, P[a b nameB], (!!str)::frog\n", + }, + }, + { + description: "Recurse map (values and keys)", + subdescription: "Note that the map key appears in the results", + document: `{a: frog}`, + expression: `...`, + expected: []string{ + "D0, P[], (!!map)::{a: frog}\n", + "D0, P[a], (!!str)::a\n", + "D0, P[a], (!!str)::frog\n", + }, + }, + { + skipDoc: true, + document: `{a: {b: apple}}`, + expression: `..`, + expected: []string{ + "D0, P[], (!!map)::{a: {b: apple}}\n", + "D0, P[a], (!!map)::{b: apple}\n", + "D0, P[a b], (!!str)::apple\n", + }, + }, + { + skipDoc: true, + document: `{a: {b: apple}}`, + expression: `...`, + expected: []string{ + "D0, P[], (!!map)::{a: {b: apple}}\n", + "D0, P[a], (!!str)::a\n", + "D0, P[a], (!!map)::{b: apple}\n", + "D0, P[a b], (!!str)::b\n", + "D0, P[a b], (!!str)::apple\n", + }, + }, + { + skipDoc: true, + document: `[1,2,3]`, + expression: `..`, + expected: []string{ + "D0, P[], (!!seq)::[1, 2, 3]\n", + "D0, P[0], (!!int)::1\n", + "D0, P[1], (!!int)::2\n", + "D0, P[2], (!!int)::3\n", + }, + }, + { + skipDoc: true, + document: `[1,2,3]`, + expression: `...`, + expected: []string{ + "D0, P[], (!!seq)::[1, 2, 3]\n", + "D0, P[0], (!!int)::1\n", + "D0, P[1], (!!int)::2\n", + "D0, P[2], (!!int)::3\n", + }, + }, + { + skipDoc: true, + document: `[{a: cat},2,true]`, + expression: `..`, + expected: []string{ + "D0, P[], (!!seq)::[{a: cat}, 2, true]\n", + "D0, P[0], (!!map)::{a: cat}\n", + "D0, P[0 a], (!!str)::cat\n", + "D0, P[1], (!!int)::2\n", + "D0, P[2], (!!bool)::true\n", + }, + }, + { + skipDoc: true, + document: `[{a: cat},2,true]`, + expression: `...`, + expected: []string{ + "D0, P[], (!!seq)::[{a: cat}, 2, true]\n", + "D0, P[0], (!!map)::{a: cat}\n", + "D0, P[0 a], (!!str)::a\n", + "D0, P[0 a], (!!str)::cat\n", + "D0, P[1], (!!int)::2\n", + "D0, P[2], (!!bool)::true\n", + }, + }, + { + description: "Aliases are not traversed", + document: `{a: &cat {c: frog}, b: *cat}`, + expression: `[..]`, + expected: []string{ + "D0, P[], (!!seq)::- {a: &cat {c: frog}, b: *cat}\n- &cat {c: frog}\n- frog\n- *cat\n", + }, + }, + { + skipDoc: true, + document: `{a: &cat {c: frog}, b: *cat}`, + expression: `...`, + expected: []string{ + "D0, P[], (!!map)::{a: &cat {c: frog}, b: *cat}\n", + "D0, P[a], (!!str)::a\n", + "D0, P[a], (!!map)::&cat {c: frog}\n", + "D0, P[a c], (!!str)::c\n", + "D0, P[a c], (!!str)::frog\n", + "D0, P[b], (!!str)::b\n", + "D0, P[b], (alias)::*cat\n", + }, + }, + { + description: "Merge docs are not traversed", + document: mergeDocSample, + expression: `.foobar | [..]`, + expected: []string{ + "D0, P[foobar], (!!seq)::- c: foobar_c\n !!merge <<: *foo\n thing: foobar_thing\n- foobar_c\n- *foo\n- foobar_thing\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobar | [...]`, + expected: []string{ + "D0, P[foobar], (!!seq)::- c: foobar_c\n !!merge <<: *foo\n thing: foobar_thing\n- c\n- foobar_c\n- !!merge <<\n- *foo\n- thing\n- foobar_thing\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList | ..`, + expected: []string{ + "D0, P[foobarList], (!!map)::b: foobarList_b\n!!merge <<: [*foo, *bar]\nc: foobarList_c\n", + "D0, P[foobarList b], (!!str)::foobarList_b\n", + "D0, P[foobarList <<], (!!seq)::[*foo, *bar]\n", + "D0, P[foobarList << 0], (alias)::*foo\n", + "D0, P[foobarList << 1], (alias)::*bar\n", + "D0, P[foobarList c], (!!str)::foobarList_c\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList | ...`, + expected: []string{ + "D0, P[foobarList], (!!map)::b: foobarList_b\n!!merge <<: [*foo, *bar]\nc: foobarList_c\n", + "D0, P[foobarList b], (!!str)::b\n", + "D0, P[foobarList b], (!!str)::foobarList_b\n", + "D0, P[foobarList <<], (!!merge)::<<\n", + "D0, P[foobarList <<], (!!seq)::[*foo, *bar]\n", + "D0, P[foobarList << 0], (alias)::*foo\n", + "D0, P[foobarList << 1], (alias)::*bar\n", + "D0, P[foobarList c], (!!str)::c\n", + "D0, P[foobarList c], (!!str)::foobarList_c\n", + }, + }, +} + +func TestRecursiveDescentOperatorScenarios(t *testing.T) { + for _, tt := range recursiveDescentOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "recursive-descent-glob", recursiveDescentOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_reduce.go b/external/yq/pkg/yqlib/operator_reduce.go new file mode 100755 index 0000000..d883e38 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_reduce.go @@ -0,0 +1,57 @@ +package yqlib + +import ( + "container/list" + "fmt" +) + +func reduceOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- reduceOp") + //.a as $var reduce (0; . + $var) + //lhs is the assignment operator + //rhs is the reduce block + // '.' refers to the current accumulator, initialised to 0 + // $var references a single element from the .a + + //ensure lhs is actually an assignment + //and rhs is a block (empty) + if expressionNode.LHS.Operation.OperationType != assignVariableOpType { + return Context{}, fmt.Errorf("reduce must be given a variables assignment, got %v instead", expressionNode.LHS.Operation.OperationType.Type) + } else if expressionNode.RHS.Operation.OperationType != blockOpType { + return Context{}, fmt.Errorf("reduce must be given a block, got %v instead", expressionNode.RHS.Operation.OperationType.Type) + } + + arrayExpNode := expressionNode.LHS.LHS + array, err := d.GetMatchingNodes(context, arrayExpNode) + + if err != nil { + return Context{}, err + } + + variableName := expressionNode.LHS.RHS.Operation.StringValue + + initExp := expressionNode.RHS.LHS + + accum, err := d.GetMatchingNodes(context, initExp) + if err != nil { + return Context{}, err + } + + log.Debugf("with variable %v", variableName) + + blockExp := expressionNode.RHS.RHS + for el := array.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + log.Debugf("REDUCING WITH %v", NodeToString(candidate)) + l := list.New() + l.PushBack(candidate) + accum.SetVariable(variableName, l) + + accum, err = d.GetMatchingNodes(accum, blockExp) + if err != nil { + return Context{}, err + } + } + + return accum, nil +} diff --git a/external/yq/pkg/yqlib/operator_reduce_test.go b/external/yq/pkg/yqlib/operator_reduce_test.go new file mode 100755 index 0000000..80b45a5 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_reduce_test.go @@ -0,0 +1,40 @@ +package yqlib + +import ( + "testing" +) + +var reduceOperatorScenarios = []expressionScenario{ + { + description: "Sum numbers", + document: `[10,2, 5, 3]`, + expression: `.[] as $item ireduce (0; . + $item)`, + expected: []string{ + "D0, P[], (!!int)::20\n", + }, + }, + { + description: "Merge all yaml files together", + document: `a: cat`, + document2: `b: dog`, + expression: `. as $item ireduce ({}; . * $item )`, + expected: []string{ + "D0, P[], (!!map)::a: cat\nb: dog\n", + }, + }, + { + description: "Convert an array to an object", + document: `[{name: Cathy, has: apples},{name: Bob, has: bananas}]`, + expression: `.[] as $item ireduce ({}; .[$item | .name] = ($item | .has) )`, + expected: []string{ + "D0, P[], (!!map)::Cathy: apples\nBob: bananas\n", + }, + }, +} + +func TestReduceOperatorScenarios(t *testing.T) { + for _, tt := range reduceOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "reduce", reduceOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_reverse.go b/external/yq/pkg/yqlib/operator_reverse.go new file mode 100755 index 0000000..1693308 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_reverse.go @@ -0,0 +1,34 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func reverseOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + results := list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + candidateNode := unwrapDoc(candidate.Node) + + if candidateNode.Kind != yaml.SequenceNode { + return context, fmt.Errorf("node at path [%v] is not an array (it's a %v)", candidate.GetNicePath(), candidate.GetNiceTag()) + } + + reverseList := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq", Style: candidateNode.Style} + reverseList.Content = make([]*yaml.Node, len(candidateNode.Content)) + + for i, originalNode := range candidateNode.Content { + reverseList.Content[len(candidateNode.Content)-i-1] = originalNode + } + results.PushBack(candidate.CreateReplacementWithDocWrappers(reverseList)) + + } + + return context.ChildContext(results), nil + +} diff --git a/external/yq/pkg/yqlib/operator_reverse_test.go b/external/yq/pkg/yqlib/operator_reverse_test.go new file mode 100755 index 0000000..3d67742 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_reverse_test.go @@ -0,0 +1,63 @@ +package yqlib + +import "testing" + +var reverseOperatorScenarios = []expressionScenario{ + { + description: "Reverse", + document: "[1, 2, 3]", + expression: `reverse`, + expected: []string{ + "D0, P[], (!!seq)::[3, 2, 1]\n", + }, + }, + { + skipDoc: true, + document: "[]", + expression: `reverse`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + skipDoc: true, + document: "[1]", + expression: `reverse`, + expected: []string{ + "D0, P[], (!!seq)::[1]\n", + }, + }, + { + skipDoc: true, + document: "[1,2]", + expression: `reverse`, + expected: []string{ + "D0, P[], (!!seq)::[2, 1]\n", + }, + }, + { + description: "Sort descending by string field", + subdescription: "Use sort with reverse to sort in descending order.", + document: "[{a: banana},{a: cat},{a: apple}]", + expression: `sort_by(.a) | reverse`, + expected: []string{ + "D0, P[], (!!seq)::[{a: cat}, {a: banana}, {a: apple}]\n", + }, + }, + { + description: "Sort descending by string field, with comments", + skipDoc: true, + document: "# abc\n[{a: banana},{a: cat},{a: apple}]\n# xyz", + expression: `sort_by(.a) | reverse`, + expected: []string{ + "D0, P[], (!!seq)::# abc\n[{a: cat}, {a: banana}, {a: apple}]\n# xyz\n", + }, + }, +} + +func TestReverseOperatorScenarios(t *testing.T) { + for _, tt := range reverseOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "reverse", reverseOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_select.go b/external/yq/pkg/yqlib/operator_select.go new file mode 100755 index 0000000..57b9e2c --- /dev/null +++ b/external/yq/pkg/yqlib/operator_select.go @@ -0,0 +1,41 @@ +package yqlib + +import ( + "container/list" +) + +func selectOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("-- selectOperation") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + + // find any truthy node + var errDecoding error + includeResult := false + + for resultEl := rhs.MatchingNodes.Front(); resultEl != nil; resultEl = resultEl.Next() { + result := resultEl.Value.(*CandidateNode) + includeResult, errDecoding = isTruthy(result) + log.Debugf("isTruthy %v", includeResult) + if errDecoding != nil { + return Context{}, errDecoding + } + if includeResult { + break + } + } + + if includeResult { + results.PushBack(candidate) + } + } + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_select_test.go b/external/yq/pkg/yqlib/operator_select_test.go new file mode 100755 index 0000000..24702ab --- /dev/null +++ b/external/yq/pkg/yqlib/operator_select_test.go @@ -0,0 +1,150 @@ +package yqlib + +import ( + "testing" +) + +var selectOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `cat`, + expression: `select(false, true)`, + expected: []string{ + "D0, P[], (doc)::cat\n", + }, + }, + { + skipDoc: true, + document: `cat`, + expression: `select(true, false)`, + expected: []string{ + "D0, P[], (doc)::cat\n", + }, + }, + { + skipDoc: true, + document: `cat`, + expression: `select(false)`, + expected: []string{}, + }, + { + description: "Select elements from array using wildcard prefix", + document: `[cat,goat,dog]`, + expression: `.[] | select(. == "*at")`, + expected: []string{ + "D0, P[0], (!!str)::cat\n", + "D0, P[1], (!!str)::goat\n", + }, + }, + { + description: "Select elements from array using wildcard suffix", + document: `[go-kart,goat,dog]`, + expression: `.[] | select(. == "go*")`, + expected: []string{ + "D0, P[0], (!!str)::go-kart\n", + "D0, P[1], (!!str)::goat\n", + }, + }, + { + description: "Select elements from array using wildcard prefix and suffix", + document: `[ago, go, meow, going]`, + expression: `.[] | select(. == "*go*")`, + expected: []string{ + "D0, P[0], (!!str)::ago\n", + "D0, P[1], (!!str)::go\n", + "D0, P[3], (!!str)::going\n", + }, + }, + { + description: "Select elements from array with regular expression", + subdescription: "See more regular expression examples under the `string` operator docs.", + document: `[this_0, not_this, nor_0_this, thisTo_4]`, + expression: `.[] | select(test("[a-zA-Z]+_[0-9]$"))`, + expected: []string{ + "D0, P[0], (!!str)::this_0\n", + "D0, P[3], (!!str)::thisTo_4\n", + }, + }, + { + skipDoc: true, + document: "a: hello", + document2: "b: world", + expression: `select(.a == "hello" or .b == "world")`, + expected: []string{ + "D0, P[], (doc)::a: hello\n", + "D0, P[], (doc)::b: world\n", + }, + }, + { + skipDoc: true, + document: `[{animal: cat, legs: {cool: true}}, {animal: fish}]`, + expression: `(.[] | select(.legs.cool == true).canWalk) = true | (.[] | .alive.things) = "yes"`, + expected: []string{ + "D0, P[], (doc)::[{animal: cat, legs: {cool: true}, canWalk: true, alive: {things: yes}}, {animal: fish, alive: {things: yes}}]\n", + }, + }, + { + skipDoc: true, + document: `[hot, fot, dog]`, + expression: `.[] | select(. == "*at")`, + expected: []string{}, + }, + { + skipDoc: true, + document: `a: [cat,goat,dog]`, + expression: `.a.[] | select(. == "*at")`, + expected: []string{ + "D0, P[a 0], (!!str)::cat\n", + "D0, P[a 1], (!!str)::goat\n"}, + }, + { + description: "Select items from a map", + document: `{ things: cat, bob: goat, horse: dog }`, + expression: `.[] | select(. == "cat" or test("og$"))`, + expected: []string{ + "D0, P[things], (!!str)::cat\n", + "D0, P[horse], (!!str)::dog\n", + }, + }, + { + description: "Use select and with_entries to filter map keys", + document: `{name: bob, legs: 2, game: poker}`, + expression: `with_entries(select(.key | test("ame$")))`, + expected: []string{ + "D0, P[], (!!map)::name: bob\ngame: poker\n", + }, + }, + { + description: "Select multiple items in a map and update", + subdescription: "Note the brackets around the entire LHS.", + document: `a: { things: cat, bob: goat, horse: dog }`, + expression: `(.a.[] | select(. == "cat" or . == "goat")) |= "rabbit"`, + expected: []string{ + "D0, P[], (doc)::a: {things: rabbit, bob: rabbit, horse: dog}\n", + }, + }, + { + skipDoc: true, + document: `a: { things: {include: true}, notMe: {include: false}, andMe: {include: fold} }`, + expression: `.a.[] | select(.include)`, + expected: []string{ + "D0, P[a things], (!!map)::{include: true}\n", + "D0, P[a andMe], (!!map)::{include: fold}\n", + }, + }, + { + skipDoc: true, + document: `[cat,~,dog]`, + expression: `.[] | select(. == ~)`, + expected: []string{ + "D0, P[1], (!!null)::~\n", + }, + }, +} + +func TestSelectOperatorScenarios(t *testing.T) { + for _, tt := range selectOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "select", selectOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_self.go b/external/yq/pkg/yqlib/operator_self.go new file mode 100755 index 0000000..232f7d7 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_self.go @@ -0,0 +1,5 @@ +package yqlib + +func selfOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + return context, nil +} diff --git a/external/yq/pkg/yqlib/operator_slice.go b/external/yq/pkg/yqlib/operator_slice.go new file mode 100755 index 0000000..e20311d --- /dev/null +++ b/external/yq/pkg/yqlib/operator_slice.go @@ -0,0 +1,72 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func getSliceNumber(d *dataTreeNavigator, context Context, node *CandidateNode, expressionNode *ExpressionNode) (int, error) { + result, err := d.GetMatchingNodes(context.SingleChildContext(node), expressionNode) + if err != nil { + return 0, err + } + if result.MatchingNodes.Len() != 1 { + return 0, fmt.Errorf("expected to find 1 number, got %v instead", result.MatchingNodes.Len()) + } + return parseInt(result.MatchingNodes.Front().Value.(*CandidateNode).Node.Value) +} + +func sliceArrayOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debug("slice array operator!") + log.Debug("lhs: %v", expressionNode.LHS.Operation.toString()) + log.Debug("rhs: %v", expressionNode.RHS.Operation.toString()) + + results := list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + lhsNode := el.Value.(*CandidateNode) + original := unwrapDoc(lhsNode.Node) + + firstNumber, err := getSliceNumber(d, context, lhsNode, expressionNode.LHS) + + if err != nil { + return Context{}, err + } + relativeFirstNumber := firstNumber + if relativeFirstNumber < 0 { + relativeFirstNumber = len(original.Content) + firstNumber + } + + secondNumber, err := getSliceNumber(d, context, lhsNode, expressionNode.RHS) + if err != nil { + return Context{}, err + } + + relativeSecondNumber := secondNumber + if relativeSecondNumber < 0 { + relativeSecondNumber = len(original.Content) + secondNumber + } + + log.Debug("calculateIndicesToTraverse: slice from %v to %v", relativeFirstNumber, relativeSecondNumber) + + var newResults []*yaml.Node + for i := relativeFirstNumber; i < relativeSecondNumber; i++ { + newResults = append(newResults, original.Content[i]) + } + + slicedArrayNode := &yaml.Node{ + Kind: yaml.SequenceNode, + Tag: original.Tag, + Content: newResults, + } + results.PushBack(lhsNode.CreateReplacement(slicedArrayNode)) + + } + + // result is now the context that has the nodes we need to put back into a sequence. + //what about multiple arrays in the context? I think we need to create an array for each one + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_slice_test.go b/external/yq/pkg/yqlib/operator_slice_test.go new file mode 100755 index 0000000..9785410 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_slice_test.go @@ -0,0 +1,90 @@ +package yqlib + +import "testing" + +var sliceArrayScenarios = []expressionScenario{ + { + description: "Slicing arrays", + document: `[cat, dog, frog, cow]`, + expression: `.[1:3]`, + expected: []string{ + "D0, P[], (!!seq)::- dog\n- frog\n", + }, + }, + { + description: "Slicing arrays - without the first number", + subdescription: "Starts from the start of the array", + document: `[cat, dog, frog, cow]`, + expression: `.[:2]`, + expected: []string{ + "D0, P[], (!!seq)::- cat\n- dog\n", + }, + }, + { + description: "Slicing arrays - without the second number", + subdescription: "Finishes at the end of the array", + document: `[cat, dog, frog, cow]`, + expression: `.[2:]`, + expected: []string{ + "D0, P[], (!!seq)::- frog\n- cow\n", + }, + }, + { + description: "Slicing arrays - use negative numbers to count backwards from the end", + document: `[cat, dog, frog, cow]`, + expression: `.[1:-1]`, + expected: []string{ + "D0, P[], (!!seq)::- dog\n- frog\n", + }, + }, + { + description: "Inserting into the middle of an array", + subdescription: "using an expression to find the index", + document: `[cat, dog, frog, cow]`, + expression: `(.[] | select(. == "dog") | key + 1) as $pos | .[0:($pos)] + ["rabbit"] + .[$pos:]`, + expected: []string{ + "D0, P[], (!!seq)::- cat\n- dog\n- rabbit\n- frog\n- cow\n", + }, + }, + { + skipDoc: true, + document: `[[cat, dog, frog, cow], [apple, banana, grape, mango]]`, + expression: `.[] | .[1:3]`, + expected: []string{ + "D0, P[0], (!!seq)::- dog\n- frog\n", + "D0, P[1], (!!seq)::- banana\n- grape\n", + }, + }, + { + skipDoc: true, + document: `[[cat, dog, frog, cow], [apple, banana, grape, mango]]`, + expression: `.[] | .[-2:-1]`, + expected: []string{ + "D0, P[0], (!!seq)::- frog\n", + "D0, P[1], (!!seq)::- grape\n", + }, + }, + { + skipDoc: true, + document: `[cat1, cat2, cat3, cat4, cat5, cat6, cat7, cat8, cat9, cat10, cat11]`, + expression: `.[10:11]`, + expected: []string{ + "D0, P[], (!!seq)::- cat11\n", + }, + }, + { + skipDoc: true, + document: `[cat1, cat2, cat3, cat4, cat5, cat6, cat7, cat8, cat9, cat10, cat11]`, + expression: `.[-11:-10]`, + expected: []string{ + "D0, P[], (!!seq)::- cat1\n", + }, + }, +} + +func TestSliceOperatorScenarios(t *testing.T) { + for _, tt := range sliceArrayScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "slice-array", sliceArrayScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_sort.go b/external/yq/pkg/yqlib/operator_sort.go new file mode 100755 index 0000000..62c85e5 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_sort.go @@ -0,0 +1,165 @@ +package yqlib + +import ( + "container/list" + "fmt" + "sort" + "strconv" + "strings" + "time" + + yaml "gopkg.in/yaml.v3" +) + +func sortOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + selfExpression := &ExpressionNode{Operation: &Operation{OperationType: selfReferenceOpType}} + expressionNode.RHS = selfExpression + return sortByOperator(d, context, expressionNode) +} + +// context represents the current matching nodes in the expression pipeline +// expressionNode is your current expression (sort_by) +func sortByOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + results := list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + candidateNode := unwrapDoc(candidate.Node) + + if candidateNode.Kind != yaml.SequenceNode { + return context, fmt.Errorf("node at path [%v] is not an array (it's a %v)", candidate.GetNicePath(), candidate.GetNiceTag()) + } + + sortableArray := make(sortableNodeArray, len(candidateNode.Content)) + + for i, originalNode := range candidateNode.Content { + + childCandidate := candidate.CreateChildInArray(i, originalNode) + compareContext, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(childCandidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + nodeToCompare := &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!null"} + if compareContext.MatchingNodes.Len() > 0 { + nodeToCompare = compareContext.MatchingNodes.Front().Value.(*CandidateNode).Node + } + + log.Debug("going to compare %v by %v", NodeToString(candidate.CreateReplacement(originalNode)), NodeToString(candidate.CreateReplacement(nodeToCompare))) + + sortableArray[i] = sortableNode{Node: originalNode, NodeToCompare: nodeToCompare, dateTimeLayout: context.GetDateTimeLayout()} + + if nodeToCompare.Kind != yaml.ScalarNode { + return Context{}, fmt.Errorf("sort only works for scalars, got %v", nodeToCompare.Tag) + } + + } + + sort.Stable(sortableArray) + + sortedList := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq", Style: candidateNode.Style} + sortedList.Content = make([]*yaml.Node, len(candidateNode.Content)) + + for i, sortedNode := range sortableArray { + sortedList.Content[i] = sortedNode.Node + } + results.PushBack(candidate.CreateReplacementWithDocWrappers(sortedList)) + } + return context.ChildContext(results), nil +} + +type sortableNode struct { + Node *yaml.Node + NodeToCompare *yaml.Node + dateTimeLayout string +} + +type sortableNodeArray []sortableNode + +func (a sortableNodeArray) Len() int { return len(a) } +func (a sortableNodeArray) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +func (a sortableNodeArray) Less(i, j int) bool { + lhs := a[i].NodeToCompare + rhs := a[j].NodeToCompare + + lhsTag := lhs.Tag + rhsTag := rhs.Tag + + if !strings.HasPrefix(lhsTag, "!!") { + // custom tag - we have to have a guess + lhsTag = guessTagFromCustomType(lhs) + } + + if !strings.HasPrefix(rhsTag, "!!") { + // custom tag - we have to have a guess + rhsTag = guessTagFromCustomType(rhs) + } + + isDateTime := lhsTag == "!!timestamp" && rhsTag == "!!timestamp" + layout := a[i].dateTimeLayout + // if the lhs is a string, it might be a timestamp in a custom format. + if lhsTag == "!!str" && layout != time.RFC3339 { + _, errLhs := parseDateTime(layout, lhs.Value) + _, errRhs := parseDateTime(layout, rhs.Value) + isDateTime = errLhs == nil && errRhs == nil + } + + if lhsTag == "!!null" && rhsTag != "!!null" { + return true + } else if lhsTag != "!!null" && rhsTag == "!!null" { + return false + } else if lhsTag == "!!bool" && rhsTag != "!!bool" { + return true + } else if lhsTag != "!!bool" && rhsTag == "!!bool" { + return false + } else if lhsTag == "!!bool" && rhsTag == "!!bool" { + lhsTruthy, err := isTruthyNode(lhs) + if err != nil { + panic(fmt.Errorf("could not parse %v as boolean: %w", lhs.Value, err)) + } + + rhsTruthy, err := isTruthyNode(rhs) + if err != nil { + panic(fmt.Errorf("could not parse %v as boolean: %w", rhs.Value, err)) + } + + return !lhsTruthy && rhsTruthy + } else if isDateTime { + lhsTime, err := parseDateTime(layout, lhs.Value) + if err != nil { + log.Warningf("Could not parse time %v with layout %v for sort, sorting by string instead: %w", lhs.Value, layout, err) + return strings.Compare(lhs.Value, rhs.Value) < 0 + } + rhsTime, err := parseDateTime(layout, rhs.Value) + if err != nil { + log.Warningf("Could not parse time %v with layout %v for sort, sorting by string instead: %w", rhs.Value, layout, err) + return strings.Compare(lhs.Value, rhs.Value) < 0 + } + return lhsTime.Before(rhsTime) + } else if lhsTag == "!!int" && rhsTag == "!!int" { + _, lhsNum, err := parseInt64(lhs.Value) + if err != nil { + panic(err) + } + _, rhsNum, err := parseInt64(rhs.Value) + if err != nil { + panic(err) + } + return lhsNum < rhsNum + } else if (lhsTag == "!!int" || lhsTag == "!!float") && (rhsTag == "!!int" || rhsTag == "!!float") { + lhsNum, err := strconv.ParseFloat(lhs.Value, 64) + if err != nil { + panic(err) + } + rhsNum, err := strconv.ParseFloat(rhs.Value, 64) + if err != nil { + panic(err) + } + return lhsNum < rhsNum + } + + return strings.Compare(lhs.Value, rhs.Value) < 0 +} diff --git a/external/yq/pkg/yqlib/operator_sort_keys.go b/external/yq/pkg/yqlib/operator_sort_keys.go new file mode 100755 index 0000000..0ab1a3c --- /dev/null +++ b/external/yq/pkg/yqlib/operator_sort_keys.go @@ -0,0 +1,52 @@ +package yqlib + +import ( + "sort" + + yaml "gopkg.in/yaml.v3" +) + +func sortKeysOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + for childEl := rhs.MatchingNodes.Front(); childEl != nil; childEl = childEl.Next() { + node := unwrapDoc(childEl.Value.(*CandidateNode).Node) + if node.Kind == yaml.MappingNode { + sortKeys(node) + } + if err != nil { + return Context{}, err + } + } + + } + return context, nil +} + +func sortKeys(node *yaml.Node) { + keys := make([]string, len(node.Content)/2) + keyBucket := map[string]*yaml.Node{} + valueBucket := map[string]*yaml.Node{} + var contents = node.Content + for index := 0; index < len(contents); index = index + 2 { + key := contents[index] + value := contents[index+1] + keys[index/2] = key.Value + keyBucket[key.Value] = key + valueBucket[key.Value] = value + } + sort.Strings(keys) + sortedContent := make([]*yaml.Node, len(node.Content)) + for index := 0; index < len(keys); index = index + 1 { + keyString := keys[index] + sortedContent[index*2] = keyBucket[keyString] + sortedContent[1+(index*2)] = valueBucket[keyString] + } + node.Content = sortedContent +} diff --git a/external/yq/pkg/yqlib/operator_sort_keys_test.go b/external/yq/pkg/yqlib/operator_sort_keys_test.go new file mode 100755 index 0000000..8d42155 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_sort_keys_test.go @@ -0,0 +1,40 @@ +package yqlib + +import ( + "testing" +) + +var sortKeysOperatorScenarios = []expressionScenario{ + { + description: "Sort keys of map", + document: `{c: frog, a: blah, b: bing}`, + expression: `sort_keys(.)`, + expected: []string{ + "D0, P[], (doc)::{a: blah, b: bing, c: frog}\n", + }, + }, + { + skipDoc: true, + document: `{c: frog}`, + expression: `sort_keys(.d)`, + expected: []string{ + "D0, P[], (doc)::{c: frog}\n", + }, + }, + { + description: "Sort keys recursively", + subdescription: "Note the array elements are left unsorted, but maps inside arrays are sorted", + document: `{bParent: {c: dog, array: [3,1,2]}, aParent: {z: donkey, x: [{c: yum, b: delish}, {b: ew, a: apple}]}}`, + expression: `sort_keys(..)`, + expected: []string{ + "D0, P[], (!!map)::{aParent: {x: [{b: delish, c: yum}, {a: apple, b: ew}], z: donkey}, bParent: {array: [3, 1, 2], c: dog}}\n", + }, + }, +} + +func TestSortKeysOperatorScenarios(t *testing.T) { + for _, tt := range sortKeysOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "sort-keys", sortKeysOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_sort_test.go b/external/yq/pkg/yqlib/operator_sort_test.go new file mode 100755 index 0000000..21e5c99 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_sort_test.go @@ -0,0 +1,106 @@ +package yqlib + +import "testing" + +var sortByOperatorScenarios = []expressionScenario{ + { + description: "Sort by string field", + document: "[{a: banana},{a: cat},{a: apple}]", + expression: `sort_by(.a)`, + expected: []string{ + "D0, P[], (!!seq)::[{a: apple}, {a: banana}, {a: cat}]\n", + }, + }, + { + description: "Sort descending by string field", + subdescription: "Use sort with reverse to sort in descending order.", + document: "[{a: banana},{a: cat},{a: apple}]", + expression: `sort_by(.a) | reverse`, + expected: []string{ + "D0, P[], (!!seq)::[{a: cat}, {a: banana}, {a: apple}]\n", + }, + }, + { + description: "Sort array in place", + document: "cool: [{a: banana},{a: cat},{a: apple}]", + expression: `.cool |= sort_by(.a)`, + expected: []string{ + "D0, P[], (doc)::cool: [{a: apple}, {a: banana}, {a: cat}]\n", + }, + }, + { + description: "Sort array of objects by key", + subdescription: "Note that you can give sort_by complex expressions, not just paths", + document: "cool: [{b: banana},{a: banana},{c: banana}]", + expression: `.cool |= sort_by(keys | .[0])`, + expected: []string{ + "D0, P[], (doc)::cool: [{a: banana}, {b: banana}, {c: banana}]\n", + }, + }, + { + description: "Sort is stable", + subdescription: "Note the order of the elements in unchanged when equal in sorting.", + document: "[{a: banana, b: 1}, {a: banana, b: 2}, {a: banana, b: 3}, {a: banana, b: 4}]", + expression: `sort_by(.a)`, + expected: []string{ + "D0, P[], (!!seq)::[{a: banana, b: 1}, {a: banana, b: 2}, {a: banana, b: 3}, {a: banana, b: 4}]\n", + }, + }, + { + description: "Sort by numeric field", + document: "[{a: 10},{a: 100},{a: 1}]", + expression: `sort_by(.a)`, + expected: []string{ + "D0, P[], (!!seq)::[{a: 1}, {a: 10}, {a: 100}]\n", + }, + }, + { + description: "Sort by custom date field", + document: `[{a: "12-Jun-2011"},{a: "23-Dec-2010"},{a: "10-Aug-2011"}]`, + expression: `with_dtf("02-Jan-2006"; sort_by(.a))`, + expected: []string{ + "D0, P[], (!!seq)::[{a: \"23-Dec-2010\"}, {a: \"12-Jun-2011\"}, {a: \"10-Aug-2011\"}]\n", + }, + }, + { + skipDoc: true, + document: "[{a: 1.1},{a: 1.001},{a: 1.01}]", + expression: `sort_by(.a)`, + expected: []string{ + "D0, P[], (!!seq)::[{a: 1.001}, {a: 1.01}, {a: 1.1}]\n", + }, + }, + { + description: "Sort, nulls come first", + document: "[8,3,null,6, true, false, cat]", + expression: `sort`, + expected: []string{ + "D0, P[], (!!seq)::[null, false, true, 3, 6, 8, cat]\n", + }, + }, + { + skipDoc: true, + description: "false before true", + document: "[{a: false, b: 1}, {a: true, b: 2}, {a: false, b: 3}]", + expression: `sort_by(.a)`, + expected: []string{ + "D0, P[], (!!seq)::[{a: false, b: 1}, {a: false, b: 3}, {a: true, b: 2}]\n", + }, + }, + { + skipDoc: true, + description: "head comment", + document: "# abc\n- def\n# ghi", + expression: `sort`, + expected: []string{ + "D0, P[], (!!seq)::# abc\n- def\n# ghi\n", + }, + }, +} + +func TestSortByOperatorScenarios(t *testing.T) { + for _, tt := range sortByOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "sort", sortByOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_split_document.go b/external/yq/pkg/yqlib/operator_split_document.go new file mode 100755 index 0000000..eba2496 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_split_document.go @@ -0,0 +1,14 @@ +package yqlib + +func splitDocumentOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- splitDocumentOperator") + + var index uint + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidate.Document = index + index = index + 1 + } + + return context, nil +} diff --git a/external/yq/pkg/yqlib/operator_split_document_test.go b/external/yq/pkg/yqlib/operator_split_document_test.go new file mode 100755 index 0000000..a2c4f90 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_split_document_test.go @@ -0,0 +1,32 @@ +package yqlib + +import ( + "testing" +) + +var splitDocOperatorScenarios = []expressionScenario{ + { + description: "Split empty", + document: ``, + expression: `split_doc`, + expected: []string{ + "D0, P[], (!!null)::\n", + }, + }, + { + description: "Split array", + document: `[{a: cat}, {b: dog}]`, + expression: `.[] | split_doc`, + expected: []string{ + "D0, P[0], (!!map)::{a: cat}\n", + "D1, P[1], (!!map)::{b: dog}\n", + }, + }, +} + +func TestSplitDocOperatorScenarios(t *testing.T) { + for _, tt := range splitDocOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "split-into-documents", splitDocOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_strings.go b/external/yq/pkg/yqlib/operator_strings.go new file mode 100755 index 0000000..0ccfbfe --- /dev/null +++ b/external/yq/pkg/yqlib/operator_strings.go @@ -0,0 +1,444 @@ +package yqlib + +import ( + "container/list" + "fmt" + "regexp" + "strings" + + "gopkg.in/yaml.v3" +) + +type changeCasePrefs struct { + ToUpperCase bool +} + +func trimSpaceOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + results := list.New() + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + node := unwrapDoc(candidate.Node) + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("cannot trim %v, can only operate on strings. ", node.Tag) + } + + newStringNode := &yaml.Node{Kind: yaml.ScalarNode, Tag: node.Tag, Style: node.Style} + newStringNode.Value = strings.TrimSpace(node.Value) + results.PushBack(candidate.CreateReplacement(newStringNode)) + + } + + return context.ChildContext(results), nil +} + +func changeCaseOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + results := list.New() + prefs := expressionNode.Operation.Preferences.(changeCasePrefs) + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + + node := unwrapDoc(candidate.Node) + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("cannot change case with %v, can only operate on strings. ", node.Tag) + } + + newStringNode := &yaml.Node{Kind: yaml.ScalarNode, Tag: node.Tag, Style: node.Style} + if prefs.ToUpperCase { + newStringNode.Value = strings.ToUpper(node.Value) + } else { + newStringNode.Value = strings.ToLower(node.Value) + } + results.PushBack(candidate.CreateReplacement(newStringNode)) + + } + + return context.ChildContext(results), nil + +} + +func getSubstituteParameters(d *dataTreeNavigator, block *ExpressionNode, context Context) (string, string, error) { + regEx := "" + replacementText := "" + + regExNodes, err := d.GetMatchingNodes(context.ReadOnlyClone(), block.LHS) + if err != nil { + return "", "", err + } + if regExNodes.MatchingNodes.Front() != nil { + regEx = regExNodes.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + + log.Debug("regEx %v", regEx) + + replacementNodes, err := d.GetMatchingNodes(context, block.RHS) + if err != nil { + return "", "", err + } + if replacementNodes.MatchingNodes.Front() != nil { + replacementText = replacementNodes.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + + return regEx, replacementText, nil +} + +func substitute(original string, regex *regexp.Regexp, replacement string) *yaml.Node { + replacedString := regex.ReplaceAllString(original, replacement) + return &yaml.Node{Kind: yaml.ScalarNode, Value: replacedString, Tag: "!!str"} +} + +func substituteStringOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + //rhs block operator + //lhs of block = regex + //rhs of block = replacement expression + block := expressionNode.RHS + + regExStr, replacementText, err := getSubstituteParameters(d, block, context) + + if err != nil { + return Context{}, err + } + + regEx, err := regexp.Compile(regExStr) + if err != nil { + return Context{}, err + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("cannot substitute with %v, can only substitute strings. Hint: Most often you'll want to use '|=' over '=' for this operation", node.Tag) + } + + targetNode := substitute(node.Value, regEx, replacementText) + result := candidate.CreateReplacement(targetNode) + results.PushBack(result) + } + + return context.ChildContext(results), nil + +} + +func addMatch(original []*yaml.Node, match string, offset int, name string) []*yaml.Node { + + newContent := append(original, + createScalarNode("string", "string")) + + if offset < 0 { + // offset of -1 means there was no match, force a null value like jq + newContent = append(newContent, + createScalarNode(nil, "null"), + ) + } else { + newContent = append(newContent, + createScalarNode(match, match), + ) + } + + newContent = append(newContent, + createScalarNode("offset", "offset"), + createScalarNode(offset, fmt.Sprintf("%v", offset)), + createScalarNode("length", "length"), + createScalarNode(len(match), fmt.Sprintf("%v", len(match)))) + + if name != "" { + newContent = append(newContent, + createScalarNode("name", "name"), + createScalarNode(name, name), + ) + } + return newContent +} + +type matchPreferences struct { + Global bool +} + +func getMatches(matchPrefs matchPreferences, regEx *regexp.Regexp, value string) ([][]string, [][]int) { + var allMatches [][]string + var allIndices [][]int + + if matchPrefs.Global { + allMatches = regEx.FindAllStringSubmatch(value, -1) + allIndices = regEx.FindAllStringSubmatchIndex(value, -1) + } else { + allMatches = [][]string{regEx.FindStringSubmatch(value)} + allIndices = [][]int{regEx.FindStringSubmatchIndex(value)} + } + + log.Debug("allMatches, %v", allMatches) + return allMatches, allIndices +} + +func match(matchPrefs matchPreferences, regEx *regexp.Regexp, candidate *CandidateNode, value string, results *list.List) { + subNames := regEx.SubexpNames() + allMatches, allIndices := getMatches(matchPrefs, regEx, value) + + // if all matches just has an empty array in it, + // then nothing matched + if len(allMatches) > 0 && len(allMatches[0]) == 0 { + return + } + + for i, matches := range allMatches { + capturesListNode := &yaml.Node{Kind: yaml.SequenceNode} + match, submatches := matches[0], matches[1:] + for j, submatch := range submatches { + captureNode := &yaml.Node{Kind: yaml.MappingNode} + captureNode.Content = addMatch(captureNode.Content, submatch, allIndices[i][2+j*2], subNames[j+1]) + capturesListNode.Content = append(capturesListNode.Content, captureNode) + } + + node := &yaml.Node{Kind: yaml.MappingNode} + node.Content = addMatch(node.Content, match, allIndices[i][0], "") + node.Content = append(node.Content, + createScalarNode("captures", "captures"), + capturesListNode, + ) + results.PushBack(candidate.CreateReplacement(node)) + + } + +} + +func capture(matchPrefs matchPreferences, regEx *regexp.Regexp, candidate *CandidateNode, value string, results *list.List) { + subNames := regEx.SubexpNames() + allMatches, allIndices := getMatches(matchPrefs, regEx, value) + + // if all matches just has an empty array in it, + // then nothing matched + if len(allMatches) > 0 && len(allMatches[0]) == 0 { + return + } + + for i, matches := range allMatches { + capturesNode := &yaml.Node{Kind: yaml.MappingNode} + + _, submatches := matches[0], matches[1:] + for j, submatch := range submatches { + capturesNode.Content = append(capturesNode.Content, + createScalarNode(subNames[j+1], subNames[j+1])) + + offset := allIndices[i][2+j*2] + // offset of -1 means there was no match, force a null value like jq + if offset < 0 { + capturesNode.Content = append(capturesNode.Content, + createScalarNode(nil, "null"), + ) + } else { + capturesNode.Content = append(capturesNode.Content, + createScalarNode(submatch, submatch), + ) + } + } + + results.PushBack(candidate.CreateReplacement(capturesNode)) + + } + +} + +func extractMatchArguments(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (*regexp.Regexp, matchPreferences, error) { + regExExpNode := expressionNode.RHS + + matchPrefs := matchPreferences{} + + // we got given parameters e.g. match(exp; params) + if expressionNode.RHS.Operation.OperationType == blockOpType { + block := expressionNode.RHS + regExExpNode = block.LHS + replacementNodes, err := d.GetMatchingNodes(context, block.RHS) + if err != nil { + return nil, matchPrefs, err + } + paramText := "" + if replacementNodes.MatchingNodes.Front() != nil { + paramText = replacementNodes.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + if strings.Contains(paramText, "g") { + paramText = strings.ReplaceAll(paramText, "g", "") + matchPrefs.Global = true + } + if strings.Contains(paramText, "i") { + return nil, matchPrefs, fmt.Errorf(`'i' is not a valid option for match. To ignore case, use an expression like match("(?i)cat")`) + } + if len(paramText) > 0 { + return nil, matchPrefs, fmt.Errorf(`Unrecognised match params '%v', please see docs at https://mikefarah.gitbook.io/yq/operators/string-operators`, paramText) + } + } + + regExNodes, err := d.GetMatchingNodes(context.ReadOnlyClone(), regExExpNode) + if err != nil { + return nil, matchPrefs, err + } + log.Debug(NodesToString(regExNodes.MatchingNodes)) + regExStr := "" + if regExNodes.MatchingNodes.Front() != nil { + regExStr = regExNodes.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + log.Debug("regEx %v", regExStr) + regEx, err := regexp.Compile(regExStr) + return regEx, matchPrefs, err +} + +func matchOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + regEx, matchPrefs, err := extractMatchArguments(d, context, expressionNode) + if err != nil { + return Context{}, err + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("cannot match with %v, can only match strings. Hint: Most often you'll want to use '|=' over '=' for this operation", node.Tag) + } + + match(matchPrefs, regEx, candidate, node.Value, results) + } + + return context.ChildContext(results), nil +} + +func captureOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + regEx, matchPrefs, err := extractMatchArguments(d, context, expressionNode) + if err != nil { + return Context{}, err + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("cannot match with %v, can only match strings. Hint: Most often you'll want to use '|=' over '=' for this operation", node.Tag) + } + capture(matchPrefs, regEx, candidate, node.Value, results) + + } + + return context.ChildContext(results), nil +} + +func testOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + regEx, _, err := extractMatchArguments(d, context, expressionNode) + if err != nil { + return Context{}, err + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("cannot match with %v, can only match strings. Hint: Most often you'll want to use '|=' over '=' for this operation", node.Tag) + } + matches := regEx.FindStringSubmatch(node.Value) + results.PushBack(createBooleanCandidate(candidate, len(matches) > 0)) + + } + + return context.ChildContext(results), nil +} + +func joinStringOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- joinStringOperator") + joinStr := "" + + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + if rhs.MatchingNodes.Front() != nil { + joinStr = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + if node.Kind != yaml.SequenceNode { + return Context{}, fmt.Errorf("cannot join with %v, can only join arrays of scalars", node.Tag) + } + targetNode := join(node.Content, joinStr) + result := candidate.CreateReplacement(targetNode) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} + +func join(content []*yaml.Node, joinStr string) *yaml.Node { + var stringsToJoin []string + for _, node := range content { + str := node.Value + if node.Tag == "!!null" { + str = "" + } + stringsToJoin = append(stringsToJoin, str) + } + + return &yaml.Node{Kind: yaml.ScalarNode, Value: strings.Join(stringsToJoin, joinStr), Tag: "!!str"} +} + +func splitStringOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- splitStringOperator") + splitStr := "" + + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + if rhs.MatchingNodes.Front() != nil { + splitStr = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := unwrapDoc(candidate.Node) + if node.Tag == "!!null" { + continue + } + + if guessTagFromCustomType(node) != "!!str" { + return Context{}, fmt.Errorf("Cannot split %v, can only split strings", node.Tag) + } + targetNode := split(node.Value, splitStr) + result := candidate.CreateReplacement(targetNode) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} + +func split(value string, spltStr string) *yaml.Node { + var contents []*yaml.Node + + if value != "" { + var newStrings = strings.Split(value, spltStr) + contents = make([]*yaml.Node, len(newStrings)) + + for index, str := range newStrings { + contents[index] = &yaml.Node{Kind: yaml.ScalarNode, Tag: "!!str", Value: str} + } + } + + return &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq", Content: contents} +} diff --git a/external/yq/pkg/yqlib/operator_strings_test.go b/external/yq/pkg/yqlib/operator_strings_test.go new file mode 100755 index 0000000..ee97ede --- /dev/null +++ b/external/yq/pkg/yqlib/operator_strings_test.go @@ -0,0 +1,277 @@ +package yqlib + +import ( + "testing" +) + +var stringsOperatorScenarios = []expressionScenario{ + { + description: "To up (upper) case", + subdescription: "Works with unicode characters", + document: `água`, + expression: "upcase", + expected: []string{ + "D0, P[], (!!str)::ÁGUA\n", + }, + }, + { + skipDoc: true, + document: `!camel água`, + expression: "upcase", + expected: []string{ + "D0, P[], (!camel)::ÁGUA\n", + }, + }, + { + description: "To down (lower) case", + subdescription: "Works with unicode characters", + document: `ÁgUA`, + expression: "downcase", + expected: []string{ + "D0, P[], (!!str)::água\n", + }, + }, + { + skipDoc: true, + document: `!camel ÁgUA`, + expression: "downcase", + expected: []string{ + "D0, P[], (!camel)::água\n", + }, + }, + { + description: "Join strings", + document: `[cat, meow, 1, null, true]`, + expression: `join("; ")`, + expected: []string{ + "D0, P[], (!!str)::cat; meow; 1; ; true\n", + }, + }, + { + description: "Trim strings", + document: `[" cat", "dog ", " cow cow ", horse]`, + expression: `.[] | trim`, + expected: []string{ + "D0, P[0], (!!str)::cat\n", + "D0, P[1], (!!str)::dog\n", + "D0, P[2], (!!str)::cow cow\n", + "D0, P[3], (!!str)::horse\n", + }, + }, + { + skipDoc: true, + document: `[!horse cat, !goat meow, !frog 1, null, true]`, + expression: `join("; ")`, + expected: []string{ + "D0, P[], (!!str)::cat; meow; 1; ; true\n", + }, + }, + { + description: "Match string", + document: `foo bar foo`, + expression: `match("foo")`, + expected: []string{ + "D0, P[], ()::string: foo\noffset: 0\nlength: 3\ncaptures: []\n", + }, + }, + { + skipDoc: true, + document: `!horse foo bar foo`, + expression: `match("foo")`, + expected: []string{ + "D0, P[], ()::string: foo\noffset: 0\nlength: 3\ncaptures: []\n", + }, + }, + { + description: "Match string, case insensitive", + document: `foo bar FOO`, + expression: `[match("(?i)foo"; "g")]`, + expected: []string{ + "D0, P[], (!!seq)::- string: foo\n offset: 0\n length: 3\n captures: []\n- string: FOO\n offset: 8\n length: 3\n captures: []\n", + }, + }, + { + description: "Match with global capture group", + document: `abc abc`, + expression: `[match("(ab)(c)"; "g")]`, + expected: []string{ + "D0, P[], (!!seq)::- string: abc\n offset: 0\n length: 3\n captures:\n - string: ab\n offset: 0\n length: 2\n - string: c\n offset: 2\n length: 1\n- string: abc\n offset: 4\n length: 3\n captures:\n - string: ab\n offset: 4\n length: 2\n - string: c\n offset: 6\n length: 1\n", + }, + }, + { + description: "Match with named capture groups", + document: `foo bar foo foo foo`, + expression: `[match("foo (?Pbar)? foo"; "g")]`, + expected: []string{ + "D0, P[], (!!seq)::- string: foo bar foo\n offset: 0\n length: 11\n captures:\n - string: bar\n offset: 4\n length: 3\n name: bar123\n- string: foo foo\n offset: 12\n length: 8\n captures:\n - string: null\n offset: -1\n length: 0\n name: bar123\n", + }, + }, + { + description: "Capture named groups into a map", + document: `xyzzy-14`, + expression: `capture("(?P[a-z]+)-(?P[0-9]+)")`, + expected: []string{ + "D0, P[], ()::a: xyzzy\nn: \"14\"\n", + }, + }, + { + skipDoc: true, + document: `!horse xyzzy-14`, + expression: `capture("(?P[a-z]+)-(?P[0-9]+)")`, + expected: []string{ + "D0, P[], ()::a: xyzzy\nn: \"14\"\n", + }, + }, + { + skipDoc: true, + description: "Capture named groups into a map, with null", + document: `xyzzy-14`, + expression: `capture("(?P[a-z]+)-(?P[0-9]+)(?Pbar)?")`, + expected: []string{ + "D0, P[], ()::a: xyzzy\nn: \"14\"\nbar123: null\n", + }, + }, + { + description: "Match without global flag", + document: `cat cat`, + expression: `match("cat")`, + expected: []string{ + "D0, P[], ()::string: cat\noffset: 0\nlength: 3\ncaptures: []\n", + }, + }, + { + description: "Match with global flag", + document: `cat cat`, + expression: `[match("cat"; "g")]`, + expected: []string{ + "D0, P[], (!!seq)::- string: cat\n offset: 0\n length: 3\n captures: []\n- string: cat\n offset: 4\n length: 3\n captures: []\n", + }, + }, + { + skipDoc: true, + document: `!horse cat cat`, + expression: `[match("cat"; "g")]`, + expected: []string{ + "D0, P[], (!!seq)::- string: cat\n offset: 0\n length: 3\n captures: []\n- string: cat\n offset: 4\n length: 3\n captures: []\n", + }, + }, + { + skipDoc: true, + description: "No match", + document: `dog`, + expression: `match("cat"; "g")`, + expected: []string{}, + }, + { + skipDoc: true, + description: "No match", + expression: `"dog" | match("cat", "g")`, + expected: []string{}, + }, + { + skipDoc: true, + description: "No match", + expression: `"dog" | match("cat")`, + expected: []string{}, + }, + { + description: "Test using regex", + subdescription: "Like jq's equivalent, this works like match but only returns true/false instead of full match details", + document: `["cat", "dog"]`, + expression: `.[] | test("at")`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + "D0, P[1], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `[!horse "cat", !cat "dog"]`, + expression: `.[] | test("at")`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + "D0, P[1], (!!bool)::false\n", + }, + }, + { + skipDoc: true, + document: `["cat*", "cat*", "cat"]`, + expression: `.[] | test("cat\*")`, + expected: []string{ + "D0, P[0], (!!bool)::true\n", + "D0, P[1], (!!bool)::true\n", + "D0, P[2], (!!bool)::false\n", + }, + }, + { + description: "Substitute / Replace string", + subdescription: "This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)\nNote the use of `|=` to run in context of the current string value.", + document: `a: dogs are great`, + expression: `.a |= sub("dogs", "cats")`, + expected: []string{ + "D0, P[], (doc)::a: cats are great\n", + }, + }, + { + description: "Substitute / Replace string with regex", + subdescription: "This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)\nNote the use of `|=` to run in context of the current string value.", + document: "a: cat\nb: heat", + expression: `.[] |= sub("(a)", "${1}r")`, + expected: []string{ + "D0, P[], (doc)::a: cart\nb: heart\n", + }, + }, + { + description: "Custom types: that are really strings", + subdescription: "When custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse cat\nb: !goat heat", + expression: `.[] |= sub("(a)", "${1}r")`, + expected: []string{ + "D0, P[], (doc)::a: !horse cart\nb: !goat heart\n", + }, + }, + { + description: "Split strings", + document: `"cat; meow; 1; ; true"`, + expression: `split("; ")`, + expected: []string{ + "D0, P[], (!!seq)::- cat\n- meow\n- \"1\"\n- \"\"\n- \"true\"\n", + }, + }, + { + description: "Split strings one match", + document: `"word"`, + expression: `split("; ")`, + expected: []string{ + "D0, P[], (!!seq)::- word\n", + }, + }, + { + skipDoc: true, + document: `!horse "word"`, + expression: `split("; ")`, + expected: []string{ + "D0, P[], (!!seq)::- word\n", + }, + }, + { + skipDoc: true, + document: `""`, + expression: `split("; ")`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", // dont actually want this, just not to error + }, + }, + { + skipDoc: true, + expression: `split("; ")`, + expected: []string{}, + }, +} + +func TestStringsOperatorScenarios(t *testing.T) { + for _, tt := range stringsOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "string-operators", stringsOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_style.go b/external/yq/pkg/yqlib/operator_style.go new file mode 100755 index 0000000..ed7f654 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_style.go @@ -0,0 +1,108 @@ +package yqlib + +import ( + "container/list" + "fmt" + + yaml "gopkg.in/yaml.v3" +) + +func parseStyle(customStyle string) (yaml.Style, error) { + if customStyle == "tagged" { + return yaml.TaggedStyle, nil + } else if customStyle == "double" { + return yaml.DoubleQuotedStyle, nil + } else if customStyle == "single" { + return yaml.SingleQuotedStyle, nil + } else if customStyle == "literal" { + return yaml.LiteralStyle, nil + } else if customStyle == "folded" { + return yaml.FoldedStyle, nil + } else if customStyle == "flow" { + return yaml.FlowStyle, nil + } else if customStyle != "" { + return 0, fmt.Errorf("Unknown style %v", customStyle) + } + return 0, nil +} + +func assignStyleOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("AssignStyleOperator: %v") + var style yaml.Style + if !expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + style, err = parseStyle(rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value) + if err != nil { + return Context{}, err + } + } + } + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + + if err != nil { + return Context{}, err + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + log.Debugf("Setting style of : %v", candidate.GetKey()) + if expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + style, err = parseStyle(rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value) + if err != nil { + return Context{}, err + } + } + } + + candidate.Node.Style = style + } + + return context, nil +} + +func getStyleOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetStyleOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + var style string + switch candidate.Node.Style { + case yaml.TaggedStyle: + style = "tagged" + case yaml.DoubleQuotedStyle: + style = "double" + case yaml.SingleQuotedStyle: + style = "single" + case yaml.LiteralStyle: + style = "literal" + case yaml.FoldedStyle: + style = "folded" + case yaml.FlowStyle: + style = "flow" + case 0: + style = "" + default: + style = "" + } + node := &yaml.Node{Kind: yaml.ScalarNode, Value: style, Tag: "!!str"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_style_test.go b/external/yq/pkg/yqlib/operator_style_test.go new file mode 100755 index 0000000..ce263a7 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_style_test.go @@ -0,0 +1,156 @@ +package yqlib + +import ( + "testing" +) + +var styleOperatorScenarios = []expressionScenario{ + { + description: "Update and set style of a particular node (simple)", + document: `a: {b: thing, c: something}`, + expression: `.a.b = "new" | .a.b style="double"`, + expected: []string{ + "D0, P[], (doc)::a: {b: \"new\", c: something}\n", + }, + }, + { + description: "Update and set style of a particular node using path variables", + document: `a: {b: thing, c: something}`, + expression: `with(.a.b ; . = "new" | . style="double")`, + expected: []string{ + "D0, P[], (doc)::a: {b: \"new\", c: something}\n", + }, + }, + { + description: "Set tagged style", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `.. style="tagged"`, + expected: []string{ + "D0, P[], (!!map)::!!map\na: !!str cat\nb: !!int 5\nc: !!float 3.2\ne: !!bool true\n", + }, + }, + { + description: "Set double quote style", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `.. style="double"`, + expected: []string{ + "D0, P[], (!!map)::a: \"cat\"\nb: \"5\"\nc: \"3.2\"\ne: \"true\"\n", + }, + }, + { + description: "Set double quote style on map keys too", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `... style="double"`, + expected: []string{ + "D0, P[], (!!map)::\"a\": \"cat\"\n\"b\": \"5\"\n\"c\": \"3.2\"\n\"e\": \"true\"\n", + }, + }, + { + skipDoc: true, + document: "bing: &foo frog\na:\n c: cat\n <<: [*foo]", + expression: `(... | select(tag=="!!str")) style="single"`, + expected: []string{ + "D0, P[], (!!map)::'bing': &foo 'frog'\n'a':\n 'c': 'cat'\n !!merge <<: [*foo]\n", + }, + }, + { + description: "Set single quote style", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `.. style="single"`, + expected: []string{ + "D0, P[], (!!map)::a: 'cat'\nb: '5'\nc: '3.2'\ne: 'true'\n", + }, + }, + { + description: "Set literal quote style", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `.. style="literal"`, + expected: []string{ + `D0, P[], (!!map)::a: |- + cat +b: |- + 5 +c: |- + 3.2 +e: |- + true +`, + }, + }, + { + description: "Set folded quote style", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `.. style="folded"`, + expected: []string{ + `D0, P[], (!!map)::a: >- + cat +b: >- + 5 +c: >- + 3.2 +e: >- + true +`, + }, + }, + { + description: "Set flow quote style", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `.. style="flow"`, + expected: []string{ + "D0, P[], (!!map)::{a: cat, b: 5, c: 3.2, e: true}\n", + }, + }, + { + description: "Reset style - or pretty print", + subdescription: "Set empty (default) quote style, note the usage of `...` to match keys too. Note that there is a `--prettyPrint/-P` short flag for this.", + document: `{a: cat, "b": 5, 'c': 3.2, "e": true}`, + expression: `... style=""`, + expected: []string{ + "D0, P[], (!!map)::a: cat\nb: 5\nc: 3.2\ne: true\n", + }, + }, + { + description: "Set style relatively with assign-update", + document: `{a: single, b: double}`, + expression: `.[] style |= .`, + expected: []string{ + "D0, P[], (doc)::{a: 'single', b: \"double\"}\n", + }, + }, + { + skipDoc: true, + document: `{a: cat, b: double}`, + expression: `.a style=.b`, + expected: []string{ + "D0, P[], (doc)::{a: \"cat\", b: double}\n", + }, + }, + { + description: "Read style", + document: `{a: "cat", b: 'thing'}`, + dontFormatInputForDoc: true, + expression: `.. | style`, + expected: []string{ + "D0, P[], (!!str)::flow\n", + "D0, P[a], (!!str)::double\n", + "D0, P[b], (!!str)::single\n", + }, + }, + { + skipDoc: true, + document: `a: cat`, + expression: `.. | style`, + expected: []string{ + "D0, P[], (!!str)::\n", + "D0, P[a], (!!str)::\n", + }, + }, +} + +func TestStyleOperatorScenarios(t *testing.T) { + for _, tt := range styleOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "style", styleOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_subtract.go b/external/yq/pkg/yqlib/operator_subtract.go new file mode 100755 index 0000000..90867d4 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_subtract.go @@ -0,0 +1,162 @@ +package yqlib + +import ( + "fmt" + "strconv" + "strings" + "time" + + "gopkg.in/yaml.v3" +) + +func createSubtractOp(lhs *ExpressionNode, rhs *ExpressionNode) *ExpressionNode { + return &ExpressionNode{Operation: &Operation{OperationType: subtractOpType}, + LHS: lhs, + RHS: rhs} +} + +func subtractAssignOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + return compoundAssignFunction(d, context, expressionNode, createSubtractOp) +} + +func subtractOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("Subtract operator") + + return crossFunction(d, context.ReadOnlyClone(), expressionNode, subtract, false) +} + +func subtractArray(lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + newLHSArray := make([]*yaml.Node, 0) + + for lindex := 0; lindex < len(lhs.Node.Content); lindex = lindex + 1 { + shouldInclude := true + for rindex := 0; rindex < len(rhs.Node.Content) && shouldInclude; rindex = rindex + 1 { + if recursiveNodeEqual(lhs.Node.Content[lindex], rhs.Node.Content[rindex]) { + shouldInclude = false + } + } + if shouldInclude { + newLHSArray = append(newLHSArray, lhs.Node.Content[lindex]) + } + } + lhs.Node.Content = newLHSArray + return lhs, nil +} + +func subtract(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { + lhs.Node = unwrapDoc(lhs.Node) + rhs.Node = unwrapDoc(rhs.Node) + + lhsNode := lhs.Node + + if lhsNode.Tag == "!!null" { + return lhs.CreateReplacement(rhs.Node), nil + } + + target := lhs.CreateReplacement(&yaml.Node{}) + + switch lhsNode.Kind { + case yaml.MappingNode: + return nil, fmt.Errorf("maps not yet supported for subtraction") + case yaml.SequenceNode: + if rhs.Node.Kind != yaml.SequenceNode { + return nil, fmt.Errorf("%v (%v) cannot be subtracted from %v", rhs.Node.Tag, rhs.Path, lhsNode.Tag) + } + return subtractArray(lhs, rhs) + case yaml.ScalarNode: + if rhs.Node.Kind != yaml.ScalarNode { + return nil, fmt.Errorf("%v (%v) cannot be subtracted from %v", rhs.Node.Tag, rhs.Path, lhsNode.Tag) + } + target.Node.Kind = yaml.ScalarNode + target.Node.Style = lhsNode.Style + if err := subtractScalars(context, target, lhsNode, rhs.Node); err != nil { + return nil, err + } + } + + return target, nil +} + +func subtractScalars(context Context, target *CandidateNode, lhs *yaml.Node, rhs *yaml.Node) error { + lhsTag := lhs.Tag + rhsTag := rhs.Tag + lhsIsCustom := false + if !strings.HasPrefix(lhsTag, "!!") { + // custom tag - we have to have a guess + lhsTag = guessTagFromCustomType(lhs) + lhsIsCustom = true + } + + if !strings.HasPrefix(rhsTag, "!!") { + // custom tag - we have to have a guess + rhsTag = guessTagFromCustomType(rhs) + } + + isDateTime := lhsTag == "!!timestamp" + // if the lhs is a string, it might be a timestamp in a custom format. + if lhsTag == "!!str" && context.GetDateTimeLayout() != time.RFC3339 { + _, err := parseDateTime(context.GetDateTimeLayout(), lhs.Value) + isDateTime = err == nil + } + + if isDateTime { + return subtractDateTime(context.GetDateTimeLayout(), target, lhs, rhs) + } else if lhsTag == "!!str" { + return fmt.Errorf("strings cannot be subtracted") + } else if lhsTag == "!!int" && rhsTag == "!!int" { + format, lhsNum, err := parseInt64(lhs.Value) + if err != nil { + return err + } + _, rhsNum, err := parseInt64(rhs.Value) + if err != nil { + return err + } + result := lhsNum - rhsNum + target.Node.Tag = lhs.Tag + target.Node.Value = fmt.Sprintf(format, result) + } else if (lhsTag == "!!int" || lhsTag == "!!float") && (rhsTag == "!!int" || rhsTag == "!!float") { + lhsNum, err := strconv.ParseFloat(lhs.Value, 64) + if err != nil { + return err + } + rhsNum, err := strconv.ParseFloat(rhs.Value, 64) + if err != nil { + return err + } + result := lhsNum - rhsNum + if lhsIsCustom { + target.Node.Tag = lhs.Tag + } else { + target.Node.Tag = "!!float" + } + target.Node.Value = fmt.Sprintf("%v", result) + } else { + return fmt.Errorf("%v cannot be added to %v", lhs.Tag, rhs.Tag) + } + + return nil +} + +func subtractDateTime(layout string, target *CandidateNode, lhs *yaml.Node, rhs *yaml.Node) error { + var durationStr string + if strings.HasPrefix(rhs.Value, "-") { + durationStr = rhs.Value[1:] + } else { + durationStr = "-" + rhs.Value + } + duration, err := time.ParseDuration(durationStr) + + if err != nil { + return fmt.Errorf("unable to parse duration [%v]: %w", rhs.Value, err) + } + + currentTime, err := parseDateTime(layout, lhs.Value) + if err != nil { + return err + } + + newTime := currentTime.Add(duration) + target.Node.Value = newTime.Format(layout) + return nil +} diff --git a/external/yq/pkg/yqlib/operator_subtract_test.go b/external/yq/pkg/yqlib/operator_subtract_test.go new file mode 100755 index 0000000..aaaa91f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_subtract_test.go @@ -0,0 +1,168 @@ +package yqlib + +import ( + "testing" +) + +var subtractOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `{}`, + expression: "(.a - .b) as $x", + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + description: "Array subtraction", + expression: `[1,2] - [2,3]`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n", + }, + }, + { + skipDoc: true, + expression: `[2,1,2,2] - [2,3]`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n", + }, + }, + { + description: "Array subtraction with nested array", + expression: `[[1], 1, 2] - [[1], 3]`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n- 2\n", + }, + }, + { + skipDoc: true, + expression: `[[1], 1, [[[2]]]] - [[1], [[[3]]]]`, + expected: []string{ + "D0, P[], (!!seq)::- 1\n- - - - 2\n", + }, + }, + { + description: "Array subtraction with nested object", + subdescription: `Note that order of the keys does not matter`, + document: `[{a: b, c: d}, {a: b}]`, + expression: `. - [{"c": "d", "a": "b"}]`, + expected: []string{ + "D0, P[], (!!seq)::[{a: b}]\n", + }, + }, + { + skipDoc: true, + document: `[{a: [1], c: d}, {a: [2], c: d}, {a: b}]`, + expression: `. - [{"c": "d", "a": [1]}]`, + expected: []string{ + "D0, P[], (!!seq)::[{a: [2], c: d}, {a: b}]\n", + }, + }, + { + description: "Number subtraction - float", + subdescription: "If the lhs or rhs are floats then the expression will be calculated with floats.", + document: `{a: 3, b: 4.5}`, + expression: `.a = .a - .b`, + expected: []string{ + "D0, P[], (doc)::{a: -1.5, b: 4.5}\n", + }, + }, + { + description: "Number subtraction - float", + subdescription: "If the lhs or rhs are floats then the expression will be calculated with floats.", + document: `{a: 3, b: 4.5}`, + expression: `.a = .a - .b`, + expected: []string{ + "D0, P[], (doc)::{a: -1.5, b: 4.5}\n", + }, + }, + { + description: "Number subtraction - int", + subdescription: "If both the lhs and rhs are ints then the expression will be calculated with ints.", + document: `{a: 3, b: 4}`, + expression: `.a = .a - .b`, + expected: []string{ + "D0, P[], (doc)::{a: -1, b: 4}\n", + }, + }, + { + description: "Decrement numbers", + document: `{a: 3, b: 5}`, + expression: `.[] -= 1`, + expected: []string{ + "D0, P[], (doc)::{a: 2, b: 4}\n", + }, + }, + { + description: "Date subtraction", + subdescription: "You can subtract durations from dates. Assumes RFC3339 date time format, see [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: `a: 2021-01-01T03:10:00Z`, + expression: `.a -= "3h10m"`, + expected: []string{ + "D0, P[], (doc)::a: 2021-01-01T00:00:00Z\n", + }, + }, + { + description: "Date subtraction - only date", + skipDoc: true, + document: `a: 2021-01-01`, + expression: `.a -= "24h"`, + expected: []string{ + "D0, P[], (doc)::a: 2020-12-31T00:00:00Z\n", + }, + }, + { + description: "Date subtraction - custom format", + subdescription: "Use with_dtf to specify your datetime format. See [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: `a: Saturday, 15-Dec-01 at 6:00AM GMT`, + expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a -= "3h1m")`, + expected: []string{ + "D0, P[], (doc)::a: Saturday, 15-Dec-01 at 2:59AM GMT\n", + }, + }, + { + skipDoc: true, + description: "Date subtraction - custom format", + subdescription: "You can subtract durations from dates. See [date-time operators](https://mikefarah.gitbook.io/yq/operators/date-time-operators) for more information.", + document: `a: !cat Saturday, 15-Dec-01 at 6:00AM GMT`, + expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a -= "3h1m")`, + expected: []string{ + "D0, P[], (doc)::a: !cat Saturday, 15-Dec-01 at 2:59AM GMT\n", + }, + }, + { + description: "Custom types: that are really numbers", + subdescription: "When custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse 2\nb: !goat 1", + expression: `.a -= .b`, + expected: []string{ + "D0, P[], (doc)::a: !horse 1\nb: !goat 1\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really floats", + subdescription: "When custom tags are encountered, yq will try to decode the underlying type.", + document: "a: !horse 2.5\nb: !goat 1.5", + expression: `.a - .b`, + expected: []string{ + "D0, P[a], (!horse)::1\n", + }, + }, + { + skipDoc: true, + description: "Custom types: that are really maps", + document: `[!horse {a: b, c: d}, !goat {a: b}]`, + expression: `. - [{"c": "d", "a": "b"}]`, + expected: []string{ + "D0, P[], (!!seq)::[!goat {a: b}]\n", + }, + }, +} + +func TestSubtractOperatorScenarios(t *testing.T) { + for _, tt := range subtractOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "subtract", subtractOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_tag.go b/external/yq/pkg/yqlib/operator_tag.go new file mode 100755 index 0000000..59b07d8 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_tag.go @@ -0,0 +1,63 @@ +package yqlib + +import ( + "container/list" + + yaml "gopkg.in/yaml.v3" +) + +func assignTagOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("AssignTagOperator: %v") + tag := "" + + if !expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + tag = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + + if err != nil { + return Context{}, err + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + log.Debugf("Setting tag of : %v", candidate.GetKey()) + if expressionNode.Operation.UpdateAssign { + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(candidate), expressionNode.RHS) + if err != nil { + return Context{}, err + } + + if rhs.MatchingNodes.Front() != nil { + tag = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + } + unwrapDoc(candidate.Node).Tag = tag + } + + return context, nil +} + +func getTagOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("GetTagOperator") + + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + node := &yaml.Node{Kind: yaml.ScalarNode, Value: unwrapDoc(candidate.Node).Tag, Tag: "!!str"} + result := candidate.CreateReplacement(node) + results.PushBack(result) + } + + return context.ChildContext(results), nil +} diff --git a/external/yq/pkg/yqlib/operator_tag_test.go b/external/yq/pkg/yqlib/operator_tag_test.go new file mode 100755 index 0000000..0466e5f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_tag_test.go @@ -0,0 +1,90 @@ +package yqlib + +import ( + "testing" +) + +var tagOperatorScenarios = []expressionScenario{ + { + description: "Get tag", + document: `{a: cat, b: 5, c: 3.2, e: true, f: []}`, + expression: `.. | tag`, + expected: []string{ + "D0, P[], (!!str)::!!map\n", + "D0, P[a], (!!str)::!!str\n", + "D0, P[b], (!!str)::!!int\n", + "D0, P[c], (!!str)::!!float\n", + "D0, P[e], (!!str)::!!bool\n", + "D0, P[f], (!!str)::!!seq\n", + }, + }, + { + description: "type is an alias for tag", + document: `{a: cat, b: 5, c: 3.2, e: true, f: []}`, + expression: `.. | type`, + expected: []string{ + "D0, P[], (!!str)::!!map\n", + "D0, P[a], (!!str)::!!str\n", + "D0, P[b], (!!str)::!!int\n", + "D0, P[c], (!!str)::!!float\n", + "D0, P[e], (!!str)::!!bool\n", + "D0, P[f], (!!str)::!!seq\n", + }, + }, + { + skipDoc: true, + document: `{a: cat, b: 5, c: 3.2, e: true, f: []}`, + expression: `tag`, + expected: []string{ + "D0, P[], (!!str)::!!map\n", + }, + }, + { + skipDoc: true, + document: `32`, + expression: `. tag= "!!str"`, + expected: []string{ + "D0, P[], (doc)::\"32\"\n", + }, + }, + { + description: "Set custom tag", + document: `{a: str}`, + expression: `.a tag = "!!mikefarah"`, + expected: []string{ + "D0, P[], (doc)::{a: !!mikefarah str}\n", + }, + }, + { + skipDoc: true, + description: "Set custom type", + document: `{a: str}`, + expression: `.a type = "!!mikefarah"`, + expected: []string{ + "D0, P[], (doc)::{a: !!mikefarah str}\n", + }, + }, + { + description: "Find numbers and convert them to strings", + document: `{a: cat, b: 5, c: 3.2, e: true}`, + expression: `(.. | select(tag == "!!int")) tag= "!!str"`, + expected: []string{ + "D0, P[], (!!map)::{a: cat, b: \"5\", c: 3.2, e: true}\n", + }, + }, + { + skipDoc: true, + document: `{a: "!!frog", b: "!!customTag"}`, + expression: `.[] tag |= .`, + expected: []string{ + "D0, P[], (doc)::{a: !!frog \"!!frog\", b: !!customTag \"!!customTag\"}\n", + }, + }, +} + +func TestTagOperatorScenarios(t *testing.T) { + for _, tt := range tagOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "tag", tagOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_traverse_path.go b/external/yq/pkg/yqlib/operator_traverse_path.go new file mode 100755 index 0000000..2a8bf27 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_traverse_path.go @@ -0,0 +1,331 @@ +package yqlib + +import ( + "container/list" + "fmt" + + "github.com/elliotchance/orderedmap" + yaml "gopkg.in/yaml.v3" +) + +type traversePreferences struct { + DontFollowAlias bool + IncludeMapKeys bool + DontAutoCreate bool // by default, we automatically create entries on the fly. + DontIncludeMapValues bool + OptionalTraverse bool // e.g. .adf? +} + +func splat(context Context, prefs traversePreferences) (Context, error) { + return traverseNodesWithArrayIndices(context, make([]*yaml.Node, 0), prefs) +} + +func traversePathOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- traversePathOperator") + var matches = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + newNodes, err := traverse(context, el.Value.(*CandidateNode), expressionNode.Operation) + if err != nil { + return Context{}, err + } + matches.PushBackList(newNodes) + } + + return context.ChildContext(matches), nil +} + +func traverse(context Context, matchingNode *CandidateNode, operation *Operation) (*list.List, error) { + log.Debug("Traversing %v", NodeToString(matchingNode)) + value := matchingNode.Node + + if value.Tag == "!!null" && operation.Value != "[]" { + log.Debugf("Guessing kind") + // we must have added this automatically, lets guess what it should be now + switch operation.Value.(type) { + case int, int64: + log.Debugf("probably an array") + value.Kind = yaml.SequenceNode + default: + log.Debugf("probably a map") + value.Kind = yaml.MappingNode + } + value.Tag = "" + } + + switch value.Kind { + case yaml.MappingNode: + log.Debug("its a map with %v entries", len(value.Content)/2) + return traverseMap(context, matchingNode, createStringScalarNode(operation.StringValue), operation.Preferences.(traversePreferences), false) + + case yaml.SequenceNode: + log.Debug("its a sequence of %v things!", len(value.Content)) + return traverseArray(matchingNode, operation, operation.Preferences.(traversePreferences)) + + case yaml.AliasNode: + log.Debug("its an alias!") + matchingNode.Node = matchingNode.Node.Alias + return traverse(context, matchingNode, operation) + case yaml.DocumentNode: + log.Debug("digging into doc node") + + return traverse(context, matchingNode.CreateChildInMap(nil, matchingNode.Node.Content[0]), operation) + default: + return list.New(), nil + } +} + +func traverseArrayOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + //lhs may update the variable context, we should pass that into the RHS + // BUT we still return the original context back (see jq) + // https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|... + + if expressionNode.RHS != nil && expressionNode.RHS.RHS != nil && expressionNode.RHS.RHS.Operation.OperationType == createMapOpType { + return sliceArrayOperator(d, context, expressionNode.RHS.RHS) + } + + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + + // rhs is a collect expression that will yield indexes to retrieve of the arrays + + rhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + prefs := traversePreferences{} + + if expressionNode.Operation.Preferences != nil { + prefs = expressionNode.Operation.Preferences.(traversePreferences) + } + var indicesToTraverse = rhs.MatchingNodes.Front().Value.(*CandidateNode).Node.Content + + //now we traverse the result of the lhs against the indices we found + result, err := traverseNodesWithArrayIndices(lhs, indicesToTraverse, prefs) + if err != nil { + return Context{}, err + } + return context.ChildContext(result.MatchingNodes), nil +} + +func traverseNodesWithArrayIndices(context Context, indicesToTraverse []*yaml.Node, prefs traversePreferences) (Context, error) { + var matchingNodeMap = list.New() + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + newNodes, err := traverseArrayIndices(context, candidate, indicesToTraverse, prefs) + if err != nil { + return Context{}, err + } + matchingNodeMap.PushBackList(newNodes) + } + + return context.ChildContext(matchingNodeMap), nil +} + +func traverseArrayIndices(context Context, matchingNode *CandidateNode, indicesToTraverse []*yaml.Node, prefs traversePreferences) (*list.List, error) { // call this if doc / alias like the other traverse + node := matchingNode.Node + if node.Tag == "!!null" { + log.Debugf("OperatorArrayTraverse got a null - turning it into an empty array") + // auto vivification + node.Tag = "" + node.Kind = yaml.SequenceNode + //check that the indices are numeric, if not, then we should create an object + if len(indicesToTraverse) != 0 && indicesToTraverse[0].Tag != "!!int" { + node.Kind = yaml.MappingNode + } + } + + if node.Kind == yaml.AliasNode { + matchingNode.Node = node.Alias + return traverseArrayIndices(context, matchingNode, indicesToTraverse, prefs) + } else if node.Kind == yaml.SequenceNode { + return traverseArrayWithIndices(matchingNode, indicesToTraverse, prefs) + } else if node.Kind == yaml.MappingNode { + return traverseMapWithIndices(context, matchingNode, indicesToTraverse, prefs) + } else if node.Kind == yaml.DocumentNode { + return traverseArrayIndices(context, matchingNode.CreateChildInMap(nil, matchingNode.Node.Content[0]), indicesToTraverse, prefs) + } + log.Debugf("OperatorArrayTraverse skipping %v as its a %v", matchingNode, node.Tag) + return list.New(), nil +} + +func traverseMapWithIndices(context Context, candidate *CandidateNode, indices []*yaml.Node, prefs traversePreferences) (*list.List, error) { + if len(indices) == 0 { + return traverseMap(context, candidate, createStringScalarNode(""), prefs, true) + } + + var matchingNodeMap = list.New() + + for _, indexNode := range indices { + log.Debug("traverseMapWithIndices: %v", indexNode.Value) + newNodes, err := traverseMap(context, candidate, indexNode, prefs, false) + if err != nil { + return nil, err + } + matchingNodeMap.PushBackList(newNodes) + } + + return matchingNodeMap, nil +} + +func traverseArrayWithIndices(candidate *CandidateNode, indices []*yaml.Node, prefs traversePreferences) (*list.List, error) { + log.Debug("traverseArrayWithIndices") + var newMatches = list.New() + node := unwrapDoc(candidate.Node) + if len(indices) == 0 { + log.Debug("splatting") + var index int + for index = 0; index < len(node.Content); index = index + 1 { + newMatches.PushBack(candidate.CreateChildInArray(index, node.Content[index])) + } + return newMatches, nil + + } + + for _, indexNode := range indices { + log.Debug("traverseArrayWithIndices: '%v'", indexNode.Value) + index, err := parseInt(indexNode.Value) + if err != nil && prefs.OptionalTraverse { + continue + } + if err != nil { + return nil, fmt.Errorf("cannot index array with '%v' (%w)", indexNode.Value, err) + } + indexToUse := index + contentLength := len(node.Content) + for contentLength <= index { + if contentLength == 0 { + // default to nice yaml formating + node.Style = 0 + } + + node.Content = append(node.Content, &yaml.Node{Tag: "!!null", Kind: yaml.ScalarNode, Value: "null"}) + contentLength = len(node.Content) + } + + if indexToUse < 0 { + indexToUse = contentLength + indexToUse + } + + if indexToUse < 0 { + return nil, fmt.Errorf("index [%v] out of range, array size is %v", index, contentLength) + } + + newMatches.PushBack(candidate.CreateChildInArray(index, node.Content[indexToUse])) + } + return newMatches, nil +} + +func keyMatches(key *yaml.Node, wantedKey string) bool { + return matchKey(key.Value, wantedKey) +} + +func traverseMap(context Context, matchingNode *CandidateNode, keyNode *yaml.Node, prefs traversePreferences, splat bool) (*list.List, error) { + var newMatches = orderedmap.NewOrderedMap() + err := doTraverseMap(newMatches, matchingNode, keyNode.Value, prefs, splat) + + if err != nil { + return nil, err + } + + if !prefs.DontAutoCreate && !context.DontAutoCreate && newMatches.Len() == 0 { + //no matches, create one automagically + valueNode := &yaml.Node{Tag: "!!null", Kind: yaml.ScalarNode, Value: "null"} + + node := matchingNode.Node + + if len(node.Content) == 0 { + node.Style = 0 + } + + node.Content = append(node.Content, keyNode, valueNode) + + if prefs.IncludeMapKeys { + log.Debug("including key") + candidateNode := matchingNode.CreateChildInMap(keyNode, keyNode) + candidateNode.IsMapKey = true + newMatches.Set(fmt.Sprintf("keyOf-%v", candidateNode.GetKey()), candidateNode) + } + if !prefs.DontIncludeMapValues { + log.Debug("including value") + candidateNode := matchingNode.CreateChildInMap(keyNode, valueNode) + newMatches.Set(candidateNode.GetKey(), candidateNode) + } + } + + results := list.New() + i := 0 + for el := newMatches.Front(); el != nil; el = el.Next() { + results.PushBack(el.Value) + i++ + } + return results, nil +} + +func doTraverseMap(newMatches *orderedmap.OrderedMap, candidate *CandidateNode, wantedKey string, prefs traversePreferences, splat bool) error { + // value.Content is a concatenated array of key, value, + // so keys are in the even indexes, values in odd. + // merge aliases are defined first, but we only want to traverse them + // if we don't find a match directly on this node first. + + node := candidate.Node + + var contents = node.Content + for index := 0; index < len(contents); index = index + 2 { + key := contents[index] + value := contents[index+1] + + log.Debug("checking %v (%v)", key.Value, key.Tag) + //skip the 'merge' tag, find a direct match first + if key.Tag == "!!merge" && !prefs.DontFollowAlias { + log.Debug("Merge anchor") + err := traverseMergeAnchor(newMatches, candidate, value, wantedKey, prefs, splat) + if err != nil { + return err + } + } else if splat || keyMatches(key, wantedKey) { + log.Debug("MATCHED") + if prefs.IncludeMapKeys { + log.Debug("including key") + candidateNode := candidate.CreateChildInMap(key, key) + candidateNode.IsMapKey = true + newMatches.Set(fmt.Sprintf("keyOf-%v", candidateNode.GetKey()), candidateNode) + } + if !prefs.DontIncludeMapValues { + log.Debug("including value") + candidateNode := candidate.CreateChildInMap(key, value) + newMatches.Set(candidateNode.GetKey(), candidateNode) + } + } + } + + return nil +} + +func traverseMergeAnchor(newMatches *orderedmap.OrderedMap, originalCandidate *CandidateNode, value *yaml.Node, wantedKey string, prefs traversePreferences, splat bool) error { + switch value.Kind { + case yaml.AliasNode: + if value.Alias.Kind != yaml.MappingNode { + return fmt.Errorf("can only use merge anchors with maps (!!map), but got %v", value.Alias.Tag) + } + candidateNode := originalCandidate.CreateReplacement(value.Alias) + return doTraverseMap(newMatches, candidateNode, wantedKey, prefs, splat) + case yaml.SequenceNode: + for _, childValue := range value.Content { + err := traverseMergeAnchor(newMatches, originalCandidate, childValue, wantedKey, prefs, splat) + if err != nil { + return err + } + } + } + return nil +} + +func traverseArray(candidate *CandidateNode, operation *Operation, prefs traversePreferences) (*list.List, error) { + log.Debug("operation Value %v", operation.Value) + indices := []*yaml.Node{{Value: operation.StringValue}} + return traverseArrayWithIndices(candidate, indices, prefs) +} diff --git a/external/yq/pkg/yqlib/operator_traverse_path_test.go b/external/yq/pkg/yqlib/operator_traverse_path_test.go new file mode 100755 index 0000000..56b3cc9 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_traverse_path_test.go @@ -0,0 +1,561 @@ +package yqlib + +import ( + "testing" +) + +var mergeDocSample = ` +foo: &foo + a: foo_a + thing: foo_thing + c: foo_c + +bar: &bar + b: bar_b + thing: bar_thing + c: bar_c + +foobarList: + b: foobarList_b + <<: [*foo,*bar] + c: foobarList_c + +foobar: + c: foobar_c + <<: *foo + thing: foobar_thing +` + +// cannot use merge anchors with arrays +var badAliasSample = ` +_common: &common-docker-file + - FROM ubuntu:18.04 + +steps: + <<: *common-docker-file +` + +var traversePathOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `[[1]]`, + expression: `.[0][0]`, + expected: []string{ + "D0, P[0 0], (!!int)::1\n", + }, + }, + { + skipDoc: true, + expression: `.cat["12"] = "things"`, + expected: []string{ + "D0, P[], ()::cat:\n \"12\": things\n", + }, + }, + { + skipDoc: true, + document: `blah: {}`, + expression: `.blah.cat = "cool"`, + expected: []string{ + "D0, P[], (doc)::blah:\n cat: cool\n", + }, + }, + { + skipDoc: true, + document: `blah: []`, + expression: `.blah.0 = "cool"`, + expected: []string{ + "D0, P[], (doc)::blah:\n - cool\n", + }, + }, + { + skipDoc: true, + document: `b: cat`, + expression: ".b\n", + expected: []string{ + "D0, P[b], (!!str)::cat\n", + }, + }, + { + skipDoc: true, + document: `[[[1]]]`, + expression: `.[0][0][0]`, + expected: []string{ + "D0, P[0 0 0], (!!int)::1\n", + }, + }, + { + skipDoc: true, + expression: `.["cat"] = "thing"`, + expected: []string{ + "D0, P[], ()::cat: thing\n", + }, + }, + { + description: "Simple map navigation", + document: `{a: {b: apple}}`, + expression: `.a`, + expected: []string{ + "D0, P[a], (!!map)::{b: apple}\n", + }, + }, + { + description: "Splat", + subdescription: "Often used to pipe children into other operators", + document: `[{b: apple}, {c: banana}]`, + expression: `.[]`, + expected: []string{ + "D0, P[0], (!!map)::{b: apple}\n", + "D0, P[1], (!!map)::{c: banana}\n", + }, + }, + { + description: "Optional Splat", + subdescription: "Just like splat, but won't error if you run it against scalars", + document: `"cat"`, + expression: `.[]`, + expected: []string{}, + }, + { + description: "Special characters", + subdescription: "Use quotes with brackets around path elements with special characters", + document: `{"{}": frog}`, + expression: `.["{}"]`, + expected: []string{ + "D0, P[{}], (!!str)::frog\n", + }, + }, + { + description: "Nested special characters", + document: `a: {"key.withdots": {"another.key": apple}}`, + expression: `.a["key.withdots"]["another.key"]`, + expected: []string{ + "D0, P[a key.withdots another.key], (!!str)::apple\n", + }, + }, + { + description: "Keys with spaces", + subdescription: "Use quotes with brackets around path elements with special characters", + document: `{"red rabbit": frog}`, + expression: `.["red rabbit"]`, + expected: []string{ + "D0, P[red rabbit], (!!str)::frog\n", + }, + }, + { + skipDoc: true, + document: `{"flying fox": frog}`, + expression: `.["flying fox"]`, + expected: []string{ + "D0, P[flying fox], (!!str)::frog\n", + }, + }, + { + skipDoc: true, + document: `c: dog`, + expression: `.[.a.b] as $x`, + expected: []string{ + "D0, P[], (doc)::c: dog\n", + }, + }, + { + description: "Dynamic keys", + subdescription: `Expressions within [] can be used to dynamically lookup / calculate keys`, + document: `{b: apple, apple: crispy yum, banana: soft yum}`, + expression: `.[.b]`, + expected: []string{ + "D0, P[apple], (!!str)::crispy yum\n", + }, + }, + { + skipDoc: true, + document: `{b: apple, fruit: {apple: yum, banana: smooth}}`, + expression: `.fruit[.b]`, + expected: []string{ + "D0, P[fruit apple], (!!str)::yum\n", + }, + }, + { + description: "Children don't exist", + subdescription: "Nodes are added dynamically while traversing", + document: `{c: banana}`, + expression: `.a.b`, + expected: []string{ + "D0, P[a b], (!!null)::null\n", + }, + }, + { + description: "Optional identifier", + subdescription: "Like jq, does not output an error when the yaml is not an array or object as expected", + document: `[1,2,3]`, + expression: `.a?`, + expected: []string{}, + }, + { + skipDoc: true, + document: `[[1,2,3], {a: frog}]`, + expression: `.[] | .["a"]?`, + expected: []string{"D0, P[1 a], (!!str)::frog\n"}, + }, + { + skipDoc: true, + document: ``, + expression: `.[1].a`, + expected: []string{ + "D0, P[1 a], (!!null)::null\n", + }, + }, + { + skipDoc: true, + document: `{}`, + expression: `.a[1]`, + expected: []string{ + "D0, P[a 1], (!!null)::null\n", + }, + }, + { + description: "Wildcard matching", + document: `{a: {cat: apple, mad: things}}`, + expression: `.a."*a*"`, + expected: []string{ + "D0, P[a cat], (!!str)::apple\n", + "D0, P[a mad], (!!str)::things\n", + }, + }, + { + skipDoc: true, + document: `{a: {cat: {b: 3}, mad: {b: 4}, fad: {c: t}}}`, + expression: `.a."*a*".b`, + expected: []string{ + "D0, P[a cat b], (!!int)::3\n", + "D0, P[a mad b], (!!int)::4\n", + "D0, P[a fad b], (!!null)::null\n", + }, + }, + { + skipDoc: true, + document: `{a: {cat: apple, mad: things}}`, + expression: `.a | (.cat, .mad)`, + expected: []string{ + "D0, P[a cat], (!!str)::apple\n", + "D0, P[a mad], (!!str)::things\n", + }, + }, + { + skipDoc: true, + document: `{a: {cat: apple, mad: things}}`, + expression: `.a | (.cat, .mad, .fad)`, + expected: []string{ + "D0, P[a cat], (!!str)::apple\n", + "D0, P[a mad], (!!str)::things\n", + "D0, P[a fad], (!!null)::null\n", + }, + }, + { + skipDoc: true, + document: `{a: {cat: apple, mad: things}}`, + expression: `.a | (.cat, .mad, .fad) | select( (. == null) | not)`, + expected: []string{ + "D0, P[a cat], (!!str)::apple\n", + "D0, P[a mad], (!!str)::things\n", + }, + }, + { + description: "Aliases", + document: `{a: &cat {c: frog}, b: *cat}`, + expression: `.b`, + expected: []string{ + "D0, P[b], (alias)::*cat\n", + }, + }, + { + description: "Traversing aliases with splat", + document: `{a: &cat {c: frog}, b: *cat}`, + expression: `.b[]`, + expected: []string{ + "D0, P[b c], (!!str)::frog\n", + }, + }, + { + skipDoc: true, + document: `{a: &cat {c: frog}, b: *cat}`, + expression: `.b[]`, + expected: []string{ + "D0, P[b c], (!!str)::frog\n", + }, + }, + { + description: "Traversing aliases explicitly", + document: `{a: &cat {c: frog}, b: *cat}`, + expression: `.b.c`, + expected: []string{ + "D0, P[b c], (!!str)::frog\n", + }, + }, + { + description: "Traversing arrays by index", + document: `[1,2,3]`, + expression: `.[0]`, + expected: []string{ + "D0, P[0], (!!int)::1\n", + }, + }, + { + description: "Traversing nested arrays by index", + dontFormatInputForDoc: true, + document: `[[], [cat]]`, + expression: `.[1][0]`, + expected: []string{ + "D0, P[1 0], (!!str)::cat\n", + }, + }, + { + description: "Maps with numeric keys", + document: `{2: cat}`, + expression: `.[2]`, + expected: []string{ + "D0, P[2], (!!str)::cat\n", + }, + }, + { + description: "Maps with non existing numeric keys", + document: `{a: b}`, + expression: `.[0]`, + expected: []string{ + "D0, P[0], (!!null)::null\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobar`, + expected: []string{ + "D0, P[foobar], (!!map)::c: foobar_c\n!!merge <<: *foo\nthing: foobar_thing\n", + }, + }, + { + description: "Traversing merge anchors", + document: mergeDocSample, + expression: `.foobar.a`, + expected: []string{ + "D0, P[foobar a], (!!str)::foo_a\n", + }, + }, + { + description: "Traversing merge anchors with override", + document: mergeDocSample, + expression: `.foobar.c`, + expected: []string{ + "D0, P[foobar c], (!!str)::foo_c\n", + }, + }, + { + description: "Traversing merge anchors with local override", + document: mergeDocSample, + expression: `.foobar.thing`, + expected: []string{ + "D0, P[foobar thing], (!!str)::foobar_thing\n", + }, + }, + { + description: "Splatting merge anchors", + document: mergeDocSample, + expression: `.foobar[]`, + expected: []string{ + "D0, P[foobar c], (!!str)::foo_c\n", + "D0, P[foobar a], (!!str)::foo_a\n", + "D0, P[foobar thing], (!!str)::foobar_thing\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobar[]`, + expected: []string{ + "D0, P[foobar c], (!!str)::foo_c\n", + "D0, P[foobar a], (!!str)::foo_a\n", + "D0, P[foobar thing], (!!str)::foobar_thing\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList`, + expected: []string{ + "D0, P[foobarList], (!!map)::b: foobarList_b\n!!merge <<: [*foo, *bar]\nc: foobarList_c\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList.a`, + expected: []string{ + "D0, P[foobarList a], (!!str)::foo_a\n", + }, + }, + { + description: "Traversing merge anchor lists", + subdescription: "Note that the later merge anchors override previous", + document: mergeDocSample, + expression: `.foobarList.thing`, + expected: []string{ + "D0, P[foobarList thing], (!!str)::bar_thing\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList.c`, + expected: []string{ + "D0, P[foobarList c], (!!str)::foobarList_c\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList.b`, + expected: []string{ + "D0, P[foobarList b], (!!str)::bar_b\n", + }, + }, + { + description: "Splatting merge anchor lists", + document: mergeDocSample, + expression: `.foobarList[]`, + expected: []string{ + "D0, P[foobarList b], (!!str)::bar_b\n", + "D0, P[foobarList a], (!!str)::foo_a\n", + "D0, P[foobarList thing], (!!str)::bar_thing\n", + "D0, P[foobarList c], (!!str)::foobarList_c\n", + }, + }, + { + skipDoc: true, + document: mergeDocSample, + expression: `.foobarList[]`, + expected: []string{ + "D0, P[foobarList b], (!!str)::bar_b\n", + "D0, P[foobarList a], (!!str)::foo_a\n", + "D0, P[foobarList thing], (!!str)::bar_thing\n", + "D0, P[foobarList c], (!!str)::foobarList_c\n", + }, + }, + { + skipDoc: true, + document: `[a,b,c]`, + expression: `.[]`, + expected: []string{ + "D0, P[0], (!!str)::a\n", + "D0, P[1], (!!str)::b\n", + "D0, P[2], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `[a,b,c]`, + expression: `[]`, + expected: []string{ + "D0, P[], (!!seq)::[]\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[0]`, + expected: []string{ + "D0, P[a 0], (!!str)::a\n", + }, + }, + { + description: "Select multiple indices", + document: `{a: [a,b,c]}`, + expression: `.a[0, 2]`, + expected: []string{ + "D0, P[a 0], (!!str)::a\n", + "D0, P[a 2], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[0, 2]`, + expected: []string{ + "D0, P[a 0], (!!str)::a\n", + "D0, P[a 2], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[-1]`, + expected: []string{ + "D0, P[a -1], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[-1]`, + expected: []string{ + "D0, P[a -1], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[-2]`, + expected: []string{ + "D0, P[a -2], (!!str)::b\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[-2]`, + expected: []string{ + "D0, P[a -2], (!!str)::b\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[]`, + expected: []string{ + "D0, P[a 0], (!!str)::a\n", + "D0, P[a 1], (!!str)::b\n", + "D0, P[a 2], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a[]`, + expected: []string{ + "D0, P[a 0], (!!str)::a\n", + "D0, P[a 1], (!!str)::b\n", + "D0, P[a 2], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: `{a: [a,b,c]}`, + expression: `.a | .[]`, + expected: []string{ + "D0, P[a 0], (!!str)::a\n", + "D0, P[a 1], (!!str)::b\n", + "D0, P[a 2], (!!str)::c\n", + }, + }, + { + skipDoc: true, + document: badAliasSample, + expression: ".steps[]", + expectedError: "can only use merge anchors with maps (!!map), but got !!seq", + }, +} + +func TestTraversePathOperatorScenarios(t *testing.T) { + for _, tt := range traversePathOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "traverse-read", traversePathOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_union.go b/external/yq/pkg/yqlib/operator_union.go new file mode 100755 index 0000000..310d827 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_union.go @@ -0,0 +1,44 @@ +package yqlib + +import "container/list" + +func unionOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debug("unionOperator") + log.Debug("context: %v", NodesToString(context.MatchingNodes)) + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + log.Debug("lhs: %v", NodesToString(lhs.MatchingNodes)) + log.Debug("rhs input: %v", NodesToString(context.MatchingNodes)) + log.Debug("rhs: %v", expressionNode.RHS.Operation.toString()) + rhs, err := d.GetMatchingNodes(context, expressionNode.RHS) + + if err != nil { + return Context{}, err + } + log.Debug("lhs: %v", lhs.ToString()) + log.Debug("rhs: %v", rhs.ToString()) + + results := lhs.ChildContext(list.New()) + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + node := el.Value.(*CandidateNode) + results.MatchingNodes.PushBack(node) + } + + // this can happen when both expressions modify the context + // instead of creating their own. + /// (.foo = "bar"), (.thing = "cat") + if rhs.MatchingNodes != lhs.MatchingNodes { + + for el := rhs.MatchingNodes.Front(); el != nil; el = el.Next() { + node := el.Value.(*CandidateNode) + log.Debug("processing %v", NodeToString(node)) + + results.MatchingNodes.PushBack(node) + } + } + log.Debug("and lets print it out") + log.Debug("all together: %v", results.ToString()) + return results, nil +} diff --git a/external/yq/pkg/yqlib/operator_union_test.go b/external/yq/pkg/yqlib/operator_union_test.go new file mode 100755 index 0000000..ce12f19 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_union_test.go @@ -0,0 +1,56 @@ +package yqlib + +import ( + "testing" +) + +var unionOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: "{}", + expression: `(.a, .b.c) as $x`, + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + skipDoc: true, + description: "clone test", + expression: `"abc" as $a | [$a, "cat"]`, + expected: []string{ + "D0, P[], (!!seq)::- abc\n- cat\n", + }, + }, + { + skipDoc: true, + expression: `(.foo = "bar"), (.toe = "jam")`, + expected: []string{ + "D0, P[], ()::foo: bar\ntoe: jam\n", + }, + }, + { + description: "Combine scalars", + expression: `1, true, "cat"`, + expected: []string{ + "D0, P[], (!!int)::1\n", + "D0, P[], (!!bool)::true\n", + "D0, P[], (!!str)::cat\n", + }, + }, + { + description: "Combine selected paths", + document: `{a: fieldA, b: fieldB, c: fieldC}`, + expression: `.a, .c`, + expected: []string{ + "D0, P[a], (!!str)::fieldA\n", + "D0, P[c], (!!str)::fieldC\n", + }, + }, +} + +func TestUnionOperatorScenarios(t *testing.T) { + for _, tt := range unionOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "union", unionOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_unique.go b/external/yq/pkg/yqlib/operator_unique.go new file mode 100755 index 0000000..a1c5216 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_unique.go @@ -0,0 +1,64 @@ +package yqlib + +import ( + "container/list" + "fmt" + + "github.com/elliotchance/orderedmap" + yaml "gopkg.in/yaml.v3" +) + +func unique(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + selfExpression := &ExpressionNode{Operation: &Operation{OperationType: selfReferenceOpType}} + uniqueByExpression := &ExpressionNode{Operation: &Operation{OperationType: uniqueByOpType}, RHS: selfExpression} + return uniqueBy(d, context, uniqueByExpression) + +} + +func uniqueBy(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + + log.Debugf("-- uniqueBy Operator") + var results = list.New() + + for el := context.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + candidateNode := unwrapDoc(candidate.Node) + + if candidateNode.Kind != yaml.SequenceNode { + return Context{}, fmt.Errorf("Only arrays are supported for unique") + } + + var newMatches = orderedmap.NewOrderedMap() + for _, node := range candidateNode.Content { + child := &CandidateNode{Node: node} + rhs, err := d.GetMatchingNodes(context.SingleReadonlyChildContext(child), expressionNode.RHS) + + if err != nil { + return Context{}, err + } + + keyValue := "null" + + if rhs.MatchingNodes.Len() > 0 { + first := rhs.MatchingNodes.Front() + keyCandidate := first.Value.(*CandidateNode) + keyValue = keyCandidate.Node.Value + } + + _, exists := newMatches.Get(keyValue) + + if !exists { + newMatches.Set(keyValue, child.Node) + } + } + resultNode := &yaml.Node{Kind: yaml.SequenceNode, Tag: "!!seq"} + for el := newMatches.Front(); el != nil; el = el.Next() { + resultNode.Content = append(resultNode.Content, el.Value.(*yaml.Node)) + } + + results.PushBack(candidate.CreateReplacementWithDocWrappers(resultNode)) + } + + return context.ChildContext(results), nil + +} diff --git a/external/yq/pkg/yqlib/operator_unique_test.go b/external/yq/pkg/yqlib/operator_unique_test.go new file mode 100755 index 0000000..f0c4453 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_unique_test.go @@ -0,0 +1,74 @@ +package yqlib + +import ( + "testing" +) + +var uniqueOperatorScenarios = []expressionScenario{ + { + description: "Unique array of scalars (string/numbers)", + subdescription: "Note that unique maintains the original order of the array.", + document: `[2,1,3,2]`, + expression: `unique`, + expected: []string{ + "D0, P[], (!!seq)::- 2\n- 1\n- 3\n", + }, + }, + { + description: "Unique nulls", + subdescription: "Unique works on the node value, so it considers different representations of nulls to be different", + document: `[~,null, ~, null]`, + expression: `unique`, + expected: []string{ + "D0, P[], (!!seq)::- ~\n- null\n", + }, + }, + { + description: "Unique all nulls", + subdescription: "Run against the node tag to unique all the nulls", + document: `[~,null, ~, null]`, + expression: `unique_by(tag)`, + expected: []string{ + "D0, P[], (!!seq)::- ~\n", + }, + }, + { + description: "Unique array object fields", + document: `[{name: harry, pet: cat}, {name: billy, pet: dog}, {name: harry, pet: dog}]`, + expression: `unique_by(.name)`, + expected: []string{ + "D0, P[], (!!seq)::- {name: harry, pet: cat}\n- {name: billy, pet: dog}\n", + }, + }, + { + skipDoc: true, + document: `[{name: harry, pet: cat}, {pet: fish}, {name: harry, pet: dog}]`, + expression: `unique_by(.name)`, + expected: []string{ + "D0, P[], (!!seq)::- {name: harry, pet: cat}\n- {pet: fish}\n", + }, + }, + { + skipDoc: true, + document: `[{name: harry, pet: cat}, {pet: fish}, {name: harry, pet: dog}]`, + expression: `unique_by(.cat.dog)`, + expected: []string{ + "D0, P[], (!!seq)::- {name: harry, pet: cat}\n", + }, + }, + { + skipDoc: true, + document: "# abc\n[{name: harry, pet: cat}, {pet: fish}, {name: harry, pet: dog}]\n# xyz", + expression: `unique_by(.name)`, + expected: []string{ + "D0, P[], (!!seq)::# abc\n- {name: harry, pet: cat}\n- {pet: fish}\n# xyz\n", + }, + }, +} + +func TestUniqueOperatorScenarios(t *testing.T) { + for _, tt := range uniqueOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "unique", uniqueOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_value.go b/external/yq/pkg/yqlib/operator_value.go new file mode 100755 index 0000000..6c70b1f --- /dev/null +++ b/external/yq/pkg/yqlib/operator_value.go @@ -0,0 +1,6 @@ +package yqlib + +func valueOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debug("value = %v", expressionNode.Operation.CandidateNode.Node.Value) + return context.SingleChildContext(expressionNode.Operation.CandidateNode), nil +} diff --git a/external/yq/pkg/yqlib/operator_value_test.go b/external/yq/pkg/yqlib/operator_value_test.go new file mode 100755 index 0000000..8153480 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_value_test.go @@ -0,0 +1,169 @@ +package yqlib + +import ( + "testing" +) + +var valueOperatorScenarios = []expressionScenario{ + { + document: ``, + expression: `1`, + expected: []string{ + "D0, P[], (!!int)::1\n", + }, + }, + { + document: ``, + expression: `0x9f`, + expected: []string{ + "D0, P[], (!!int)::0x9f\n", + }, + }, + { + document: ``, + expression: `0x1A`, + expected: []string{ + "D0, P[], (!!int)::0x1A\n", + }, + }, + { + document: ``, + expression: `0x1A + 2`, + expected: []string{ + "D0, P[], (!!int)::0x1C\n", + }, + }, + { + document: ``, + expression: `0x12 * 2`, + expected: []string{ + "D0, P[], (!!int)::0x24\n", + }, + }, + { + document: ``, + expression: `0xF - 1`, + expected: []string{ + "D0, P[], (!!int)::0xE\n", + }, + }, + { + document: ``, + expression: `12`, + expected: []string{ + "D0, P[], (!!int)::12\n", + }, + }, + { + document: ``, + expression: `12 + 2`, + expected: []string{ + "D0, P[], (!!int)::14\n", + }, + }, + { + document: ``, + expression: `12 * 2`, + expected: []string{ + "D0, P[], (!!int)::24\n", + }, + }, + { + document: ``, + expression: `12 - 2`, + expected: []string{ + "D0, P[], (!!int)::10\n", + }, + }, + { + document: ``, + expression: `0X12`, + expected: []string{ + "D0, P[], (!!int)::0X12\n", + }, + }, + { + document: ``, + expression: `-1`, + expected: []string{ + "D0, P[], (!!int)::-1\n", + }, + }, { + document: ``, + expression: `1.2`, + expected: []string{ + "D0, P[], (!!float)::1.2\n", + }, + }, { + document: ``, + expression: `-5.2e11`, + expected: []string{ + "D0, P[], (!!float)::-5.2e11\n", + }, + }, { + document: ``, + expression: `5e-10`, + expected: []string{ + "D0, P[], (!!float)::5e-10\n", + }, + }, + { + document: ``, + expression: `"cat"`, + expected: []string{ + "D0, P[], (!!str)::cat\n", + }, + }, + { + document: ``, + expression: `"frog jumps"`, + expected: []string{ + "D0, P[], (!!str)::frog jumps\n", + }, + }, + { + document: ``, + expression: `"1.3"`, + expected: []string{ + "D0, P[], (!!str)::1.3\n", + }, + }, { + document: ``, + expression: `"true"`, + expected: []string{ + "D0, P[], (!!str)::true\n", + }, + }, { + document: ``, + expression: `true`, + expected: []string{ + "D0, P[], (!!bool)::true\n", + }, + }, { + document: ``, + expression: `false`, + expected: []string{ + "D0, P[], (!!bool)::false\n", + }, + }, + { + document: ``, + expression: `Null`, + expected: []string{ + "D0, P[], (!!null)::Null\n", + }, + }, + { + document: ``, + expression: `~`, + expected: []string{ + "D0, P[], (!!null)::~\n", + }, + }, +} + +func TestValueOperatorScenarios(t *testing.T) { + for _, tt := range valueOperatorScenarios { + testScenario(t, &tt) + } +} diff --git a/external/yq/pkg/yqlib/operator_variables.go b/external/yq/pkg/yqlib/operator_variables.go new file mode 100755 index 0000000..5550bde --- /dev/null +++ b/external/yq/pkg/yqlib/operator_variables.go @@ -0,0 +1,42 @@ +package yqlib + +import ( + "container/list" + "fmt" +) + +func getVariableOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + variableName := expressionNode.Operation.StringValue + log.Debug("getVariableOperator %v", variableName) + result := context.GetVariable(variableName) + if result == nil { + result = list.New() + } + return context.ChildContext(result), nil +} + +type assignVarPreferences struct { + IsReference bool +} + +func assignVariableOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + lhs, err := d.GetMatchingNodes(context.ReadOnlyClone(), expressionNode.LHS) + if err != nil { + return Context{}, err + } + if expressionNode.RHS.Operation.OperationType.Type != "GET_VARIABLE" { + return Context{}, fmt.Errorf("RHS of 'as' operator must be a variable name e.g. $foo") + } + variableName := expressionNode.RHS.Operation.StringValue + + prefs := expressionNode.Operation.Preferences.(assignVarPreferences) + + var variableValue *list.List + if prefs.IsReference { + variableValue = lhs.MatchingNodes + } else { + variableValue = lhs.DeepClone().MatchingNodes + } + context.SetVariable(variableName, variableValue) + return context, nil +} diff --git a/external/yq/pkg/yqlib/operator_variables_test.go b/external/yq/pkg/yqlib/operator_variables_test.go new file mode 100755 index 0000000..7ab9ee3 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_variables_test.go @@ -0,0 +1,76 @@ +package yqlib + +import ( + "testing" +) + +var variableOperatorScenarios = []expressionScenario{ + { + skipDoc: true, + document: `{}`, + expression: `.a.b as $foo`, + expected: []string{ + "D0, P[], (doc)::{}\n", + }, + }, + { + document: "a: [cat]", + skipDoc: true, + expression: "(.[] | {.name: .}) as $item", + expectedError: `cannot index array with 'name' (strconv.ParseInt: parsing "name": invalid syntax)`, + }, + { + description: "Single value variable", + document: `a: cat`, + expression: `.a as $foo | $foo`, + expected: []string{ + "D0, P[a], (!!str)::cat\n", + }, + }, + { + description: "Multi value variable", + document: `[cat, dog]`, + expression: `.[] as $foo | $foo`, + expected: []string{ + "D0, P[0], (!!str)::cat\n", + "D0, P[1], (!!str)::dog\n", + }, + }, + { + description: "Using variables as a lookup", + subdescription: "Example taken from [jq](https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...)", + document: `{"posts": [{"title": "First post", "author": "anon"}, + {"title": "A well-written article", "author": "person1"}], + "realnames": {"anon": "Anonymous Coward", + "person1": "Person McPherson"}}`, + expression: `.realnames as $names | .posts[] | {"title":.title, "author": $names[.author]}`, + expected: []string{ + "D0, P[], (!!map)::title: \"First post\"\nauthor: \"Anonymous Coward\"\n", + "D0, P[], (!!map)::title: \"A well-written article\"\nauthor: \"Person McPherson\"\n", + }, + }, + { + description: "Using variables to swap values", + document: "a: a_value\nb: b_value", + expression: `.a as $x | .b as $y | .b = $x | .a = $y`, + expected: []string{ + "D0, P[], (doc)::a: b_value\nb: a_value\n", + }, + }, + { + description: "Use ref to reference a path repeatedly", + subdescription: "Note: You may find the `with` operator more useful.", + document: `a: {b: thing, c: something}`, + expression: `.a.b ref $x | $x = "new" | $x style="double"`, + expected: []string{ + "D0, P[], (doc)::a: {b: \"new\", c: something}\n", + }, + }, +} + +func TestVariableOperatorScenarios(t *testing.T) { + for _, tt := range variableOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "variable-operators", variableOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operator_with.go b/external/yq/pkg/yqlib/operator_with.go new file mode 100755 index 0000000..fd76ec6 --- /dev/null +++ b/external/yq/pkg/yqlib/operator_with.go @@ -0,0 +1,34 @@ +package yqlib + +import "fmt" + +func withOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + log.Debugf("-- withOperator") + // with(path, exp) + + if expressionNode.RHS.Operation.OperationType != blockOpType { + return Context{}, fmt.Errorf("with must be given a block (;), got %v instead", expressionNode.RHS.Operation.OperationType.Type) + } + + pathExp := expressionNode.RHS.LHS + + updateContext, err := d.GetMatchingNodes(context, pathExp) + + if err != nil { + return Context{}, err + } + + updateExp := expressionNode.RHS.RHS + + for el := updateContext.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + _, err = d.GetMatchingNodes(updateContext.SingleChildContext(candidate), updateExp) + if err != nil { + return Context{}, err + } + + } + + return context, nil + +} diff --git a/external/yq/pkg/yqlib/operator_with_test.go b/external/yq/pkg/yqlib/operator_with_test.go new file mode 100755 index 0000000..04f184c --- /dev/null +++ b/external/yq/pkg/yqlib/operator_with_test.go @@ -0,0 +1,48 @@ +package yqlib + +import "testing" + +var withOperatorScenarios = []expressionScenario{ + { + description: "Update and style", + document: `a: {deeply: {nested: value}}`, + expression: `with(.a.deeply.nested; . = "newValue" | . style="single")`, + expected: []string{ + "D0, P[], (doc)::a: {deeply: {nested: 'newValue'}}\n", + }, + }, + { + description: "Update multiple deeply nested properties", + document: `a: {deeply: {nested: value, other: thing}}`, + expression: `with(.a.deeply; .nested = "newValue" | .other= "newThing")`, + expected: []string{ + "D0, P[], (doc)::a: {deeply: {nested: newValue, other: newThing}}\n", + }, + }, + { + description: "Update array elements relatively", + subdescription: "The second expression runs with each element of the array as it's contextual root. This allows you to make updates relative to the element.", + document: `myArray: [{a: apple},{a: banana}]`, + expression: `with(.myArray[]; .b = .a + " yum")`, + expected: []string{ + "D0, P[], (doc)::myArray: [{a: apple, b: apple yum}, {a: banana, b: banana yum}]\n", + }, + }, + { + description: "Update array elements relatively +=", + skipDoc: true, + subdescription: "The second expression runs with each element of the array as it's contextual root. This allows you to make updates relative to the element.", + document: `myArray: [{a: apple},{a: banana}]`, + expression: `with(.myArray[]; .a += .a)`, + expected: []string{ + "D0, P[], (doc)::myArray: [{a: appleapple}, {a: bananabanana}]\n", + }, + }, +} + +func TestWithOperatorScenarios(t *testing.T) { + for _, tt := range withOperatorScenarios { + testScenario(t, &tt) + } + documentOperatorScenarios(t, "with", withOperatorScenarios) +} diff --git a/external/yq/pkg/yqlib/operators.go b/external/yq/pkg/yqlib/operators.go new file mode 100755 index 0000000..00f45d4 --- /dev/null +++ b/external/yq/pkg/yqlib/operators.go @@ -0,0 +1,215 @@ +package yqlib + +import ( + "container/list" + "fmt" + + "github.com/jinzhu/copier" + logging "gopkg.in/op/go-logging.v1" + "gopkg.in/yaml.v3" +) + +type operatorHandler func(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) + +type compoundCalculation func(lhs *ExpressionNode, rhs *ExpressionNode) *ExpressionNode + +func compoundAssignFunction(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode, calculation compoundCalculation) (Context, error) { + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + + // tricky logic when we are running *= with flags. + // we have an op like: .a *=nc .b + // which should roughly translate to .a =c .a *nc .b + // note that the 'n' flag only applies to the multiple op, not the assignment + // but the clobber flag applies to both! + + prefs := assignPreferences{} + switch typedPref := expressionNode.Operation.Preferences.(type) { + case assignPreferences: + prefs = typedPref + case multiplyPreferences: + prefs.ClobberCustomTags = typedPref.AssignPrefs.ClobberCustomTags + } + + assignmentOp := &Operation{OperationType: assignOpType, Preferences: prefs} + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + candidate := el.Value.(*CandidateNode) + clone, err := candidate.Copy() + if err != nil { + return Context{}, err + } + valueCopyExp := &ExpressionNode{Operation: &Operation{OperationType: valueOpType, CandidateNode: clone}} + + valueExpression := &ExpressionNode{Operation: &Operation{OperationType: valueOpType, CandidateNode: candidate}} + + assignmentOpNode := &ExpressionNode{Operation: assignmentOp, LHS: valueExpression, RHS: calculation(valueCopyExp, expressionNode.RHS)} + + _, err = d.GetMatchingNodes(context, assignmentOpNode) + if err != nil { + return Context{}, err + } + } + return context, nil +} + +func unwrapDoc(node *yaml.Node) *yaml.Node { + if node.Kind == yaml.DocumentNode { + return node.Content[0] + } + return node +} + +func emptyOperator(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode) (Context, error) { + context.MatchingNodes = list.New() + return context, nil +} + +type crossFunctionCalculation func(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) + +func resultsForRHS(d *dataTreeNavigator, context Context, lhsCandidate *CandidateNode, prefs crossFunctionPreferences, rhsExp *ExpressionNode, results *list.List) error { + + if prefs.LhsResultValue != nil { + result, err := prefs.LhsResultValue(lhsCandidate) + if err != nil { + return err + } else if result != nil { + results.PushBack(result) + return nil + } + } + + rhs, err := d.GetMatchingNodes(context, rhsExp) + if err != nil { + return err + } + + if prefs.CalcWhenEmpty && rhs.MatchingNodes.Len() == 0 { + resultCandidate, err := prefs.Calculation(d, context, lhsCandidate, nil) + if err != nil { + return err + } + if resultCandidate != nil { + results.PushBack(resultCandidate) + } + return nil + } + + for rightEl := rhs.MatchingNodes.Front(); rightEl != nil; rightEl = rightEl.Next() { + rhsCandidate := rightEl.Value.(*CandidateNode) + if !log.IsEnabledFor(logging.DEBUG) { + log.Debugf("Applying lhs: %v, rhsCandidate, %v", NodeToString(lhsCandidate), NodeToString(rhsCandidate)) + } + resultCandidate, err := prefs.Calculation(d, context, lhsCandidate, rhsCandidate) + if err != nil { + return err + } + if resultCandidate != nil { + results.PushBack(resultCandidate) + } + } + return nil +} + +type crossFunctionPreferences struct { + CalcWhenEmpty bool + // if this returns a result node, + // we wont bother calculating the RHS + LhsResultValue func(*CandidateNode) (*CandidateNode, error) + Calculation crossFunctionCalculation +} + +func doCrossFunc(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode, prefs crossFunctionPreferences) (Context, error) { + var results = list.New() + lhs, err := d.GetMatchingNodes(context, expressionNode.LHS) + if err != nil { + return Context{}, err + } + log.Debugf("crossFunction LHS len: %v", lhs.MatchingNodes.Len()) + + if prefs.CalcWhenEmpty && lhs.MatchingNodes.Len() == 0 { + err := resultsForRHS(d, context, nil, prefs, expressionNode.RHS, results) + if err != nil { + return Context{}, err + } + } + + for el := lhs.MatchingNodes.Front(); el != nil; el = el.Next() { + lhsCandidate := el.Value.(*CandidateNode) + + err = resultsForRHS(d, context, lhsCandidate, prefs, expressionNode.RHS, results) + if err != nil { + return Context{}, err + } + + } + return context.ChildContext(results), nil +} + +func crossFunction(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode, calculation crossFunctionCalculation, calcWhenEmpty bool) (Context, error) { + prefs := crossFunctionPreferences{CalcWhenEmpty: calcWhenEmpty, Calculation: calculation} + return crossFunctionWithPrefs(d, context, expressionNode, prefs) +} + +func crossFunctionWithPrefs(d *dataTreeNavigator, context Context, expressionNode *ExpressionNode, prefs crossFunctionPreferences) (Context, error) { + var results = list.New() + + var evaluateAllTogether = true + for matchEl := context.MatchingNodes.Front(); matchEl != nil; matchEl = matchEl.Next() { + evaluateAllTogether = evaluateAllTogether && matchEl.Value.(*CandidateNode).EvaluateTogether + if !evaluateAllTogether { + break + } + } + + if evaluateAllTogether { + log.Debug("crossFunction evaluateAllTogether!") + return doCrossFunc(d, context, expressionNode, prefs) + } + + log.Debug("crossFunction evaluate apart!") + + for matchEl := context.MatchingNodes.Front(); matchEl != nil; matchEl = matchEl.Next() { + innerResults, err := doCrossFunc(d, context.SingleChildContext(matchEl.Value.(*CandidateNode)), expressionNode, prefs) + if err != nil { + return Context{}, err + } + results.PushBackList(innerResults.MatchingNodes) + } + + return context.ChildContext(results), nil +} + +func createBooleanCandidate(owner *CandidateNode, value bool) *CandidateNode { + valString := "true" + if !value { + valString = "false" + } + node := &yaml.Node{Kind: yaml.ScalarNode, Value: valString, Tag: "!!bool"} + return owner.CreateReplacement(node) +} + +func createTraversalTree(path []interface{}, traversePrefs traversePreferences, targetKey bool) *ExpressionNode { + if len(path) == 0 { + return &ExpressionNode{Operation: &Operation{OperationType: selfReferenceOpType}} + } else if len(path) == 1 { + lastPrefs := traversePrefs + if targetKey { + err := copier.Copy(&lastPrefs, traversePrefs) + if err != nil { + panic(err) + } + lastPrefs.IncludeMapKeys = true + lastPrefs.DontIncludeMapValues = true + } + return &ExpressionNode{Operation: &Operation{OperationType: traversePathOpType, Preferences: lastPrefs, Value: path[0], StringValue: fmt.Sprintf("%v", path[0])}} + } + + return &ExpressionNode{ + Operation: &Operation{OperationType: shortPipeOpType}, + LHS: createTraversalTree(path[0:1], traversePrefs, false), + RHS: createTraversalTree(path[1:], traversePrefs, targetKey), + } +} diff --git a/external/yq/pkg/yqlib/operators_test.go b/external/yq/pkg/yqlib/operators_test.go new file mode 100755 index 0000000..7975789 --- /dev/null +++ b/external/yq/pkg/yqlib/operators_test.go @@ -0,0 +1,360 @@ +package yqlib + +import ( + "bufio" + "bytes" + "container/list" + "fmt" + "io" + "os" + "sort" + "strings" + "testing" + "time" + + "github.com/mikefarah/yq/v4/test" + logging "gopkg.in/op/go-logging.v1" + yaml "gopkg.in/yaml.v3" +) + +type expressionScenario struct { + description string + subdescription string + environmentVariables map[string]string + document string + document2 string + expression string + expected []string + skipDoc bool + expectedError string + dontFormatInputForDoc bool // dont format input doc for documentation generation +} + +func TestMain(m *testing.M) { + logging.SetLevel(logging.ERROR, "") + Now = func() time.Time { + return time.Date(2021, time.May, 19, 1, 2, 3, 4, time.UTC) + } + code := m.Run() + os.Exit(code) +} + +func NewSimpleYamlPrinter(writer io.Writer, outputFormat PrinterOutputFormat, unwrapScalar bool, colorsEnabled bool, indent int, printDocSeparators bool) Printer { + prefs := NewDefaultYamlPreferences() + prefs.PrintDocSeparators = printDocSeparators + prefs.UnwrapScalar = unwrapScalar + return NewPrinter(NewYamlEncoder(indent, colorsEnabled, prefs), NewSinglePrinterWriter(writer)) +} + +func readDocument(content string, fakefilename string, fakeFileIndex int) (*list.List, error) { + reader := bufio.NewReader(strings.NewReader(content)) + + return readDocuments(reader, fakefilename, fakeFileIndex, NewYamlDecoder(ConfiguredYamlPreferences)) +} + +func testScenario(t *testing.T, s *expressionScenario) { + var err error + node, err := getExpressionParser().ParseExpression(s.expression) + if err != nil { + t.Error(fmt.Errorf("Error parsing expression %v of %v: %w", s.expression, s.description, err)) + return + } + inputs := list.New() + + if s.document != "" { + inputs, err = readDocument(s.document, "sample.yml", 0) + + if err != nil { + t.Error(err, s.document, s.expression) + return + } + + if s.document2 != "" { + moreInputs, err := readDocument(s.document2, "another.yml", 1) + if err != nil { + t.Error(err, s.document2, s.expression) + return + } + inputs.PushBackList(moreInputs) + } + } else { + candidateNode := &CandidateNode{ + Document: 0, + Filename: "", + Node: &yaml.Node{Tag: "!!null", Kind: yaml.ScalarNode}, + FileIndex: 0, + } + inputs.PushBack(candidateNode) + + } + + for name, value := range s.environmentVariables { + os.Setenv(name, value) + } + + context, err := NewDataTreeNavigator().GetMatchingNodes(Context{MatchingNodes: inputs}, node) + + if s.expectedError != "" { + if err == nil { + t.Errorf("Expected error '%v' but it worked!", s.expectedError) + } else { + test.AssertResultComplexWithContext(t, s.expectedError, err.Error(), fmt.Sprintf("desc: %v\nexp: %v\ndoc: %v", s.description, s.expression, s.document)) + } + return + } + + if err != nil { + t.Error(fmt.Errorf("%w: %v: %v", err, s.description, s.expression)) + return + } + test.AssertResultComplexWithContext(t, s.expected, resultsToString(t, context.MatchingNodes), fmt.Sprintf("desc: %v\nexp: %v\ndoc: %v", s.description, s.expression, s.document)) +} + +func resultToString(t *testing.T, n *CandidateNode) string { + var valueBuffer bytes.Buffer + printer := NewSimpleYamlPrinter(bufio.NewWriter(&valueBuffer), YamlOutputFormat, true, false, 4, true) + + err := printer.PrintResults(n.AsList()) + if err != nil { + t.Error(err) + return "" + } + + tag := n.Node.Tag + if n.Node.Kind == yaml.DocumentNode { + tag = "doc" + } else if n.Node.Kind == yaml.AliasNode { + tag = "alias" + } + return fmt.Sprintf(`D%v, P%v, (%v)::%v`, n.Document, n.Path, tag, valueBuffer.String()) +} + +func resultsToString(t *testing.T, results *list.List) []string { + var pretty = make([]string, 0) + + for el := results.Front(); el != nil; el = el.Next() { + n := el.Value.(*CandidateNode) + + output := resultToString(t, n) + pretty = append(pretty, output) + } + return pretty +} + +func writeOrPanic(w *bufio.Writer, text string) { + _, err := w.WriteString(text) + if err != nil { + panic(err) + } +} + +func copySnippet(source string, out *os.File) error { + _, err := os.Stat(source) + if os.IsNotExist(err) { + return nil + } + in, err := os.Open(source) + if err != nil { + return err + } + defer safelyCloseFile(in) + _, err = io.Copy(out, in) + return err +} + +func formatYaml(yaml string, filename string) string { + var output bytes.Buffer + printer := NewSimpleYamlPrinter(bufio.NewWriter(&output), YamlOutputFormat, true, false, 2, true) + + node, err := getExpressionParser().ParseExpression(".. style= \"\"") + if err != nil { + panic(err) + } + streamEvaluator := NewStreamEvaluator() + _, err = streamEvaluator.Evaluate(filename, strings.NewReader(yaml), node, printer, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + return output.String() +} + +type documentScenarioFunc func(t *testing.T, writer *bufio.Writer, scenario interface{}) + +func documentScenarios(t *testing.T, folder string, title string, scenarios []interface{}, documentScenario documentScenarioFunc) { + f, err := os.Create(fmt.Sprintf("doc/%v/%v.md", folder, title)) + + if err != nil { + t.Error(err) + return + } + defer f.Close() + + source := fmt.Sprintf("doc/%v/headers/%v.md", folder, title) + err = copySnippet(source, f) + if err != nil { + t.Error(err) + return + } + + err = copySnippet("doc/notification-snippet.md", f) + if err != nil { + t.Error(err) + return + } + + w := bufio.NewWriter(f) + writeOrPanic(w, "\n") + + for _, s := range scenarios { + documentScenario(t, w, s) + } + w.Flush() +} + +func documentOperatorScenarios(t *testing.T, title string, scenarios []expressionScenario) { + genericScenarios := make([]interface{}, len(scenarios)) + for i, s := range scenarios { + genericScenarios[i] = s + } + + documentScenarios(t, "operators", title, genericScenarios, documentOperatorScenario) +} + +func documentOperatorScenario(t *testing.T, w *bufio.Writer, i interface{}) { + s := i.(expressionScenario) + + if s.skipDoc { + return + } + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + formattedDoc, formattedDoc2 := documentInput(w, s) + + writeOrPanic(w, "will output\n") + + documentOutput(t, w, s, formattedDoc, formattedDoc2) +} + +func documentInput(w *bufio.Writer, s expressionScenario) (string, string) { + formattedDoc := "" + formattedDoc2 := "" + command := "" + + envCommand := "" + + envKeys := make([]string, 0, len(s.environmentVariables)) + for k := range s.environmentVariables { + envKeys = append(envKeys, k) + } + sort.Strings(envKeys) + + for _, name := range envKeys { + value := s.environmentVariables[name] + if envCommand == "" { + envCommand = fmt.Sprintf("%v=\"%v\" ", name, value) + } else { + envCommand = fmt.Sprintf("%v %v=\"%v\" ", envCommand, name, value) + } + os.Setenv(name, value) + } + + if s.document != "" { + if s.dontFormatInputForDoc { + formattedDoc = s.document + "\n" + } else { + formattedDoc = formatYaml(s.document, "sample.yml") + } + + writeOrPanic(w, "Given a sample.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n", formattedDoc)) + + files := "sample.yml" + + if s.document2 != "" { + if s.dontFormatInputForDoc { + formattedDoc2 = s.document2 + "\n" + } else { + formattedDoc2 = formatYaml(s.document2, "another.yml") + } + + writeOrPanic(w, "And another sample another.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n", formattedDoc2)) + files = "sample.yml another.yml" + command = "eval-all " + } + + writeOrPanic(w, "then\n") + + if s.expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\n%vyq %v'%v' %v\n```\n", envCommand, command, s.expression, files)) + } else { + writeOrPanic(w, fmt.Sprintf("```bash\n%vyq %v%v\n```\n", envCommand, command, files)) + } + } else { + writeOrPanic(w, "Running\n") + writeOrPanic(w, fmt.Sprintf("```bash\n%vyq %v--null-input '%v'\n```\n", envCommand, command, s.expression)) + } + return formattedDoc, formattedDoc2 +} + +func documentOutput(t *testing.T, w *bufio.Writer, s expressionScenario, formattedDoc string, formattedDoc2 string) { + var output bytes.Buffer + var err error + printer := NewSimpleYamlPrinter(bufio.NewWriter(&output), YamlOutputFormat, true, false, 2, true) + + node, err := getExpressionParser().ParseExpression(s.expression) + if err != nil { + t.Error(fmt.Errorf("Error parsing expression %v of %v: %w", s.expression, s.description, err)) + return + } + + inputs := list.New() + + if s.document != "" { + + inputs, err = readDocument(formattedDoc, "sample.yml", 0) + if err != nil { + t.Error(err, s.document, s.expression) + return + } + if s.document2 != "" { + moreInputs, err := readDocument(formattedDoc2, "another.yml", 1) + if err != nil { + t.Error(err, s.document, s.expression) + return + } + inputs.PushBackList(moreInputs) + } + } else { + candidateNode := &CandidateNode{ + Document: 0, + Filename: "", + Node: &yaml.Node{Tag: "!!null", Kind: yaml.ScalarNode}, + FileIndex: 0, + } + inputs.PushBack(candidateNode) + + } + + context, err := NewDataTreeNavigator().GetMatchingNodes(Context{MatchingNodes: inputs}, node) + + if s.expectedError != "" && err != nil { + writeOrPanic(w, fmt.Sprintf("```bash\nError: %v\n```\n\n", err.Error())) + return + } else if err != nil { + t.Error(err, s.expression) + return + } + + err = printer.PrintResults(context.MatchingNodes) + if err != nil { + t.Error(err, s.expression) + } + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", output.String())) +} diff --git a/external/yq/pkg/yqlib/printer.go b/external/yq/pkg/yqlib/printer.go new file mode 100755 index 0000000..aef082d --- /dev/null +++ b/external/yq/pkg/yqlib/printer.go @@ -0,0 +1,167 @@ +package yqlib + +import ( + "bufio" + "container/list" + "fmt" + "io" + "regexp" + + yaml "gopkg.in/yaml.v3" +) + +type Printer interface { + PrintResults(matchingNodes *list.List) error + PrintedAnything() bool + //e.g. when given a front-matter doc, like jekyll + SetAppendix(reader io.Reader) +} + +type PrinterOutputFormat uint32 + +const ( + YamlOutputFormat = 1 << iota + JSONOutputFormat + PropsOutputFormat + CSVOutputFormat + TSVOutputFormat + XMLOutputFormat + Base64OutputFormat +) + +func OutputFormatFromString(format string) (PrinterOutputFormat, error) { + switch format { + case "yaml", "y": + return YamlOutputFormat, nil + case "json", "j": + return JSONOutputFormat, nil + case "props", "p": + return PropsOutputFormat, nil + case "csv", "c": + return CSVOutputFormat, nil + case "tsv", "t": + return TSVOutputFormat, nil + case "xml", "x": + return XMLOutputFormat, nil + default: + return 0, fmt.Errorf("unknown format '%v' please use [yaml|json|props|csv|tsv|xml]", format) + } +} + +type resultsPrinter struct { + encoder Encoder + printerWriter PrinterWriter + firstTimePrinting bool + previousDocIndex uint + previousFileIndex int + printedMatches bool + treeNavigator DataTreeNavigator + appendixReader io.Reader +} + +func NewPrinter(encoder Encoder, printerWriter PrinterWriter) Printer { + return &resultsPrinter{ + encoder: encoder, + printerWriter: printerWriter, + firstTimePrinting: true, + treeNavigator: NewDataTreeNavigator(), + } +} + +func (p *resultsPrinter) SetAppendix(reader io.Reader) { + p.appendixReader = reader +} + +func (p *resultsPrinter) PrintedAnything() bool { + return p.printedMatches +} + +func (p *resultsPrinter) printNode(node *yaml.Node, writer io.Writer) error { + p.printedMatches = p.printedMatches || (node.Tag != "!!null" && + (node.Tag != "!!bool" || node.Value != "false")) + return p.encoder.Encode(writer, node) +} + +func (p *resultsPrinter) PrintResults(matchingNodes *list.List) error { + log.Debug("PrintResults for %v matches", matchingNodes.Len()) + + if matchingNodes.Len() == 0 { + log.Debug("no matching results, nothing to print") + return nil + } + + if !p.encoder.CanHandleAliases() { + explodeOp := Operation{OperationType: explodeOpType} + explodeNode := ExpressionNode{Operation: &explodeOp} + context, err := p.treeNavigator.GetMatchingNodes(Context{MatchingNodes: matchingNodes}, &explodeNode) + if err != nil { + return err + } + matchingNodes = context.MatchingNodes + } + + if p.firstTimePrinting { + node := matchingNodes.Front().Value.(*CandidateNode) + p.previousDocIndex = node.Document + p.previousFileIndex = node.FileIndex + p.firstTimePrinting = false + } + + for el := matchingNodes.Front(); el != nil; el = el.Next() { + + mappedDoc := el.Value.(*CandidateNode) + log.Debug("-- print sep logic: p.firstTimePrinting: %v, previousDocIndex: %v, mappedDoc.Document: %v", p.firstTimePrinting, p.previousDocIndex, mappedDoc.Document) + log.Debug("%v", NodeToString(mappedDoc)) + writer, errorWriting := p.printerWriter.GetWriter(mappedDoc) + if errorWriting != nil { + return errorWriting + } + + commentsStartWithSepExp := regexp.MustCompile(`^\$yqDocSeperator\$`) + commentStartsWithSeparator := commentsStartWithSepExp.MatchString(mappedDoc.LeadingContent) + + if (p.previousDocIndex != mappedDoc.Document || p.previousFileIndex != mappedDoc.FileIndex) && !commentStartsWithSeparator { + if err := p.encoder.PrintDocumentSeparator(writer); err != nil { + return err + } + } + + if err := p.encoder.PrintLeadingContent(writer, mappedDoc.LeadingContent); err != nil { + return err + } + + if err := p.printNode(mappedDoc.Node, writer); err != nil { + return err + } + + if err := p.encoder.PrintLeadingContent(writer, mappedDoc.TrailingContent); err != nil { + return err + } + + p.previousDocIndex = mappedDoc.Document + if err := writer.Flush(); err != nil { + return err + } + log.Debugf("done printing results") + } + + // what happens if I remove output format check? + if p.appendixReader != nil { + writer, err := p.printerWriter.GetWriter(nil) + if err != nil { + return err + } + + log.Debug("Piping appendix reader...") + betterReader := bufio.NewReader(p.appendixReader) + _, err = io.Copy(writer, betterReader) + if err != nil { + return err + } + if err := writer.Flush(); err != nil { + return err + } + } + + return nil +} diff --git a/external/yq/pkg/yqlib/printer_test.go b/external/yq/pkg/yqlib/printer_test.go new file mode 100755 index 0000000..cc7b3db --- /dev/null +++ b/external/yq/pkg/yqlib/printer_test.go @@ -0,0 +1,338 @@ +package yqlib + +import ( + "bufio" + "bytes" + "container/list" + "strings" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +var multiDocSample = `a: banana +--- +a: apple +--- +a: coconut +` + +var multiDocSampleLeadingExpected = `# go cats +--- +a: banana +--- +a: apple +--- +# cool +a: coconut +` + +func nodeToList(candidate *CandidateNode) *list.List { + elMap := list.New() + elMap.PushBack(candidate) + return elMap +} + +func TestPrinterMultipleDocsInSequenceOnly(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + el := inputs.Front() + sample1 := nodeToList(el.Value.(*CandidateNode)) + + el = el.Next() + sample2 := nodeToList(el.Value.(*CandidateNode)) + + el = el.Next() + sample3 := nodeToList(el.Value.(*CandidateNode)) + + err = printer.PrintResults(sample1) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample2) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample3) + if err != nil { + panic(err) + } + + writer.Flush() + test.AssertResult(t, multiDocSample, output.String()) +} + +func TestPrinterMultipleDocsInSequenceWithLeadingContent(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + el := inputs.Front() + el.Value.(*CandidateNode).LeadingContent = "# go cats\n$yqDocSeperator$\n" + sample1 := nodeToList(el.Value.(*CandidateNode)) + + el = el.Next() + el.Value.(*CandidateNode).LeadingContent = "$yqDocSeperator$\n" + sample2 := nodeToList(el.Value.(*CandidateNode)) + + el = el.Next() + el.Value.(*CandidateNode).LeadingContent = "$yqDocSeperator$\n# cool\n" + sample3 := nodeToList(el.Value.(*CandidateNode)) + + err = printer.PrintResults(sample1) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample2) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample3) + if err != nil { + panic(err) + } + + writer.Flush() + + test.AssertResult(t, multiDocSampleLeadingExpected, output.String()) +} + +func TestPrinterMultipleFilesInSequence(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + el := inputs.Front() + elNode := el.Value.(*CandidateNode) + elNode.Document = 0 + elNode.FileIndex = 0 + sample1 := nodeToList(elNode) + + el = el.Next() + elNode = el.Value.(*CandidateNode) + elNode.Document = 0 + elNode.FileIndex = 1 + sample2 := nodeToList(elNode) + + el = el.Next() + elNode = el.Value.(*CandidateNode) + elNode.Document = 0 + elNode.FileIndex = 2 + sample3 := nodeToList(elNode) + + err = printer.PrintResults(sample1) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample2) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample3) + if err != nil { + panic(err) + } + + writer.Flush() + test.AssertResult(t, multiDocSample, output.String()) +} + +func TestPrinterMultipleFilesInSequenceWithLeadingContent(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + el := inputs.Front() + elNode := el.Value.(*CandidateNode) + elNode.Document = 0 + elNode.FileIndex = 0 + elNode.LeadingContent = "# go cats\n$yqDocSeperator$\n" + sample1 := nodeToList(elNode) + + el = el.Next() + elNode = el.Value.(*CandidateNode) + elNode.Document = 0 + elNode.FileIndex = 1 + elNode.LeadingContent = "$yqDocSeperator$\n" + sample2 := nodeToList(elNode) + + el = el.Next() + elNode = el.Value.(*CandidateNode) + elNode.Document = 0 + elNode.FileIndex = 2 + elNode.LeadingContent = "$yqDocSeperator$\n# cool\n" + sample3 := nodeToList(elNode) + + err = printer.PrintResults(sample1) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample2) + if err != nil { + panic(err) + } + + err = printer.PrintResults(sample3) + if err != nil { + panic(err) + } + + writer.Flush() + test.AssertResult(t, multiDocSampleLeadingExpected, output.String()) +} + +func TestPrinterMultipleDocsInSinglePrint(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + err = printer.PrintResults(inputs) + if err != nil { + panic(err) + } + + writer.Flush() + test.AssertResult(t, multiDocSample, output.String()) +} + +func TestPrinterMultipleDocsInSinglePrintWithLeadingDoc(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + inputs.Front().Value.(*CandidateNode).LeadingContent = "# go cats\n$yqDocSeperator$\n" + + err = printer.PrintResults(inputs) + if err != nil { + panic(err) + } + + writer.Flush() + expected := `# go cats +--- +a: banana +--- +a: apple +--- +a: coconut +` + test.AssertResult(t, expected, output.String()) +} + +func TestPrinterMultipleDocsInSinglePrintWithLeadingDocTrailing(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + inputs.Front().Value.(*CandidateNode).LeadingContent = "$yqDocSeperator$\n" + err = printer.PrintResults(inputs) + if err != nil { + panic(err) + } + + writer.Flush() + expected := `--- +a: banana +--- +a: apple +--- +a: coconut +` + test.AssertResult(t, expected, output.String()) +} + +func TestPrinterScalarWithLeadingCont(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, true) + + node, err := getExpressionParser().ParseExpression(".a") + if err != nil { + panic(err) + } + streamEvaluator := NewStreamEvaluator() + _, err = streamEvaluator.Evaluate("sample", strings.NewReader(multiDocSample), node, printer, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + writer.Flush() + expected := `banana +--- +apple +--- +coconut +` + test.AssertResult(t, expected, output.String()) +} + +func TestPrinterMultipleDocsJson(t *testing.T) { + var output bytes.Buffer + var writer = bufio.NewWriter(&output) + // note printDocSeparators is true, it should still not print document separators + // when outputing JSON. + printer := NewPrinter(NewJSONEncoder(0, false, false), NewSinglePrinterWriter(writer)) + + inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences)) + if err != nil { + panic(err) + } + + inputs.Front().Value.(*CandidateNode).LeadingContent = "# ignore this\n" + + err = printer.PrintResults(inputs) + if err != nil { + panic(err) + } + + expected := `{"a":"banana"} +{"a":"apple"} +{"a":"coconut"} +` + + writer.Flush() + test.AssertResult(t, expected, output.String()) +} diff --git a/external/yq/pkg/yqlib/printer_writer.go b/external/yq/pkg/yqlib/printer_writer.go new file mode 100755 index 0000000..daa1078 --- /dev/null +++ b/external/yq/pkg/yqlib/printer_writer.go @@ -0,0 +1,85 @@ +package yqlib + +import ( + "bufio" + "fmt" + "io" + "os" + "regexp" + + "gopkg.in/yaml.v3" +) + +type PrinterWriter interface { + GetWriter(node *CandidateNode) (*bufio.Writer, error) +} + +type singlePrinterWriter struct { + bufferedWriter *bufio.Writer +} + +func NewSinglePrinterWriter(writer io.Writer) PrinterWriter { + return &singlePrinterWriter{ + bufferedWriter: bufio.NewWriter(writer), + } +} + +func (sp *singlePrinterWriter) GetWriter(node *CandidateNode) (*bufio.Writer, error) { + return sp.bufferedWriter, nil +} + +type multiPrintWriter struct { + treeNavigator DataTreeNavigator + nameExpression *ExpressionNode + extension string + index int +} + +func NewMultiPrinterWriter(expression *ExpressionNode, format PrinterOutputFormat) PrinterWriter { + extension := "yml" + + switch format { + case JSONOutputFormat: + extension = "json" + case PropsOutputFormat: + extension = "properties" + } + + return &multiPrintWriter{ + nameExpression: expression, + extension: extension, + treeNavigator: NewDataTreeNavigator(), + index: 0, + } +} + +func (sp *multiPrintWriter) GetWriter(node *CandidateNode) (*bufio.Writer, error) { + name := "" + + indexVariableNode := yaml.Node{Kind: yaml.ScalarNode, Tag: "!!int", Value: fmt.Sprintf("%v", sp.index)} + indexVariableCandidate := CandidateNode{Node: &indexVariableNode} + + context := Context{MatchingNodes: node.AsList()} + context.SetVariable("index", indexVariableCandidate.AsList()) + result, err := sp.treeNavigator.GetMatchingNodes(context, sp.nameExpression) + if err != nil { + return nil, err + } + if result.MatchingNodes.Len() > 0 { + name = result.MatchingNodes.Front().Value.(*CandidateNode).Node.Value + } + var extensionRegexp = regexp.MustCompile(`\.[a-zA-Z0-9]+$`) + if !extensionRegexp.MatchString(name) { + name = fmt.Sprintf("%v.%v", name, sp.extension) + } + + f, err := os.Create(name) + + if err != nil { + return nil, err + } + sp.index = sp.index + 1 + + return bufio.NewWriter(f), nil + +} diff --git a/external/yq/pkg/yqlib/properties_test.go b/external/yq/pkg/yqlib/properties_test.go new file mode 100755 index 0000000..324a46d --- /dev/null +++ b/external/yq/pkg/yqlib/properties_test.go @@ -0,0 +1,350 @@ +package yqlib + +import ( + "bufio" + "fmt" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +const propertiesWithCommentsOnMap = `this.thing = hi hi +# important notes +# about this value +this.value = cool +` + +const expectedPropertiesWithCommentsOnMapProps = `this.thing = hi hi + +# important notes +# about this value +this.value = cool +` + +const expectedPropertiesWithCommentsOnMapYaml = `this: + thing: hi hi + # important notes + # about this value + value: cool +` + +const propertiesWithCommentInArray = ` +this.array.0 = cat +# important notes +# about dogs +this.array.1 = dog +` + +const expectedPropertiesWithCommentInArrayProps = `this.array.0 = cat + +# important notes +# about dogs +this.array.1 = dog +` + +const expectedPropertiesWithCommentInArrayYaml = `this: + array: + - cat + # important notes + # about dogs + - dog +` + +const samplePropertiesYaml = `# block comments come through +person: # neither do comments on maps + name: Mike Wazowski # comments on values appear + pets: + - cat # comments on array values appear + food: [pizza] # comments on arrays do not +emptyArray: [] +emptyMap: [] +` + +const expectedPropertiesUnwrapped = `# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza +` + +const expectedPropertiesWrapped = `# block comments come through +# comments on values appear +person.name = "Mike Wazowski" + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza +` + +const expectedUpdatedProperties = `# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = dog +person.food.0 = pizza +` + +const expectedDecodedYaml = `person: + # block comments come through + # comments on values appear + name: Mike Wazowski + pets: + # comments on array values appear + - cat + food: + - pizza +` + +const expectedPropertiesNoComments = `person.name = Mike Wazowski +person.pets.0 = cat +person.food.0 = pizza +` + +const expectedPropertiesWithEmptyMapsAndArrays = `# block comments come through +# comments on values appear +person.name = Mike Wazowski + +# comments on array values appear +person.pets.0 = cat +person.food.0 = pizza +emptyArray = +emptyMap = +` + +var propertyScenarios = []formatScenario{ + { + description: "Encode properties", + subdescription: "Note that empty arrays and maps are not encoded by default.", + input: samplePropertiesYaml, + expected: expectedPropertiesUnwrapped, + }, + { + description: "Encode properties: scalar encapsulation", + subdescription: "Note that string values with blank characters in them are encapsulated with double quotes", + input: samplePropertiesYaml, + expected: expectedPropertiesWrapped, + scenarioType: "encode-wrapped", + }, + { + description: "Encode properties: no comments", + input: samplePropertiesYaml, + expected: expectedPropertiesNoComments, + expression: `... comments = ""`, + }, + { + description: "Encode properties: include empty maps and arrays", + subdescription: "Use a yq expression to set the empty maps and sequences to your desired value.", + expression: `(.. | select( (tag == "!!map" or tag =="!!seq") and length == 0)) = ""`, + input: samplePropertiesYaml, + expected: expectedPropertiesWithEmptyMapsAndArrays, + }, + { + description: "Decode properties", + input: expectedPropertiesUnwrapped, + expected: expectedDecodedYaml, + scenarioType: "decode", + }, + { + description: "Decode properties - array should be a map", + subdescription: "If you have a numeric map key in your property files, use array_to_map to convert them to maps.", + input: `things.10 = mike`, + expression: `.things |= array_to_map`, + expected: "things:\n 10: mike\n", + scenarioType: "decode", + }, + { + description: "does not expand automatically", + skipDoc: true, + input: "mike = ${dontExpand} this", + expected: "mike: ${dontExpand} this\n", + scenarioType: "decode", + }, + { + description: "Roundtrip", + input: expectedPropertiesUnwrapped, + expression: `.person.pets.0 = "dog"`, + expected: expectedUpdatedProperties, + scenarioType: "roundtrip", + }, + { + skipDoc: true, + description: "comments on arrays roundtrip", + input: propertiesWithCommentInArray, + expected: expectedPropertiesWithCommentInArrayProps, + scenarioType: "roundtrip", + }, + { + skipDoc: true, + description: "comments on arrays decode", + input: propertiesWithCommentInArray, + expected: expectedPropertiesWithCommentInArrayYaml, + scenarioType: "decode", + }, + { + skipDoc: true, + description: "comments on map roundtrip", + input: propertiesWithCommentsOnMap, + expected: expectedPropertiesWithCommentsOnMapProps, + scenarioType: "roundtrip", + }, + { + skipDoc: true, + description: "comments on map decode", + input: propertiesWithCommentsOnMap, + expected: expectedPropertiesWithCommentsOnMapYaml, + scenarioType: "decode", + }, + { + description: "Empty doc", + skipDoc: true, + input: "", + expected: "", + scenarioType: "decode", + }, +} + +func documentUnwrappedEncodePropertyScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -o=props '%v' sample.yml\n```\n", expression)) + } else { + writeOrPanic(w, "```bash\nyq -o=props sample.yml\n```\n") + } + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```properties\n%v```\n\n", mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewPropertiesEncoder(true)))) +} + +func documentWrappedEncodePropertyScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -o=props --unwrapScalar=false '%v' sample.yml\n```\n", expression)) + } else { + writeOrPanic(w, "```bash\nyq -o=props --unwrapScalar=false sample.yml\n```\n") + } + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```properties\n%v```\n\n", mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewPropertiesEncoder(false)))) +} + +func documentDecodePropertyScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.properties file of:\n") + writeOrPanic(w, fmt.Sprintf("```properties\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=props '%v' sample.properties\n```\n", expression)) + } else { + writeOrPanic(w, "```bash\nyq -p=props sample.properties\n```\n") + } + + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", mustProcessFormatScenario(s, NewPropertiesDecoder(), NewYamlEncoder(s.indent, false, ConfiguredYamlPreferences)))) +} + +func documentRoundTripPropertyScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.properties file of:\n") + writeOrPanic(w, fmt.Sprintf("```properties\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + + expression := s.expression + if expression != "" { + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=props -o=props '%v' sample.properties\n```\n", expression)) + } else { + writeOrPanic(w, "```bash\nyq -p=props -o=props sample.properties\n```\n") + } + + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```properties\n%v```\n\n", mustProcessFormatScenario(s, NewPropertiesDecoder(), NewPropertiesEncoder(true)))) +} + +func documentPropertyScenario(t *testing.T, w *bufio.Writer, i interface{}) { + s := i.(formatScenario) + if s.skipDoc { + return + } + switch s.scenarioType { + case "": + documentUnwrappedEncodePropertyScenario(w, s) + case "decode": + documentDecodePropertyScenario(w, s) + case "encode-wrapped": + documentWrappedEncodePropertyScenario(w, s) + case "roundtrip": + documentRoundTripPropertyScenario(w, s) + + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func TestPropertyScenarios(t *testing.T) { + for _, s := range propertyScenarios { + switch s.scenarioType { + case "": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewPropertiesEncoder(true)), s.description) + case "decode": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewPropertiesDecoder(), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "encode-wrapped": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewPropertiesEncoder(false)), s.description) + case "roundtrip": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewPropertiesDecoder(), NewPropertiesEncoder(true)), s.description) + + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } + } + genericScenarios := make([]interface{}, len(propertyScenarios)) + for i, s := range propertyScenarios { + genericScenarios[i] = s + } + documentScenarios(t, "usage", "properties", genericScenarios, documentPropertyScenario) +} diff --git a/external/yq/pkg/yqlib/stream_evaluator.go b/external/yq/pkg/yqlib/stream_evaluator.go new file mode 100755 index 0000000..ef78ca9 --- /dev/null +++ b/external/yq/pkg/yqlib/stream_evaluator.go @@ -0,0 +1,119 @@ +package yqlib + +import ( + "container/list" + "errors" + "fmt" + "io" + "os" + + yaml "gopkg.in/yaml.v3" +) + +// A yaml expression evaluator that runs the expression multiple times for each given yaml document. +// Uses less memory than loading all documents and running the expression once, but this cannot process +// cross document expressions. +type StreamEvaluator interface { + Evaluate(filename string, reader io.Reader, node *ExpressionNode, printer Printer, decoder Decoder) (uint, error) + EvaluateFiles(expression string, filenames []string, printer Printer, decoder Decoder) error + EvaluateNew(expression string, printer Printer) error +} + +type streamEvaluator struct { + treeNavigator DataTreeNavigator + fileIndex int +} + +func NewStreamEvaluator() StreamEvaluator { + return &streamEvaluator{treeNavigator: NewDataTreeNavigator()} +} + +func (s *streamEvaluator) EvaluateNew(expression string, printer Printer) error { + node, err := ExpressionParser.ParseExpression(expression) + if err != nil { + return err + } + candidateNode := &CandidateNode{ + Document: 0, + Filename: "", + Node: &yaml.Node{Kind: yaml.DocumentNode, Content: []*yaml.Node{{Tag: "!!null", Kind: yaml.ScalarNode}}}, + FileIndex: 0, + } + inputList := list.New() + inputList.PushBack(candidateNode) + + result, errorParsing := s.treeNavigator.GetMatchingNodes(Context{MatchingNodes: inputList}, node) + if errorParsing != nil { + return errorParsing + } + return printer.PrintResults(result.MatchingNodes) +} + +func (s *streamEvaluator) EvaluateFiles(expression string, filenames []string, printer Printer, decoder Decoder) error { + var totalProcessDocs uint + node, err := ExpressionParser.ParseExpression(expression) + if err != nil { + return err + } + + for _, filename := range filenames { + reader, err := readStream(filename) + + if err != nil { + return err + } + processedDocs, err := s.Evaluate(filename, reader, node, printer, decoder) + if err != nil { + return err + } + totalProcessDocs = totalProcessDocs + processedDocs + + switch reader := reader.(type) { + case *os.File: + safelyCloseFile(reader) + } + } + + if totalProcessDocs == 0 { + // problem is I've already slurped the leading content sadface + return s.EvaluateNew(expression, printer) + } + + return nil +} + +func (s *streamEvaluator) Evaluate(filename string, reader io.Reader, node *ExpressionNode, printer Printer, decoder Decoder) (uint, error) { + + var currentIndex uint + err := decoder.Init(reader) + if err != nil { + return 0, err + } + for { + candidateNode, errorReading := decoder.Decode() + + if errors.Is(errorReading, io.EOF) { + s.fileIndex = s.fileIndex + 1 + return currentIndex, nil + } else if errorReading != nil { + return currentIndex, fmt.Errorf("bad file '%v': %w", filename, errorReading) + } + candidateNode.Document = currentIndex + candidateNode.Filename = filename + candidateNode.FileIndex = s.fileIndex + + inputList := list.New() + inputList.PushBack(candidateNode) + + result, errorParsing := s.treeNavigator.GetMatchingNodes(Context{MatchingNodes: inputList}, node) + if errorParsing != nil { + return currentIndex, errorParsing + } + err := printer.PrintResults(result.MatchingNodes) + + if err != nil { + return currentIndex, err + } + currentIndex = currentIndex + 1 + } +} diff --git a/external/yq/pkg/yqlib/string_evaluator.go b/external/yq/pkg/yqlib/string_evaluator.go new file mode 100755 index 0000000..59d451c --- /dev/null +++ b/external/yq/pkg/yqlib/string_evaluator.go @@ -0,0 +1,73 @@ +package yqlib + +import ( + "bufio" + "bytes" + "container/list" + "errors" + "fmt" + "io" + "strings" +) + +type StringEvaluator interface { + Evaluate(expression string, input string, encoder Encoder, decoder Decoder) (string, error) +} + +type stringEvaluator struct { + treeNavigator DataTreeNavigator + fileIndex int +} + +func NewStringEvaluator() StringEvaluator { + return &stringEvaluator{ + treeNavigator: NewDataTreeNavigator(), + } +} + +func (s *stringEvaluator) Evaluate(expression string, input string, encoder Encoder, decoder Decoder) (string, error) { + + // Use bytes.Buffer for output of string + out := new(bytes.Buffer) + printer := NewPrinter(encoder, NewSinglePrinterWriter(out)) + + InitExpressionParser() + node, err := ExpressionParser.ParseExpression(expression) + if err != nil { + return "", err + } + + reader := bufio.NewReader(strings.NewReader(input)) + + var currentIndex uint + err = decoder.Init(reader) + if err != nil { + return "", err + } + for { + candidateNode, errorReading := decoder.Decode() + + if errors.Is(errorReading, io.EOF) { + s.fileIndex = s.fileIndex + 1 + return out.String(), nil + } else if errorReading != nil { + return "", fmt.Errorf("bad input '%v': %w", input, errorReading) + } + candidateNode.Document = currentIndex + candidateNode.FileIndex = s.fileIndex + + inputList := list.New() + inputList.PushBack(candidateNode) + + result, errorParsing := s.treeNavigator.GetMatchingNodes(Context{MatchingNodes: inputList}, node) + if errorParsing != nil { + return "", errorParsing + } + err = printer.PrintResults(result.MatchingNodes) + + if err != nil { + return "", err + } + currentIndex = currentIndex + 1 + } +} diff --git a/external/yq/pkg/yqlib/string_evaluator_test.go b/external/yq/pkg/yqlib/string_evaluator_test.go new file mode 100755 index 0000000..e8e7ddf --- /dev/null +++ b/external/yq/pkg/yqlib/string_evaluator_test.go @@ -0,0 +1,30 @@ +package yqlib + +import ( + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +func TestStringEvaluator_Evaluate_Nominal(t *testing.T) { + expected_output := `` + + `yq` + "\n" + + `---` + "\n" + + `jq` + "\n" + expression := ".[].name" + input := `` + + ` - name: yq` + "\n" + + ` description: yq is a portable command-line YAML, JSON and XML processor` + "\n" + + `---` + "\n" + + ` - name: jq` + "\n" + + ` description: Command-line JSON processor` + "\n" + encoder := NewYamlEncoder(2, true, ConfiguredYamlPreferences) + decoder := NewYamlDecoder(ConfiguredYamlPreferences) + + result, err := NewStringEvaluator().Evaluate(expression, input, encoder, decoder) + if err != nil { + t.Error(err) + } + + test.AssertResult(t, expected_output, result) +} diff --git a/external/yq/pkg/yqlib/utils.go b/external/yq/pkg/yqlib/utils.go new file mode 100755 index 0000000..a1afff2 --- /dev/null +++ b/external/yq/pkg/yqlib/utils.go @@ -0,0 +1,63 @@ +package yqlib + +import ( + "bufio" + "container/list" + "errors" + "fmt" + "io" + "os" +) + +func readStream(filename string) (io.Reader, error) { + var reader *bufio.Reader + if filename == "-" { + reader = bufio.NewReader(os.Stdin) + } else { + // ignore CWE-22 gosec issue - that's more targeted for http based apps that run in a public directory, + // and ensuring that it's not possible to give a path to a file outside thar directory. + file, err := os.Open(filename) // #nosec + if err != nil { + return nil, err + } + reader = bufio.NewReader(file) + } + return reader, nil + +} + +func writeString(writer io.Writer, txt string) error { + _, errorWriting := writer.Write([]byte(txt)) + return errorWriting +} + +func readDocuments(reader io.Reader, filename string, fileIndex int, decoder Decoder) (*list.List, error) { + err := decoder.Init(reader) + if err != nil { + return nil, err + } + inputList := list.New() + var currentIndex uint + + for { + candidateNode, errorReading := decoder.Decode() + + if errors.Is(errorReading, io.EOF) { + switch reader := reader.(type) { + case *os.File: + safelyCloseFile(reader) + } + return inputList, nil + } else if errorReading != nil { + return nil, fmt.Errorf("bad file '%v': %w", filename, errorReading) + } + candidateNode.Document = currentIndex + candidateNode.Filename = filename + candidateNode.FileIndex = fileIndex + candidateNode.EvaluateTogether = true + + inputList.PushBack(candidateNode) + + currentIndex = currentIndex + 1 + } +} diff --git a/external/yq/pkg/yqlib/write_in_place_handler.go b/external/yq/pkg/yqlib/write_in_place_handler.go new file mode 100755 index 0000000..d3bbb48 --- /dev/null +++ b/external/yq/pkg/yqlib/write_in_place_handler.go @@ -0,0 +1,52 @@ +package yqlib + +import ( + "os" +) + +type writeInPlaceHandler interface { + CreateTempFile() (*os.File, error) + FinishWriteInPlace(evaluatedSuccessfully bool) error +} + +type writeInPlaceHandlerImpl struct { + inputFilename string + tempFile *os.File +} + +func NewWriteInPlaceHandler(inputFile string) writeInPlaceHandler { + + return &writeInPlaceHandlerImpl{inputFile, nil} +} + +func (w *writeInPlaceHandlerImpl) CreateTempFile() (*os.File, error) { + file, err := createTempFile() + + if err != nil { + return nil, err + } + info, err := os.Stat(w.inputFilename) + if err != nil { + return nil, err + } + err = os.Chmod(file.Name(), info.Mode()) + + if err != nil { + return nil, err + } + log.Debug("WriteInPlaceHandler: writing to tempfile: %v", file.Name()) + w.tempFile = file + return file, err +} + +func (w *writeInPlaceHandlerImpl) FinishWriteInPlace(evaluatedSuccessfully bool) error { + log.Debug("Going to write-inplace, evaluatedSuccessfully=%v, target=%v", evaluatedSuccessfully, w.inputFilename) + safelyCloseFile(w.tempFile) + if evaluatedSuccessfully { + log.Debug("Moving temp file to target") + return tryRenameFile(w.tempFile.Name(), w.inputFilename) + } + tryRemoveTempFile(w.tempFile.Name()) + + return nil +} diff --git a/external/yq/pkg/yqlib/xml.go b/external/yq/pkg/yqlib/xml.go new file mode 100755 index 0000000..09bb872 --- /dev/null +++ b/external/yq/pkg/yqlib/xml.go @@ -0,0 +1,29 @@ +package yqlib + +type XmlPreferences struct { + AttributePrefix string + ContentName string + StrictMode bool + KeepNamespace bool + UseRawToken bool + ProcInstPrefix string + DirectiveName string + SkipProcInst bool + SkipDirectives bool +} + +func NewDefaultXmlPreferences() XmlPreferences { + return XmlPreferences{ + AttributePrefix: "+@", + ContentName: "+content", + StrictMode: false, + KeepNamespace: true, + UseRawToken: true, + ProcInstPrefix: "+p_", + DirectiveName: "+directive", + SkipProcInst: false, + SkipDirectives: false, + } +} + +var ConfiguredXMLPreferences = NewDefaultXmlPreferences() diff --git a/external/yq/pkg/yqlib/xml_test.go b/external/yq/pkg/yqlib/xml_test.go new file mode 100755 index 0000000..be55325 --- /dev/null +++ b/external/yq/pkg/yqlib/xml_test.go @@ -0,0 +1,660 @@ +package yqlib + +import ( + "bufio" + "fmt" + "testing" + + "github.com/mikefarah/yq/v4/test" +) + +const inputXMLWithComments = ` + + + + 3 + + + + z + + + + + + +` +const inputXMLWithCommentsWithSubChild = ` + + + + 3 + + + + + + + + + + +` + +const expectedDecodeYamlWithSubChild = `# before cat +cat: + # in cat before + x: "3" # multi + # line comment + # for x + # before y + + y: + # in y before + d: + # in d before + z: + +@sweet: cool + # in d after + # in y after + # in_cat_after +# after cat +` + +const inputXMLWithCommentsWithArray = ` + + + + 3 + + + + + + + + + + + +` + +const expectedDecodeYamlWithArray = `# before cat +cat: + # in cat before + x: "3" # multi + # line comment + # for x + # before y + + y: + # in y before + d: + - # in d before + z: + +@sweet: cool + # in d after + - # in d2 before + z: + +@sweet: cool2 + # in d2 after + # in y after + # in_cat_after +# after cat +` + +const expectedDecodeYamlWithComments = `# before cat +cat: + # in cat before + x: "3" # multi + # line comment + # for x + # before y + + y: + # in y before + # in d before + d: z # in d after + # in y after + # in_cat_after +# after cat +` + +const expectedRoundtripXMLWithComments = ` + 3 + + z + + +` + +const yamlWithComments = `# header comment +# above_cat +cat: # inline_cat + # above_array + array: # inline_array + - val1 # inline_val1 + # above_val2 + - val2 # inline_val2 +# below_cat +` + +const expectedXMLWithComments = ` + val1 + val2 + +` + +const inputXMLWithNamespacedAttr = ` + +` + +const expectedYAMLWithNamespacedAttr = `+p_xml: version="1.0" +map: + +@xmlns: some-namespace + +@xmlns:xsi: some-instance + +@xsi:schemaLocation: some-url +` + +const expectedYAMLWithRawNamespacedAttr = `+p_xml: version="1.0" +map: + +@xmlns: some-namespace + +@xmlns:xsi: some-instance + +@xsi:schemaLocation: some-url +` + +const expectedYAMLWithoutRawNamespacedAttr = `+p_xml: version="1.0" +map: + +@xmlns: some-namespace + +@xmlns:xsi: some-instance + +@some-instance:schemaLocation: some-url +` + +const xmlWithCustomDtd = ` + + + +]> + + &writer;©right; +` + +const expectedDtd = ` + + +]> + + &writer;&copyright; + +` + +const expectedSkippedDtd = ` + + &writer;&copyright; + +` + +const xmlWithProcInstAndDirectives = ` + + + + + things + +` + +const yamlWithProcInstAndDirectives = `+p_xml: version="1.0" ++directive: 'DOCTYPE config SYSTEM "/etc/iwatch/iwatch.dtd" ' +apple: + +p_coolioo: version="1.0" + +directive: 'CATYPE meow purr puss ' + b: things +` + +const expectedXmlWithProcInstAndDirectives = ` + + + things + +` + +var xmlScenarios = []formatScenario{ + { + description: "Parse xml: simple", + subdescription: "Notice how all the values are strings, see the next example on how you can fix that.", + input: "\n\n meow\n 4\n true\n", + expected: "+p_xml: version=\"1.0\" encoding=\"UTF-8\"\ncat:\n says: meow\n legs: \"4\"\n cute: \"true\"\n", + }, + { + description: "Parse xml: number", + subdescription: "All values are assumed to be strings when parsing XML, but you can use the `from_yaml` operator on all the strings values to autoparse into the correct type.", + input: "\n\n meow\n 4\n true\n", + expression: " (.. | select(tag == \"!!str\")) |= from_yaml", + expected: "+p_xml: version=\"1.0\" encoding=\"UTF-8\"\ncat:\n says: meow\n legs: 4\n cute: true\n", + }, + { + description: "Parse xml: array", + subdescription: "Consecutive nodes with identical xml names are assumed to be arrays.", + input: "\ncat\ngoat", + expected: "+p_xml: version=\"1.0\" encoding=\"UTF-8\"\nanimal:\n - cat\n - goat\n", + }, + { + description: "Parse xml: attributes", + subdescription: "Attributes are converted to fields, with the default attribute prefix '+'. Use '--xml-attribute-prefix` to set your own.", + input: "\n\n 7\n", + expected: "+p_xml: version=\"1.0\" encoding=\"UTF-8\"\ncat:\n +@legs: \"4\"\n legs: \"7\"\n", + }, + { + description: "Parse xml: attributes with content", + subdescription: "Content is added as a field, using the default content name of `+content`. Use `--xml-content-name` to set your own.", + input: "\nmeow", + expected: "+p_xml: version=\"1.0\" encoding=\"UTF-8\"\ncat:\n +content: meow\n +@legs: \"4\"\n", + }, + { + description: "Parse xml: custom dtd", + subdescription: "DTD entities are processed as directives.", + input: xmlWithCustomDtd, + expected: expectedDtd, + scenarioType: "roundtrip", + }, + { + description: "Roundtrip with name spaced attributes", + skipDoc: true, + input: inputXMLWithNamespacedAttr, + expected: inputXMLWithNamespacedAttr, + scenarioType: "roundtrip", + }, + { + description: "Parse xml: skip custom dtd", + subdescription: "DTDs are directives, skip over directives to skip DTDs.", + input: xmlWithCustomDtd, + expected: expectedSkippedDtd, + scenarioType: "roundtrip-skip-directives", + }, + { + description: "Parse xml: with comments", + subdescription: "A best attempt is made to preserve comments.", + input: inputXMLWithComments, + expected: expectedDecodeYamlWithComments, + scenarioType: "decode", + }, + { + description: "Empty doc", + skipDoc: true, + input: "", + expected: "\n", + scenarioType: "decode", + }, + { + description: "Empty single node", + skipDoc: true, + input: "", + expected: "a:\n", + scenarioType: "decode", + }, + { + description: "Empty close node", + skipDoc: true, + input: "", + expected: "a:\n", + scenarioType: "decode", + }, + { + description: "Nested empty", + skipDoc: true, + input: "", + expected: "a:\n b:\n", + scenarioType: "decode", + }, + { + description: "Parse xml: with comments subchild", + skipDoc: true, + input: inputXMLWithCommentsWithSubChild, + expected: expectedDecodeYamlWithSubChild, + scenarioType: "decode", + }, + { + description: "Parse xml: with comments array", + skipDoc: true, + input: inputXMLWithCommentsWithArray, + expected: expectedDecodeYamlWithArray, + scenarioType: "decode", + }, + { + description: "Parse xml: keep attribute namespace", + subdescription: fmt.Sprintf(`Defaults to %v`, ConfiguredXMLPreferences.KeepNamespace), + skipDoc: false, + input: inputXMLWithNamespacedAttr, + expected: expectedYAMLWithNamespacedAttr, + scenarioType: "decode-keep-ns", + }, + { + description: "Parse xml: keep raw attribute namespace", + skipDoc: true, + input: inputXMLWithNamespacedAttr, + expected: expectedYAMLWithRawNamespacedAttr, + scenarioType: "decode-raw-token", + }, + { + description: "Parse xml: keep raw attribute namespace", + subdescription: fmt.Sprintf(`Defaults to %v`, ConfiguredXMLPreferences.UseRawToken), + skipDoc: false, + input: inputXMLWithNamespacedAttr, + expected: expectedYAMLWithoutRawNamespacedAttr, + scenarioType: "decode-raw-token-off", + }, + { + description: "Encode xml: simple", + input: "cat: purrs", + expected: "purrs\n", + scenarioType: "encode", + }, + { + description: "includes map tags", + skipDoc: true, + input: "purrs\n", + expression: `tag`, + expected: "!!map\n", + scenarioType: "decode", + }, + { + description: "includes array tags", + skipDoc: true, + input: "purrspurrs\n", + expression: `.cat | tag`, + expected: "!!seq\n", + scenarioType: "decode", + }, + { + description: "Encode xml: array", + input: "pets:\n cat:\n - purrs\n - meows", + expected: "\n purrs\n meows\n\n", + scenarioType: "encode", + }, + { + description: "Encode xml: attributes", + subdescription: "Fields with the matching xml-attribute-prefix are assumed to be attributes.", + input: "cat:\n +@name: tiger\n meows: true\n", + expected: "\n true\n\n", + scenarioType: "encode", + }, + { + description: "double prefix", + skipDoc: true, + input: "cat:\n +@+@name: tiger\n meows: true\n", + expected: "\n true\n\n", + scenarioType: "encode", + }, + { + description: "arrays cannot be encoded", + skipDoc: true, + input: "[cat, dog, fish]", + expectedError: "cannot encode !!seq to XML - only maps can be encoded", + scenarioType: "encode-error", + }, + { + description: "arrays cannot be encoded - 2", + skipDoc: true, + input: "[cat, dog]", + expectedError: "cannot encode !!seq to XML - only maps can be encoded", + scenarioType: "encode-error", + }, + { + description: "scalars cannot be encoded", + skipDoc: true, + input: "mike", + expectedError: "cannot encode !!str to XML - only maps can be encoded", + scenarioType: "encode-error", + }, + { + description: "Encode xml: attributes with content", + subdescription: "Fields with the matching xml-content-name is assumed to be content.", + input: "cat:\n +@name: tiger\n +content: cool\n", + expected: "cool\n", + scenarioType: "encode", + }, + { + description: "Encode xml: comments", + subdescription: "A best attempt is made to copy comments to xml.", + input: yamlWithComments, + expected: expectedXMLWithComments, + scenarioType: "encode", + }, + { + description: "Encode: doctype and xml declaration", + subdescription: "Use the special xml names to add/modify proc instructions and directives.", + input: yamlWithProcInstAndDirectives, + expected: expectedXmlWithProcInstAndDirectives, + scenarioType: "encode", + }, + { + description: "Round trip: with comments", + subdescription: "A best effort is made, but comment positions and white space are not preserved perfectly.", + input: inputXMLWithComments, + expected: expectedRoundtripXMLWithComments, + scenarioType: "roundtrip", + }, + { + description: "Roundtrip: with doctype and declaration", + subdescription: "yq parses XML proc instructions and directives into nodes.\nUnfortunately the underlying XML parser loses whitespace information.", + input: xmlWithProcInstAndDirectives, + expected: expectedXmlWithProcInstAndDirectives, + scenarioType: "roundtrip", + }, +} + +func testXMLScenario(t *testing.T, s formatScenario) { + switch s.scenarioType { + case "", "decode": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewXMLDecoder(ConfiguredXMLPreferences), NewYamlEncoder(4, false, ConfiguredYamlPreferences)), s.description) + case "encode": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewXMLEncoder(2, ConfiguredXMLPreferences)), s.description) + case "roundtrip": + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewXMLDecoder(ConfiguredXMLPreferences), NewXMLEncoder(2, ConfiguredXMLPreferences)), s.description) + case "decode-keep-ns": + prefs := NewDefaultXmlPreferences() + prefs.KeepNamespace = true + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "decode-raw-token": + prefs := NewDefaultXmlPreferences() + prefs.UseRawToken = true + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "decode-raw-token-off": + prefs := NewDefaultXmlPreferences() + prefs.UseRawToken = false + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewYamlEncoder(2, false, ConfiguredYamlPreferences)), s.description) + case "roundtrip-skip-directives": + prefs := NewDefaultXmlPreferences() + prefs.SkipDirectives = true + test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewXMLEncoder(2, prefs)), s.description) + case "encode-error": + result, err := processFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewXMLEncoder(2, NewDefaultXmlPreferences())) + if err == nil { + t.Errorf("Expected error '%v' but it worked: %v", s.expectedError, result) + } else { + test.AssertResultComplexWithContext(t, s.expectedError, err.Error(), s.description) + } + + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func documentXMLScenario(t *testing.T, w *bufio.Writer, i interface{}) { + s := i.(formatScenario) + + if s.skipDoc { + return + } + switch s.scenarioType { + case "", "decode": + documentXMLDecodeScenario(w, s) + case "encode": + documentXMLEncodeScenario(w, s) + case "roundtrip": + documentXMLRoundTripScenario(w, s) + case "decode-keep-ns": + documentXMLDecodeKeepNsScenario(w, s) + case "decode-raw-token-off": + documentXMLDecodeKeepNsRawTokenScenario(w, s) + case "roundtrip-skip-directives": + documentXMLSkipDirectrivesScenario(w, s) + + default: + panic(fmt.Sprintf("unhandled scenario type %q", s.scenarioType)) + } +} + +func documentXMLDecodeScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.xml file of:\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + expression := s.expression + if expression == "" { + expression = "." + } + writeOrPanic(w, fmt.Sprintf("```bash\nyq -p=xml '%v' sample.xml\n```\n", expression)) + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```yaml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(ConfiguredXMLPreferences), NewYamlEncoder(2, false, ConfiguredYamlPreferences)))) +} + +func documentXMLDecodeKeepNsScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.xml file of:\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, "```bash\nyq -p=xml -o=xml --xml-keep-namespace=false '.' sample.xml\n```\n") + writeOrPanic(w, "will output\n") + prefs := NewDefaultXmlPreferences() + prefs.KeepNamespace = false + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewXMLEncoder(2, prefs)))) + + prefsWithout := NewDefaultXmlPreferences() + prefs.KeepNamespace = true + writeOrPanic(w, "instead of\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(prefsWithout), NewXMLEncoder(2, prefsWithout)))) +} + +func documentXMLDecodeKeepNsRawTokenScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.xml file of:\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, "```bash\nyq -p=xml -o=xml --xml-raw-token=false '.' sample.xml\n```\n") + writeOrPanic(w, "will output\n") + + prefs := NewDefaultXmlPreferences() + prefs.UseRawToken = false + + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewXMLEncoder(2, prefs)))) + + prefsWithout := NewDefaultXmlPreferences() + prefsWithout.UseRawToken = true + + writeOrPanic(w, "instead of\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(prefsWithout), NewXMLEncoder(2, prefsWithout)))) +} + +func documentXMLEncodeScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.yml file of:\n") + writeOrPanic(w, fmt.Sprintf("```yaml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, "```bash\nyq -o=xml '.' sample.yml\n```\n") + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewXMLEncoder(2, ConfiguredXMLPreferences)))) +} + +func documentXMLRoundTripScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.xml file of:\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, "```bash\nyq -p=xml -o=xml '.' sample.xml\n```\n") + writeOrPanic(w, "will output\n") + + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(ConfiguredXMLPreferences), NewXMLEncoder(2, ConfiguredXMLPreferences)))) +} + +func documentXMLSkipDirectrivesScenario(w *bufio.Writer, s formatScenario) { + writeOrPanic(w, fmt.Sprintf("## %v\n", s.description)) + + if s.subdescription != "" { + writeOrPanic(w, s.subdescription) + writeOrPanic(w, "\n\n") + } + + writeOrPanic(w, "Given a sample.xml file of:\n") + writeOrPanic(w, fmt.Sprintf("```xml\n%v\n```\n", s.input)) + + writeOrPanic(w, "then\n") + writeOrPanic(w, "```bash\nyq -p=xml -o=xml --xml-skip-directives '.' sample.xml\n```\n") + writeOrPanic(w, "will output\n") + prefs := NewDefaultXmlPreferences() + prefs.SkipDirectives = true + + writeOrPanic(w, fmt.Sprintf("```xml\n%v```\n\n", mustProcessFormatScenario(s, NewXMLDecoder(prefs), NewXMLEncoder(2, prefs)))) +} + +func TestXMLScenarios(t *testing.T) { + for _, tt := range xmlScenarios { + testXMLScenario(t, tt) + } + genericScenarios := make([]interface{}, len(xmlScenarios)) + for i, s := range xmlScenarios { + genericScenarios[i] = s + } + documentScenarios(t, "usage", "xml", genericScenarios, documentXMLScenario) +} diff --git a/external/yq/pkg/yqlib/yaml.go b/external/yq/pkg/yqlib/yaml.go new file mode 100755 index 0000000..d7c8863 --- /dev/null +++ b/external/yq/pkg/yqlib/yaml.go @@ -0,0 +1,19 @@ +package yqlib + +type YamlPreferences struct { + LeadingContentPreProcessing bool + PrintDocSeparators bool + UnwrapScalar bool + EvaluateTogether bool +} + +func NewDefaultYamlPreferences() YamlPreferences { + return YamlPreferences{ + LeadingContentPreProcessing: true, + PrintDocSeparators: true, + UnwrapScalar: true, + EvaluateTogether: false, + } +} + +var ConfiguredYamlPreferences = NewDefaultYamlPreferences() diff --git a/external/yq/release_instructions.txt b/external/yq/release_instructions.txt new file mode 100755 index 0000000..f7cd58b --- /dev/null +++ b/external/yq/release_instructions.txt @@ -0,0 +1,52 @@ +- update release notes +- increment version in version.go +- increment version in snapcraft.yaml +- make sure local build passes +- run ./scripts/copy-docs.sh (and commit the changed in the yq-book branch) +- commit version update changes +- tag git with same version number +- commit vX tag - this will trigger github actions +- use github actions to publish docker and make github release +- check github updated yq action in marketplace + + +- snapcraft + - will auto create a candidate, test it works then promote + - !! need to update v4/stable as well as latest + + sudo snap remove yq + sudo snap install --edge yq + + then use the UI (https://snapcraft.io/yq/release) + +- brew + - brew bump-formula-pr --url=https://github.com/mikefarah/yq/archive/2.2.0.tar.gz yq + - if that fails with random ruby errors try: + - clearing out the gems rm -rf .gem/ruby/2.3.0 + - export HOMEBREW_FORCE_VENDOR_RUBY=1 + +- docker + - build and push latest and new version tag + - docker build . -t mikefarah/yq:latest -t mikefarah/yq:3 -t mikefarah/yq:3.X + +- debian package (with release script) + - execute the script `./scripts/release-deb.sh` *on the machine having the private + gpg key to sign the generated sources* providing the version to release, the + ppa where deploying the files and the passphrase of the private key if needed: + ``` + ./scripts/release-deb.sh -o output -p -s --passphrase PASSPHRASE VERSION + ``` + +- debian package (manually) + - ensure you get all vendor dependencies before packaging + ```go mod vendor``` + - execute + ```dch -i``` + - fill debian/changelog with changes from last version + - build the package sources + ```debuild -i -I -S -sa``` + (signing with gpg key is required in order to put it to ppa) + - put to PPA + ```dput ppa: ../yq__source.changes``` + (current distro repository is ppa:rmescandon/yq. In case that a new version + is released, please contact rmescandon@gmail.com to bump debian package) diff --git a/external/yq/release_notes.txt b/external/yq/release_notes.txt new file mode 100755 index 0000000..08c05de --- /dev/null +++ b/external/yq/release_notes.txt @@ -0,0 +1,269 @@ +4.30.2: + - Actually updated the default xml prefix :facepalm: + +4.30.1: + - XML users note: the default attribute prefix has change to `+@` to avoid naming conflicts! + - Can use expressions in slice #1419 + - Fixed unhandled exception when decoding CSV thanks @washanhanzi + - Added array_to_map operator for #1415 + - Fixed sorting by date #1412 + - Added check to ensure only maps can be encoded to XML #1408 + - Check merge alias is a map #1425 + - Explicity setting unwrap flag works for json output #437, #1409 + - Bumped go version + + + +4.29.2: + - Fixed null pointer exception when parsing CSV with empty field #1404 + +4.29.1: + - Fixed Square brackets removing update #1342 + - Added slice array operator (.[10:15]) #44 + - XML decoder/encoder now parses directives and proc instructions (#1344). Please use the new skip flags [documented here](https://mikefarah.gitbook.io/yq/usage/xml) to ignore them. + - XML users note that the default attribute prefix will change to `+@` in the 4.30 release to avoid naming conflicts! + - Improved comment handling of decoders (breaking change for yqlib users sorry) + - Fixed load operator bug when loading yaml file with multiple documents + - Bumped Go compiler version + - Bumped dependencies + +4.28.2: + - Fixed Github Actions issues (thanks @mattphelps-8451) + - Fixed bug - can now delete documents #1377 + - Fixed handling of UTF8 encoded CSVs #1373 + - Detect and fail on missing closing brackets #1366 + - yq Github actions now build docker image as part of release + - Bumped dependencies + +4.28.1: + - Added `setpath` and `delpaths` operators, like jq (#1374) + - Added `is_key` operator, to check if a match was a key when recursing + - Added validation when attempting to add sequences to maps (#1341) + +4.27.5: + - Fixed relative merge bug #1333 + +4.27.4: + - Fixed bug in alternative (//) operator, RHS being evaluated when it didn't need to be + - Fixed footer comment issue #1231 + - Github action now runs as root (as recommended by Github Actions doc) + - Updated dependencies + +4.27.3: + - Added new 'c' merge and assign flag that clobbers custom tags + - Bumped go dependency to fix CVE (#1316) + - Updated dependencies + +4.27.2: + - Fixed JSON decoder to maintain object key order. + +4.27.1: + - Added 'json' decoder for support for multiple JSON documents in a single file (e.g. NDJSON) + - Added 'csv' decoding, array of objects encoding, and round-triping + - New StringEvaluator when using yq as a lib (thanks @leviliangtw) + - Fixed XML decoding issue (#1284) + +4.26.1: + - Switched to new expression parser (#1264) + - Don't clobber anchor when adding nodes (#1269) + - New error operator for custom validation (#1259) + - Added support for --wrapScalar=false in properties encoder (#1241) Thanks @dcarbone + - Fix error on multiple assign (#1257) Thanks @care0717 + - Bumped dependency versions + +4.25.4: + - Fixed panic when using multiply assign on multiple documents #1256 Thanks @care0717 + +4.25.3: + - xml decoder now maintains namespaces by default. Use new flags to disable if required. Thanks @rndmit + - Length and other similar operators no longer return comments (#1231) + - When split expression includes an extension, dont add .yml automatically (#1165) + - Map -r to --unwrapScalar to be more a drop in replacement for jq (#1245) Thanks @SuperSandro2000 + - Fixing usage of quoted numeric keys #1247 + - Bumped dependency versions + + +4.25.2: + - Fixed comments disappearing from end of file (#1217) + - Fixed empty base64 decoding error (#1209) + - JSON output now in colors (#1208) + - Added codeql and fixed minor issues + - Bumped go-yaml library + - Bumped go dependency + +4.25.1: +- Can specify a split expression file #1194 +- Fixed append map bug when key matches value in existing map #1200 +- Nicer error message when trying to use merge anchor tags other than maps #1184 +- Fixed Don't automatically read stdin when the null input flag is used +- Added type as an alias for tag #1195 +- Fixes bug when using write in-place with no expression and multiple files #1193 + +4.24.5: + - Fixed scenarios that dropped the first line if it's a comment (#1181) + - Fixed updating existing empty map resulting in single line styling (#1176) + - Fixed `with` operation bug (#1174) + - Bumped go compiler + +4.24.4: + - Fixed docker release build + + +4.24.3: + - Added from_props + - Re-releasing, 4.24.2 release failed to publish correctly. + + +4.24.2: + - Fixing release pipeline for go1.18 + +4.24.1: + - Added comparison operators! (#94) + - Bumped golang to 1.18 (#1153) + - XML parser no longer runs in strict mode (added new flag to run in strict mode) (#1155) + +4.23.1: + - Can now supply the envsubst operator with parameters (nounset, noempty, failfast). See [envsubst](https://mikefarah.gitbook.io/yq/operators/env-variable-operators) for details (#1137) + - Bumped dependencies + - Fixed '+=' problem with multiple matches #1145 + - Fixed bug with "and", "or" evaluating the RHS when not needed + - Fixed potential panic (thanks @mkatychev) + - Tweaked CLI help (thanks @justin-f-perez) + +4.22.1: + - Added [pick] (https://mikefarah.gitbook.io/yq/operators/pick) operator + - Can load expression from a file '--from-file' (#1120) + - Fixed property auto expansion (#1127) + +4.21.1: + - Added [reverse](https://mikefarah.gitbook.io/yq/operators/reverse) operator + - Added [string case](https://mikefarah.gitbook.io/yq/operators/string-operators) operators + - Added [base64 support](https://mikefarah.gitbook.io/yq/operators/encode-decode) + - Added [line](https://mikefarah.gitbook.io/yq/operators/line) and [column](https://mikefarah.gitbook.io/yq/operators/column) operators + - Bumped dependency versions + +4.20.2: + - Fixed self assignment issue (#1107) + - Fixed bad capture groups with multiple matches (#1114) + - No longer auto-read from STDIN if there are files given (#1115) + - Added missing load_props operator + +4.20.1: + - New [Date Operators](https://mikefarah.gitbook.io/yq/operators/datetime) (now, tz, add and subtract durations from dates) + - Can now decode property files! + - New flag to manually set expression if required + - ZSH completion bug fix (#1108) thanks @whi-tw + - Fixed SEGV error (#1096) + - Fixed Github actions issues (it pipes in /dev/null) for XML + - Fixed bug - handle expressions that match a directory (e.g. ".") + +4.19.1: + - New [eval](https://mikefarah.gitbook.io/yq/operators/eval) _operator_ that allows dynamic expression evaluation (e.g. from a env variable) (#1087) + - Adding new elements to array now automatically applies styling of existing elements (#722) + +4.18.1: + - `eval` is now the _default_ command, you can leave it out #113 + - `-` no longer needs to be specified as STDIN, unless you are also working with multiple files. #113 + - Adding to empty maps / arrays now uses idiomatic yaml styling by default + - Fixed seg fault on bad input #1086 + - New `envsubst` operator! (thanks @sciyoshi) + - Added support for `*=`, relative multiply/merge + - Custom tag types now autocast to there actual types #933 + +4.17.2: + - Fixed manpath issue (thanks @mr-pmillz) + +4.17.1: + - Added XML support (#491) + - New merge flag (n) to only merge new fields (#1038) + - Fixed exit status bug for permission denied error (#1062) + - Fixed using multiple variables with union (,) operator (#1048) + - Bumped some versions of dependencies + +4.16.2: + - Bumped go-lang compiler to fix CVE-2021-44717 (#1037) + - Dependency version bumps via dependabot + - Added extract-checksum.sh to make it easier to validate checksums (#1011) + - Report filename on parsing error (#1030) + +4.16.1: + - Added csv, tsv output formats + - Added map, map_values operators + - Added sort, sort_by operators (#947, #1024) + - Fixed bug in collect + - Fixed permissions issue in Dockerfile (#1014) + - Fixed assignment operator to no longer overwrite anchor (#1029) + +4.15.1: + - Added 'load/strload' operators for dynamically loading content from files + - Added 'key' operator + - Added 'parent' operator + - Smarter MAN page installation script (thanks @coolaj86) + - Dockerfile improvements (thanks @actualben) + - Error handling improvements (thanks @mmorel-35) + +4.14.2: + - Fixed header preprocessing issue (#1000) + - Bumped version dependencies + +4.14.1: + - Added group_by operator + - Added encode/decode operators (toyaml, fromjson etc) (#974) + - Added flatten operator + - Added --split-exp, for splitting results into multiple files (#966) + - Fixed json null array bug (#985) + +4.13.5: + - Performance improvement for deepMatch (thanks @pmatseykanets) + - Added manpage, included in tar.gz downloads as well as a separate tar.gz (#961) + - Fixed expression parsing bug #970 + - Rebuild fixes CVE (#964) + - Bumped docker alpine version + + +4.13.4: + - Fixed select bug (#958) + - Improved performance of `explode` (this will also speed up json conversion) + - Improved performance of `merge` (significantly if your merging a small file into a big one) + +4.13.3: + +- Updated go compiler to 1.17 to fix CVE (#944) + +4.13.2: + +- Fixing Docker build timeout issues when attempting to release + +4.13.1: + +- Update to `with` operator, allow for no leading space on the `;`. + +4.13.0: + +BREAKING CHANGE - the `as` variable operator (e.g. `.a as $x`) now makes a _copy_ of the node(s) at the +path rather than a reference. This is in order to make it work more like the `jq` equivalent. + +This means any updates made to that variable do not update the original. + +There's a new operator `ref` that will make a reference (and allow multiple updates to the original path by referencing the variable). +Sorry for any inconvenience caused!. + + +- New `with` operator for making multiple changes to a given path +- New `contains` operator, works like the `jq` equivalent +- Subtract operator now supports subtracting elements from arrays! +- Fixed Swapping values using variables #934 +- Github Action now properly supports multiline output #936, thanks @pjxiao +- Fixed missing closing bracket validation #932 + +4.12.2: +- Fix processing of hex numbers #929 +- Fixed alternative and union operator issues #930 + +4.12.1: + - Merge comment fix #919 + +4.12.0: +- Can now convert yaml to properties properties format (`-o=props`), See [docs](https://mikefarah.gitbook.io/yq/v/v4.x/usage/properties) for more info. +- Fixed document header/footer comment handling when merging (https://github.com/mikefarah/yq/issues/919) +- pretty print yaml 1.1 compatibility (https://github.com/mikefarah/yq/issues/914) diff --git a/external/yq/scripts/acceptance.sh b/external/yq/scripts/acceptance.sh new file mode 100755 index 0000000..7ec801f --- /dev/null +++ b/external/yq/scripts/acceptance.sh @@ -0,0 +1,10 @@ +#! /bin/bash +set -e + +for test in acceptance_tests/*.sh; do + echo "--------------------------------------------------------------" + echo "$test" + echo "--------------------------------------------------------------" + (exec "$test"); +done + diff --git a/external/yq/scripts/check.sh b/external/yq/scripts/check.sh new file mode 100755 index 0000000..069947f --- /dev/null +++ b/external/yq/scripts/check.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -o errexit +set -o pipefail + +if command -v golangci-lint &> /dev/null +then + golangci-lint run --verbose +else + ./bin/golangci-lint run --verbose +fi + diff --git a/external/yq/scripts/copy-docs.sh b/external/yq/scripts/copy-docs.sh new file mode 100755 index 0000000..5c27efa --- /dev/null +++ b/external/yq/scripts/copy-docs.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +cp how-it-works.md ../yq-gitbook/. +cp pkg/yqlib/doc/operators/*.md ../yq-gitbook/operators/. +cp pkg/yqlib/doc/usage/*.md ../yq-gitbook/usage/. \ No newline at end of file diff --git a/external/yq/scripts/coverage.sh b/external/yq/scripts/coverage.sh new file mode 100755 index 0000000..88b4b97 --- /dev/null +++ b/external/yq/scripts/coverage.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +go test -coverprofile=coverage.out -v $(go list ./... | grep -v -E 'examples' | grep -v -E 'test') +go tool cover -html=coverage.out -o coverage.html diff --git a/external/yq/scripts/devtools.sh b/external/yq/scripts/devtools.sh new file mode 100755 index 0000000..d9feeed --- /dev/null +++ b/external/yq/scripts/devtools.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -ex +go mod download golang.org/x/tools@latest +curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.49.0 +wget -O- -nv https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s v2.13.1 diff --git a/external/yq/scripts/extract-checksum.sh b/external/yq/scripts/extract-checksum.sh new file mode 100755 index 0000000..914dcfa --- /dev/null +++ b/external/yq/scripts/extract-checksum.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# This script works with checksums_hashes_order and checksums to extract the relevant +# sha of the various yq downloads. You can then use your favourite checksum tool to validate. +# must match an entry in checksums_hashes_order. +# +# Usage: ./extract-checksum.sh +# E.g: ./extract-checksum.sh SHA-256 yq_linux_amd64.tar.gz +# Outputs: +# yq_linux_amd64.tar.gz acebc9d07aa2d0e482969b2c080ee306e8f58efbd6f2d857eefbce6469da1473 +# +# Usage with rhash: +# ./extract-checksum.sh SHA-256 yq_linux_amd64.tar.gz | rhash -c - +# +# Tip, if you want the checksum first then the filename (e.g. for the md5sum command) +# then you can pipe the output of this script into awk to switch the fields around: +# +# ./extract-checksum.sh MD5 yq_linux_amd64.tar.gz | awk '{ print $2 " " $1}' | md5sum -c - +# +# + +if [ "$1" == "" ]; then + echo "Please specify at a hash algorithm from the checksum_hashes_order" + echo "Usage: $0 " + exit 1 +fi + +if [ "$2" != "" ]; then + # so we dont match x.tar.gz when 'x' is given + file="$2\s" +else + file="" +fi + +if [ ! -f "checksums_hashes_order" ]; then + echo "This script requires checksums_hashes_order to run" + echo "Download the file from https://github.com/mikefarah/yq/releases/ for the version of yq you are trying to validate" + exit 1 +fi + +if [ ! -f "checksums" ]; then + echo "This script requires the checksums file to run" + echo "Download the file from https://github.com/mikefarah/yq/releases/ for the version of yq you are trying to validate" + exit 1 +fi + + +grepMatch=$(grep -m 1 -n "$1" checksums_hashes_order) +if [ "$grepMatch" == "" ]; then + echo "Could not find hash algorith '$1' in checksums_hashes_order" + exit 1 +fi + +set -e + +lineNumber=$(echo "$grepMatch" | cut -f1 -d:) + +realLineNumber="$(($lineNumber + 1))" + +grep "$file" checksums | sed 's/ /\t/g' | cut -f1,$realLineNumber \ No newline at end of file diff --git a/external/yq/scripts/format.sh b/external/yq/scripts/format.sh new file mode 100755 index 0000000..2faf7a7 --- /dev/null +++ b/external/yq/scripts/format.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +gofmt -w -s . +go mod tidy +go mod vendor diff --git a/external/yq/scripts/generate-man-page-md.sh b/external/yq/scripts/generate-man-page-md.sh new file mode 100755 index 0000000..34283fc --- /dev/null +++ b/external/yq/scripts/generate-man-page-md.sh @@ -0,0 +1,16 @@ +#! /bin/bash +set -e + +# note that this reqires pandoc to be installed. + +cat ./pkg/yqlib/doc/operators/headers/Main.md > man.md +printf "\n# HOW IT WORKS\n" >> man.md +tail -n +2 how-it-works.md >> man.md + +for f in ./pkg/yqlib/doc/operators/*.md; do + cat "$f" >> man.md +done + +for f in ./pkg/yqlib/doc/usage/*.md; do + cat "$f" >> man.md +done diff --git a/external/yq/scripts/generate-man-page.sh b/external/yq/scripts/generate-man-page.sh new file mode 100755 index 0000000..b39e21b --- /dev/null +++ b/external/yq/scripts/generate-man-page.sh @@ -0,0 +1,11 @@ +#! /bin/bash +set -e + +# note that this reqires pandoc to be installed. + +pandoc \ + --variable=title:"YQ" \ + --variable=section:"1" \ + --variable=author:"Mike Farah" \ + --variable=header:"${MAN_HEADER}" \ + --standalone --to man man.md -o yq.1 \ No newline at end of file diff --git a/external/yq/scripts/install-man-page.sh b/external/yq/scripts/install-man-page.sh new file mode 100755 index 0000000..82715ec --- /dev/null +++ b/external/yq/scripts/install-man-page.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +my_path="$(command -v yq)" + +if [ -z "$my_path" ]; then + echo "'yq' wasn't found in your PATH, so we don't know where to put the man pages." + echo "Please update your PATH to include yq, and run this script again." + exit 1 +fi + +# ex: ~/.local/bin/yq => ~/.local/ +my_prefix="$(dirname "$(dirname "$(command -v yq)")")" +mkdir -p "$my_prefix/share/man/man1/" +cp yq.1 "$my_prefix/share/man/man1/" diff --git a/external/yq/scripts/release-deb.sh b/external/yq/scripts/release-deb.sh new file mode 100755 index 0000000..e6c49fd --- /dev/null +++ b/external/yq/scripts/release-deb.sh @@ -0,0 +1,264 @@ +#!/bin/bash -eux +# +# Copyright (C) 2021 Roberto Mier Escandón +# +# This script creates a .deb package file with yq valid for ubuntu 20.04 by default +# You can pass + +DOCKER_IMAGE_NAME=yq-deb-builder +DOCKER_IMAGE_TAG=$(git describe --always --tags) +OUTPUT= +GOVERSION="1.17.4" +KEYID= +MAINTAINER= +DO_PUBLISH= +PPA="rmescandon/yq" +VERSION= +DISTRIBUTION= +DO_SIGN= +PASSPHRASE= + +show_help() { + echo " usage: $(basename "$0") VERSION [options...]" + echo "" + echo " positional arguments" + echo " VERSION" + echo "" + echo " optional arguments:" + echo " -h, --help Shows this help" + echo " -d, --distribution DISTRO The distribution to use for the changelog generation. If not provided, last changelog entry" + echo " distribution is considered" + echo " --goversion VERSION The version of golang to use. Default to $GOVERSION" + echo " -k, --sign-key KEYID Sign the package sources with the provided gpg key id (long format). When not provided this" + echo " paramater, the generated sources are not signed" + echo " -s, --sign Sign the package sources with a gpg key of the maintainer" + echo " -m, --maintainer WHO The maintainer used as author of the changelog. git.name and git.email (see git config) is" + echo " the considered format" + echo " -o DIR, --output DIR The path where leaving the generated debian package. Default to a temporary folder if not set" + echo " -p The resultant file is being published to ppa" + echo " --ppa PPA Push resultant files to indicated ppa. This option should be given along with a signing key." + echo " Otherwise, the server could reject the package building. Default is set to 'rmescandon/yq'" + echo " --passphrase PASSPHRASE Passphrase to decrypt the signage key" + exit 1 +} +# read input args +while [ $# -ne 0 ]; do + case $1 in + -h|--help) + show_help + ;; + -d|--distribution) + shift + DISTRIBUTION="$1" + ;; + --goversion) + shift + GOVERSION="$1" + ;; + -k|--sign-key) + shift + DO_SIGN='y' + KEYID="$1" + ;; + -s|--sign) + DO_SIGN='y' + ;; + -m|--maintainer) + shift + MAINTAINER="$1" + ;; + -o|--output) + shift + OUTPUT="$1" + ;; + -p) + DO_PUBLISH="y" + ;; + --ppa) + shift + DO_PUBLISH="y" + PPA="$1" + ;; + --passphrase) + shift + PASSPHRASE="$1" + ;; + *) + if [ -z "$VERSION" ]; then + VERSION="$1" + else + show_help + fi + esac + shift +done + +[ -n "$VERSION" ] || (echo "error - you have to provide a version" && show_help) + +if [ -n "$OUTPUT" ]; then + OUTPUT="$(realpath "$OUTPUT")" + mkdir -p "$OUTPUT" +else + # Temporary folder where leaving the built deb package in case that output folder is not provided + OUTPUT="$(mktemp -d)" +fi + +# Define the folders with the source project and the build artifacts and files +srcdir="$(realpath "$(dirname "$0")"/..)" +blddir="$(cd "${srcdir}" && mkdir -p build && cd build && echo "$(pwd)")" +# clean on exit +cleanup() { + rm -f "${blddir}/build.sh" || true + rm -f "${blddir}/Dockerfile" || true + rm -f "${blddir}/dput.cf" || true + docker rmi "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" -f > /dev/null 2>&1 || true +} +trap cleanup EXIT INT + +# configure the dput config in case publishing is requested +lp_id="$(echo "$PPA" | cut -d'/' -f1)" +ppa_id="$(echo "$PPA" | cut -d'/' -f2)" +cat << EOF > ${blddir}/dput.cf +[ppa] +fqdn = ppa.launchpad.net +method = ftp +incoming = ~${lp_id}/ubuntu/${ppa_id} +login = anonymous +EOF + +# create the main script +cat << EOF > ${blddir}/build.sh +#!/bin/bash +set -e -o pipefail + +PATH=$PATH:/usr/local/go/bin +export GPG_TTY=$(tty) + +go mod vendor + +### bump debian/changelog + +# maintainer +export DEBEMAIL="$MAINTAINER" +if [ -z "$MAINTAINER" ]; then + export DEBEMAIL="\$(dpkg-parsechangelog -S Maintainer)" +fi + +# prepend a 'v' char to complete the tag name from where calculating the changelog +SINCE="v\$(dpkg-parsechangelog -S Version)" + +# distribution +DISTRIBUTION="$DISTRIBUTION" +if [ -z "$DISTRIBUTION" ]; then + DISTRIBUTION="\$(dpkg-parsechangelog -S Distribution)" +fi + +# generate changelog +gbp dch --ignore-branch --no-multimaint -N "$VERSION" -s "\$SINCE" -D "\$DISTRIBUTION" + +# using -d to prevent failing when searching for golang dep on control file +params=("-d" "-S") + +# add the -sa option for signing along with the key to use when provided key id +if [ -n "$DO_SIGN" ]; then + params+=("-sa") + + # read from gpg the key id associated with the maintainer if not provided explicitly + if [ -z "$KEYID" ]; then + KEYID="\$(gpg --list-keys "\$(dpkg-parsechangelog -S Maintainer)" | head -2 | tail -1 | xargs)" + else + KEYID="$KEYID" + fi + + params+=("--sign-key="\$KEYID"") + + if [ -n "$PASSPHRASE" ]; then + gpg-agent --verbose --daemon --options /home/yq/.gnupg/gpg-agent.conf --log-file /tmp/gpg-agent.log --allow-preset-passphrase --default-cache-ttl=31536000 + KEYGRIP="\$(gpg --with-keygrip -k "\$KEYID" | grep 'Keygrip = ' | cut -d'=' -f2 | head -1 | xargs)" + /usr/lib/gnupg/gpg-preset-passphrase --preset --passphrase "$PASSPHRASE" "\$KEYGRIP" + fi + +else + params+=("-us" "-uc") +fi + +debuild \${params[@]} +mv ../yq_* /home/yq/output + +echo "" +echo -e "\tfind resulting package at: "$OUTPUT"" + +# publish to ppa whether given +if [ -n "$DO_PUBLISH" ]; then + dput -c /etc/dput.cf ppa /home/yq/output/yq_*.changes +fi +EOF +chmod +x "${blddir}"/build.sh + +# build the docker image with all dependencies +cat << EOF > ${blddir}/Dockerfile +FROM bitnami/minideb:bullseye as base +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 +ENV DEBIAN_FRONTEND noninteractive +ENV GO111MODULE on +ENV GOMODCACHE /home/yq/go + +RUN set -e \ + && sed -i -- 's/# deb-src/deb-src/g' /etc/apt/sources.list \ + && apt-get -qq update + +# install golang on its $GOVERSION +FROM base as golang +RUN apt-get -qq -y --no-install-recommends install \ + ca-certificates \ + wget +RUN wget "https://golang.org/dl/go${GOVERSION}.linux-amd64.tar.gz" -4 +RUN tar -C /usr/local -xvf "go${GOVERSION}.linux-amd64.tar.gz" + +FROM base +RUN apt-get -qq -y --no-install-recommends install \ + build-essential \ + debhelper \ + devscripts \ + dput \ + fakeroot \ + git-buildpackage \ + gpg-agent \ + libdistro-info-perl \ + pandoc \ + rsync \ + sensible-utils && \ + apt-get clean && \ + rm -rf /tmp/* /var/tmp/* + +COPY --from=golang /usr/local/go /usr/local/go + +# build debian package as yq user +RUN useradd -ms /bin/bash yq && \ + mkdir /home/yq/src && chown -R yq: /home/yq/src && \ + mkdir /home/yq/output && chown -R yq: /home/yq/output + +ADD ./build/dput.cf /etc/dput.cf +ADD ./build/build.sh /usr/bin/build.sh +RUN chmod +x /usr/bin/build.sh && chown -R yq: /usr/bin/build.sh + +USER yq + +WORKDIR /home/yq/src +VOLUME ["/home/yq/src"] + +# dir where output packages are finally left +VOLUME ["/home/yq/output"] + +CMD ["/usr/bin/build.sh"] +EOF + +DOCKER_BUILDKIT=1 docker build --pull -f "${blddir}"/Dockerfile -t "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" . + +docker run --rm -i \ + -v "${srcdir}":/home/yq/src:delegated \ + -v "${OUTPUT}":/home/yq/output \ + -v "${HOME}"/.gnupg:/home/yq/.gnupg:delegated \ + -u "$(id -u)" \ + "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" diff --git a/external/yq/scripts/secure.sh b/external/yq/scripts/secure.sh new file mode 100755 index 0000000..956961d --- /dev/null +++ b/external/yq/scripts/secure.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -o errexit +set -o pipefail + +if command -v gosec &> /dev/null +then + gosec "${PWD}" ./... +else + ./bin/gosec "${PWD}" ./... +fi \ No newline at end of file diff --git a/external/yq/scripts/setup.sh b/external/yq/scripts/setup.sh new file mode 100755 index 0000000..1089fde --- /dev/null +++ b/external/yq/scripts/setup.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +set -eu + +find_mgr() { + if hash minishift 2>/dev/null; then + echo "minishift" + else + if hash docker-machine 2>/dev/null; then + echo "docker-machine" + fi + fi +} + +get_vm_name() { + case "$1" in + minishift) + echo "minishift" + ;; + docker-machine) + echo "${DOCKER_MACHINE_NAME}" + ;; + *) + ;; + esac +} + +is_vm_running() { + local vm=$1 + declare -a running=($(VBoxManage list runningvms | awk '{ print $1 }')) + local result='false' + + for rvm in "${running[@]}"; do + if [[ "${rvm}" == *"${vm}"* ]]; then + result='true' + fi + done + echo "$result" +} + +if hash cygpath 2>/dev/null; then + PROJECT_DIR=$(cygpath -w -a "$(pwd)") +else + PROJECT_DIR=$(pwd) +fi + +VM_MGR=$(find_mgr) +if [[ -z $VM_MGR ]]; then + echo "ERROR: No VM Manager found; expected one of ['minishift', 'docker-machine']" + exit 1 +fi + +VM_NAME=$(get_vm_name "$VM_MGR") +if [[ -z $VM_NAME ]]; then + echo "ERROR: No VM found; try running 'eval $(docker-machine env)'" + exit 1 +fi + +if ! hash VBoxManage 2>/dev/null; then + echo "VirtualBox executable 'VBoxManage' not found in path" + exit 1 +fi + +avail=$(is_vm_running "$VM_NAME") +if [[ "$avail" == *"true"* ]]; then + res=$(VBoxManage sharedfolder add "${VM_NAME}" --name "${PROJECT}" --hostpath "${PROJECT_DIR}" --transient 2>&1) + if [[ -z $res || $res == *"already exists"* ]]; then + # no need to show that it already exists + : + else + echo "$res" + exit 1 + fi + echo "VM: [${VM_NAME}] -- Added Sharedfolder [${PROJECT}] @Path [${PROJECT_DIR}]" +else + echo "$VM_NAME is not currently running; please start your VM and try again." + exit 1 +fi + +SSH_CMD="sudo mkdir -p /${PROJECT} ; sudo mount -t vboxsf ${PROJECT} /${PROJECT}" +case "${VM_MGR}" in + minishift) + minishift ssh "${SSH_CMD}" + echo "VM: [${VM_NAME}] -- Mounted Sharedfolder [${PROJECT}] @VM Path [/${PROJECT}]" + ;; + docker-machine) + docker-machine ssh "${VM_NAME}" "${SSH_CMD}" + echo "VM: [${VM_NAME}] -- Mounted Sharedfolder [${PROJECT}] @VM Path [/${PROJECT}]" + ;; + *) + ;; +esac diff --git a/external/yq/scripts/shunit2 b/external/yq/scripts/shunit2 new file mode 100755 index 0000000..6239683 --- /dev/null +++ b/external/yq/scripts/shunit2 @@ -0,0 +1,1343 @@ +#! /bin/sh +# vim:et:ft=sh:sts=2:sw=2 +# +# Copyright 2008-2020 Kate Ward. All Rights Reserved. +# Released under the Apache 2.0 license. +# http://www.apache.org/licenses/LICENSE-2.0 +# +# shUnit2 -- Unit testing framework for Unix shell scripts. +# https://github.com/kward/shunit2 +# +# Author: kate.ward@forestent.com (Kate Ward) +# +# shUnit2 is a xUnit based unit test framework for Bourne shell scripts. It is +# based on the popular JUnit unit testing framework for Java. +# +# $() are not fully portable (POSIX != portable). +# shellcheck disable=SC2006 +# expr may be antiquated, but it is the only solution in some cases. +# shellcheck disable=SC2003 + +# Return if shunit2 already loaded. +command [ -n "${SHUNIT_VERSION:-}" ] && exit 0 +SHUNIT_VERSION='2.1.8' + +# Return values that scripts can use. +SHUNIT_TRUE=0 +SHUNIT_FALSE=1 +SHUNIT_ERROR=2 + +# Logging functions. +_shunit_warn() { + ${__SHUNIT_CMD_ECHO_ESC} \ + "${__shunit_ansi_yellow}shunit2:WARN${__shunit_ansi_none} $*" >&2 +} +_shunit_error() { + ${__SHUNIT_CMD_ECHO_ESC} \ + "${__shunit_ansi_red}shunit2:ERROR${__shunit_ansi_none} $*" >&2 +} +_shunit_fatal() { + ${__SHUNIT_CMD_ECHO_ESC} \ + "${__shunit_ansi_red}shunit2:FATAL${__shunit_ansi_none} $*" >&2 + exit ${SHUNIT_ERROR} +} + +# Determine some reasonable command defaults. +__SHUNIT_CMD_ECHO_ESC='echo -e' +# shellcheck disable=SC2039 +command [ "`echo -e test`" = '-e test' ] && __SHUNIT_CMD_ECHO_ESC='echo' + +__SHUNIT_UNAME_S=`uname -s` +case "${__SHUNIT_UNAME_S}" in + BSD) __SHUNIT_CMD_EXPR='gexpr' ;; + *) __SHUNIT_CMD_EXPR='expr' ;; +esac +__SHUNIT_CMD_TPUT='tput' + +# Commands a user can override if needed. +SHUNIT_CMD_EXPR=${SHUNIT_CMD_EXPR:-${__SHUNIT_CMD_EXPR}} +SHUNIT_CMD_TPUT=${SHUNIT_CMD_TPUT:-${__SHUNIT_CMD_TPUT}} + +# Enable color output. Options are 'never', 'always', or 'auto'. +SHUNIT_COLOR=${SHUNIT_COLOR:-auto} + +# Specific shell checks. +if command [ -n "${ZSH_VERSION:-}" ]; then + setopt |grep "^shwordsplit$" >/dev/null + if command [ $? -ne ${SHUNIT_TRUE} ]; then + _shunit_fatal 'zsh shwordsplit option is required for proper operation' + fi + if command [ -z "${SHUNIT_PARENT:-}" ]; then + _shunit_fatal "zsh does not pass \$0 through properly. please declare \ +\"SHUNIT_PARENT=\$0\" before calling shUnit2" + fi +fi + +# +# Constants +# + +__SHUNIT_MODE_SOURCED='sourced' +__SHUNIT_MODE_STANDALONE='standalone' +__SHUNIT_PARENT=${SHUNIT_PARENT:-$0} + +# User provided test prefix to display in front of the name of the test being +# executed. Define by setting the SHUNIT_TEST_PREFIX variable. +__SHUNIT_TEST_PREFIX=${SHUNIT_TEST_PREFIX:-} + +# ANSI colors. +__SHUNIT_ANSI_NONE='\033[0m' +__SHUNIT_ANSI_RED='\033[1;31m' +__SHUNIT_ANSI_GREEN='\033[1;32m' +__SHUNIT_ANSI_YELLOW='\033[1;33m' +__SHUNIT_ANSI_CYAN='\033[1;36m' + +# Set the constants readonly. +__shunit_constants=`set |grep '^__SHUNIT_' |cut -d= -f1` +echo "${__shunit_constants}" |grep '^Binary file' >/dev/null && \ + __shunit_constants=`set |grep -a '^__SHUNIT_' |cut -d= -f1` +for __shunit_const in ${__shunit_constants}; do + if command [ -z "${ZSH_VERSION:-}" ]; then + readonly "${__shunit_const}" + else + case ${ZSH_VERSION} in + [123].*) readonly "${__shunit_const}" ;; + *) readonly -g "${__shunit_const}" # Declare readonly constants globally. + esac + fi +done +unset __shunit_const __shunit_constants + +# +# Internal variables. +# + +# Variables. +__shunit_lineno='' # Line number of executed test. +__shunit_mode=${__SHUNIT_MODE_SOURCED} # Operating mode. +__shunit_reportGenerated=${SHUNIT_FALSE} # Is report generated. +__shunit_script='' # Filename of unittest script (standalone mode). +__shunit_skip=${SHUNIT_FALSE} # Is skipping enabled. +__shunit_suite='' # Suite of tests to execute. +__shunit_clean=${SHUNIT_FALSE} # _shunit_cleanup() was already called. + +# ANSI colors (populated by _shunit_configureColor()). +__shunit_ansi_none='' +__shunit_ansi_red='' +__shunit_ansi_green='' +__shunit_ansi_yellow='' +__shunit_ansi_cyan='' + +# Counts of tests. +__shunit_testSuccess=${SHUNIT_TRUE} +__shunit_testsTotal=0 +__shunit_testsPassed=0 +__shunit_testsFailed=0 + +# Counts of asserts. +__shunit_assertsTotal=0 +__shunit_assertsPassed=0 +__shunit_assertsFailed=0 +__shunit_assertsSkipped=0 + +# +# Macros. +# + +# shellcheck disable=SC2016,SC2089 +_SHUNIT_LINENO_='eval __shunit_lineno=""; if command [ "${1:-}" = "--lineno" ]; then command [ -n "$2" ] && __shunit_lineno="[$2] "; shift 2; fi' + +#----------------------------------------------------------------------------- +# Assertion functions. +# + +# Assert that two values are equal to one another. +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertEquals() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "assertEquals() requires two or three arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_expected_=$1 + shunit_actual_=$2 + + shunit_return=${SHUNIT_TRUE} + if command [ "${shunit_expected_}" = "${shunit_actual_}" ]; then + _shunit_assertPass + else + failNotEquals "${shunit_message_}" "${shunit_expected_}" "${shunit_actual_}" + shunit_return=${SHUNIT_FALSE} + fi + + unset shunit_message_ shunit_expected_ shunit_actual_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_EQUALS_='eval assertEquals --lineno "${LINENO:-}"' + +# Assert that two values are not equal to one another. +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertNotEquals() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "assertNotEquals() requires two or three arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_expected_=$1 + shunit_actual_=$2 + + shunit_return=${SHUNIT_TRUE} + if command [ "${shunit_expected_}" != "${shunit_actual_}" ]; then + _shunit_assertPass + else + failSame "${shunit_message_}" "${shunit_expected_}" "${shunit_actual_}" + shunit_return=${SHUNIT_FALSE} + fi + + unset shunit_message_ shunit_expected_ shunit_actual_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_NOT_EQUALS_='eval assertNotEquals --lineno "${LINENO:-}"' + +# Assert that a container contains a content. +# +# Args: +# message: string: failure message [optional] +# container: string: container to analyze +# content: string: content to find +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertContains() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "assertContains() requires two or three arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_container_=$1 + shunit_content_=$2 + + shunit_return=${SHUNIT_TRUE} + if echo "$shunit_container_" | grep -F -- "$shunit_content_" > /dev/null; then + _shunit_assertPass + else + failNotFound "${shunit_message_}" "${shunit_content_}" + shunit_return=${SHUNIT_FALSE} + fi + + unset shunit_message_ shunit_container_ shunit_content_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_CONTAINS_='eval assertContains --lineno "${LINENO:-}"' + +# Assert that a container does not contain a content. +# +# Args: +# message: string: failure message [optional] +# container: string: container to analyze +# content: string: content to look for +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertNotContains() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "assertNotContains() requires two or three arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_container_=$1 + shunit_content_=$2 + + shunit_return=${SHUNIT_TRUE} + if echo "$shunit_container_" | grep -F -- "$shunit_content_" > /dev/null; then + failFound "${shunit_message_}" "${shunit_content_}" + shunit_return=${SHUNIT_FALSE} + else + _shunit_assertPass + fi + + unset shunit_message_ shunit_container_ shunit_content_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_NOT_CONTAINS_='eval assertNotContains --lineno "${LINENO:-}"' + +# Assert that a value is null (i.e. an empty string) +# +# Args: +# message: string: failure message [optional] +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertNull() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 1 -o $# -gt 2 ]; then + _shunit_error "assertNull() requires one or two arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 2 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + assertTrue "${shunit_message_}" "[ -z '$1' ]" + shunit_return=$? + + unset shunit_message_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_NULL_='eval assertNull --lineno "${LINENO:-}"' + +# Assert that a value is not null (i.e. a non-empty string) +# +# Args: +# message: string: failure message [optional] +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertNotNull() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -gt 2 ]; then # allowing 0 arguments as $1 might actually be null + _shunit_error "assertNotNull() requires one or two arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 2 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_actual_=`_shunit_escapeCharactersInString "${1:-}"` + test -n "${shunit_actual_}" + assertTrue "${shunit_message_}" $? + shunit_return=$? + + unset shunit_actual_ shunit_message_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_NOT_NULL_='eval assertNotNull --lineno "${LINENO:-}"' + +# Assert that two values are the same (i.e. equal to one another). +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertSame() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "assertSame() requires two or three arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + assertEquals "${shunit_message_}" "$1" "$2" + shunit_return=$? + + unset shunit_message_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_SAME_='eval assertSame --lineno "${LINENO:-}"' + +# Assert that two values are not the same (i.e. not equal to one another). +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertNotSame() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "assertNotSame() requires two or three arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_:-}$1" + shift + fi + assertNotEquals "${shunit_message_}" "$1" "$2" + shunit_return=$? + + unset shunit_message_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_NOT_SAME_='eval assertNotSame --lineno "${LINENO:-}"' + +# Assert that a value or shell test condition is true. +# +# In shell, a value of 0 is true and a non-zero value is false. Any integer +# value passed can thereby be tested. +# +# Shell supports much more complicated tests though, and a means to support +# them was needed. As such, this function tests that conditions are true or +# false through evaluation rather than just looking for a true or false. +# +# The following test will succeed: +# assertTrue 0 +# assertTrue "[ 34 -gt 23 ]" +# The following test will fail with a message: +# assertTrue 123 +# assertTrue "test failed" "[ -r '/non/existent/file' ]" +# +# Args: +# message: string: failure message [optional] +# condition: string: integer value or shell conditional statement +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertTrue() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 1 -o $# -gt 2 ]; then + _shunit_error "assertTrue() takes one or two arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 2 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_condition_=$1 + + # See if condition is an integer, i.e. a return value. + shunit_match_=`expr "${shunit_condition_}" : '\([0-9]*\)'` + shunit_return=${SHUNIT_TRUE} + if command [ -z "${shunit_condition_}" ]; then + # Null condition. + shunit_return=${SHUNIT_FALSE} + elif command [ -n "${shunit_match_}" -a "${shunit_condition_}" = "${shunit_match_}" ] + then + # Possible return value. Treating 0 as true, and non-zero as false. + command [ "${shunit_condition_}" -ne 0 ] && shunit_return=${SHUNIT_FALSE} + else + # Hopefully... a condition. + ( eval "${shunit_condition_}" ) >/dev/null 2>&1 + command [ $? -ne 0 ] && shunit_return=${SHUNIT_FALSE} + fi + + # Record the test. + if command [ ${shunit_return} -eq ${SHUNIT_TRUE} ]; then + _shunit_assertPass + else + _shunit_assertFail "${shunit_message_}" + fi + + unset shunit_message_ shunit_condition_ shunit_match_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_TRUE_='eval assertTrue --lineno "${LINENO:-}"' + +# Assert that a value or shell test condition is false. +# +# In shell, a value of 0 is true and a non-zero value is false. Any integer +# value passed can thereby be tested. +# +# Shell supports much more complicated tests though, and a means to support +# them was needed. As such, this function tests that conditions are true or +# false through evaluation rather than just looking for a true or false. +# +# The following test will succeed: +# assertFalse 1 +# assertFalse "[ 'apples' = 'oranges' ]" +# The following test will fail with a message: +# assertFalse 0 +# assertFalse "test failed" "[ 1 -eq 1 -a 2 -eq 2 ]" +# +# Args: +# message: string: failure message [optional] +# condition: string: integer value or shell conditional statement +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +assertFalse() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 1 -o $# -gt 2 ]; then + _shunit_error "assertFalse() requires one or two arguments; $# given" + _shunit_assertFail + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 2 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_condition_=$1 + + # See if condition is an integer, i.e. a return value. + shunit_match_=`expr "${shunit_condition_}" : '\([0-9]*\)'` + shunit_return=${SHUNIT_TRUE} + if command [ -z "${shunit_condition_}" ]; then + # Null condition. + shunit_return=${SHUNIT_FALSE} + elif command [ -n "${shunit_match_}" -a "${shunit_condition_}" = "${shunit_match_}" ] + then + # Possible return value. Treating 0 as true, and non-zero as false. + command [ "${shunit_condition_}" -eq 0 ] && shunit_return=${SHUNIT_FALSE} + else + # Hopefully... a condition. + ( eval "${shunit_condition_}" ) >/dev/null 2>&1 + command [ $? -eq 0 ] && shunit_return=${SHUNIT_FALSE} + fi + + # Record the test. + if command [ "${shunit_return}" -eq "${SHUNIT_TRUE}" ]; then + _shunit_assertPass + else + _shunit_assertFail "${shunit_message_}" + fi + + unset shunit_message_ shunit_condition_ shunit_match_ + return "${shunit_return}" +} +# shellcheck disable=SC2016,SC2034 +_ASSERT_FALSE_='eval assertFalse --lineno "${LINENO:-}"' + +#----------------------------------------------------------------------------- +# Failure functions. +# + +# Records a test failure. +# +# Args: +# message: string: failure message [optional] +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +fail() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -gt 1 ]; then + _shunit_error "fail() requires zero or one arguments; $# given" + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 1 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + + _shunit_assertFail "${shunit_message_}" + + unset shunit_message_ + return ${SHUNIT_FALSE} +} +# shellcheck disable=SC2016,SC2034 +_FAIL_='eval fail --lineno "${LINENO:-}"' + +# Records a test failure, stating two values were not equal. +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +failNotEquals() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "failNotEquals() requires one or two arguments; $# given" + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_expected_=$1 + shunit_actual_=$2 + + shunit_message_=${shunit_message_%% } + _shunit_assertFail "${shunit_message_:+${shunit_message_} }expected:<${shunit_expected_}> but was:<${shunit_actual_}>" + + unset shunit_message_ shunit_expected_ shunit_actual_ + return ${SHUNIT_FALSE} +} +# shellcheck disable=SC2016,SC2034 +_FAIL_NOT_EQUALS_='eval failNotEquals --lineno "${LINENO:-}"' + +# Records a test failure, stating a value was found. +# +# Args: +# message: string: failure message [optional] +# content: string: found value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +failFound() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 1 -o $# -gt 2 ]; then + _shunit_error "failFound() requires one or two arguments; $# given" + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 2 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + + shunit_message_=${shunit_message_%% } + _shunit_assertFail "${shunit_message_:+${shunit_message_} }Found" + + unset shunit_message_ + return ${SHUNIT_FALSE} +} +# shellcheck disable=SC2016,SC2034 +_FAIL_FOUND_='eval failFound --lineno "${LINENO:-}"' + +# Records a test failure, stating a content was not found. +# +# Args: +# message: string: failure message [optional] +# content: string: content not found +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +failNotFound() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 1 -o $# -gt 2 ]; then + _shunit_error "failNotFound() requires one or two arguments; $# given" + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 2 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + shunit_content_=$1 + + shunit_message_=${shunit_message_%% } + _shunit_assertFail "${shunit_message_:+${shunit_message_} }Not found:<${shunit_content_}>" + + unset shunit_message_ shunit_content_ + return ${SHUNIT_FALSE} +} +# shellcheck disable=SC2016,SC2034 +_FAIL_NOT_FOUND_='eval failNotFound --lineno "${LINENO:-}"' + +# Records a test failure, stating two values should have been the same. +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +failSame() +{ + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "failSame() requires two or three arguments; $# given" + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + + shunit_message_=${shunit_message_%% } + _shunit_assertFail "${shunit_message_:+${shunit_message_} }expected not same" + + unset shunit_message_ + return ${SHUNIT_FALSE} +} +# shellcheck disable=SC2016,SC2034 +_FAIL_SAME_='eval failSame --lineno "${LINENO:-}"' + +# Records a test failure, stating two values were not equal. +# +# This is functionally equivalent to calling failNotEquals(). +# +# Args: +# message: string: failure message [optional] +# expected: string: expected value +# actual: string: actual value +# Returns: +# integer: success (TRUE/FALSE/ERROR constant) +failNotSame() { + # shellcheck disable=SC2090 + ${_SHUNIT_LINENO_} + if command [ $# -lt 2 -o $# -gt 3 ]; then + _shunit_error "failNotSame() requires one or two arguments; $# given" + return ${SHUNIT_ERROR} + fi + _shunit_shouldSkip && return ${SHUNIT_TRUE} + + shunit_message_=${__shunit_lineno} + if command [ $# -eq 3 ]; then + shunit_message_="${shunit_message_}$1" + shift + fi + failNotEquals "${shunit_message_}" "$1" "$2" + shunit_return=$? + + unset shunit_message_ + return ${shunit_return} +} +# shellcheck disable=SC2016,SC2034 +_FAIL_NOT_SAME_='eval failNotSame --lineno "${LINENO:-}"' + +#----------------------------------------------------------------------------- +# Skipping functions. +# + +# Force remaining assert and fail functions to be "skipped". +# +# This function forces the remaining assert and fail functions to be "skipped", +# i.e. they will have no effect. Each function skipped will be recorded so that +# the total of asserts and fails will not be altered. +# +# Args: +# None +startSkipping() { __shunit_skip=${SHUNIT_TRUE}; } + +# Resume the normal recording behavior of assert and fail calls. +# +# Args: +# None +endSkipping() { __shunit_skip=${SHUNIT_FALSE}; } + +# Returns the state of assert and fail call skipping. +# +# Args: +# None +# Returns: +# boolean: (TRUE/FALSE constant) +isSkipping() { return ${__shunit_skip}; } + +#----------------------------------------------------------------------------- +# Suite functions. +# + +# Stub. This function should contains all unit test calls to be made. +# +# DEPRECATED (as of 2.1.0) +# +# This function can be optionally overridden by the user in their test suite. +# +# If this function exists, it will be called when shunit2 is sourced. If it +# does not exist, shunit2 will search the parent script for all functions +# beginning with the word 'test', and they will be added dynamically to the +# test suite. +# +# This function should be overridden by the user in their unit test suite. +# Note: see _shunit_mktempFunc() for actual implementation +# +# Args: +# None +#suite() { :; } # DO NOT UNCOMMENT THIS FUNCTION + +# Adds a function name to the list of tests schedule for execution. +# +# This function should only be called from within the suite() function. +# +# Args: +# function: string: name of a function to add to current unit test suite +suite_addTest() { + shunit_func_=${1:-} + + __shunit_suite="${__shunit_suite:+${__shunit_suite} }${shunit_func_}" + __shunit_testsTotal=`expr ${__shunit_testsTotal} + 1` + + unset shunit_func_ +} + +# Stub. This function will be called once before any tests are run. +# +# Common one-time environment preparation tasks shared by all tests can be +# defined here. +# +# This function should be overridden by the user in their unit test suite. +# Note: see _shunit_mktempFunc() for actual implementation +# +# Args: +# None +#oneTimeSetUp() { :; } # DO NOT UNCOMMENT THIS FUNCTION + +# Stub. This function will be called once after all tests are finished. +# +# Common one-time environment cleanup tasks shared by all tests can be defined +# here. +# +# This function should be overridden by the user in their unit test suite. +# Note: see _shunit_mktempFunc() for actual implementation +# +# Args: +# None +#oneTimeTearDown() { :; } # DO NOT UNCOMMENT THIS FUNCTION + +# Stub. This function will be called before each test is run. +# +# Common environment preparation tasks shared by all tests can be defined here. +# +# This function should be overridden by the user in their unit test suite. +# Note: see _shunit_mktempFunc() for actual implementation +# +# Args: +# None +#setUp() { :; } # DO NOT UNCOMMENT THIS FUNCTION + +# Note: see _shunit_mktempFunc() for actual implementation +# Stub. This function will be called after each test is run. +# +# Common environment cleanup tasks shared by all tests can be defined here. +# +# This function should be overridden by the user in their unit test suite. +# Note: see _shunit_mktempFunc() for actual implementation +# +# Args: +# None +#tearDown() { :; } # DO NOT UNCOMMENT THIS FUNCTION + +#------------------------------------------------------------------------------ +# Internal shUnit2 functions. +# + +# Create a temporary directory to store various run-time files in. +# +# This function is a cross-platform temporary directory creation tool. Not all +# OSes have the `mktemp` function, so one is included here. +# +# Args: +# None +# Outputs: +# string: the temporary directory that was created +_shunit_mktempDir() { + # Try the standard `mktemp` function. + ( exec mktemp -dqt shunit.XXXXXX 2>/dev/null ) && return + + # The standard `mktemp` didn't work. Use our own. + # shellcheck disable=SC2039 + if command [ -r '/dev/urandom' -a -x '/usr/bin/od' ]; then + _shunit_random_=`/usr/bin/od -vAn -N4 -tx4 "${_shunit_file_}" +#! /bin/sh +exit ${SHUNIT_TRUE} +EOF + command chmod +x "${_shunit_file_}" + done + + unset _shunit_file_ +} + +# Final cleanup function to leave things as we found them. +# +# Besides removing the temporary directory, this function is in charge of the +# final exit code of the unit test. The exit code is based on how the script +# was ended (e.g. normal exit, or via Ctrl-C). +# +# Args: +# name: string: name of the trap called (specified when trap defined) +_shunit_cleanup() { + _shunit_name_=$1 + + case "${_shunit_name_}" in + EXIT) ;; + INT) _shunit_signal_=130 ;; # 2+128 + TERM) _shunit_signal_=143 ;; # 15+128 + *) + _shunit_error "unrecognized trap value (${_shunit_name_})" + _shunit_signal_=0 + ;; + esac + if command [ "${_shunit_name_}" != 'EXIT' ]; then + _shunit_warn "trapped and now handling the (${_shunit_name_}) signal" + fi + + # Do our work. + if command [ ${__shunit_clean} -eq ${SHUNIT_FALSE} ]; then + # Ensure tear downs are only called once. + __shunit_clean=${SHUNIT_TRUE} + + tearDown + command [ $? -eq ${SHUNIT_TRUE} ] \ + || _shunit_warn "tearDown() returned non-zero return code." + oneTimeTearDown + command [ $? -eq ${SHUNIT_TRUE} ] \ + || _shunit_warn "oneTimeTearDown() returned non-zero return code." + + command rm -fr "${__shunit_tmpDir}" + fi + + if command [ "${_shunit_name_}" != 'EXIT' ]; then + # Handle all non-EXIT signals. + trap - 0 # Disable EXIT trap. + exit ${_shunit_signal_} + elif command [ ${__shunit_reportGenerated} -eq ${SHUNIT_FALSE} ]; then + _shunit_assertFail 'unknown failure encountered running a test' + _shunit_generateReport + exit ${SHUNIT_ERROR} + fi + + unset _shunit_name_ _shunit_signal_ +} + +# configureColor based on user color preference. +# +# Args: +# color: string: color mode (one of `always`, `auto`, or `none`). +_shunit_configureColor() { + _shunit_color_=${SHUNIT_FALSE} # By default, no color. + case $1 in + 'always') _shunit_color_=${SHUNIT_TRUE} ;; + 'auto') + command [ "`_shunit_colors`" -ge 8 ] && _shunit_color_=${SHUNIT_TRUE} + ;; + 'none') ;; + *) _shunit_fatal "unrecognized color option '$1'" ;; + esac + + case ${_shunit_color_} in + ${SHUNIT_TRUE}) + __shunit_ansi_none=${__SHUNIT_ANSI_NONE} + __shunit_ansi_red=${__SHUNIT_ANSI_RED} + __shunit_ansi_green=${__SHUNIT_ANSI_GREEN} + __shunit_ansi_yellow=${__SHUNIT_ANSI_YELLOW} + __shunit_ansi_cyan=${__SHUNIT_ANSI_CYAN} + ;; + ${SHUNIT_FALSE}) + __shunit_ansi_none='' + __shunit_ansi_red='' + __shunit_ansi_green='' + __shunit_ansi_yellow='' + __shunit_ansi_cyan='' + ;; + esac + + unset _shunit_color_ _shunit_tput_ +} + +# colors returns the number of supported colors for the TERM. +_shunit_colors() { + _shunit_tput_=`${SHUNIT_CMD_TPUT} colors 2>/dev/null` + if command [ $? -eq 0 ]; then + echo "${_shunit_tput_}" + else + echo 16 + fi + unset _shunit_tput_ +} + +# The actual running of the tests happens here. +# +# Args: +# None +_shunit_execSuite() { + for _shunit_test_ in ${__shunit_suite}; do + __shunit_testSuccess=${SHUNIT_TRUE} + + # Disable skipping. + endSkipping + + # Execute the per-test setup function. + setUp + command [ $? -eq ${SHUNIT_TRUE} ] \ + || _shunit_fatal "setup() returned non-zero return code." + + # Execute the test. + echo "${__SHUNIT_TEST_PREFIX}${_shunit_test_}" + eval "${_shunit_test_}" + if command [ $? -ne ${SHUNIT_TRUE} ]; then + _shunit_error "${_shunit_test_}() returned non-zero return code." + __shunit_testSuccess=${SHUNIT_ERROR} + _shunit_incFailedCount + fi + + # Execute the per-test tear-down function. + tearDown + command [ $? -eq ${SHUNIT_TRUE} ] \ + || _shunit_fatal "tearDown() returned non-zero return code." + + # Update stats. + if command [ ${__shunit_testSuccess} -eq ${SHUNIT_TRUE} ]; then + __shunit_testsPassed=`expr ${__shunit_testsPassed} + 1` + else + __shunit_testsFailed=`expr ${__shunit_testsFailed} + 1` + fi + done + + unset _shunit_test_ +} + +# Generates the user friendly report with appropriate OK/FAILED message. +# +# Args: +# None +# Output: +# string: the report of successful and failed tests, as well as totals. +_shunit_generateReport() { + command [ "${__shunit_reportGenerated}" -eq ${SHUNIT_TRUE} ] && return + + _shunit_ok_=${SHUNIT_TRUE} + + # If no exit code was provided, determine an appropriate one. + command [ "${__shunit_testsFailed}" -gt 0 \ + -o ${__shunit_testSuccess} -eq ${SHUNIT_FALSE} ] \ + && _shunit_ok_=${SHUNIT_FALSE} + + echo + _shunit_msg_="Ran ${__shunit_ansi_cyan}${__shunit_testsTotal}${__shunit_ansi_none}" + if command [ "${__shunit_testsTotal}" -eq 1 ]; then + ${__SHUNIT_CMD_ECHO_ESC} "${_shunit_msg_} test." + else + ${__SHUNIT_CMD_ECHO_ESC} "${_shunit_msg_} tests." + fi + + if command [ ${_shunit_ok_} -eq ${SHUNIT_TRUE} ]; then + _shunit_msg_="${__shunit_ansi_green}OK${__shunit_ansi_none}" + command [ "${__shunit_assertsSkipped}" -gt 0 ] \ + && _shunit_msg_="${_shunit_msg_} (${__shunit_ansi_yellow}skipped=${__shunit_assertsSkipped}${__shunit_ansi_none})" + else + _shunit_msg_="${__shunit_ansi_red}FAILED${__shunit_ansi_none}" + _shunit_msg_="${_shunit_msg_} (${__shunit_ansi_red}failures=${__shunit_assertsFailed}${__shunit_ansi_none}" + command [ "${__shunit_assertsSkipped}" -gt 0 ] \ + && _shunit_msg_="${_shunit_msg_},${__shunit_ansi_yellow}skipped=${__shunit_assertsSkipped}${__shunit_ansi_none}" + _shunit_msg_="${_shunit_msg_})" + fi + + echo + ${__SHUNIT_CMD_ECHO_ESC} "${_shunit_msg_}" + __shunit_reportGenerated=${SHUNIT_TRUE} + + unset _shunit_msg_ _shunit_ok_ +} + +# Test for whether a function should be skipped. +# +# Args: +# None +# Returns: +# boolean: whether the test should be skipped (TRUE/FALSE constant) +_shunit_shouldSkip() { + command [ ${__shunit_skip} -eq ${SHUNIT_FALSE} ] && return ${SHUNIT_FALSE} + _shunit_assertSkip +} + +# Records a successful test. +# +# Args: +# None +_shunit_assertPass() { + __shunit_assertsPassed=`expr ${__shunit_assertsPassed} + 1` + __shunit_assertsTotal=`expr ${__shunit_assertsTotal} + 1` +} + +# Records a test failure. +# +# Args: +# message: string: failure message to provide user +_shunit_assertFail() { + __shunit_testSuccess=${SHUNIT_FALSE} + _shunit_incFailedCount + + \[ $# -gt 0 ] && ${__SHUNIT_CMD_ECHO_ESC} \ + "${__shunit_ansi_red}ASSERT:${__shunit_ansi_none}$*" +} + +# Increment the count of failed asserts. +# +# Args: +# none +_shunit_incFailedCount() { + __shunit_assertsFailed=`expr "${__shunit_assertsFailed}" + 1` + __shunit_assertsTotal=`expr "${__shunit_assertsTotal}" + 1` +} + + +# Records a skipped test. +# +# Args: +# None +_shunit_assertSkip() { + __shunit_assertsSkipped=`expr "${__shunit_assertsSkipped}" + 1` + __shunit_assertsTotal=`expr "${__shunit_assertsTotal}" + 1` +} + +# Prepare a script filename for sourcing. +# +# Args: +# script: string: path to a script to source +# Returns: +# string: filename prefixed with ./ (if necessary) +_shunit_prepForSourcing() { + _shunit_script_=$1 + case "${_shunit_script_}" in + /*|./*) echo "${_shunit_script_}" ;; + *) echo "./${_shunit_script_}" ;; + esac + unset _shunit_script_ +} + +# Escape a character in a string. +# +# Args: +# c: string: unescaped character +# s: string: to escape character in +# Returns: +# string: with escaped character(s) +_shunit_escapeCharInStr() { + command [ -n "$2" ] || return # No point in doing work on an empty string. + + # Note: using shorter variable names to prevent conflicts with + # _shunit_escapeCharactersInString(). + _shunit_c_=$1 + _shunit_s_=$2 + + # Escape the character. + # shellcheck disable=SC1003,SC2086 + echo ''${_shunit_s_}'' |command sed 's/\'${_shunit_c_}'/\\\'${_shunit_c_}'/g' + + unset _shunit_c_ _shunit_s_ +} + +# Escape a character in a string. +# +# Args: +# str: string: to escape characters in +# Returns: +# string: with escaped character(s) +_shunit_escapeCharactersInString() { + command [ -n "$1" ] || return # No point in doing work on an empty string. + + _shunit_str_=$1 + + # Note: using longer variable names to prevent conflicts with + # _shunit_escapeCharInStr(). + for _shunit_char_ in '"' '$' "'" '`'; do + _shunit_str_=`_shunit_escapeCharInStr "${_shunit_char_}" "${_shunit_str_}"` + done + + echo "${_shunit_str_}" + unset _shunit_char_ _shunit_str_ +} + +# Extract list of functions to run tests against. +# +# Args: +# script: string: name of script to extract functions from +# Returns: +# string: of function names +_shunit_extractTestFunctions() { + _shunit_script_=$1 + + # Extract the lines with test function names, strip of anything besides the + # function name, and output everything on a single line. + _shunit_regex_='^\s*((function test[A-Za-z0-9_-]*)|(test[A-Za-z0-9_-]* *\(\)))' + # shellcheck disable=SC2196 + egrep "${_shunit_regex_}" "${_shunit_script_}" \ + |command sed 's/^[^A-Za-z0-9_-]*//;s/^function //;s/\([A-Za-z0-9_-]*\).*/\1/g' \ + |xargs + + unset _shunit_regex_ _shunit_script_ +} + +#------------------------------------------------------------------------------ +# Main. +# + +# Determine the operating mode. +if command [ $# -eq 0 -o "${1:-}" = '--' ]; then + __shunit_script=${__SHUNIT_PARENT} + __shunit_mode=${__SHUNIT_MODE_SOURCED} +else + __shunit_script=$1 + command [ -r "${__shunit_script}" ] || \ + _shunit_fatal "unable to read from ${__shunit_script}" + __shunit_mode=${__SHUNIT_MODE_STANDALONE} +fi + +# Create a temporary storage location. +__shunit_tmpDir=`_shunit_mktempDir` + +# Provide a public temporary directory for unit test scripts. +# TODO(kward): document this. +SHUNIT_TMPDIR="${__shunit_tmpDir}/tmp" +command mkdir "${SHUNIT_TMPDIR}" + +# Setup traps to clean up after ourselves. +trap '_shunit_cleanup EXIT' 0 +trap '_shunit_cleanup INT' 2 +trap '_shunit_cleanup TERM' 15 + +# Create phantom functions to work around issues with Cygwin. +_shunit_mktempFunc +PATH="${__shunit_tmpDir}:${PATH}" + +# Make sure phantom functions are executable. This will bite if `/tmp` (or the +# current `$TMPDIR`) points to a path on a partition that was mounted with the +# 'noexec' option. The noexec command was created with `_shunit_mktempFunc()`. +noexec 2>/dev/null || _shunit_fatal \ + 'Please declare TMPDIR with path on partition with exec permission.' + +# We must manually source the tests in standalone mode. +if command [ "${__shunit_mode}" = "${__SHUNIT_MODE_STANDALONE}" ]; then + # shellcheck disable=SC1090 + command . "`_shunit_prepForSourcing \"${__shunit_script}\"`" +fi + +# Configure default output coloring behavior. +_shunit_configureColor "${SHUNIT_COLOR}" + +# Execute the oneTimeSetUp function (if it exists). +oneTimeSetUp +command [ $? -eq ${SHUNIT_TRUE} ] \ + || _shunit_fatal "oneTimeSetUp() returned non-zero return code." + +# Command line selected tests or suite selected tests +if command [ "$#" -ge 2 ]; then + # Argument $1 is either the filename of tests or '--'; either way, skip it. + shift + # Remaining arguments ($2 .. $#) are assumed to be test function names. + # Interate through all remaining args in "$@" in a POSIX (likely portable) way. + # Helpful tip: https://unix.stackexchange.com/questions/314032/how-to-use-arguments-like-1-2-in-a-for-loop + for _shunit_arg_ do + suite_addTest "${_shunit_arg_}" + done + unset _shunit_arg_ +else + # Execute the suite function defined in the parent test script. + # DEPRECATED as of 2.1.0. + suite +fi + +# If no tests or suite specified, dynamically build a list of functions. +if command [ -z "${__shunit_suite}" ]; then + shunit_funcs_=`_shunit_extractTestFunctions "${__shunit_script}"` + for shunit_func_ in ${shunit_funcs_}; do + suite_addTest "${shunit_func_}" + done +fi +unset shunit_func_ shunit_funcs_ + +# Execute the suite of unit tests. +_shunit_execSuite + +# Execute the oneTimeTearDown function (if it exists). +oneTimeTearDown +command [ $? -eq ${SHUNIT_TRUE} ] \ + || _shunit_fatal "oneTimeTearDown() returned non-zero return code." + +# Generate a report summary. +_shunit_generateReport + +# That's it folks. +command [ "${__shunit_testsFailed}" -eq 0 ] +exit $? diff --git a/external/yq/scripts/test-docker.sh b/external/yq/scripts/test-docker.sh new file mode 100755 index 0000000..427233c --- /dev/null +++ b/external/yq/scripts/test-docker.sh @@ -0,0 +1,5 @@ +#! /bin/bash +set -e + +docker build . -t temp +docker run --rm -it --entrypoint sh temp -c 'touch a' diff --git a/external/yq/scripts/test.sh b/external/yq/scripts/test.sh new file mode 100755 index 0000000..a18392c --- /dev/null +++ b/external/yq/scripts/test.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +go test $(go list ./... | grep -v -E 'examples' | grep -v -E 'test') diff --git a/external/yq/scripts/xcompile.sh b/external/yq/scripts/xcompile.sh new file mode 100755 index 0000000..bf19cda --- /dev/null +++ b/external/yq/scripts/xcompile.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e +# you may need to go install github.com/mitchellh/gox@v1.0.1 first + +CGO_ENABLED=0 gox -ldflags "${LDFLAGS}" -output="build/yq_{{.OS}}_{{.Arch}}" --osarch="darwin/amd64 darwin/arm64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm linux/arm64 linux/mips linux/mips64 linux/mips64le linux/mipsle linux/ppc64 linux/ppc64le linux/s390x netbsd/386 netbsd/amd64 netbsd/arm openbsd/386 openbsd/amd64 windows/386 windows/amd64" + +cd build + +find . -executable -type f | xargs -I {} tar czvf {}.tar.gz {} yq.1 -C ../scripts install-man-page.sh +tar czvf yq_man_page_only.tar.gz yq.1 -C ../scripts install-man-page.sh + +rm yq_windows_386.exe.tar.gz +rm yq_windows_amd64.exe.tar.gz + +zip yq_windows_386.zip yq_windows_386.exe +zip yq_windows_amd64.zip yq_windows_amd64.exe + +rm yq.1 + +rhash -r -a . -o checksums + +rhash --list-hashes > checksums_hashes_order + +cp ../scripts/extract-checksum.sh . \ No newline at end of file diff --git a/external/yq/snap/snapcraft.yaml b/external/yq/snap/snapcraft.yaml new file mode 100755 index 0000000..ec50ab9 --- /dev/null +++ b/external/yq/snap/snapcraft.yaml @@ -0,0 +1,22 @@ +name: yq +version: '4.30.1' +summary: A lightweight and portable command-line YAML processor +description: | + The aim of the project is to be the jq or sed of yaml files. + +base: core18 +grade: stable # devel|stable. must be 'stable' to release into candidate/stable channels +confinement: strict + +apps: + yq: + command: yq + plugs: [home] + +parts: + yq: + plugin: go + go-channel: 1.19/stable + source: . + source-type: git + go-importpath: github.com/mikefarah/yq diff --git a/external/yq/test/utils.go b/external/yq/test/utils.go new file mode 100755 index 0000000..f270c5b --- /dev/null +++ b/external/yq/test/utils.go @@ -0,0 +1,72 @@ +package test + +import ( + "bufio" + "bytes" + "fmt" + "os" + "reflect" + "testing" + + "github.com/pkg/diff" + "github.com/pkg/diff/write" + yaml "gopkg.in/yaml.v3" +) + +func ParseData(rawData string) yaml.Node { + var parsedData yaml.Node + err := yaml.Unmarshal([]byte(rawData), &parsedData) + if err != nil { + fmt.Printf("Error parsing yaml: %v\n", err) + os.Exit(1) + } + return parsedData +} + +func printDifference(t *testing.T, expectedValue interface{}, actualValue interface{}) { + opts := []write.Option{write.TerminalColor()} + var differenceBuffer bytes.Buffer + expectedString := fmt.Sprintf("%v", expectedValue) + actualString := fmt.Sprintf("%v", actualValue) + if err := diff.Text("expected", "actual", expectedString, actualString, bufio.NewWriter(&differenceBuffer), opts...); err != nil { + t.Error(err) + } else { + t.Error(differenceBuffer.String()) + } +} + +func AssertResult(t *testing.T, expectedValue interface{}, actualValue interface{}) { + t.Helper() + if expectedValue != actualValue { + printDifference(t, expectedValue, actualValue) + } +} + +func AssertResultComplex(t *testing.T, expectedValue interface{}, actualValue interface{}) { + t.Helper() + if !reflect.DeepEqual(expectedValue, actualValue) { + printDifference(t, expectedValue, actualValue) + } +} + +func AssertResultComplexWithContext(t *testing.T, expectedValue interface{}, actualValue interface{}, context interface{}) { + t.Helper() + if !reflect.DeepEqual(expectedValue, actualValue) { + t.Error(context) + printDifference(t, expectedValue, actualValue) + } +} + +func AssertResultWithContext(t *testing.T, expectedValue interface{}, actualValue interface{}, context interface{}) { + t.Helper() + opts := []write.Option{write.TerminalColor()} + if expectedValue != actualValue { + t.Error(context) + var differenceBuffer bytes.Buffer + if err := diff.Text("expected", "actual", expectedValue, actualValue, bufio.NewWriter(&differenceBuffer), opts...); err != nil { + t.Error(err) + } else { + t.Error(differenceBuffer.String()) + } + } +} diff --git a/external/yq/utf8.csv b/external/yq/utf8.csv new file mode 100755 index 0000000..d1503b8 --- /dev/null +++ b/external/yq/utf8.csv @@ -0,0 +1,3 @@ +id,first,last +1,john,smith +1,jane,smith diff --git a/external/yq/yq.go b/external/yq/yq.go new file mode 100755 index 0000000..239ff0f --- /dev/null +++ b/external/yq/yq.go @@ -0,0 +1,25 @@ +package main + +import ( + "os" + + command "github.com/mikefarah/yq/v4/cmd" +) + +func main() { + cmd := command.New() + + args := os.Args[1:] + + _, _, err := cmd.Find(args) + if err != nil && args[0] != "__complete" { + // default command when nothing matches... + newArgs := []string{"eval"} + cmd.SetArgs(append(newArgs, os.Args[1:]...)) + + } + + if err := cmd.Execute(); err != nil { + os.Exit(1) + } +} diff --git a/external/yq/yq_linux_amd64 b/external/yq/yq_linux_amd64 new file mode 100755 index 0000000000000000000000000000000000000000..29fdd6274e26b27f3ec3ec3d6d0bb69eb99132cf GIT binary patch literal 9875900 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

x8>aU zsKdii?uvLt6WH5Ys%-fraQ%&xs*VmBp5Feqh9X~Q2Cf&=4MoGlb3&Bh%6q?bhU)TH z1B)t@jK~sLbQB@z(+h-O3B@nkn|9rm7lyve->Cn77z(Tjv(DCuW7KMmo}~NjS{0&u zOnjGPAhlXoCh6*wBZL%Xr3ixZVFsn9H8~{IUbQYy7(wU>m3u|Acw%E>zfk$>v;Qvn zOpF%EX<#Ti{7ai-?E>tLhp!98>bR3ImKP~z^$VAOI^&(>MYN%n4(5d7!~2E$*KoyP zWk0D6;8PN)+TJ^yP7Fdo#jmW;o_RKCEP0lLy;5BC@-){$MZuJ+8N`rb_K+zn|yKW8UP6$>?fc@L25S z!+8t5_}Q8C3~SsrqVjBk?Z%phr-?osyEZQz-N{dWb@b~{bQLg}a`oS?j(!ws`?w&~ zxhmB5w*pK0JGHy{Q66fqRd)W2Z~j~T3*%clxdj+qN&d<|(Y=gWKbGOSr{MVLKgA(D zV3uyBx25cPLSPK*bFb3Q>1t;5Nh~K_(>ZnZ>_1~4Ku%PlB4g3IFq1_~tGHR!nbKEF z=%e3kV|+8WdS3I^?nL|7vM^$9Q1t4V(l!3#CXqDH>J%i{6-YdA?|*)MK@$A`-}vWt>(d~yjUM-3um{;N6v;WB z{g$VztLw}OKO)bR5z7@D9r0)$x}oTZ-|-WvI55@F>^R?CGKg0+6A=E*X&>1qC;MZB zQJ%ek!hxGwz!(k2)V{;Ap8mPVeKHj$Pfx>A8g!V|$l-PeP^4idO18zK3BD+Xdic;I z)PUGYh4x3{efehmJhZ)^MZN>HDLNohv0#{wz;Op8=5<1W(rxcB4}FLY=yZL9zcSY4 zpoUl1bC1Iqs?~I?CjA4qoA%dlho2IS5nPKu(%N*c;9hs`l^OBjd0df|Y-0CSBWgdU zH}Wm_HcjRny~FRY7#)yc)e6#SSgU;g<();9nC`8_Xztj!Kt z-$37i>)&qg@o-2DV%I0jN6_&tL9hnR>zUp|~+A$)U~uLH!ttc6i=g0co$eyp$d z?9o1qr2-^AJIu1#K=Y|Ccb3uvEhF96Ua*xJXvx)AY{ch$wIWLr^LI*nwodKzy~V>w z-bk`%Pv&eKch_5VI?Tqk?l_T>D?|B4?3~jxk#)fME5*Lv2FB&fJ?E4)V2up%a zOeuqMwNkqh$~WL3FFmCpmMebFULqHW=4b8zYf?I**+rb1j+p5piqjE4auL_bFwI(G zO>_~#dwrlze|DOST_yW8YkzT!i}*u2;$Ro?%XCDJi?}5nv11p^+}!dalrW?hCAj&s z@B7*;KZU{-Z$f<;7>2IU{vD+!qV!o}{}z!;yCLXenRNHwv!$L{DQ)Rx99A~g9Z5z^d_22@Ziq_EvyF$9zyJ&TyP}8CkYCG>d>zmv5dHk?FAM_ zXP`xUe!(F3Ocy+a*l8{}(zh=Uv|L1lqzP^Wc6NRd$Rjj0aNLT9!Ir)PF^QxN0|GHS z>&RE6UfO&`{6$Yo?ha)@5o9y2bWLLS-`V-4;1viQ8SZomqXfVvjN&iLgUa`tJKeM* zq(~l@d46Oku7FSr*y+j9x{g(hj#9)R7m*bqht@yZ%mgkzW_2a-HoWOgf_6 zMQln(6uF4!(-8-`h^i)F*d7lc!tKw@J-Dp@x9@9z3fcDD|F&m;2j&N9WO$bBY$%#r zEshw^UM)LnDN)dWjl*UKwusKqL$0Y~LlUlD(3L~N8T9o+t2rO z_849#Dz>bdkI;w_CQg!9Sg|5`vRj0?!oLW|$#{>35%?Ur+Y?2TS; zOM96}3iYn$IxXx71ya#+)}rbw%rW0oec(n+$&fkZvQkwdWpq{fs6MDN{yn6Wx4a!& zy|z7QqYy*oEF^OaI+>vj3a|XchEo>K&6$4Lj2|`}H+A9MA@!H( z>G4hG;a|cvz|k6}3C2Z#$i6Zo@h645%El_@ueg-0aQ0RF*mtAvwVADyg-M~XS|e#Z zIG(NBIkDWg249&mICqQvyP3aO#r!P0jR0eHpkAi2RMC1WPhp&cGvHY6!G#xRM04NC zA_oha+lPfBD{vQAlf%wAuR2!X_;UzMwEUcr_N9HSwk7S?;%^Og1@gz%ZF@R-U;20r zevO6=kx)&vcX?72goZx5IzTvK4fLesG@{WeVTpJmv^0iTXf&DK4hC18A z?6hw#V+0dd%j7P)!L6Um@tAE+=8vo>ey@*W{{+C^Hi zv1kA>QAQ6i>-+8)C!WO#=a=T9wL? zBsqcjOfW(JWWRC~kEeFd=E4)w^#-%;9pPfV7u{v~&sIKL)e*Np(L_NEWZPzbh*C;} z;I=BR+1k$~48)ki&$y8@Q21v5NLO)nIpf8^)7ms}FJr{$s>>*!CEl=K&b}wR4ubGI z>q>A7tC&vB$nJREKR5L(LOA+)bEaGO0&QLqm+98bKf&%ikce}CU=hg7R{Po2*iPVD z>vBr;;xK|8!F81Fskt6m(sr%&Kf9mfw9(z$sJA67tmX`}<9^{ zJ<@>MVPv}6^>Ei*v&!{1&95*+>T}+xWllk2=hw(o_rwty{xGAcS=6N!Nl3U$^|$x0 z>;L_(|J~+@<^CEsaAIH1yRcJ&)mm&t=3NkYW-K?vzMNI7L&!XPO)56Fgro&LyY)=f zMSF#nvJ_TA<=g9DY98Rl&zxjF@lj!!IIR_ES{qD0&_#bf0)Dwwd}O;$>h2);Z*XA_ zc&2Y|(hU!Jec-|Jhxt8edv()N@PRXfC1Sj#8?R?OxJ2^=;gZ)yCI<1yQezi@AgkvZ z9w;lXtf~J{rm*i>L4X%#Cz*b>t1yq`pOu2^^A#K?emp&Gtu!6fMexpSr@644XU=`P zdnYu$iOGF5y4xUH`!lk*^X=cWWs&_EZMF7i`i(zo&!KtuHa`429@`M)hO1R1+_YMAv*ep z3n&zNA@$};b>`QhWvTa8s!J0b1B73!J8>aHb#9zS#eb3$sd#%Yh-nyl zc6(JGdlO9ixdOzC8@t2N&#I%ZB6}hK+=JOeIQm9)beDaIN%bwhZGYSEvsAN``^T*moUtr1 zg#6X<^E;DyKpZnCBvWiR6u3T{S92CwCtAQW03elY4L!ZIaP0W#-@8|{o@zkLxC4MP zZsK_EAh#wC&9iaS3&&QMzcb_h#5;V8g`wHC9^%)9qpyaeZ}WDCsY6w(dNt%JB+4IF zD_}K^5%6xbbfNPE$s^G%*w21GzkWPJ5voRVk2G;ZPv>HGyrY{O4Tv2-P}l*KaQR!; z4XSL;Doiw@>!@VYK8o%B`Gi{&C$e=z(HoAwQ;A?A1b>2jBkF0n74fz@Hm0z;92N1b zmc(wda?|EUI{~mDs{c+X^1KKZV6P8S3wRfVuj=UM)$v=Dpf+t+1EB23^&8z#y4B9_ z-`X#jz?*slMQLW5@Zdj=;%>8Y6~1M~f+Lq)P{ z$VSV}dfaD;8N3*dJy6&L>`?rY!c2TM2Q5BR^G>O*RUL}54UN8)LcOr=dh-EHKM?;p zyQ4}*d9vEiRq{Y&Gt_HeoS_Es3Du+?KcsJ~VZ`}2hdv0jx7l$pXVpW;UpP$>(1H#c@zV$$yZ>q_S zo4X<^2GiHPY&H8)Zw^t`XKiB+a4{D% z4+9VY)$t$IRL8EYfxzm|id1acEkqm`j!whYYcrncgzH3*P6XA7(<2o_ZSBLlbt0Hp)K#td?GGl#bwN@4r&=i2meKyLuQ)tx;#YXs-?l$96kn!c5mg#~BNa0& z!Hx1FqHJnAj z+$mJWZg700Bbikl3xRRCPUY&#v6R2Vmft_rUa6LHLS0#--{c#i_#F0H8%j5t*M*(< zoEm~_39>6pE{jxrKV7k9UMhp{pXV$Ckb7n5&)j42+g$iAsVU~H>0{S+rlak%m~)DK zm2RcYA$LD*eCgjp?JsHSC4NeIbM65`#Eo{wc=3y^g@9&}06TzB`2e4@6>16xQ;Vk# z_G)3fmlU2Ti-bvGc-#u0hH3GgY8|#Bz_GJ3x?0N$v-n+`!9nK?wK|%pj(z};O9fmK2RM!E2lcz zs0UXXbCRco;uF}#y~_Gy=Dutv4D)}N`3$Q9y@9aC{GAX|f#_dx)cd&L`e;o2A6Rsx z;yMfaz)<^HIV6&Q4u*k_F(i-0Jb)_R&}_=53J>B?6*oG-CQEU>!43ed+I@bc;s^`- z;E)e59L2M;&nOb?_>m^WY&c6ccdLQ%Ii7h!f#@41YFpfmViLa>36xiQftCjd;b-E1 zgp~b2#vCtkixT4#;bW*5kb~OQ31KTe=kyTxdq<~=O_6% zH~Rq)4kd(J{I9dE2Itoh0_Wxm#q>r^5(M-9pM~5V5 z7z1ljO(%qJ|6rZ`q|QP_!oS` zYVS+h(J-;kL4Ws-EIW3Z(V7C7T}0c=fp&&u|4L_RNWl27A`jwcD7vQ_E`pT79^(bL zd?=2BtvWVebG`nuNX0+DP(Kf13g)Sw)hNEocp1XZ$K+46I&CL99Nk(S{{a;D4xK;7 znmM=xwhjpX<_@Al@%h;I*)+%Fs^v{}YqALbZ!5_e9~cI7)OOKLfcc<9W!PGqHwmFr zu56k=HlzMX8pjuQOKCxO`}n{U|E)y{qmlN?$c{`lxjp3I&hc2~x8#b8fASCd2#yOv zFyo@LW8njG5Cw6G;sqZ2BGkX0EiL-Qfq#+0!--g4Y(|mSi5Uz(yBWCIy=zy|VCfdT@k33qc0C%IEOMWf0X z_6?5ptNd!L7^w2)>l*=H#g$&fukEN+NhiIytJEI#NE4M>A`0wgLJ6@W0uI`g|KIKe7b&9Bb+L_$$)6Pbl z)`NDA;r$O))8J^wOCIcK=RvZnJvEXKRqX#i_4I>!B-;16zbXdBp$La?vw!UG$(j%S zLJ0I7v_!X9pTk`{q%%L!RClSVJwYgT$uRESY}G5GH(Kc(HBEsTDO%iTe0~S`5Nx94 z?AQed(EDdlo3X=R6Y4Jw9X4D?ih13yaS^qH7IVUzB5D^YslTHuah>_&R+p$qG(;s{ zCpKymORzsIpJ-{mvV;_99v#FK1#?0;0l$75c_+k&FRPB9*N*|)zw7)cq63P`eKA4vXibX#)2uFt9Hci);>P3bY{KVF`B z8fuT}g(rvF{w~#0k@N%Qe-B(gidLiD;9&q!`C!@Vp|yOEnd1jH6RcwQ^NO8Jpyy5V zqDwW)?XOYP<2Jb7Je1Dm&%Y`jANr|H+ztBXS&WXGD2#4VccM7TOKWQaHy!aQt%+aT z8EX6NyY&B5`rjGaKm+&8^3Fh0GKbU0nWs!ei*vHImx>L~3zfeXxc&nsmDE9Z@$!>~ z(D}C>=^CZ>o6V`jO=d7;fg4I9 z+sM}1rTpwV8L}GgD%>kDf6QsW5KG(ll*sCJ5yQ!q*s<*!72H<8tM|#vq}wl%ZXb;^ zXDjJ9yss_L5+zst<})L? zq6~S<@U`=K=0dioeP~tfd2S^deAGJja3I4Bff0A9+PkoCHqnkQJokA2JaGLc1b^C4 zD;!P|4kzi&gmCmL_}h~!ph3=X$6^GvkRZ+^&1H*1_Z1}m68am5Cv(yED^ zb`6YqA~ITm={t~cV7L)znKR3QcI-!jc0Bgw8yk)^n>p<51rwV9x;iATDIZum=O&JlkDWiB@dvc!DNpJ>- zD?yr>yw2XDyjKXIxj_Um74mdB@Mu%7?piwnY(lYd?s4S*di~O(H8?h<053B8E3|w${&+YY;Z7_W~r#gymh{MN0pok7IB=iV6=|JigcAE-QMp} zS%+!mSuLB>4CwEuI7LibV#DNz{z__w?r0cv7kHx7w;im1I}s*@E@kO5p`R@FTvpUTWPxB+F`2qG)T>j~F6*t>@HU`c}qw z?_sClzw|CRstyNY!{q;_{@}hy;$5GD8(<<^lJ~WrQ6eY`-vXRx5^VGiAp-p~ZhhP; zl_nJP;NAPsNa9Px`<_dK{c`l-Y4-K7L6EO>uI0zC;R)|I{su2;7*?%&3YlK?Vh&M< z&B;lQ#ZwGQAPy1C?I`-W_K}ZL%N#@4DsI*Y|7NcJ++k+&TNP~&$8|Tx%i&lo8K{mO zg5X@um6qsQwu|hg1I-`PPd(fiF5gr?Jj8ya{H<97s^b&$k{kG&lU!%7VCzD6q~bfa zVLW4!lSF&nZmxz8RK_YxqLn;rQwhaXvJb2*i&TuT8R2S`Wm3e?DKk~r5RgXic734U zDJ?IVBlGKGn{+Yy`?pg`7gK?h6z5Wb$m_pj<6OFI5dJf_bLO1#--3F5sCH2qdSf0e%nP zecwln7fc?3ia%%qG(SnlR=boC9Y_uWT+sXvg(DTexA8-X*IE@+<;mfsd**f0rBI>? zYwbb!bT~s~RYB{E_Hm=C1cyGfMucn|u<_o}AD1gZQEU_zkL>!0Oaobj(Uz zTX*6M%!oT^1zae{7j#I_x>tbxO`mK#JyYHMl)*3av#gtp$QcDZ4yxR(Wx3RDKwp)L zS(E5a;V5=ZzV>%t+G)fSN3#Zak+!_#M*ik-=5LpJx2|Y4j?5{@XvpHuH;h^>{?$|a zhzwa)WXN~RpS9s&Waw0os)F(Yg5L>nocOt&oWFP%@@WQ2O z%weSC3-Et7*DpCTQV~d{Qj(i7*RsLl{6OiE1;Grt37g2|OT3e6nWyu%1)eD*OY&Qh zidSt42To_&d6gWjR8(2{0ulXwL8Rh$Hiy+x29rlxg5PL%{gGr%g6#y70r~k51z91! zmA5_`ZJ~T-jGepu=4<9yCfk}EBZ8)qKR77)XsnG3=2-rEkNe0ow-RXgxA79F{Tfmu zWaR|OEl$$D1}61Y!w`m@d;iDE9SELv=CHnY*5|~oD=A-4G8;b=>!5#4;^n$v^EtyR zCuY~+8vd*L$-e!1`MG%wM@1_B@V2nV8PS<}YP@}h7xd)O@?B6;0)JK`HWW zn^JE6bW$1fCtvd?Px22O;2h@9`7i;kaR2jHwSFjT8=}@ZOtYCeNqkPs$wPlneO`QS znc3e3a?BM9fB|UnPqrLX{QVRak0CKq@#|FlL>td~^N&BM(8l`Hz4GtnHH?Z>EK(M? zew>|`91l6>na9YKJe3?d4d01W)TV%(og-ShHpkqo^h0zmU6o4naNzt>9Lf;eJSMD9e*B2KL08H!tqNB*E{2;vJRH3hSK->iq^?byH>JzR`$!?}u^0C{FhG@>?oM)vYSj_}JHr8c{fJbnPVfQQ z)D{3a`DCu3-QEW@BQHRsLmV>WP+6qsmV+C%E!= zAD%+UXute4Gh5|nsC<0i^3nT2fI!rm&;Dw$Fd)?gtxsF&yNIpUlnTliK{;z*D4`;O zm}DMxAeQNlg(a4I{PL5`=YON<#~{EA?4x{%%Ga3bu6$Fv{A9m;jd?=lA65BwW$J|m zm?oQfGscwjJnG8dmo9&gU%t$I&Xq~?FQ*av0# z*K)9;RtTIKDqw>Itgr{LU`}h`nI=6$2<8T-ALkzQhHG~ z*9WiL%MFwI@uC8XAoIs=Q4!n^>||4-oqFznJuF={YBmbt1gb`k_MF2!55o?9ED_iw z!n*|$)b)V^Tgato=__DIR^<96u}TD)ZzkX1_s_|VL?xtzOvwpIRm_~}XvdJMJTAfv zT%CQ$hAT2Mn<@hQWYlLhuSgDVs>re*L&?B>2xX7(Mz{RKaZ5R}voa8oIf@q_9`xcT z6&-h3Mr_<>M9~id&wi9O+&e{<=$x=ihim`?oKX&xa{Z71P&Ca5*5db2QRlyyEvHu*U^a zX9;8hQTGrP8~z5@=?Bczt9!>aRh(=K@fP3l3e*oLt^bUnk)65qgCaW*s#mTY3x)de zGkO)4g{vjI{FiOO*w$!Uo5@c3caQAsABfD;aK=a6y!i^L)fQFS(zuze8a!mt_{BNN zLrwiHd*$U>9SpJKrD6SO829J<;rXqD*e}OimXUbe3e&j{A|1A8EmTL?n!X7iHMg}= z-XUm>a$c{T>4A`o;|#O@QHUrtu>P;;cUFi|h8!?1)hOr0azA|iij2Us@8wQyoiTK& zy#V~$VbHLw$brcX9A5pj@yLI&%}z&}AxjX!9`35d&5wjy+GBn+EwvXZS{qQ_)j;*P zu2&Y2IJ&uC)3c8s&R6~Zu~tbffoH!MB9A+_t;AX3MrpzE05emfZkgsNh0oUvh&`zp z!0!$B^IOXP0S8jt|3`mD!@r}6!ET_}?AmN+*Bj`rm_qmkaTCkV*d7xrH8)Gp#^^q6 z+bt#9vd4m4%2>Qaug?ev-6oio#8v;E>w5^3+WvH5=g)r*N4I~|)ghY=tkr2`rfFo5 zgzhbDq5*WfF)gW;6lpAG{gCDXLFihwO*Y2ie|C2(ZFD4bDO9f zqo-bn2S^I&85*vGA{!&SMmBiTnNDhrg>n||65#s5kzIQm2D=Z`>&a|O(P&q#j=omI zvCs~O8L6Wia5D{}se3W9>mX)h#n+oOEiEy*c#$}|W%Du*^L6D$*T(1uT{Ca}Rj+1t zV-_Vg9MmY)c(F<7qv0HUG|E205-wzhJ%Jay2!Q9+cyT@65`9vA(ThwZaol&bxA3~W z<1qVaI6!6n^}*6N85AWWOO+9Vm+-6gP5Nt{-@=m$%_qO?)kv8E9SyzWndeN~msYEO zRtY4!JYA7e1eA>P6#_v5`3fNKEOAw(aMy*GZUoeGRz)hVepxK*gx1(h)CW~uD&H$0 zjMv`14MW_Abs;*?o(@cHmH*Hz?v?O36f4HV>#oRHj8$Zsl-*6{`3J&gPJnrNv9UZZ z_Ep12y5EcqeEiT+#LhmDi_R|;P!HRfM>6pjapo6$I+MR6_F2W6J09AX@%Vk9{q$YB z4Cotm-(!DP`%i>f{;1yC8lbBZsp6mpiv}Srp6yYE$faNzv;~pBYBqD{Rjqahr`^!= zXW-WgzB@J4tgO?lXawXm7>A_OMQY7*qY?9Pe2AAg--X>ujaS_S(|>|ASrwH`Pm=uv-3}`j#Kc|4+U4DZpfL zT-}3dnvJNy7R|`jS%~Uoi_0^hM-WI6DICCh4-`xzDp6fZB!lBP@sw3jFHLnOw^5Rgdc!oy}w* zwwS@(O;SC6hj*;xa#Kd2d5#qW_S_ZNs zdn%Jhm`Tf!Z5{owl@NceOQZ8COO7)+NaR#GNR!u%z6^w2&;~+%xhGcD1}2%0=ITGY zz2p+=ke*!c_e_4B{om8C@Mi<5$+6~aWkS80o!ZcrlOu&8j&(as(MEDdC?fi}$HMeG zmKv!v$+=enwc=Qr$R9o3bQdwg3@4el*#1#p-Wwxx zVL!Px;Oq)b{Y1n)f6>55B3dLrXw6e8uFCaAdzsbRo z-Fq7fU8Ej&kfwViZ?ui0@z_b!2S`_Za)7(eGoH;yL5eQYoP~bheLt4hE&laRbf$mnc~=HA0EOHu1P ztZB!NxQm}-N5qILU%Q~%TuCFCFfR{>fO1sx#hM|n5$pSPH#r;?^jO7PMGb)`Ng=zno!Y+w9h#aoX3VR6o~0)8>2Y%h zX&iY{m|?@xq2C}f1HSANS1+7W1;O}^3G|(N&({xpBMVuZ0qHOg|9Wqy zWteuQkKJIU0=!Su<3(gwzlIY9>>#~1r=jKiHfo_2I%r4sg2ws=I2Fm$`>*U}GfdQ# zSb3?f|3&?Dum2dozz-jw0K!9tndAyAbOjdmF0ktXHF$8KC1g3gZ7_$&%@hUS2u3Xj zDWUtAt|KKirq^^E(>xk_*c5+E9sk?9q_2V9{iD7H*3z;D_NdqWf#rVMVX2WFMx+VT z*d8N0c@+`y>>+Kbkv*I7v?J^4zenuqc1G4b;c{+yH$A+}KQs3chu>+m$dO_(EoOXY zOtJW#sh{rnUHhxO@?GZ8(<)!rfo2Xp@Fb1{-DYHs&IHP7Fj_eS|0LPDdX5wgPlg#r zO}?D_VZMZ%OV;Mm(6u>ccA9#BSARVBx2b`Wcb!g)j#0@s9%h7`om%}sUW|}UN@STP zUq-|B$TBS*8QRk?vocx3Un9$gFk%@EueI{n34y?~pAXTC1SoOX?SgK5k zN&OFj_Ra0n}938Ty$(5=MPM$zzjlP32!N|@0THNq8$D!fDqYV?U1;cwWxIC z;=Je(>mSdYhSIVJGq&f;J!1~y#JOiocJCNX)zYozCv&Zuv>=M!>%B*MmwL4~<3~PR z-aF3xws%a5^>6=eFM!(Rx%2vEmGsa|z)Gl>0@m@*&(!}O_IW7+vHQ2xN=EuA0a-Jo ze$La5XG8(I5(r|gznKw^b*R?5Q9HE6nPYX4);c4{2=!q|-z9rnsKpR=-`_2Nh1yzAm2q zd0NarkF}FF7erT>vm7ITeJm5GSOa%5Y32!6;_Dqu$O2*=f0+9q^Ix4Y!~A|EW8IqY zjrD)kv4RsUJ8{&)1Iu3Z66R{c-765o26*pcb_=cel))>r*tzDVO&p!r`Q>AXag zoZnQj;b|zbwZUtuctN3t@3I&^|9`|Yb6?=c`p4G%`*oLWb@Oj}(crUlX@}R&!(|N8 z#4M2o6_}&x5NZb`QcKrVXKoXhx_O`@oB}j^MNaKb`+{m8s|J58Gm?25?es9akDv6M zWl3Xk>VL8qA9o&avtN0@Wf-B3+ez>+wlFvgZ;kCQGw07~L{r7rf21>k=D%44X@2qK zWxHC5{)PUdMpyr9d|8Dc=+TyE%K1#ajr9XK5$iu=m=2qKHDno$4I-H^oy;pA(E%nX z$`udmY1SVtEr+FdZ6o|`T|>{Z;QU_sDFi7R2X<`s1OP^$5Y576lnM9dVV22j zwz+mV)s+id{t?-m3BN!mdfrq z7&Yzai+k{zo}pWAxz<;(C;hP(3;Nuexj$|5B!)$pKxC9OWj&GFJ;ARZ?9~EQ z=*Xt4e91SLzwDdK_iQEYV?s=a3ZOqLrWU9nqCGq@$_Hax@-)sjc?#k@zIUUa+1+nu znClG|C!5|KRCQYcP0~^<8iB<6?9gkyr;a*Q1Zl~m@_MUCH;=dOvpiY(eij7Q^@@kF z9I=@Sz1SH4NsR-ibL#h6&z`w2x4xaK+&wh?Qb)?$0IvS*--7PCbtDEl;mcpWmltTY zKsr`upBPy5I6ZHwh&*Yh-LHfOazN4^HsUE|xUWLL7$Too+ZAnf=+nA=Q}M*QuJ2o$ z1TH$U(Ym*j9-JK~d4_d;YyM_#LO+gb{@fB|_!@8FN~b=TcHWOdGq1D4)lCO#oRZeg zmL_WVdwLBX_71d43Y`(eLM5vgDwjQlapxK4nJba5p6t0W`p9M0OracWkK6!#A<59ynu+-q$*)VNj$ZycG1-k7}wo zLa^IJusAX4Mz9w^u=d1h(}z1YkFLM1AaONk zkm;%PjdaWT^1i2&`w;GqII0e)xRQpLZG5zv<}2j>68#T$BKruX-3Ybk{L>*_(^5M~ zcnyqsHLV;8*K(o=;n?#RKBqwtj8jb=zZ%s>FS@Xaij!rQkbRrO@YlFZB`w3E{AeM4?!;B+Rm#c<44((*$?qR8EbL%J+8@Dj< zEBuGdz~W)ZLT;J_9(g1BqONQOo+x*(YHUj8r{Sd+00%ObdkHW!zMN8zqJnttIYe~x zjIC!m-b|Lavg$P)=Ss(Ok0wv)M&H9VmKy_Y0c@V}xAW8$8Rq71;ma~xyX?bk&B)k0 ziPtTpUJal`=_+3iGL848G%HtOEaZg2tjnD+mbm9%)1SltVQ&5gyCe~>{LPs`F9zw@ zgW}aXliBfppy^%FlnkBtm&yD?F&9{@?X>(7-?&l%tK|!>BNASa`tLKKrdo(vcciLEzdeVbS~7WtCpSXbC1 ze={;&7T2JMH&xv5xHtuq#TUJ5&8~+8-F~Wybb`;{f9mWb0GyIBq^|heW!6JRyn$;M zciyHgHsxqZN=C2>E31FMth;@MQ}0-%)h{jL9ey7aUV7}WENa2(dU^ZW@m}4$E~J9e z*@d8U-eEc)DSvaGeAK$m9(TODlHSa4I<@12Ylf@6V_kdyT2Ffonl?`ko%l!N$~$KN zRp4+Ihn~UZdx?Cm|I3v*J)p@)diB#RzjUAeC64Yg&~p8|85T_c7~UQy-M0OE12$~Cd)z{_w_Wkbp<3RiX@+976^T-t`e0apOul*fUo7ZpT)hK=F8_{b8 z+O4PdryhRIoA|WHTzu?gOE~*a52Kh` z&6V;<$R)mdVH-GhfbbvLOaD%C37^q<`Zu;Nd5O1h zwd>!f^lz{0Uq6>Caay`~&@aE0MgjP-boo)?`1Q7bG=4T+Te#YF?Za+eE1*pIN_7qI zG+g@S{il!m+YW8(uRHtEFT&B)U1&%g!g>{spWYd6Ss7?KAd`*;p4+IR(G7a7Y}32m zrjJ5A-ni+*wE9Zp+voWEn6c>&H-l^!4jpp1>)f}}<1hTYW2-*&RS+lq%HVEydeRxjI9$dQ&nqKxZ{r5i&#z7V?!(wh*AORJtPqrYAKuZ(UGO4QBq zoHVs;rDM=kVDUx*b|0$+rAT{QF6GIfGSbM>@?D{+L@XL%nP;6?V*XJK=cF!AdMS9l zgGEPGsZ<($#Jgw3;1B*;)Q^k=FYmuQ|A7G8nDW-*E z1H)Xs?>`~OwEWVoIaFucm&#|xNK{lUY6r#+cF{|-w|MsSAJ}#0q^nc>dE`wj?p1Wx z+!D#mSf&v$4=SWM>DLrqm`VqeF7u^C>%-=s?SEJ>XZs&2L;1-zl;-s$q9dolE4{rkSf+t)wQ`gh|utki-hHHwhR}1EeBL5yXNwD z@HD?i=dtBX#vT6phJK=9VBqONOLCGUe2UbXW{yBq6V*VWJGH?1Kze@cD{{Cl9Q7}| z;B_s}{`uIvOr}eZ{V%2@sr^@0AQD!3+xuL-KWW`#lBmaFad#aEy5K-*g&HoxI+0l_ zTR2|jDWB#Z+;B3u+w{H{ zt(k@zc^2DG@Y*JoQiT^|#?B}TJTs%VbM@5dj9R%Rq5N04!*r8;r>@Ax)>ECER2{;b z+oIB}^4pPz?Loz~TM=nuHTiOkflY^=!;GHlMeB;}?kRJFw{VyEZ7r2t6p|=z9-_)5MM+ORTk2-lhoVLl#+> zUt6z3BnN#t=9iX&Rqci6RyoQgedTwVI)Qq;l^h&hUsF2!jid)EUg;# z9C~TbAI#Q^eQsd=T_mP=4UOdjj8A^x`j6F?Uh`*DxA~(H5?JO4ix99qH=7Qf|ENVC zPiaei8W{RdZ0{iaQ$z=z@NXtd%47=I6)Bp>39M!c61hK9bc~|MS;?Z!g56)kvC{Hy z1^vpH@t7<-RK<+}w^9W$EC(cm$cu0mrO|tbO#@Gk>G4r#KhhJ(r&x3B{O%~i|5?f} zj>FH#ec}h>ieC7^Jm6_CMC@+p%G#g`KNdAOUAOPlsd=$`^K7f^#wzwyo^2Iun#UpW z5)-c&_Xr5g+~sqC4)f>JQQw&f5k%q*=Y&ZG*o7XmPw!DZx zLtoY^w+DS$YARjRnk@0!o9)0sVjMLz+i_Dk)$F_RMW*f^ghOyhAlS4kYv%YRdSNpuL7#!#w7XSrMl$4M!9EcIh-gP`6u(KYNC9bmC}rf~I)WEN2Pj zL(q-vxZ&3o{w=D~Xhrf%T^ZCr@t=85dwOpIy8dHl&At4a_k*ps^3MmK3Y6i2+5B=4}^drLQ z+8Xcnb#2G*>jTHl@0TrouWAx~H;TR+b-Gu)DI7nC?e4lj%iWf&Pu5}?Xt|I2()@kl z9_3(;p!R*p(j`PhcRER-3a~KL4M~py&=f$hx_~*3 z%v0xKnd!xz*M!jiL^I-fHzUptJl*CbDMsX2t2*Zi*#nqyiCss;LrOzT7W_ecZw!vd|TaRn%8Tg znkR0t9XA?R?o?rW5y@{bQ^TfiV72{@n;nOE(HmVb)4@!fr8?<7@UcH@@aF;iiy&yq z)JuH_Ds8{TJ$6^-T8v6m9|VJ_k{H}`4mkO?-N^^FqJNmH{`kJ{@e2w&$B%xkYRRRA2jNficw9to(utT=5Yvd{ z+Um@gCq&0=!iQEm(gKn;?Y?6M%6!O=gr1ia`aM&?@@nLJEE)MQU1QDidp8P7iJQS8O+sBXtpLg_&> zRUvkAza|OJ!~4yCQocDB^E-3Y{rstP@VC5}hTqa-T;T{EgY`(BhYL$ zgUbUzugyBs{uQkT)X0E6n&gQ~brFO!=` zwOvTJz`wphBmAl(*Oq0}9|zk$Ybm&5Ui$c3xJqb!@js9B;%8+FzoGIK3%H%tF22l@ zNCT>3!v}<8-zyu>yErhU?**%;Y^=_FD_nkF(d>0qu}cQvtZ(c5!Q-QUsob%(ddk-1 zkm@NPgrgr2fwyiXnM1ctxi}-C%eP#x7M)kc!UKkc`^RLT&#Uh9Bnq9bxsUxWWE__B z<8`L~cmM3fuNxGV!hW~DYbZc9xYt}S(c|Yuc$%6EeywKWcuhOhc_MYl{-L62_!oIj zGSBygtYXL+oI*3SM&{&8bs{j>g(P$kvz%X4@DgZ_rgx6X`& zqJP1BVgPJu%)#!h`u>%Xzu|a_M}OX{+^F|;D!+Ouv%X_Oyzn4BuoEsncJ}gc`HypE z{SmD<_XG37ncG59d};Dv#VjIocp z%9P~W7wKl-#Tq|*vu}bz=|12eH&H>%zqrBd)*s6_dhV}ctsdhh{S-1khz&aF8%|Ke zLtO{CLt|gL6uXusbOtN!Ze>5-i(OlTO0xbVahRfJuA!ba$(*=XB9P!%*&8|p!^rc= zHacVL5~|M&3c}$;&0q^(1x=Ng&Ng28H951;=HnkLb1zD;{N(HSV92%;NRevPkbYP3?K!I4~ z8I#O;o$7!s$fhxglCq=Q1~5%}7Pk2{$WwiAE9oaxEP>u@Un11|Z0kvIEdD;n;vc7H z)X&!@n>|!K|H6kT+c*Ryp zP~*j(mSBc!zEJUcarwFs6S7!#VD;Y($8LY}&aG-6Z*M7aS>7Q=(oph-Zyg=Kx^j_<PZFasTBbs+_)!DP@ldl z{vnBHyCk0N=Ax^Fv!C$a-lgzgfnl*|0yvrm|KjA^I+sYTXR&*2r<<1BBOy7YT`sak z=1#mKWWe}1cA%5ILp3umc*Am}*9>{EY++9V^|uf^Sq9^@X+iNdK}Hgff#{G*=StHaarw}lQ}i>n?Cq<4NJGX`ev61goW5rInG^ZqErg2j>V4lcq%YU zF$zx&P+>SW0axr7<>PZblwX~>AzZ#@_WR-TwX^D zJaJ;*OH9xC{ncO^g$pv1FlOiEQvg;YBCx|N1olTjJ!{gQitdjH|s?t za&1;-JyZmJwK+>XfW=wrqC*PJjg|WtcDlZ5$~8&pP9+&=$|4!{yj>DQ#w_w&=6T>4~} zK7Le+@VDLN+TUo`7jv3RuS}O;Ytx+{1{pi(AHee1Mq-y%8u4(C$HfOH+Dev2)vhcn|*N0t=kA=cG zmEZska#?SV3JRVgP_k`!Pddlrlwq3rI84fvjuh#q>*Q7DV{4ccIBHK=B8Ctjr)tix zJ`rmQRB?@D#F@XvB3du5E+)z1*DKF0CUV9cfv-t5&~93nS#q2ETz5>u3{6y8M!#Z9 zlFqvLJe$#f2Pd+U={USl9j zXBO`Jo1r1w>7#6tn`35Xt@k@;=Reu$-vbZQzsF=N7SCR(YJJWNDviDo||j@a93`5Mw*tvTMcZ+dRG z`bXOKInp*axy~+INoQFm?EF&{>v665+_ipI9;LMey7{}6bdtw#?WV*H-=GvCwLY2U zq??mfaeDmVrVjPO&pkR1K#lk(pkm#{{P!#L`Quhs>#u}=#MlgTrA<%sN7>(*r@^1u z;2=Hr2#^j`)@ z@28}6CW0>^MMEdKQgv%l(WvT?KD8$eIT&VnYO-llu;aN@51szFR;sqTaBMEi zk$cg}9M2I2xPJLZ;6iJW@IO+6MwKi0mM|1FgWNC%ZUy7ilVNsh2pHosbFMqWpCo21 zl^FDA$4By-DRqhSHj$`V=IF!PM*?5nG(%mMVFC@NRQ?_d+@Hgry2bKfIoQ-rAOjKks)mPAi$;f1BQH;K~J{U^#CXs;Bfyt(S4fzw<1 zq#%m1R9gzut9cCB+N@X3y5cL z(5>7863tUW4rrWY_S4cG&(6BrA47AOO=`A4%@BvgrGF(=^T^EgQ`IK(sVn=-KauM5 zr^$Z0nqXdW>5p}iE(Xi^p5~`_DE;@On<&UO52%6kd@0c^BPGrJbz)#0G#|(dTA8@f zg)L85;=-0E+(}ram9D{28DZ4LKUdhqcj;G_|J{SCj_&UNKA0#}8}_@}_J8LLBCNU1 zuB+HMn4gw$N90o+!F1`K6e?Y@n(a={xb9!l&&;}rVAssuE=je)>4&ho*D_ujN`OieyElT;q6$Bgh zXDm@YEqhlyCeU&(e?Ayd`^jp65*;YRxD`m5yTj3wFW<(y_E9`r+IG&+IY(;&AJW=2V{3N`Kq4 zy%cOek2bT9N1+CLKAxOz$zy(9iag$O5y`nk*ad8ji zK~!Ln-1uN#q4Aj}ZAz`QDYdAzMz}MxN#@Rvo#qP5sme?pzs)~atCr3ZAq|~`#Yg;O z2?ucTQIHNw8Ymon5$zDoc8 zmrgC`AFf&uDBIlW<%r|S>&3@X8H#x?HoRYQ5^arV2LxkVQuV4IkyX>UpU9G$Z+%tC zph5MK&e-3b?z`g)bIY%#u?}kiwqQ8`xAt`n&n4`+lK(cthmx^krBfqw zYT+LZMuKyJS_1TS+^-anONePtn^@gBEOoqloUKCr$A8sgIzdgrzcGw{LePHk5qTVLOYZ%pB; zF~;4F^=8#^R0cBG3w1OMTnd}$On%#o&w;&b7X@!?qAvBc(H;J<-&jJ7Sy!1V2wu3* z-uW!C8G)*m3?b5{+hpn3CVcF9=*O#R-}QeahaNj_;ABYH#dN}Gvh`By5mnLk<6{Sf z+CJ$&zI@yGz=YSUV^`-?M?V`MeZ7*mJAdPMJY#ki%JGWo_>bxGT)I5{PbgD=k~to= zW@Y4Sb-BGNx;Y&Cso&wwQ0J@FncJ#I@8;#;N{si}9Oy>!FgROP?6|3|w#)tb5{1^P zkH>;4+ecX}RK>2!BFln9#>eN=*UtWxfydgzQ+A#kABVZ{bvdocq2o(G8DHATDU1EZ zHAIaboWOtMJm{D8T!IyLQ&tuQq7C2Aufm*vOwoY$qhA}7Cx+tZ)33>+&W;bi8%v=< zvHc^v)hF(St?%m7)==lVaOTGF=(j+Pl#K=9*deVfQP8KWPU7sHfY-08l1Oa7Sz`5# zm5Oba!15Y*G+|#9?&bd3&!gu&WYhEx8b_`{*xji>I4{wyyeGQFTvSE`^jqgt&`gV3 zZ;CaEt1)}7v;277c(|?IUu{EjAjcSQN}J^8t=HT13hht0-;!b0TFC;gY3a`_cj>Ed zPI2pp{d6`Guu^l6KI7TXCn=96kNt_Cp4$Jo@|&+GUCWudl63QT*Q%?v|IAbDQ&aWm z@D_99DLuP#qc7ng%rW_4rXf!ZEohE#5bhZX1gkgNzh}GpyLLUdAL(|7`vrCjlHfe! zxh8$uLX$)V<_$k7XueI7DO$*%GaUR1iSo9E`}-~2rp2}gvZtkyebWMqjPF-bNXVA_ z4{RUZ=4uYm!PSP_d|V6vll{7D%tV(u{eBATJm2B}G(X)(_ZWS~vnOmzp?jpCUSh8C z%d1;faM1Y){(tGrEZ43K`CGT08Go5YxAqUcx|2e9i1iEwk6Aw7R(Rqe6t#GMSl9!P zsqxomJo`wEg9UwqpUzlmtt##?TbgZ_1H3Ab^CSe zyIEI*zi#I@_gUhsipUl{Gy>@8h=uxl(slZqJ71M?&R~1BaFseK(QJArBXg|Cyat(yh%?Jk`Bzv1 z3*w)e$X4_E7#8^TeJt=!{;C#(?$Z;r{6FlEXj%GIsVu?9W1hBwic2>tLh`ZJ_y5b< zxxhzVUHd+P1OlQH1!`2(V50_~K~XazHnBlxV50F=LPcq1WVhK+lxEMo}Bt<+>smcd{hDRy|;h>lwrA^|6@O?bF zteia^+Pak5l}Nqbh^>-{zRKz7@yJCVH>N8S(KlL48>27fZm>b6wL|GNT9t_&9RsIEI9cuk4vz`QvWgHsWWoKwY(dlPk*E zY)6++I*n3)mvW~2hSq~PN{=epfy2XG zUvL^#vO0vb2S|hOCg200n=}*AA0U||AZ8>mdc~OeaN4zJ&|c7rV{nxrl|9_pfY9qj z*K9FCsyO*<^Zw!1=QYN9?j2;vetRIksxiJ|{ANcNbf>3d!IhT}a@QBm&(y~matW$? z>ZZ4c{L0nd-L)r%nBFAn>9j_O4Hy>LMK;9Ft=ow6?K1ugg5qKmx1O2n*_)mli z+k>dUqF8o7K1O{1f9m^BhjCeo#*-z3)McUI;Q$3o?ALpk6idPh^OeL2tjp6ew^|Gx zIwp@;Jv{V(iUvSgW1F`JO-BtPUnx`NiLQkJ>s`bM7C=CzO-^)m* z04?SW20KbIG6O`cF?e%F3MEbQK>b?aiUHWgE*BHTh_R3d>%}68HL>W5mQM?;YH=Bu zfbrcimw3QnCOwm&M_~us{cGUU+TLT?om$Wru|mZslTVXnU=(E95;QQDf+y%hv+R{z zKQ?tFKy`He>=@CzC4=dI{oI{xAm`S8>`X7t5eaGVZ?wb&>xJLZzgN#y8Q?TqUz7|Q z1T^J-DgM^h#^j#LIcE_?*=_c9U*wJbspEu@uNFlX;u0@1f-*k^Tie`r;|5x1k zstQ_Q7g4C*CY|aT1D)pL(QQ+HDBe`OnT8Aj`_I;C{s||3=>B%T*ziNohR0t}z=nR{ zOkqCXOXtvj_Uay4kh%ib_c41X<_DZ$Ir z*^qkItucZ~mS!#~)|jeJ$Zr`mAlHF!AW+g1M4dWO5FmgqK{^1Q)T(bh0YI6#-7qDh z8)kp%f^=0!V|4AUoUfCJz8*>b8}ci6Bq6I)4osx%@KCQO5{%^3X4gDcN8Q3RyWH=% z?C23NMp-|czll`sMP6^bo&8SsBP9E9#g0qYM9fWb8%_OcOCWxc7@MiPqX5M}7jPFy<_;7H5aT z$NVE#69$#nWA{^X<@EHk5u5PSQ*4`j zwB>Uk3^>ot1iFQ71hLBjY@X0 z8ANQ)mCHC?5$gitJs!W&&9l#sEIy~AA#=gH`nH_|rk@^Pa=-s~82VNDc}Q_KYO(wP z>)#odIp-pqazuAbebVac`9te1Lt{&k7y37c)y(N9cL<~*VScEhHcMyZVKDW@>sX{= zrP#RRrcaRxE86d!8|qC4ZRKdEJ*9#*T^0s>)WfU7q}1iQQejLc9>2A%E`dYPr)3 z)Z*1W91(T{_-W`Sga(#7?04ka{+1&4d44QKtozPI00k#iz)6+8yZ^i`>n`azetvGH z#@Ny=)lWRMesVA7Oa$R8+@?Xw?9NvHVh+kqe*_!&9kL=6@zs#{G z*!X?As@#6(tb_h}_NDPF_NBOKCy{($cydJ|Q&*AT(}y*9b;@1lrV=e!#L5!s@~y-f^XlTg|qOe3Z`__>zT=6?@9jrL!4 zziZTP*2^$bgD&~Nbj`=fjFBAk{uhLzgJsQm@4yumS;8m4CKU0Wg7BRijt3VsW-qk& z;dw~jmUBNIst#jE$XxYiYw%_qYX@fc#WEKeEKPX)Vv+N9$-tEz*!GR%`%XVltAhGY z&d;+GnfUPy>5Ey=8+2D=CVt@9^nm*0E-ig656d;Ce^djBSj5~A?_!JO8;!$-U)ZCy z3`}IdOI>m<%`gK^G-=~WU?Jnx++uFFk=t<+yLYRKismo7m9u;Thb`kh7OvUm*nGFF zXMQxMh*2L&-VX=HGDF%#z!~Ypy@OO-y$Sp8enr1^tcXnez(@|vU*A!s4$3_3gHCa} zgz>eE?QI&{+g$M&$?UJvi|~}HU@e6EW!9Gm?XVxM@;SSI!lI(I%D2-XxhG)Paj@&n z*zQ*$Fm9<9r=AUutUvg)BKQ1bV#lChY8))F=~}S_fePnUC}W~$0#|Z|h!2mgNDym~ zNS#-i$dtf?TT2k(eUoE;WM3T_%LHMxJ>B^6XM8tuN7Lr#X;UU|#s`%bA0bPABf&rKhbo!588I-qGVXt?gUMm?ou*jv zN69h2`h379O%=H^HQa}WMam}iJw3USb#>^7_?^E!cb-ILvxY{qy}jM51gv4szrhQy z;i=KA*|RN%U5Ah99v>EJ#uTeI-`a~(OZWo+J&{y)W%zZwiP#~a2{rqnVt15Q<3sl! zlrcNE+08seU}B19NA7EdPVpm)ymGr-i%fIhx1oe`+h#Zkeu1}$)=k@cul{7NpRQ`7 zkX@JvL>}Vzd$9tE`sk+vk43w^Bl~ z3J^;&E~&XrS}Z0dV~ADDa@5UaZmHK3B=?X!3Hg3kyX*CsvGkCN75aGZ2jhMp*zLjI zj4&!dS_(2erf*D+akIqQ=_P@9iJZMBh+7O6hPdAtd|AgpK>o}E-sp}gtUQ8$g~yaO z9thhbZRrux8=IE%Ef7eVspe^@Gqo5(rRf7~#6#7S8FII+j%9|G6N`4Wn6Xw)?9}UW zWFUqfqU~<>@4m?A|IxnRB$i?K(;xsrD(NftYJ<-K0b+y3=^zeeAsyn0wuHg`oAe;l zo=LhjQlWp`5f2Gjf|YL71tjZ5R>)K4K8kooEXyv+TTb%xt8>J91@UEoSpVshnZG^t zmY!=lzV#3lekw35-Fg8hl*QUOt_{6&;3 zb!^vM`KYwOEchjL5$Js7N}&_Osei824LntFst#rWGGoZ}e;yh@M{1w*QgX~AR+vr1 zgI>z@V}40-&QbvaQ1k`aPst~D>dwO#ncrwO)&0gAC*Hq~H{w(d=p)pKc2Jw?K%C@5uJXVU9$&FY~l zE#qa5v#_7k1?w+YQ!S}Qhupxv%6Np6@}Ol?mQ6E2RVy@NpY)B9iX*!I)+=J^Q7^VV z<7ls_C6^rYJ*ySGodw=bGx+#^av6)tQ$G*3)+EQwv?2%MPnbe-)>vxP8hn_U18?BQ z^Zx_H5_GhUxm4viJs5;%N?$yEBIlPiY0fDNi*pEh5c3DqPQc8c1XWfe=fr=zNAkV< z)`4ib$MX0poIm8rx1B`%?oYm@%hRVZ)`lhbY>UkQJXU_&EhPY02Td=syHc*k+EqU? z;EuMd{$&$8BJ)q>8Z!ffc!>l@Wd2cl5D3gzdeI_LD&5hhA5;tb;t#+&?$+mWP!i?(_)*!UsK*{ABk0}84DVAbnB z_yTb(k6h!QnB-3TWkA>BV=sPqJ*uSqt=HD+Q zM(qs1$o$)NlfG-C{XD)-KUko|h4{*G2b?A=ahs|MRdYByO0KHzhE_X`)`jz>So&No zwyx%*Ncs6?5w?D=^Vb!+-m1!|#PKUDPxoRFuQHELL@y|7trHWp@gf%NYk}kN%DXGh z+TF#`9mCa>z1Gsf6MhCq=kB}~5t~&=MK|ZB7cEn-z_RCpw$*m)=ai~OVD|9XgI<#d zaVzeEW@ECSDP)>i4d?&BAF8{6rH1QarZo9AI0GV(|0O6@z!|#DcsGz);=#& z-tXQr{r?$NZG@2-Guf@V!m3SckBs&xxF@MW95us5uC-SaX7UOlgMfnngSXZ0LliXd z{7pM0%j~V{pBcQL?AH7D!+O5f`>TWZHSTfVyPsXjpH&`&(Pz>BPYHy3&!uYSZ>Y{R zt^=l!?fmRDj7#8$U?i6KD(bHV7?`)n{Z+7s4O;PB}3IWq~!LL`1;QX)Nf5%nk1sW$yYmruQXY`S4RQgY?AIt_x_ahVdO{BVyG zhS<%z>D~jaR-$X(2r-fG=nn~m4HnnF%_W>JR#bQ_NWS*Vpk|o*HFJz2`Orq|-DE3f zSh~S~A^pmg1m~spyUdN}H?nwKiOiHqk;PY`JxOX4Sv-XqD07C$;#&Y#mPz`O3LC?T zbekATD~FR4=|vKblHdVfd*SH$+TD3MD9e;yekH(ZGl2MGCa4B^!`udmw@m31w}pK5 z1>Oj+liU?70`lsi?pLCZUQIy0_;{7fZ79SvoV-TN^Tvb8N0Niy~;IBJ69$h=VG)~Td!xNc_8b!{F&y+3$W>Hgwz{lw>aB_(I{58hU|^%6qQgC6&;ul+@3>>Vx~Ej}9@g(g$Muk5EF zKh%rD!hZ5Y!JJL5!_*v^Y!*?nZ3bR0MRhanX~MY`Q&jhDM0Fn+Ms;`ggmga_?|RNc zy4RqHBJIpx8E?V7Z-y{3*$0WqWcMztDzGB`tcdl#Dt_HEmROhuN0P&I8@Q^Py{ii0 zDUCka9f;uVo-NjO$nb9ZE#-|Zf-;Z5W-2pD4T~nDWK7RUvnz-p$o3G@;UOeUGL>HQ zOAeJh^wr&6tBMdEkO+Yz7p*Sp{_YVjU~bmB%tnNpy>Rc;M6GNi(ow zc%#Pm6sG-HrA+l1l`1gFO{ORpqhi-R$EzBt=r(~KB$pC+bfMs3hnR#aeZpaJ5N3Y?`GfVzAifOdRQwAg#bRiVPu6y|97rWPjPRR>F*iE_LzSL2Q*gD0 zNIAxOg{@2U+>xb0(>GZh96UH>GPd(1C5L%87F|UcE(v&|+ooIH4Q(*JRA4ReT?~9T z1K$S0w^HzZ#FD4M2N6~?KMkVad{@O5Wv+h+-6vcBopuURC=WhWQYq%E)~>OQsIJfL z-H6Ev@lR2J2{Cwi?w19p{J znf%rJ5gizdCKbtTJz`xf{iNg~ir34_>VRTf~(c-O!B@@3_at*lLdhn_Ke<86FSwFyKq+m#38O5{8v$ zXp|R$w^y}MMpm}fH-d1b79`V%SLEIz`ETd0&%}nW4_&>9;?At(iw;WXq_M-t$`Nqr zetH=Wh_OMdweEq0Y0Ce&4qavj*=;fa5QVkge%OMpbFZ+5<398yJ6;PEr+@#{=@d^9 z6ZE3wm>9%@KEmjxS@Hv!?dko3X^xWfwukFfo{K0wXPIVMXxeHNHc4EwAZ~8Ema0+i zH)tItg=*hycrnk+6NY5g-(Q*9CRB+uru@FkMLa#bCYHBqxv-J}7he*tTE_9>D=KkC ze8*NcHm1I>*Gl?8FhTO2;#lW9{SyQ<;Vl?h){wqz6#xy=_+1%`aK|9hMMdnYSKq;fj4kmGo&ujgH|hrLF?8MB!I2kq^z7~uU-{YAf9(W z_itBE;H~C#*uTN+hqzO(Ckdj-?#Dbf|G-SR%H1o_0=_^6Hsd#g2_{d_gxAJEbXR2F zR}2fm;DF0!X#T0uq)CYokv`0Ql~lC7Mw6EG@`utBRc-pF*Jx4^tE+f@_M5!l&-n4q zQB+G)I8)P5iK)p6t|@M)*_5R7nt6Kv$0anfLCd z@%&k+im=tdg9a1b>k!CHYZy%V!waCT<2{4wroVmCLG{G}@?To6wc})YWlGmv6Uu;h zP6YtYl+*n9DAq^HXx^W`1*1H8fY?KsFy-I4(vRluMOU%C8KUTb>F|}4J&F81D zkFWumosiGB{{F&rRU{sLx%K(;(hZS8`;fh*)L3)3E5PwXe2i39k)XKgr-IB}h z)^y1oY`xYVxAAqn!}-xU?Yda;IuW|ut=jTG>Q1J#CV@;qyusfg?=T(@-}|Xc9F7&X zS{OKwt2`d%o7XmaN<*P5A5}JdBa3;FeXn2+XZ(E3*$EeccjU?9q#)&Qap67h=|$ zJA3bja*uQq!s;g!{e6UyB6q2us%0>F^p+DSSHHwq!%+ObS2IV9SH3=WWI! zfz?3|W=K^{kQ-uhpfzzmg!bou{n<so@lDLzyUo2cwCx<2OrlLZNW&;s z(*PHYs*kQ~h$M(+!urGpB>;Vy8k^+Td;y>iNCN+ZDakgVbQh>~EYDhRd5Y8FJO;Ad z2$-F?Oo`p|`gt^_9ZItGb~UF-gV`f=v|t>%aUbQQ|C5|wI!*ik_DTPV z9nsjZ=@BzV@~DnOs6O>v;14QJ5A+P;)_t^Z-jHZ8)(}Oi-6I^dzCS&>&;2#iF8qIl z&z<>+AoFT|;6DK`Q1f5v(LgqS5Dotfe+PFPbKT>nHwF=6HptxVmh7~6XY6N_}K8THs4JWF6Tj1gg9a4mzxa1I= z0Gay!8guJN#yoWd#2Hl6z+%JL)Y|&w8*@^t8&aM1FTK$)V0HcW6>Y8S>r=}po4ZG! zEA72zVVm47T-mVQC?4*Z0e=@By`xY*fGwPV3Ez?7YNer2MIoQRFET1CQr+F#w=(6|(|17o6$|tI7IMyn2 z|BPew^);}9tuHDGG~bg*f--Z<1q%pGB)3is`Vr6ezM( zmAd#KS;B+`EfX+x!u|v`5lj6_ZO1dCb|%NXb*5nM7f%h_nM2#}aF-H65ljC{HN?{2 zQNdW+L&xC*#PttmA=CqqzRkb&WjTBoJEOp&DWs66&(uDAP#7r=eX12{ zy^$1)$z7$>t8@s?!7Reh{|QZIKMPefzg4QRcHFf^S)xz5>mOM-kN3%4{aUV3rm>E$ zd16LOI+j|ITK$aHT{%H~Dkp|$f09l`jZmN?eVcLbH@Z@mqL|iN=Y`xGX>UQeh8&!g z_;=T_*}hj$JPu#0KC3ehn3lGF>0d(7q4ouS@Akv^5`{O;-wpzMU~$}quykZMbC=vT zpmn%g&$jygLG%Qr++#4+?R$qJ0agno~n; zL8aW?U{z@bnjTWsk^YY1ZfaNRS2pr@?{nn07cZrwI*t9V2Vom8_Pbl(XN!l)e1pAd z$bDoCY)$g)|4*AHO%6k`8MkJ?zIOnU=g&U^IQ&^7`QcX@l`n9SA4iYbn2WBBB!8}A z=~1sG()~jEC8EnXe@)L@=%dUzuO-Lq zIL*d-A~onW;i#K+PS*U{!|8r>fTZX~_W-{J@W7mfArV$kUt*t zT(!gylDUur>7JX-3U$K{$ol6RaYAXr0v&(AX9O3hT)+sdQ%4s3lFr35=WO$g@RWUV zKzvohwjM^ffG=4nH)=-LOqmu-c~+*SYS9vnA5i=;PjPlseTZeqiK8pK+%aXq37H-@n@#=J!S74LNCmJx#fsGNGbO+?>v>;Ipuc!bdy8U8Zpur~ub4K&DVrSXb3}2ovYjS<@ zM3T(ABl&UP=`EN#(+A+co0)}oFnmx+Vvr3P{(S#g$rD|FmhKv608GLj^6z zy*^*krK3K5w`6BS=F44UQ;+J>@FOego>2C;+!o6HTwC(v(&=BDNc$y`_BUwtlQyQU z;QMHdb|Uku8Czjnk@my63){<*(7Y@8alc4As+}H|P5;U#X>ekP`lr>6eKZ;NFEalz zXxP*454j85?Z}dhn1%0gW$80&tiZ-S`Tb&ya z&&;fLxAEGNAuYPBYH(v}d=0a^>Uiqv+IaNpGV`QAV~Yb9y%0~I-XV)={x6_uM^MTBwh?@8A&%=LHwux4UbJ_}g3=fx3VEV%b{l&$X7i zQ`o^C4^d%sxv znR4`!4ucs4e{gDfZM52)etrCOz|T*PmjZb8HWM6(OpWjrntlwpT z<=LO&l9;#7WPBk)$iA{1Lr2l%cf3TCMi8t~c348??Ct+L)yBavSv6;zsQi={6F+ZUDMdqJCQ@#TF_pM}C>9mWIUHw|lOm>w`|MdQET)s;CuFNP+5SQS)P|p7;T}2RuK0sK z-diw$pX^hg#D2Av`{c82vX5rSKQhB)ffsZnXpKcT&motTkMJk3Yhj08X)l=Vs%J}& zzO%Dy$zYfEGYM}WYG#v}2LDEq-{Ws%y5zaWbXlJLyE-zzMeGejlbtMB^?|i5{*K+o zV{rhmnYM3a;bS0ytK#XAvCJC2<@IZdq02*vs;C9_`!=Lj*DuA2E82#Q)l`Rzy>o2) zb1h#*Kr4#)M7e@foq+_ptZLFTfdrZYpJ0x$TOUX!xMaC-%9XvhUHys>koO&N)FE-C z1y4pro#{bQYckFIwrMQ;A*|2=X#FA!81VwKEV58pgF_&VMe~7-wEvLT@pKaz3FXE! zfNwF6u;xp)Cssiz>`7xz#KMO7OB~URhPnHdlK@yjk`HrUs%=S=(~7+(=Fy^pM5crt zJ&#n~s2P?R3j?@h4Ox!mqFN>0G0ELTstSFSiFMU46@c3P8b(3Ly-5ny;-1drILr9%! z5|BNO6}HpDXOb_9{5!~kZC;nmYgCVVn3V-P7tRN#L^K~{BGT!;^beUS-6PHI*r>0< z@s(Yjca)dcuN|tkz(26Jd}jHlg;CpO*^(-Qv98%QC?#Xo`GLG1guFIAv)0Rp(YgIf z=|Fz|#J!5A)+BZA0d+12Z0?3XsBji*b0-({L_nbbd66B3Y$=>M`8)c@`SLo}WFPi} z`dfIDy^&i_W(mqp?SArn9CzyIM!uMf-U>m4{?06HTtM$Db zE&U{MVaO;jM*{o~bkm9dvNzB0AuLDoK4ideOa>%>Yc7k(eEI3KGM18iN+S!NgEw4Q_%n0ec=~O3&X{C9#+! z^4Ji$<5A$^z@4(h2s(#feRb^q_zp5rHWeo#zuYiBGlV1?my(ZW!>tG9WrE=mr<|r2 znoB4BeedA8Q?3>ElYh)?Y>C)X5`DrmKq?M5ZG?P9A(grvaEwixnq%p^tdiuD#&w)e zaDdeDUFIqqW0v_PxXS$f$$amwX017>9%VLiL!Paz_$c=Pb&K_z3#NHB9d6!jn&uf^ z*h*o0*GyWypwg9HulPA%jk{%$%7x1VJyO%84)M*0=M%~XS@ugXdO$5NKd)y1LLUgC zSPJZqX4NyPokLV&3m-Ex#CtqNA52m2u0l@MFk|s9Dgeb6334d2B+|teO~#L0shRmA zzdV@@d{QOSRx1eO(~0zu*DSMKb_4{_jBP?Zx;m149>@2EnPDrFV`d$Bqn24NObuD7 zZJ)0<5@ixsKm~iYiC{{tS0(|84`FDMdIv;?GvNw>A5%~V4bddwoK;oqBFRobh{SdL z9PXZ!tG7T!87o)GSXn+6l8T=#x^ zZ_rrBvtI@z9LKr7pa76=9clE5B!2|x9qXg4!AzKyYKY#CSu?1E}ni6XLkF8ZnD2Y z5b+E(#HI}9BF{FYHhS`i!e17JSB!1n(y}D`F(vJLw1uofzUtR9i@#;lPYu6gY?>L{ z{as}KaiGyxX!x^$2|gMSX;+Fj_dEiAUwqSx4TEH}-Mo`M7M^r>vJzG>Q~BT2v_$|W zcbBv_c>Vgn1W0~A$*0{mxc=q1+N(pC8M`fW55V1`-8cF5Hl3?}(T`WjzwFFBXURS^ zh?h^l1hvQ~)Wb~}OvoqJ$}^=)KE-h~Guew0OCR{ep%cOT&|mX|wtGr;0{`Zaa*Vi0 zCgtmHJuj9%r&DgDza-KNC9jQsjYRhy5RYyoL8{h@*>k;6;!ck(|BGHd<6q?#OZt^d zkd+~PGo`g^e@naf#+69}my2=zYMwjq1@ZqU$*&k$aJ<)#dHwUN*fdomNz5MP-E)q1 zUq>(mETM&IB~{lug>ufSs$<`~(3Bp6f=3C>-!SJWvuRzeeWsGg3qVw*`XH7bwNsAt zRbXZIxrxjLUGdJHeH2WxU=B51m>#sOBOblDZ1yoUKkfQNW(Z3l?;UF5i^Z^=xo3(0 zbxS{Ba4%JfvtsE%JK3Sa`q_sqM<&Po))$SXXofk!P9>O1P}(%NSs@-(_G**6S%E() zwaHE7(!3;_+|@l#o4E8W)O!N{3IkZU2#Jsg%xdue0DQO)z6u|C{(AY7;r}lx=5@?I z@jutz?}dLknLVZUjekN7b`m|^Cy}{`eKBhzcRUUDBMYkejA6BtEi{*uB{J7SnJu%A z@GFg|ot7aKV|tFpUt{!Leg5~xRIV}l=A81z)XPM0=TJ=goe2G3zO{x*r`-%YY=k$aeI8}8 zEIH=Qp@DqAFg0jd_ACaQd+dEI@RPYxu@lF^J}N3^7()IZm2d4gE;VWy?v}9>?HMZp zsVD!Xo9Z{%?51`T2woQZq?-CePi6x0)orn`>sB z_F=1)|8(1!W9{N_D?C7je>_JgkqM&iY5=@Un-+&QQNT*R{$onsLdk$!VPW^qYB;SP zP7C%|-nAF}HX&YjFx^_!rXT$iR1;(td+|M&+S#9CQ1gtaxsKQ>#+*7hT-m(l>|a^W`37Jwmac~=PTGB+Af4gBoIg17fSkAE!yfq#ss zo8(r}A4oZgZ4cuG?_}*gYf~9kMrXK5{a6tgv;Idwh<(+zk87PnN5kLxrHDwWD+mF~f+HVSF7sMw;LxQ15}E=eQm zOB3AHyaEUQl!6C<2F429pf-1N<5wZOSS;!-ie-#f+cIVW3Vil5iw$FfKPEg4Cjj+G`BbJ!M1KUZkmCP_2qFN;MQ z$ZB+DnRm={>{@rOzWLi{VZwUY8c2PeBbdwI#Zw#V+dl3)tzZ38G%<3yzI<$IeSPPf z{RnXM=pQ>^bA0Yjhx0Fz`~Y&Ezv!Og3XqaWUtAv7y28cf^=-TQw)SVE=vR3^a!Vo| zFK2NwwLH1H?Yu?p15`TR`Cfk=VS=AXY|LEB9-oWxnjyxQ&qiqs>Fh|PuPo0hq(=5-eC}?m|94r-aXx>$ zvSD6Kn%Att9VT|nKE?BxR&%QR8+xHup{ z@RV0`=LDBij{^r*I-Z#fJ4``T+a`oMo93zg>{q1EQp=uHFWn2yG?c&T>EY%D6tcrY)pOyz_m! zwgRP(exCcWkQtdb6+0&+#)~=fpl|dQ9$_E{HwW3xYX7D<|K@M+!X2qi$+a-kgVvjP zXO>oAy|uBqyVb^&!88_h=G-v8DtI)tGW@JDGY*!CmygQ~BT>}@!b`RZ#R^mUW^bdV z@P_?MGwn9O@7K6tgod&O(N`gnS6R16ZXurgm00-<>g)g%@`o)K|Ag{}Aq$J~g(Mx0 zq;O4EvJRpmKC-w~^2D&0KkMio@~2Mnw^s7ERt(#uwkPNcd%10y$^b%jV`^JGx~v5h zH1K5pvQ{07dZA@I`)l0x=GZApt2lc|{ZpaPZx$tB%H0lUqjh)XecOO%{~Pa)gr@(w{N?i^HTQ7M)(!`avvxZAC1)srBt{ z;uwBSH$)a{*@y!}vQzmTxdrcD)P#+3nk2W_pZLY+Zx-w0z*c9QQ1h#~63m!~6C}B- zbLBp&)WE?1$GQ~^eo`!YOIhnj7zw14SlOEG(LX!eKxbqjB2T%Xv*3~QQ`lBBx{FYH zmK?7V)6-%#IbSeJSrf&iQ}S9;U;0x22t*N{)J!~zf?zOy^RRntalJaboStFfR-t>=~X&)_*M>pSE zabfzJS1T_{SFOk5ZF$e$XGiJFYs=03%M{tSbUq(J4ygcfUyp)tw=??or5mzSyIC?6 zjrMEu`NTr~z}zdzfr6cH_2m@4Y8Rz%>TRATuvR_%M-();SN;{x|F5Zv0{>qub15fF zzPVH9oVT#FOVZ5ZS7LMb?CjzU%FlIksA#K4k%cK$L62broM54RJd*VVH{(>3k1a4E z{`45?E2X_SePXN5E8{CZTc;b!2$uXNz7C5QV45AulN1}xnQT+uq!QC(*w@7J)tf?^g{4_ECWi z@VOdQUxQ&(-_Dd}o-6?~`{|b5_?SfBFi|U*>U&%tYZ9o;N{gq=ejrTMly^gB9AUVo z&=rBZA3YvgJmAW`1W65R**LxH=Fx8ap!39n;0JYmA*0pyWVIK!J-Jctf!4!T&ecUR zyZfKqD!)Mw$7V`r?0{Gm6m!pi0I}Re8tcK2wKQ9 zBfp};%MYVuAir3y?r=ltQMPFxUGeZgwio;w%1!uoHu6UQ@@Psl{Z^i!0j2-!{8StF znbN;Bo?PS}wRKhL1CsKl5P&PpT(h8?(m&pf`d@?>z`72Xpe|sQ`>Z|$w^H2T6<9*R zhtJEXVFdTTj(Ov1K9KXETY+|qS9jK8!08#$3iA#L2jRP_f*g$ zT@Iy!+-DOh``Tj`M)F{q=IjQucF947mDE^FgP_>(zQ=Ae17X4nJ5bB)n@y-P_xmT{ zABC}pcnyDT{MUh7h$LGM-e;dC0xNyD5E@V2yOp0M8km-VAsmO-2d(*79@k3!x&I6+ z&HJ_bKS%v}LFguFJ7 zNG4M<|9|xFrH_Z;@2!8w7mklS1|0fC{~Jv{RWBLd17aZ`ZgTm9!o7zw$UU6TACU#~ z^=-izWNsX%>JCl?>1sW#r^V1TT5`<(n)@=%k#sXG==JpeO0#}Y2wei`Y=de5pr_xR z9==M+AisVs{Z%gc^}sLb9n3g^grEIM`1xG!q*x|)e7cEKuLj)}%fydN4>wI){lAvxfbU+1}&Pq9PK(j0#MQIDy>1V!VNOPcKaR_Y1=)C0c^>9)`H z37y|mjp^@Gge*Rs!gJqmhL4qkuSvg|;CKG^*#i`#HGd9;5}ei*-KB$qE@t-VJtOUx z^CCU;nW4?_dAugFI5mRqbiUVzJ-B1nqnNr{kKmOmwt`f=4mcK@@ghxtYCo});ZqqWJBZwxH_ z@NDn~v08b!$3Rq+t=_q>{@l1F((b1-WFn*%b;$Sp>8coCcK2TM^Pc|yJK+KT+zwKI z3pg4w;P_RK5-eA!VJ!(+kJBE=1mVY~tJ5BM?VM7mm!Ds<4clrm+z=K%Kzn~qY2VOt zQwX%;)>Xf&`Mb@0rmPL7LN>oXqLi>-x@RT6)|c#OH}3gImupv99t%JcqB0i(A-7w1 ziP>9urk=KYg3Mn=j0Y_TXY&|S&V5!qsuTxbA!ol&RCn-O|G*3FQD$d~8X-v4Pf6WZ z=$H3KgjN2Yacl3YgLjqu#(1ZD{nK?UxUO&e`yomwlK@ZZO=Ic}{M;}q2`WO|k^?nz z$9N29ag4l_jj63FFER@6f~B5wU&uDmUS-98T(#BUB(WvG9A9-!)v^4&zN*UbPopKR zCH2X-{*j1!{%IYSh`O`ROqO4}dC@ghr>eW_sCLn1RVVAD z66;pWv4Y52aV0RNq>ARQl4a;xM#}X`q?G}zR#Fc-SNI&YO!cxH^raswn z=2N}gRL$ZTp)N#2Jk=Rb{Xq(RvS@T_?ihh7KH#{c;Ho#^2~vf6D>xWwA)X~ZsJj6g z0gtCENzfCiw#@&iv)5Yu7#rg)2(*sd2mRxR9!>$EPILfUD2HAePQ78mJ4Q-3y z0;ER-gn;f1xXO{1rMTr74GIk={Tn-S3;$VeRNix$ecG4n)6yh{e~5C8EbkqJ4xD{H zR~)A`*pI8Q3K4P%RpFiFYBHbut4Ul*2rtYPP!Ufq->Frj8I9>f zB+2zUhtu4jOQiZN_p^uF^?%r;Y|HWa$U8-Kd1QF7z5KfoVt}kf)hXKLLI_kSR4=Zn zZ(Az*lZ`d}w7%_@szX|jX-KWXRmq9PL5*az?*7cTK?wo3T3tj^EX(U1IBGqJwp!7) zTRO6D(SR0w!KH?%J3#h?Fcy5uIsjOLxb#>mW+&y{e{45Ne9d`b29a-dd2wrBQI)>3 z{&7B(75(%#5Tly)x-SPsRT1{XQ~y9(FW$+Y^{O=JM=X6MBD+{4Wkx8sUHM3X5~$Jn z8$>(nVDOD84)w$LwimMJf15elKO2UH{M*C1g-R@BAz{@sP&i=4Jz_4Ez=$)}vJ%`c z(sRJo^N^*)Ml~Rn1y5M(cDt4gmQ0&Eh^O1SpVF3U*6{cIj%fqWpeH+WhxiMkjw9_7 zZpcePBBs@-spYpNQa^WAm0Xc+3SZ6jWf(PH$3j>l^|Puv3gl}c1-G_PNnPYyt74fz z+aWh-Tl|qot#qq#JF1uVDQ(15#V3*#9)1sT4~9eYAnc{bcw=g#I#L#Nq?}*%@#ls@ zP8jhiLAt6k@(H=|}!Y2DE(*Avhs=gDVX|5Gv^RrMfzs=cv3jnu$LvCREhVVt}G3vl`f{Sj%QO-24rE5}E&}fdMf>`I-GZR-6s)D|v)IKV9%iys9}r zIJ7x${<1m8i^+s9EULGPr{b{2z_pIx2s%xj&|U7qTcR_e4FS3UwgN@ zKYcHCKiMGnLpg|x@a^u8&lV-ryw__Wf;*|Y{_I6yFTt7s?;P#%TcB@k*PXXDaoD@)+= zR9Phf5=?Z1bsB`G3U$`x~AG ztHdQ>U#kiK6%CAVHH7Dr(%GJ$2SNHLb% zuMN?;_vr&TaT~wxYpi}Sry6`^FsFk5uHNA-2YY|vf7|<~uI9a#Hh4cec(1zM9sd0< zN_Y=-_5O(9z1nnN>whv)m^F5V-!i`;GYp3eLFXZrW=_6xk`8>vRb(-1)Iar{fXJa*lHL}o~F$WehwA5a!MNWckzvFXe18q~nUD#|xzhH%pIC4K56 zi%(OSW<&5yR*|}vFUyLi5D{`u)mG|)N6o2%?$l@wfeHr}(xsv5RQK-D!d@HYi=

7;LpruMgx)*OyEIUAvCi?-@*tyeULXB{}F5l3=wD8f2>ps`rHe-4tD zd+L;o!h;!0d1}p_FLMN_>ZfqUaHs_%0T0iA?;AY0$Gl1hB znZ^WPFnydLyyVkVFxJw`_>~Z&w@+e#r~B-PzmUd?#Q%_x6XrdFwUgQLo)PJqDxkl!bS1(bEaz7H%0R>U;0T{w!|y?PBjH0Klf&DKODuT!&Edf;wXvj%!B z08VdJ+P)gG+I6V;pQ<$Vd%+&7k)QXF7J=hRfCXF~)cy9G!CULnJ6_MZ z{|>)x4c@NSx2t*U-lBTZ=W2f4Vi9S*8l?WMf;KaQ$?yN$sAULV!w>|457FPQ=YVAtIvK~V+R9J0)k(SsmS7s0>#21A_1L?40-F^ntP!ol^U2Jtx50mb<3dQ zMCP30#>|{<9b@)&plEyp@?05Ng9fE=Owov?W3kK==A_CW(u4oKt4oKC$xeV5!}zW6 z(6OHj`atP;$esuwJLld+rsQ5i)%w)8)edbv-Rp?@ww)w-VgF{^&O=&`=I=o*hlL22 zAQCpjKiN0XyWs^JpiT`NsJ3(ZWHX->`ys zYS40m{5<}%W*o@%GnVQ{M0iVQ|GJzP|sVjuGMPdVE_m% zZyDUGHDtSN9k!=uwDtV>t5x9@_RmvXGmxIX7o~}ZhWLuLGI+Ljib`=?7}SDf5L5Ovf6F zH#QDmhnuHS87wfk$j`Cas%~LmLfwbBY5TaJoh?{Rjq%Koj#%cB!@^?)mnG8apuS~s z7=%N+hFgS4ogITr9@E$l#L_5vtA9gFDK=oP^chyIyA-H@k}Z!drRu!IQg^A=L1F}j}Fl&s$v|gI`AwA=(=2*r)omDk~3QsoAVoWK_ zb4O|>)23qG=lCIl@Rl2Y#KvfETO=8!QcUer7-%IN?i6E>0)aawKmHzBNDLz5Xy@+M z%R87so?O&=giF3*eD#hCwc3>T;K4uh)J^iQ-uPCijjzzF4Lp_6bdp$u)lC`$KiT^s z4ORa=GXF&y>8`%Y*Rim>`oXH>4pl$Ezxr~Hmcdz(+bQibbzjvZ-=e<$e?;0#{neh< zYlBukE&cS=R_n)6-3>je+KyFil27gd|2}bd*qPh(zLfWd=UzR^ejjm0cbHVO6(jL#p>YdLkRdjS z{P10`7%19De`;Orp6LU1bqYIXbFd${R&}-PpzTA(uT`&GpJ&|__GvLjhZ_kDy}F|= z7G;qS09VLF@XwP1$8BM8$zQGK%H#;M(ZZnFD;T@#9k!xgK!0S0HlaZO-38lC!mx$z zUmqXvC@mGnxWKE2g4|k8cr2Hks*Eh&8S8rsEgagmyKL&w1lML}F5B^XU0YXO?69sK zTiC$&(wnj2AIDyLPk$L>72f`P&11g89V{Vwl2F6gMV|GMS|NnKQdAN)l8oa~$JR*B-LlF!zxP+SrUe*iEJbWhzOYVkz1vG~ig?D0JTEP&6Eym%mN zM|#Uhq6AK^tKB)Z-xAfnB6i*O)F#$%Ba64hivLQw|HG4S^tXmzdaHeNV4tyH;c-^U$a)b;TZj~DIsHga{AJ;#C6L_E)r>fhbHHK%%8T%d@mD`I^o_*i*J;2 zKuT&y2J@cOTJ+nuV2Bt+IC*bq4#%V3G;lDQ zd&eG<`vMNGCO2TK46ZgBmbF{L4!a}7BohdOsMcW($>oq^WMuI`?H>9N^d2oZYD~uJ zz`O?1e13D0m{d=r#RT9H!=65^^PRpRPy^v;`q#>q;G4^1$#-_<$WXjeTWPnE0Z0)b zP0+2`BGT)`qA~aOJ=CUgtG-scdr1oh)sKDx)v8D?H~($VHSnL_Pvh3DhY8&KzU20~ zlq^@tr&a{oHE&ed2|E`4&-^>H*VquibQshqKLP@!H&OHM6@S9wQV@SqCDnimH4VXl z)o&*F#S-n1kVk{s>!;1G5p^H4Vkm{~z=-Y(#&dUk$b5@S`)bi|D@7pD3eR3 zm}xb#Nuqr_%`hP}rZSRwTTrE+el{jvmsj&;9&kSL>c|}u#X9ct5M-#gQUA=7ajA1& zApdX6uZ_?QRvgSj?|J+NW(x||W>dweGv3GJZa++|Xab)ZRE~q(gawnd z4GILr0&-v3Y^?H|r7!^NNJZ`{!Yag~)$TErhWjZD;#R5<&-f5?0!xW)Q8IpyAHeoX z(*pZOLAD=~1K;vdwxR_t^e>hn#)50NjrbvNcR?Jw1)DZCMB1GCfIz(0#Yn;-Wt8efTKy< zW8m)jrf;&&&;r7$+;HFQo2gJsmj}((8Gc-`ZZoBk*F#mb4Fyi)RdS;J31MXV?do12 zxi9Adg#RbHdg}Omkli@F7g+-P2Y(x_yzp9RuiR#)3JyKtjOMCixGsJ#*|&|N?koDU zl9Ni@8~PFgO+dI#VoMxcrOtVtbDzZ#XrxkSJf~S2?0xXpw4)1kKPI*x?4iQ#Rk!i8 zdvoDl4Vcl9`&oVy;*V)p6xJV0U%@11-d4sdxQj4S{{aHEus}WpD1W3VI-vd|!<;BeF404Jgp7)`?*Pc;(pnw`>pzh@{-kas=S-&PCN2}{AJ*|Y^glGt z|5K#Bljrf|IaL%vM$0KtwkG_f|QP#=Oy zvm_xV{cX)4BTGLTL{9wHL9z4&6uovb_P{>^^t2pK=jAh_(*)e4=b1l^_lheDkg9lWl!O9KaEO`8`7i`Gz|mUnp^3MIBSlh$Yv6fgv!FEf@u!c-r=0 z*>Usv^|(h=OLFJ+tw(8oa>UCv{(ia#;e*@1$PN4>V{5*i(rb0h&9GyOZujI*r!+a0 z9mToh7ZX}l4B-)>=(J`GD;6pPewq915(;AU6y8hAw(%mK>|`hRYVGZkOiVy?dz@zc za_}-G>LcZKWs!q1D}tK}-8{sNe2pq$J`VfEon*gESncZ z6QmZ&kjSVDMe78qM%=s&MwrGwK^O(xyPLO&CMb3HB^}h1DIF@AX*1N%@ye~&2fU|7 zQyq2;AMz9Xcd&r3WX~RRy5Jott=8PyB(hb;(t{v^DeBcOJIs&x#6_b z5vuFqzBwSTQ-D1CO^%@yR8F-2YqI;Sx8zSFtMp1PYdK(9;eUy zCv?nm=5}w(!;{d{Zj<_gs!?IzWF7upH#+V41=EIE8(f5AK?xwW?i0;l_mM-1MV}MGMW5lpqR(Nr=rcH6 z^!Yx^7`ajnF=NhJk+8|NzUX<|OqyCZ(VH%}{*?isl|pwp58OHmx$!EQDIGL7v}(>a z1BHRF4%WF7{io4aLaXL*9)OFJv_NyvE7Xt*+M1NEu;JwHyG4ZbeeSkrCV3NVg1bd; zp?-~9_kuOuS5-?}`}x0FDS>+t7O0Uq(@*UTryb(|`N(Zw$Df0(UGY}(*%>R$nufo( z{3x`ih2U}7srbcg{lq-+%q?}i*ha6IyZ1QhzMHY@}zqqSft$G0{h#Z_DZeo2*^bgTHg zAmfk8SAmseZ<*>T>*=ixVmFmJfXLBX4rdSFmswLFf2U1k?B@49Jq`olD*AE@6rNJa zHlu1X79q{fBW>Sv(+JDH9(Y%kR0%in6vs500)EbY?FDgylnJ|&5jq}T(l(v(L#X6V zrDM5FciXx!`;TIUz7Yxg`CZf4$LHH%_aaLlq%H9+b#GU*Onn>Oj^C--P{t{+YL{E_ zgT478Puw*C%D&L$Ct4G`ac1z{2z-^|4T!2g;2&Z#N79z8&^mfDrt(U4l{?Wd~?UiBiaIV$9a9xhMjG4768dqHi^3b_r3 zo3HYi?6_{&L;OY-+~V~s!r~?d7=5TwLvSD-g!Ito-@JmLvh!<@scpfQm$B_E!Hiv} z^Mi^bcb=rrm7s&8WaXu9!mBs5^%#v`4)Pw*Qo-LtS`OjwK`lY@wHkU_yMpm~gr+me z-I3OFV^4N3a!1QrPn|o%FK!<`L*Lr;B59!1n#j@*2PJn6oO&2)sq?Lp zSmuoPc3uZBo^v|l{`9hr+#s`%Sl0O6OQ*4#UD8??S^U^zd@EFp?0}|6OgWh6b|@Of zYC8xz7#8b%hq{j3)8~5Cbrf|S#lbiwIvA%!M3TJYpadfshFnW22Q;)^LYAP1skx{n z=B~$?RYps7c=3SZ&Qzw=dpRoGvJ=IJS=7}Gn8XPxOjT4l{%9@g#NKxtV4_o`QXmy`oh znJQQ*eO4b-fM;ci<7rXLF!ys`$!oVzl8F^E^8pq86h+-#{@rJwlhMq}kC}SEU9Vuj zT3E5p>j(EmR<}&TWl`Y!Hr@jH8(FZ0rjT)y#6R9YqoaRn$tn2S6~q#2JF*!+SF>*P zfQg7~pY|=0v6wn{FVnXeV3(7`wgtg&ejOZmGIgY%R|4Oe&++GC15$>-1pw3$3v#<_ zHZOCg2J`F=lI;uT$uNT1Nj0Wz>!gUAXs3wZX8po@=jjIygXv|m!*ESBiS|aYxl*mg zf{+OyB=CK>i>LDem6zE;DH4wS^W*1j)zxc%<~U9(BF#qhyt3B*e#DbqW_5Ty$PX}` z-eG4~9Vsa4K-x)Uq<)v-$Q)oWjh&R-+2>Yl$52eTwf_YwjuSoW!HnRkb7wI}5(?^= z6th9;{F;_%{%pBV>j~~2K9d`0GONaC0!LJpN#ATa7y(uf}#VX+~d}dH`2sZsfEIP8zaHEm%Mt z_(-jyaU^;1k}NX9g-$;#rIs>M=1l7wPi@mDmG0qZt*>`aV-VPq{kMM?_VLet@%&3$ z7z3r$!~7g-pLN<`V2>0YB6-G^UU$d&x$rqim3=-14YcLmZx3F6tOj2io!|PiD5^LmQ z$)Q$kTAn?zklq}Dg~fPDc`RCAL!O#weKnq!=(^T^ONP@SwAzX#=jdX|x%%sQBLA-+ zKM$+(1vzLJiP-73T6*T1r_y8mc;ARDj#ahoI+zHMT?1PSvb47CDsLSjI@`$g(F*Bz(dp&PhnQ^F*9ViKz;= zs?!*J@DJfsTccRK#xr<@8zf2DA9i!cEcee~keIn8Xl_^Ktp_M`?2y$++}5AxOE{~1 zo$}Sq5tCHAFA8SQVB`3nm+K1PW&2GLO4Jsb3+a{tA4$-|-@MggamF|1W#* z9v@|K{f}=#0*ivrYJ*0(tr|3V4T?4qQZ^X$S=?Y$su8S4MGQ(ILKb2{vSA6Zu4|*U zEmqsoezabyR$B`}MH4_SLMviLY^LJTY$XEBV=XeUD zqk0k1`OFx}b#FpSndG{|N?EJcvCmzFlk_;N?8jY;s%LVNzX>2@dtzR|Net;!P` zMV(Mno#^TB`cRbgS^#Pm&v^<=6V>VaiHs{|)xS zuqwR_z#Vlz43_?O8BsdXi^uGJp?&draI@rP8@GNA3%7o!6E_TWJtAj%+>fR!<8v`- zshq>;)pI|60Juk>I6AO!81H1`K8$=v{G^Lcu_&tj5Ev*ES|n&?rW#n9Q-KD%-SZm@!N`&IBQ<( zAq%c3zbuZg){p&dEHkf@x!gj+@<&ivH+kcrnctY=u=C zY&BO04t&R-3mA-z{A?p|pr3?d3jm`62TrI%*ok#aS)@}+1bU-%5zzII zRnxToM|ed0Xd=5_tO;Ch@#l&Yf*%eJ9L%dbQ|JpEJkgKY-?AdL1*Uz1A6VpWPyCVu z&!r^LlV5H%0!6Ezr9`o8r}}WJRlU)wr25Q^|8>;3Den*A$Z=nYa5Y-Wi3_S6u@iI` z29aJe zEH{2$wEPx_ddtn5{|0^!e(025XP(1nQme_oc3g;v-g2-Ua)G|nnR1a(%g3Bk4q?}l zuV64v{MM*XUl65q`BckvgZ{z(3#j^PP9L7jE-jK<&UtxGOA> zKcxHOd$UohlXZE96>F`(&Y{Ac^%6e!5e^DQNde7%*bfw~08kq>4u<(T%s=)wNQQ!o z^ooA_3PHW}c8eqGHIQjBgyr|wfCGA>ALfuC~?u-B!GXUpxDP zt>BOPT$j|sC54lPyUhRMQhWak#L1<6w^0lrpEL_mesoSZgF^_bZeNX=VEkK4pC(8{TY+MYSwzPcemDj{aLEAh}Xo(VEAsZ2@J22Lki$8R1*O2-e!y2ZDcdW&El_)f9p!*7gKjE z+5D=8`tn^+s1FkR1m&=2*Wm@SBU1RUmAZUOKaJ4kpYydXimzGm zZjE1ms@CIC;c6IhN|Hy5zc^ot(H?31uGiMFA3u~L53^z8F{dcCXz%0^ZmQ)3dv0U_ zICi{zAXJIdT2c!T>r6(?>e z3mpvZY=Aw5Cqd0Oclu6#-OM^zws%#){~||K-^l>H*^Kn*fkTqG>bQ^0kvh#Vrakp0 zNNtFz*BU@u+)T)Tzp>1x(a9=sTS z6nKL5g9dEPP36hx6j%~xmv|q=SDo**@7N~k-9)w^MJ_+jW{ztY{ zq^`lB5|0s1FG3)VA7ged}4|sn0o{j0uNG0HXA>bJZz+gNWG??_W z0<;X3V(grU{0`FhJudp8w|lLwSGdpjpfK~$O<^8XR8DLl_>HgphPk45ydP^hq~u3 zFmVw+&0>Y({O?Ux+lW4w+%9YZgM2{=omF5)@E30wa#a-qf@_?(qYBdx+-wZra3DJi z4dO!J?8V=m(2pH+zh?$JfM{!3==0#mXb|hM{${@UvG3%yX4V&Fd)wF`cuQ{Yz?|$G zl4fVD0@Sv-sdaASMpyP|Zk{mb_j|;tkc*I)3#8Jb!Cbq=3vU7+uKvd#eZ3itT2yBIlJYem#(pQf`32nUa z90cE^kFh~Nzv!VN@AuV0=y%M5<8=|(Bisjnr7PBxn<}x-8M|Q@{ws$#FDM8AJ6{;v zXJ0e-{T(YBqkem@+!v3|q8euMkMZ!6@9}#MjFVyx&4_ zSSR%X=2F1KG7QGgpa%Ym@Zw6u^Q=^h{A{k0pIDH_1xGRx2);sN3-|Z`-VFbmu^`O_ zD`?mT6&*#2`abytd#pP!bu{qj^oC29(kaC z$r{|^iR(NFk>J^@8s2aArV+UpEsq+ndQ5o0 zgB9VW#2tIw{Cz5JZm;OEgyt-c2}N>$eA+pvw2#U$3}188Asp1px69?N5K92HEPRxxB-`9*|ViZzOVHpe|9a zN++FQ)&eO;Z$sgkY7K;f-YhYe+=YL^x&x!i0dso+U{0KLsAB=de#T>D5cd4xk{0F& z>G|d8xwKt0l?+$EzYA1yPX?*1w5b%HKpd;^0QOytRNa+k7)Lg(y;7pJHY2-uw%eZF z@KA$E_ZUgKRx&=lgOC>l~JG`J32tS?9j&x)u_R_heg*~Y3+JrH)6)TE9=lWi-(5qMxDPS)XRaa)GVT2}}za4%RrtT_A@sDY!04pQ}!RKw`ZcxH}P| zs>)DBxJ88r*;zk2JC0*BIYdi?ecsOg1ha#Ffo{VXKZeyz_DF6(VJ^;JZ#EX(4#1rM z3T?y;n6Yfe3BivCTjwi0#eX%LN)V4Zl>Uo-1t+O9cylv|*iUvtDbx@sfhm{V>CA13 zB^z<;lvb2XrY>B}Lp**NUt8>GTthDL{Rxednqk3RO1KtC%>Palp!!%P1}m8C;zo}9 zk;vfu0>?MG9Qj$dQwqy9Y|O~wm^~75Czn-71#Ze#kAJBtkR}NVia1>_32~rE(}LH` zPC-(XKZl9YV6cL<(P$bdy`Uh?+{AAYNi!DoK#c5ph|KH2_7cNb_%3F(x&NS_v8Vx! zj(be-ZaRpD?>k1*(?aL-QXj_hdFN39OP!RJ)SqWGVW*74SU#?(%vfGuG`Zw;|FmXo zkQtW;dnBu_SBr`0SZ+%(9GoQSX<7$U7QK&|)aEjrZ_V4gDlOe)bhm>hL)#2s$GR9f zn{hT3b@)I*fM6gK6d5R!4h)1iUzbu@9rNk*tpmy3fqLv}k=TML7^pHRK#)6k1H1M5hG(BaB533hz z@WB0HElMRo;fsq@Z$4a+s$fzDO35w@2$aajM*r|6nNk~ZAvGA}PS7~PW2vd< zMW`S~N1^b}Len_}@PYM7{`wYV0J^Ch%^27jNav7@88Ze_zdR!I6UT4D{Kp_*p~gPV zW47f5{e#;FBYwn_7%=_pclbP~QyyN0lmn4c^rM;+=B&hA%#uYeg+U_vS~DWfp^|Mz zfm-4YSrUecv5%KYyLs(4G93Q^w~UgLQ@P-o|jTFSF#m0 zj=mBMG`)=4VLZ_y1KuTnHx|r=z0p|={=1Nja-x2Uy+NuOA6jJ|ZIwY~+IlEa)w_)d z-(ba-SgC60C)D-p2&stlY4wG#LFnbWuKz4`t*@1$QM!%Ppqf3b^T+X{EIgnU#{$)X zf9e{ioyE%bu(a*`5n*NH5GMTL0aEXOvC^)Ww7B6HuF6MGOOa`1Acq<3g_#2U$NdzD z6cM7N9FQc^|1ve?zr8{Czwa{!`2^xZz7&!qgmH*!s=Og0YeNC#K>Yyfee@*B-y(sD z1#+7j(jLCYJ7l%V{IA6$ zvoI{i_9zv^N3PEBMlQ}WmZR%8mb2?e-LO+*9R+{~hkJ|RQh3>=+g1qV;;xd4@PIZB zSAz4ILmTx2@M7f~xJFN9gMi7+=tLjvEXd8qva9n%|8%lKjOACK*Z5%vM!hh4in0!x zS!<2uubCyU8;km(lxB120WgQhwWE z{eVf&c4kt>$}>ZstM%B@gK3h`=gdC`8=*q`RUMrJ>S;v1Am?yDf)Ar3Od7MvU`*)4 z0?j#>vnCk^MGu99uqf@biwEwZLs+|AU(ViwU|&W|=Y9gMl308`wDS zd}G;gXX9ZC&Rv-EyCbVP_MvPEk?|Evh7G|TB3S+c2E~(`W5~LhbB1nA#udUOw-HwJ z$0g$`vwx|m$*@j$O_w+G5-n5=1}Yt_`9`Fz&v>)X0nWh3z=luaBl8y zHRf}|3BK(!D>#>D+&fxg%k#5F28{U^;K#^Uj74X|#n`9qAo)wZ)|@590cl#Bg;D7V9K%svKXLJitw;#U^d{#cXU1VQ$3vh4F( zB;(}jJL-3Lfb_2FH`viI8;dVi|B35E7oLi0@hmR38jM|#@TakZ?3j()^$%qk3qJ)@ zLI>J9dIn!_MTX!9qk}vOdT%J0zDJw=bX+@l49$s|Y`F!=Ti_7Z7Y@Z&f90nUJ_@2CgxgKU0B-3?!21wyYMdH^rAC1H}8 zjWkq+6P}m2eOWw`yams4WOuYpE*V$MtwYP(DsFErz9ihIM;YIG9f(5>$5n)V`Oa}? z`g*v0Jxt7_nJ#^+;RYnh_OJGa=jJ=j9`(*x3ob^OhW3NGVxT^dLBrsuZ}_C9KbtYKDoMGy?Q(G+lM=E)eG=q!j9fQNa)-2J|f=N zy`eXVIF8kDXPzw?-iWUt%ljfKvZG@Za+kbg1c#w=yrE5ayEDfZKFhG>tD@;sV*%e* z^@ZmePG66DmpAxz&xSkj&GF|}gbv332yd>xFj!jo0CDc=3)Q=0ztq@z@d!MQGQN#X z3BC}XseC=QfZ6qmU$AtLHcGUp@Y#82+;C}V2pOA`@b73-TV`lPiWOL0S9Q{i-p4YI116jFel>r3HdR4oo+NK zga%9RiNmOgZbgW|02hS}R|3Whj0@Jg9may^!5nz=;iam@y%v}p=UMQFbVQBAKR8%= zz5qT7&)rr-A~9_a)P}XgK6_{ivNJilEl2pM@PwRDRaJO`Gcvq?WLA#11(f0+D`~B< zh<1i|=x*G_<=wXpXEd_CZTrzNV;yFzuVjO5BWMTFg+b z2QSw|>OIP2kt=M#>@F6a#Ee5Rd5@#vA+y-r_YO{zWSi*r&6D3Tv);h`rwzs|6flMA zH-Nj=b6r;SQD9ycKB+7`BPViMw)uh$nf(ve%8dC`;Mkd(ZOs1-d_Fv+?hAQLFBBvH zQ8ql46_L@-$bj=B6SIS*J#|?Kwo(2w%EDIC**^fbGcK3ztO_RyVKY|(S*){s0Ay(j zz2=SdIWAbb=01z)IJSFk1-1^1@a#sA@P*bxEu4?-TyUO3yAchdPC)?c2LZ6=^6(37 zPi^8)>|<|J*$9EU_94@E5tw9asCAbhDsE;(mteLaL)R@qTK|9t)IT2D82Wrq0MClT zXrZ|TYoih?05vhZYEPu~A&_R&in08P?8*C9WjTzdMSu{#qEGk^XUR;Le=f}(H{Pvr zFX$1@I~L2lVuf(F>Gx+^j|&!x`D2-VVwiAyEsnICoDZzC?x(=~r%cb_o~CVh&6fRC zXy!o~aa6K?VY=aTkXUt6B5=jy%aG@$iKtrGH~B2aZ7eU#8A2O0L4Zhh;%AcOvv^Dj z``$rY>xzAHzn#*P%hy1IVRCs1c^P`jn%>qfxp^lCJWCM?eTq}mxbuH8e(;|!()atw z%e!vsnJ9oT%r-MRP=B4H?o?m6?>*+tP=WpKg2Ri}7yJMXh8eg6d>Z}XzEgCP2|7vL ziB@#%3{H%2yo0-9h#bZ`slV|!h}##!&EW5#3FTGbiQ%&FkFdG+qzdQ(U%1-zg=;)x zns8CXhlCPZ7259&y*+G8*}gABo4qA#jD@Qt9LqbrS_eyp*8bxf80#ZtJ_7c9@tE+W zCP!={>jMyhI+w6&dGX>>WcR^RsX#~Y<7ue3=(YHa2^Y+l#4;-ai73W2$w*neNzRV4 zY#6|?Zh1KlkK%d{@Uk3l3-L}W3O|dYqyt#8lp%}y^>t{TmzC`o%g+5T9 zz*W6&;G9eDWbV z1j4$i1nX?JjRX&iW2KaFnX19?1&dxb#du60%Lf(r;~$V~CO+k8p=XtKyjmXm7>MG2 z^)aDO$da=v!qbaTU`6f+d%R`}}rH=(V!ohODyCm%+bg zm6!b0|ATVW=Wt;r%0CO-1X!D)Vn1vHkP zh~Hh-`bkbR-gC;T>xpl+->}m6oLm+h0pm$)%UX=9>M^dW!|5%&s?G5$YMJX5_+U^6 zg~h6t>W9W0=U$LCI-G|Qb~&GXfC~1SnLT`Of-Q3K z!BKJZUXzqe9?)?nhPfco4SI2Vb~(1k{$dn*hLj;Mnz0**;A&sQM<;ZrUX$++jX+AF zU#S+UUjuX_mK)rEvLB?j*Ii~t=3=~s?H1PfAhACAHsndKPhz7z-k*oiM!4lZGO*Xh zH#^i9n3=>J6NA)g7)-^$2Mc=qV$HPQakAC-L8OQ!+2)FJ6;lhP?q7L3Jme2NI!kuK zd||k9Unm>l_`*0g_qIhf$eO$7?3=O5drydV12;EZc8j&SVKhAI&({-v?t7Bx)_9_G z>_kJDs97i4Ac;mZ(d1@fvqv74P<=TB-Fii7O8tC4yV*EY&Z*h`v*vm zJ%;zAV-Mx_UWhD_+|f(r*B$`?wgs_QNPSw0b>7F5BnDhXBbo|%jo=d~y^KZhIvi_? z#H9{mvXE7S>Xa~CXsae;Pa?a1w@i9;qdqpJ!;hi1QsMt11N`5ipFLvuXwp-m4uF4A zpfoJ-Pb2;&n|dXiIw;(z&a=uXWYexBF-TyY7J-oipSs*Cwg_Yu>!S=Ze>60eis0uk zL+8@K@?iezKC;JVMZyYNjJYY9-x^6$?Di|?$74?>I2MQRCKdUlB0sn%3zI#ejUl|x zspkAj!?*UNvB@k(6CrH^zrPJ%&c~6q{ABptGluyLIVqSZHQ_swc-&^ZK(!bg47;9kqD^iU_WQ!le#c#b2nHB*qc2<{SaLrT*G4 zO0FN_AB%BEZxS6O_??-CAGfI3uYPY<59V;!N=iYh$%YzxIfdL#KaK!?Ne1{s{v-IT zpM2I2G!H)N(qlBnF4Rwc@|@*gOOlxpTV?nEpKJY_Tu0$bw2~ij)Qs^97=50p=S^pw z7Oo#}ys*S33aO3Cs?VB`7;peDXy(FnrZ}4J#3y{N#pzd?5Jj) zRvtFT!{GTK%Ltw;5U+5u{*0!R@ypvNsb=?2q?+Fw;gg%oi#=BuOVOmT5gWd1)63^@8yX~^>vM84Ydiwv9Z(Dop@BJ2&%Rw(eAn2B{+ZYnMoof%(Cd4W2mOd;8&!2ZOB#=#2^7#&F~ROZ|0D+)m@9~@moqViKnm5H7i8v)zHrAM zH^|cXB=}LkBzgqqU1q*zND*!WL@e@Z(4S^qc5X2H%KZ=$w^{zJnv z(-nI(!QXWJPcQ5a|0g;_{098f`^QVq(D0M{$E$3psr@6n?l?0tc%*C25N-z@N&nuR zeUPz!Pp|2YKcVwGar_(jGbmMln$_A{yDOkDLjlWeg40~V|NH6f2P0`peHG??oeuxW zvgdRgw$Gol?+NyHi;1aT}%zFxaI1c3vlLhDOpoX7V;Qn=;yQ1duPQ&1{RFBwPJFjv0K) z9#1CsyW6O7EWpxapVzn-5+jpUW}E6eq+>8kx~I+IaHGfGELRO7p1EA+il^Vx|GE9+ zr){D2UA7_N@A=@5(+ugcWw7+pIkYZ0h| zq9;EI-&h!CFPPegh5JS8F-~i0eOY&rzP0Es=S}4KcW=wNlUCMG8aQjIug5|+&6^eN zh0ia2V_uJ)6~kbg;8yQeGxWB1-v{QfRakv~(AQwk79D_G|jz1rdNz z$vzCb-1$Kpslq6A)15UA_488!5dnqR!5c9Pslh$Xu%Bq(w10FErU*J!jN7hogFf7E z%?0kJS%8U%D{uitJWQW1mEG-EIMxL~K;@U3RS*SbRQhxP||W|#L~hf?oksd!@dW1Q`V)Ob|;4$_B1 zO3?p+3QsXT49Imm0-AE_l5oG59=OI4$}2z=?<|JYfl$neVbF!?K`s!uRNrZ7*LKkw z+4l|_Mj>Ee?j(02r4Ch%^`Db)P?3Q*zoX}(Oqd8fypD>{hwH6?NbZmR2~$yw(LR&J z4*mPT5O6w>P={`|O-0pwHjzS8i1v)nFzEV!kLae{{}8Az()$}0Jc~H+!bII}VBH=- z-Lkzf4EH-BuqOlkw^Bkpa+CrbpbaeCDx@deZ|P6syy03nhy`0n9DFXd7i&GKx0yw9 zubizJ;ZaLYq(E~Hfx~|AXxo>dZYaQ@efI}_2&(5<*E0~Lj?w`i{{;c3GT^{XaSq&j zmd$}2OW#2NO&5kOcppz+QdJT>G{fH;A=xvIfqVxK&GsLMUp){{#A7ES9@n%XQD2UB z5X=T_sW(5`FJg{r#+6))%>39f&G@8?veTY}QVcR;kFhizTMebN%AVGfW z?g@+8`@moVm@3u?E9gN7M*@FGi@F#FM+G5OynHd8NQW#VBU}~AIiSmh)Q%3%3 z7b;K$RCJw;|Dx@2QB77`aX;T*YSrsg?w-iq_(>~yiTTqOx)IC8Ecki}e^@r?@$kbo z{H8vu1Xr-P6Z&kkI_7;&V%#HX19uidzN{^O;rpmReBt}H6AC(l-rkZe@yEL5mBn&Q z`+Sctdu>J%oKBjDt>&0mRxjL~F5BUp0v5t_W@G^Fw{ADBW$2Cu(-^nS#y}>fu;X=v_YNMZ~enKclV>&T zVo5pH63as$l?6BDU?W1A;d{3%^losY6R+w*KYkQDT}wo@dP^8%F|%<^E3&U{E)P#} z!Son|=YT_Rl?6Y{9@87Uu~wId)b4WQxhq_Jyb4bv*KGygST2_C=k@iK2oDjrh7X9cP?z1Q3Ey~XD2Y%jjjST2cBPp1y(z3i#pEBqOFs0AzWv} z2ah1A^)z>gz#q) zA=Js-F)67+cT{8lgP@1aA!Rk(K5%D^`p~4ndW(G_uh3x;iypbs4BuG=(?iBzBXD>r zA#iCpn~@b#R8SmL!WI@>^5Awj(0>@eN@d*5%D{NL#_EkxDNNy*cU|+C1v~s#>lI;; zbDEHY^~xk#0!T<>yWWiG$B4rM-WLuvGbU0x<*5sJtn&V{1ftP=mZ;OK6R}$*SbE+a zHNXiI#k%#v5+LUM7meY=TB-pQ9~f+>A^y?7GSb4=xVII*fU?mfd*Vv}QA?nhmFu_T z_ZNV~`v{Zk1O5Jn-@?ECc8x72pm4v7eY(c@Gl@!}1vMtALeI4zHds1Oz+*>EV=I31 zsOJiL)aig}(eDd|)*~pDH)i<0#~B#bwSzqaeoulqc9XaZ6L5~`Ye)$50ZJAPNmt8V z*|A!E@n@yozW?1$#m6+5kM7?rn^!>PZ>QEcb{lO+y_iF^Y8SB|=Fz&8M0cemx=a$K zY6>U`SPQTYVHnn(OM4Jw8gzx5hwa^M8qeL~#<7ugo&_CsTahB$G|IQeFn7Fq*cS9( zx#EGeMlVB`O)&Wa2G<2|!8?=wQFzo~ODu<9q>JuHPm<_t zXn1gbXbvouM4uzGL(#_$q|Bcg3kRU;J{@I@6fgzYMhut)X)$7~HMc9JUcS!$b zG;M&W!qm+YZDm=j#N!iM`e?mpYmb zP|9_sq9B)imksc_AJ(9)94qvj>&iqsqW)YuAaZ9FbmV6jli6~Go50X&rEZknl*b9A zTLltSEti86?O1Ph!S)@=W!)d5<^ZH+x2SX9(NZjT-X)~?-6_dZ{Nw^H#aLZ02R0C8 zcU<28n4D7L)f`D4pJ<5WF4zdelIE?Bf2b;MT^5~UiBc5z$0e=YjJHS-2W8tO0-EA?UyDI`I;+ry zh|N|+p!CpJw}5lnBog1}(uBK$|@(X$&Rhy6!~?|&F=u;gmo zI|gh2!pEqMa|+mgG0%`XbRZ1g@E-?tKS6bj&Xa5Y#EMt{eAp5KY#6L1axAptZc-j- zd5!@X>a6p)-s3_!o>Fn*dQra8i_LqkwE=bxK>Fvnv%pdJ9k~ouo&S{Vv(Htp1vKN) zvep#xeCZVyVBkIOkqaEkJBY;zW6G?uaZoXAW4X3bz_acI#A;P_Lnaal0s{tE@&pAj z#s<_Yio#WSCBGo6>M%Noe5>}-PMK+bGEYeAB{~6m6}S!Iy;m3^;{D_AL!>P^Ns@?g zNUG%KtYn$=;@TkLa&TPAzHNS74xMw?xwxBRa*ZQv-f7{!J(_ND^yr&~Z$}&C zv!w4Ax70Z1_0`fS7{+>FoE5&W87PGxK_);l3CY8j=D`IKLvN*}fM$mA z+3cfH1BJKNV7V%GD!jSBJ_~*Rz~dQ$PV29j^;5%E@Ro?zSa;}%#_Q1>CICyfO$MOw z1@F+|4v*Y*zdFmIKD>%kgj|GxB?|eH85))x#QjWa!9Xf7*gxDxn1*xmPi)E<3f8BS z6;IL~eS%LCeI@`|^bG-qpzlJ4*z{e|(iMH!)j|5`2z@($3Hq|TrSB1})g2LiDfJ7L zqQ+izq;*RsX!`f*`b`?Yi;jnUa{qn9Y23MUJH19z1CmZ|EWUB7zdlf(J=H&>1;bWH zbfG{vl;c09v3T0_X}9<%;1Ez9&i4cl<@!%*EWUZhjWhk11nP5Y{GOJhkvMjZv~R@s z^qEK&_h~T4`agaJ4=P6(~xI%3_Kje3| zZO;y_&&F|X=nd$#s+-u8_YRa+&{NkVxIXLX+&{sO%M`aaUgKDl*yRiT2HkHB-;4UQ zt??%$&LuB%%l@XNdVKDo{%rhYJIdhrd>h?}<%atn@}PDxnS={qU_)FB7+zig1KW+J zs(sIfPj3qGK*(?U<5`^ldGRxCb9s>2Sok+kU}B^vnhJxlB`kzbY(69-1`IPyv*WMk zzW2@gH_^$s_EcJ1AB>J=~5e<3m0PG#*fcsPXL}?#7mE2pJ1O6IAH#^eB;|6qoOQ4s2j@2UBDZE$gnv)E zD@wK-!6347QKg3bc^p4@C(5(pK2^{vk+`h{q1`y z0<7L@4%uqhKVz?^O@jpwa}{wr@ zqe2cMsBvHs&L;RGw*&PT$y^^I!eR2aBK#2f>nr)p2;L1qL_Z)dw!-qgdXA}l;OkOx zCvl%H2Q<7g2dhIk9YNK&X%y;l=buQ>?db%)WK{)n$(B%7iU12+C1G=CEjM?vBr0W# zB%BVMh~=cs*zbDXW*4qQ*c>eVAKiw0p^=-T9vOHX1SzXiS|r!(ij{0Q@}`$OjZ#u4T}y$k$bKmN$@Uj$n$BmJ54 zV|)j}O0|Tk)^LL*Bxb^mSX%n`YtS;m(jUO@@Zq%=ap&-G1s9kLAc!1RLaB( z3+U=*N%C+!$(eSNQ<&scBw3f+1738$z;$3Bcy-Sn$zA`+*$#Cv?m!5;FuwEO81DOC z^(~w-AAt8aL;c>s59HWFCzAWn-;nrtZ0O)6I%i99xL8?C1gEGm`Ju*NNY)K}RA-vZ z5`KeKZj8kSgj_Ht2Iy-Se~5UcHXh^+i31WQs3>_=+0SBsbZvZ6R^%^j|J|^5nKK?H z`(Gyd^+K(i=CJN9R4*G4#)n6;|EfFqhw3`Re=N^J^a$an?=M(4Tf@Xm1D+ca;xV}k zI}jGP8fybj+R(QmZV#n%&l z#MloXbebDfkIpoxAKS2E>um_kZ!B!2LQ7eH;G4vL2vV{VajS7yN`cHZy=V=A(f^LP zU5}*PYFLd#{$x3Bs)V_1jgR{yzQv87>R809saT&Q-MT6OCgU+XPpS0Y>aqAyM*Qn3^9HJi0^=Ab~&jV0B^2OZ`kF ztgh=fjcXW2^}r^r^GH;q38JL@*+}JK{b2HfAL8U{*xQv}ZN*up&E`20iEJsPFhzom>6% zN+My;f+eAVvt94>rO`IddD5MwwygiZ7VjdPG3LS*p-|6gBtjY-)+Uxvunm##)2l42fy3a zWd}UQ!j~D=cpw1BSa=nrEBbd14}i_(xDMYn`H9^|-PwDL>E>=TYXg+R=IciQXnP-) zfWP8*Hza*bW8V7JNbGZN*QtMd15+0}`mB$=E~o(2d96(1jJ*s9eebwVpZQF{C$DHLrlJdpHKPO%MXt09%Q_??FsgzBfF>EnC{@mbn#p1=C`Vd-$~9^ zI#ZpS>5v6*$b)iYS1Ugo_}RiwJ3l-4`IMi%{B%qn14gvUcY}Pl$hTd-JLLPReD})t zezvQh`L-2ec5J|&vtA(bKdKiy_M7}B)pT7;G2YxsT+K{h3|pcVXh|p$|Hx*jUf9u(KO4`#UVPo%+ov5^i)9r z#9^?_8H&~FRwrz}M|}}}LRN6tC^TxDGC>{sFPlDI#90rah@&8@D46GR(5wL{y4|86 z2^-hQRJz*H3n=`SD7cu9Y|e;6YWWzJCCX=C$MWg2e7N10&x9x+&T2I&Q9kn>VfmPs zNR*#rl~0%D!|lF&CPevgR;wMD6}9MRz9TFjhESq>RHD#Nm*vClzI-M``EWpgqI~B2 z=JLIv9bO#Xgt0c`k^~Mk3Rwqqi38m3abQB=0B5z@o(mrQN@RffGU5=gf2;h#spY$^ z^69dCxZRh}geV`*YE_*mpZSice2g5D>GxRW(`ET^yDy&!Q9c~dkD9mWXTBpUzah2! zfK@(SmJhf4@|h6j!vXz?@|o|5%I`=mA8lIdpDxRX+kN>=i1Oipe%S98{mhrKd^3y( z86tJq(}{7aBUv+PKlT;zS_vxm;EvrKR$yd_^PA>foXNOO!fC#n|t!5tzBIjZVjAtRd8};Bc0it5;OZP;yy5_L4_RFPw-K@>NCj$(I4}Em^70JD00@8#qbSW$PO06-m z;0I!{qQk+HTMzQ4AyiGd1fK=iVgr-^AGsqOmFffpSE)OIpPCBTtNCm;v>p=-7&`($ zxu$_lt*-G*GIT6rkOIg!)Bv2wQ{RV{EL2T;;-h zX;I^gPHT1CZXX^{;0;~x;kv&Qo??!>ymH&@`M#39{@m#DF`OC4Wes~L`9iw8_l74I zW9I&pvW~x1Mc+nz7dUhg9H)aT0M1EfSl1SAL@6>yTwGa)TQKmd>E^nt%n`v>@X3Fr z+Jb9UQ%9>4ip|iwX6T?99@X)7DvYq?LUJ2!HFkn{Fm2A-(K&Xac3uYaIyV2MM;x6_ z9)KO71tdHXi=gLEGD|cA{6{Gd$X0V?HGXDga>S*KxJe>paqD92_~LGY(8VOxvX??L zG0KK?g)RZ-CD|pQXIhOJy1LQ~_XqBF!8aGHw{lhL6VZ9JwFB&W= z7EAVCjLq}C7@NB*I6YK>u%Zgg-WFFNiDz<|v9-Lwq=OUGbg%)P4wh@^Ou~iwaImkD z4tCtpd8r@(rouGcsxNGz?;craqED}&(f4q{QY+mfvUHFo=i9>C8!6GkZ z*o%20+_^&hv2x_DK%*?gZC=11bI`>VNaER3X3PWrbbvn{;7Q)pFWL0eHwrIH2(By{ORiwe_#mBdB8Orn<{g6p~-h_=QM--3_wT7PmlaO z7U~*5^@M|j{MrtI`gTaj57DJa8d_r#G9uRwL6n5_hUuZxIIWPk;~}sEB+a8R&vY8M z74j1#)*&7%q!E*_IwW9)Ovn1K4go>}=Lc9ywnDOX$Yp)vAvrpv1oJyq8mA699j8*Q z5L{zN&h&%bV}-bNNDrWDg?Mzx=ZTPj4tXCliB=j%mcaQ7dNDgBTS7QNY=`7X$P<`= zw?mu~@^h>w*de;6nvPF|xFyX@tUcLjJQ8vvro#{t$;~gLr<3ZCfP{U;p~W5ONYO`f zQXHcbm)(^^Dd64_hzbIZ0rH!UN=ndQOoMUvtc1K9mIVkRVP%^cy>-7 zn_2IhS?}SBFm;<;ILjiqc&FNNxm9!)^aIC3ZZQJxld(v+3;Z&S;sier%EbuG!mmo* z1XNf$j&s}iRjCL{V>;mHBYqyHC`!TaH9V7ThV4P4p z!mnPf0$`SowOAX!di5#xV=*1@n@aqunW8cUzcVcS^e9q2gdB1H>G5Pn{Nm$BW8tr% z)Vd!-8cj`1gZ;cq;bIy1asJe}KO)P+s)wMj^^Z+~6;((gbRMiMKP8Y}5=ikC_GE#$ z_FrT~+7NXOwx~u&iC82?sYcTjgit!7)$mY2;_{n3K8=&u%@{R7q8rK!=oZ3>lUR%& z$_+Y*F}D~bNR+5CK+nnp63=2*teX=OGjK?oQfITGnndbJn!j*Xs}C@mi;lENv`4|| zB&O15jeisLLCbbA22P?6iHNJD74dtdpcp@t2Sf;c_>n{(qiz9iRvyyFtfWs|&__49 z3V)_7`WONF;H*|zDfA(Tjk|mLtnqb%KJ*zvA6;3s`>gg$XWAKhg7mhqBlh$zb^eQ;K*lK~@9e+c?!`hXC}&I$U^sR?~_ zNgv$K^dXS+Nm`pe{7?ZPAoSr!5`Bz%6wirSc}O3#vi`&ceRPxQ+xoFZA0t2?oYkrf zFcS13s9X9H^8>gt7)?HvPIQezCtcDBw==Gk+e4b_@S0?m`y#5A4&8xY9%h;w(^jEW+naNf_}Ow z^nYa0&j`>D2lN9*f_?;j8~QOnlZpNS5dqzFNk81q^dpe8NLrhI{7_4PpwN#WN%S*n zB}U9v9@5XOq+eXnPdA1B4=wr`0s7&9e!xi3kDzZuKjw!r(T|Q#=%-8i;dZ7Ufuu#! z+VtaxS^@-xe*8$HpHV9@=(h5Zer6^8;(~seJlELnQ8|8 zhvAT>AFj}!or(TzO+VAd>CXoJe6WS`4=Bm>BWfisFBbZdmGmR4&`+226I7Dz{n>V# zengP|Y|;-HN%RA=4E=Nl)h9ve`mdu$X8Ln1`r!)wIhp9s(eyKIocibl|nzFR^n+Bp&waEKe7t_bV)x!CDZ>8n|?%) zei!Knj3oMj*|(v8aAx}57X5IAes?DN-I{);jnnT2{XkIHzdMC~M6JYNTIfes(vPe{ zKV8yKP|5VaYtxSi((fkyfRRK$F#9(2kIGEH$D$vu(C^7azem&0v~l`9pkHPTSpS|B z`VqAfgJGc`SxG;#3jK6RKS3qa-)_^72-5E%{eY1~KQQ|?^fzRtKVZ=hSLhF9qCcSN zXWBUZ0njfae$pREp&wBzF?JUEk(Kl#tI$uE^b=Gv{eQRVM+E5)kbb~Oq92%j8~Qsk z(~q0eY5$<(*YrEE0bZ8ilg4p~6k3=zPQN2dEs+TV((lMh?*9Hx+S&ip zCH(}IO#eGJ{fHp_jx5j*7)kU4vu{OzR>uC{k!{hRZPA~diT-R&3(_X&&sIxh_CV;* zPN6?rt;E3F%A@JWMMXkCT%jMJlIhgJH2rRiez-zEKqb@vw>bT7O}`uT14c6a?r%r`sLb?xEc!hb{hmzp zdo(Rbo1ovLmdLDy(CJ+(Od3ojc0QY-53x?5Hw&A=4oBUszVM|*-f(Rt-c+xf;0+hi zy;9u<8nF0kt9w7BvaA#`&(j#`bbFM@PNVb;1ORAl- zbJZry!WpjFESL7X_8R8Y;EgRt*?8dkQS-V9tS!jD#CS+fEg6kQb|?H}=I4T8Louid`z zxfRHBu?)!kh`{3|%#TJ<6`cYhOJ_;S zZ}UEN0IM$MeO>U_ykGHs8T0`$;xmvRjf=}={?FC>9DJWvoI zOla67{_b&^03nn^j?kI5tJ6XX!*Z zl(XMGyB`GK!`{lyAHAIM!TlbIYOvn11B%@AY}FjP(!~g1%?89}b)yB<#!o||{aVL|(SoeD zgjPlI(JhT4g{FnpXGvV+nxz2Mh4@mxByBh_0UYgK%Lm%NmJig9-k7bo45YTt(8g%- zuCKam#JE&9+R|WCo>zf4A|Qqs4o= z%fC6=@(uCDUv`%t{OcwjSD%f-UxSMuH$O#qyagA-{a^6^FFZ+aM}`Zxldg3c$M(X@ z6R!XJ^?#iBKPmX%Y!B(}F{N`7{k_h_^@Mn3cL8^j<2oBWcl((3&{}K3% z1=erw5YaI>@cAq4!-3D=(ARhBHR!^T+n7QTVfH?Y?|%UJMp#N%*U!zg|l zT=I3xw@AJo`BuueTE4aXzCyU-p%o{drMBl;+tX@$Hrt-m zyt;q(YWRAYp~FyrZZo)ZJ6|8q+VkqyJA2^|pz-nW(-mmrnf(H*3+Rh`EiND2v3m97 zP_N0M^1+8!hkC*J3Y)Zh@ed}-;Qgz~D`EEB!MhVbH0S3I-p=R@F%51;G)SGy9o(u@ zZPw0_&A@T`j{GO)Cbg}q@521-9UnNtGChIaSf{{%J)J8(mH=$$=}phEEMY_x|N{HWI+ z^Ul82juYcYB9zB%;0XkX;LyXW1$ zK^>3)A0;5%6IDJr-1F{n*${@smuDj+>>KnI1j0vw2m=Yo1RR9!7uoPpHjL>#@#h<~ zdymo33x7V!hz=ab^PA%b@gVbc@%YOT*f1VaV>Dcsmh@^jQeIz#&!j=E_)ZE(kcPoRME z1av7+z?bqQc)%edaEJ+XD^;2Wj`e8X&jZ)hNRG;D$gTL>P66Fev#>sTJ}oOT|t9U8@!HjHTkHFWYW~ zyi64b#956}O$jb%ByCYZXKeVfRb0c*ms%mewu)F^^6gg0E4$&L=u@Lc zmTBh|X(tiht0P>9-pqZ@c-wpE=O&(Co&OXQQ^UIOH0Nppi1Zoc4IKoBrUdZ01DE}` z1{h9d38jg!JIV9uWzTv;hbo4?Nx!$1-zzrzhPKmlEg3)k#@(+To_?B-+qj{1r}xC) zI5$35d+@ow+RR$}>etZdUpHJ1wcBtF)NaEK2wjKdvtKu}R-0Le*0jxQI0af847?rK zG|X(qXAX;RxL9iZG8Wu$mDKk{mfCRhZrp3tXAsbw3PB_RNf;9?8&~?15%uC|m_;M# zuNb<@H}p*(?n8_88EkbkM*hN9unSHAdLGAM~7qzgaG5D7f?7q~ww!U*wwYs1g1c z=i&G2N^kI^!Sr2U&F|z|-!Sf~2jY{r`-Z-U%Cc&H_8f~sL|uZOZTh%Ye6C)K&-DSb z@iR?S!=>9KEI6@%SwttN z7cu)Jx6t6Mj!c#(9?g;4?l~ETiN;Bs2b;?3ky$T(JC5oa9xyj*){9Q#ticJKtl;sph4)$rUSC#K=SIt7q}=V94E4$mV6 zMLOiE0+04QUr?z%FBMe7qaMWxm2$(Sf5BtNyX+h;8-~k<>axpm*(JL)E(Am52!%Sx z0FYL3En)y-srk3?hz+^1B zjaZqWm8n`x+M-e#*RXzm`Gd~Zbo9`x-OkWr{-}skllJ{C1Mq6?qypSjhXW?8G~DmP z$tcV+g*eNMgQQaVYKK7$xCV$I2atAh`pQK@@~!DB!VKccGTRc$?1C(3%T975H)Bf9 zXgSv*9`_yc(}G*>kT$+7^2)6YMFD+YkOW3y-S1`M&~mC2$f?H+bAHL?w-BUIB+DVm zQQ~hoUE<3^YwVP3%R@WC3ug-r(=KW)0mjN7S|>DquTvH)Ua-$pK?(kIO(MTjp>h7} zXqwTT>IX$*c?#meHkIGz&P!P;;kD#Z-{ z#7!sE2Q3F2Gb6I9G8V?Ijt@z^Z^WNk0o9MUP`_h_Z{m6+Ds9JZx!==_498?Y&d=4L zx#76=_qZI%`CY*Cg?4bY2DKiRa>6V}L!Q#=cti?X43|kIhyX+7O>?_Ms$z%I* zw?H?7iB@ws8V9X8@ZevD3QFS-IqYufD*zynxX>?cewxYz^#N5TPcG)>?3@G!;hL!( zyFpp#U1Tawpo{riwtpZAWe3&5TyAzrcKS~;sJw*m!H4pXP`{a>6a}~XsQ)Jlj`t(~ z3nXIUW;*GH#B`Mwu3-^6BIti~y^gTwDVeTT7(y={C8#ma|-@jKDIpxkpUu0m< zqjB4Pnep7w{`Zja9?6*d(|$F~|CyX<%Dq(b3m+jc(DV?8E)G#A>K|2;Px%>8P6bsC z!7OO$EmSylTY<9GA9iwesHNBNcoLPFMH=n-eo)lZHs5eDV+69w0aX zXRTl)9-`0gCr|Vj%>iL=VascF+OB)qB=S}vHI}R_rwMO{r5L}#9;zXBfvmePCCh1&#clNv-q0AcA~dB4cM0gb z7b-%3Rpa09=)fu0SEd7o)rZHvVEar$ur;U)&>iqTd-*oM0c4g34c~#%O*)4uf9zrujMT}uyg++@w~S} zdacay?7slq>b_*YC~ktp*~ikQ`FYp1qBuv(i8fHHr%EHt`YHL>t<6Rb+{A$_jusQ2 zIK@^xx-rJ%YsXs=IaUN_mwK;C%_=3NwvYc;{Ud4){UfpA-6rT8a=+|lb&ypZo0B`v zcM(oKz~yqFj2;A?ZCU5 z1dmeXrwj4<`RBS0JBv>mf5+`jrw{Pave3)3{pABbnwWKAaB&K4YRh@ams;Bx9(n#h z4$qW7rHtskxXjvytliZ3zy7X!{-5*f^!&iDnDk-S1U|NA9chL*RdpTpy05^6DU5tf zT?{Cvp5Z>YLRJ1kM@LH8)I3GdJjHUcpzLAwuMoZZr&Nqnf2Hy#UaXpg%}y!s!Fu#S ztcW1)437gz%O9^GsHe30`Qp>VoW>ASHUUKRJMd241!QyKTr)ft41k%oUX7oatkU*mc~rr zlm9L?Vz~vMa_5TuAx^pWWP&dj6qi)y<1y$~z~`PT^*~qf+im>2fj=vq%iOApv33#e z*Dkrt=^tx`aocjqoP0mHTknR??Z1#T6p{w?AG@)KNgWFm7PQt4w1%z|P@Uu1oJPYl zHeY@5(SZ)Uf!3O+a{;;#;Xgt2k&9lJ7c%T)xbtk05em~|3S~@8$ z8Bd-|{h1}-F`DKvI$Q}5S2_K400uLMH-go=NMFAHMo?7AUzkxm$yP_)9$iaGRQ*JSg4`VoIluK(y+amthGe`XqOan9p0 za8wgaUo$cmCz9gYD|jILu5+bnn~}T__BG>F%+e=o@%;fjSi2^=1k30f2XA4w}Rtn_2Kp|2pyUNF}6|@+QnD+UzrL&LFI~DSW-Po zvbc^nDcB|>qibw2t)^x68` zV~r0^Mq}srz*vT-sF&3ri@H^7F3|d1>s$4f86PFQ_MAmf?0=}x3uT1xXHn?s$``bv zWONZ{;f~0&3hZ+8I4HsEMFkl-v0@F$S<@o$IBw0*0t2rDZ!Xxb@2TR|1mFclM8MH zed@dCIbs)@rCc#VsLWkN`aaVaq3G@URX=wVy3xKj(kW@ft4D3yb1+|kqoCun(MZ$-A$TPLCONre`V;SGy4IJn{97splPV^3KG z;Qb%mpF9=!OL7_o`!{e;`I9L`WWqmPKUNWP7y6O>Hx`CizbW=x*o7W^O5A9>A=zjX zo2`O28|_nAZDsHm!B^z}ZldqAYHH3qiT)k7*#ro(wo2g{3;S&%;=AkLANqZAWk!8z z{d*?*2T^_@J}^FH(kfAl<3^`&;%#B*8z~G;`;iHLI)C?8vZ)BG)@jJT-@ zK>Sr`ULG{$N~ix6@EN_)Rr!4X`zlz%m4$vhAdM+(+V^?8` z1W%C!cY5}?>vUS2`O-YY!%xJqDVU@_C)y?!^!BJP-WDyrD)zisnz28y07P;Sbm5aJ zOujV1WR3p=o$v=vPy#?9cp&#KXt>vOv2`deJojkyX@~2!$0|~2z)SO;@NSm;Lz58) zfRRUAh@-6^QY9MkHW;nBaUgwt5;i0G=FwS)9CPc+nm?ge~B0uyFRzFz( z>Veys-yXh$ebhx|R^)7nlxY>9pla|_T`Vx;86vq?4wWZO+gDuVP(9zqd|)JZln!cP z(4MVdS@XOiGE!r-zYjf@%y$-?AKi)Jjm03%pW`uckD5r*kp$u)5EIPhymxSJfd~6a zw^@vW!qn{pHFXTgzV|a-Qz~|@s#&ayEEZnXAx3>4B!N{vHPwzoo(YJFEhnoy{#u(= zrrI!t*%7Fv4z+^T$c7^`5oDs)$PC1TSDJ~YI#066)GQ`x)v5R?^e^h@&?MLbV&#tH zItqoOPqcu2&%Y%c{q%GRTF9W^AgDRf2n8GU6lRz>kd&H3|3h}-U0Iu*w%Em8&EFqu z{uWce!06)#{51)(lDnU(xHG02k8>FdxX*|U(d7H{eIS3hq10$Pg`wbtho(FtAfFfX z|5W7j3&`gvR*&g0n%Yr4N-fkldW8R9eggi#RYU&kyFL=}0J0Uau_vukWSRgSq43Mi zwuXtw&A9PgMpo;`&7AN+|>Kf11=*{&LFyn^J*i>7aivyU2PUu3d-c z>F~cGT&+h?dd0F9G_h*KBb}<46a8QSSP?xlwX)4c;KR1$8JBp~i--58hqm$A`=g8p z+CuBoQ!dK9ttbuz@YA!zqzNJkN76JaLWhWaU>Cz?gP&|3mkPr@B-$$@C8eshRDl{m;?WY-|`~n zMtIcmYfwC3XzlcH!FIyJAxim;<}$!oHsgfQzTn4$`3|b_!e_lad)K*rM)}(2m}?9a z!gy0h%SG-4q2@2v2^n^a^MKjA{r~K!r?a>{v5WkHk7e)#6G3 zGi=pZ;~G|EGn#q|7SASO0nD3hn~Z5XLzHR?qOD1Ynl_>}K=jEPAo^;ZuX9FYm#RGzgYq2jSosRk;)o&r=Z(x`kVfr`gQ zrCOu%^MA#8CZJMy#t^lvwKLD+{K+vElxxmG(*8_bAmK~I-3I&r7TvU#G9Z%c8(id2 zkIfYBaML!p6D&PGfk3n5OBNl5s0#!E>BRYT^*^J;7|&)~Z(TzG>6bD>raN{D*eD@H zL+yVBC`2%?ZY5DW8IUT7>2kQ4cv!6gor;#jdJwSjR`B%W8A8DO7{^=HTV?aKUi0)~ z!BAR*fJ)&hL)1;*jKumRBr0trYJtSs$w1;pjl@CCMK;Mw8;M$t#LFsPu>y)ne8-kB zhG71n{pAe2h~z#s7!Q!9vnY}q$rwCv@2SJ6j&}X+T!$KaDS4B-`lWLqzz+4|9r(G< z?^eB8Bkn5 z!sa9{uUv`!N#mS8Xj*xu+*h)3<~-_2Y$?Zv0`~nyw04TkFqUoV3OvnT;}5MksDM!F zP!7=ER9A?B$srO9fojwE10KXgS|mG<$snE_5Wn9>$sH)>6jHm_IRFZ3r z1EoKG;Suzw7i>%+Ts`_w3f0G3qoriZwLh)r7OKa((5K8i!&sKr6ZYfAnR&*tK7$tb z>A5%$<0yOn308^LPiUFyLVPmcQPLg!<$0F~{Ns(~eXgGz>T}8DP~P<^B~U)mOw?9< z{$u#zyoH><*f{e$;Xc0#^;sCo`&9~Xz5Y0d@Mrxu@Xc`ET8+OM?(?1*>a*4i<-M0u z1n}=q_{Vn%U)%RT(eejLirZjGH8Dd^1m^X`*1MigGcvL#sTyy#eZ=X(LD)Yx2>Xb9 zJ)L;keNeD;{SLNzClKn1`K4TS087n~(?L+QPfHXIy5$Xu9fkMaf!`s-rr@lmKqIJ0 z_$0L?HU7aAfg00cH6yYAre>~XJ^!(O=B4Bm&|XWl&m*&Zk(~E}rGo{VqioK_`l@k) z>N+*K6He3mpvZY`}~tOg;0>oxYQCJnCTC z-cy_$B);G+&kyqd(L^*^PJ~-&N)W}@Ye`9zO8Jf0cY+* zkcr}!!cd!E{=Qkgi9b$B*8Hz6FK4C*iFBf1B3+2JGm>NBK!=>9$0XK~7U-qz6Hv{# zcVj#4K;0o?azbK?hJK} z+3arBxfcAn;0G;Bx`$+^%Fs{>Y?~-f+k=_fSAv<=&l-rVRWQ?*^1u;`nbr$4Z53u( zRqJ~VO?E?<$cwGQQz3Ke-j{&HdHAE{0QS{`CjW|<1a)PhA(80A$t%mrhML+ zJGI0PHC&}b4NwZ0)P9;;KC_`DcJQOOy5Sh0{o2_?fi$jOz(`p z*-|>5rNyhv@4MDOd=H&e!}pOBtl!6DNn{ZHR2{1YXdvVT#}|nH=zbTl`o0{7f-%@w zT#4?c)%3C`D_xSKa}x$%LW?xrK>`#(!{r*4xlh=m3lA==Rp*sdbWEFGoCmlX>w z`rK~mOecyEBRcB*+*n-J6?4fJ-)ZrI*@(bDF&2Jx6F7weR%9&kww_qO#n&1W*!>X$ zt{W@@bejc$%~ zh^rdM2SXFIg{hTUd$_;vKkm@jRCmd{Q%-gF*%-ro?p`}&H4S2LQRbunY`eMx2~JuW zsEe#VhB4{VX0GmETbZ9ZeKaNw8X!3xr(c1;9ek&{an3tE=R7cL*UocOBFG~tS|7{s zc-^RfhT!65*w@zkuO@$=^=C`X@RRGBA4vWtUhLw-aG|?^fhgl{mqJn#{i$tN~iic_6>ze&&V_GEg~qOr!`6G`Y>-4*U2!1rS(U$wEgx^vn7 zHK{dimbvk2Bx6}IE|9K5Te`9^zG5i@WD94K4FZv;0$SLOCR%3hNQQ9uM<54*&FZ~H z&CL)sY?;1+2~C(Ebr7&7KMb(W`KJXICnYX5vcZInvk6zY*kT3?D92Ug=duLerK+~% zQ`0ZX8C$j|>nJBAyIsex_)Ro4P4VcSKce(pC zF@Yf31@$?Tph6j?x*rcdh<@yOH40~Is~-*FnMYwB;8@GY>Ll_ZeS~}*MuK1irD3tR z^Zu2IBI4+{9)|iFOR5V~_rh$-lsLmAmQC`R-nCyHkIp{(&4p zaoKV-aBFh*)M6AuauTeyFPS0*|Nn_Xh39??==ZI#pw}|gDrAyc%TVVQ(4gUeO2c2s z`C9?~2bl9)@h>>SYi^g3$PI%LQ#=VVU4p@BUGo;;=U`{w`5c$v2*{rHKK;3ydS3v2v77EB8)ORgc(#K;_{2)Mla6qGMJQuodx5VX zfpIU7A(a55E(s>U!SOdd#D*nN`!N4(Moxp$Gt*OpVg@E&pGZBy&N z10=9l&WBW|+v7*480*ZK_prQP!JR$LI9nC>PG&PQr@NNHF0-4nSF_iv%xG9_Vd86C z;a6N4a$~c8RPPC(9y+Yd$|Z7+7Av4((i=P_O-ASouqZY=#!dkjmBBY=`1g`$!3Nlq zw9bqMAY54%<*U|^$qW(tYL@GByfd5Do4{zdXhUH%j3sF`b!Ulq(fG3Yrl9W~`P zaFa{oPTkCpQ7?VF@ULKzJ%3TfkSWJoJC`ahzh@)k;dVeO_xeZ`J%#30nQGPILyYfA zUfcS}2&;CmWv&`&wlJS{q6Rl(LC@hw@Tv`PxoBFdUIK)<<0f2#3!CZ?rg>Su(QwH8 zHPu(6y6iz$5D@D^7j&b%Q4Z^=0?=IfANHS1k1#8#X61xSVL39oR|flPC$)hGM@r&i zV&EoBCDbYW5D$<}veDO1Ktly8@(;V6Gk?uh2eONBd+DQEST(gl+oLuuuC)b1)NwAvSbTQvT(|W5_i!+2n z+n7yR{Nqi^KcDiuu=YI6SRE|64UpI0yuj0}^1p2imz z|6uxV;j6q*eZ5NqsQC|j4n>(~hWgtpHuHEBm}fAV=QJm)cpJibaopn#pNNv<;~p^2 zL2U4)4m^)8aW->E?ZT~|%@7_J^2h7h-KhV5^5I1P{j}R)ALVgu%Hi0AOsj1*9-14F z@BJ&&YcRdK1g1y2udAu2jm1-GybFFx-mfuJ546`tmZ_^ZgdtfMSId~tSU+V#DBYuf zx-PbVal?%sKfAL!ZqtrFBACfPkajog@KR5XX9%IHtZqLtl}gshx)X$Q4{?0#{)SFd zEk;k^9pQWC7xFD@3A$17w&u;O6DEj+Z&_z>EZDOmzp8l)Sruw_qcsL2;0sNNw;R-o zmku@icc(%RV!4i}I?7Z zRDo6c59Szk^(ew!H=}MQ?&e!jNgb@W0{(cRlQAy{R=`~cGd_>ojx~ejQT;a<(K)IP zm{?IVe1NYL?+bZf=xYP};4;`BI)P;dc&Qeiu9?NHeAlRxFjSCK)g=8SiYK+2N|R!k z{T~^N7wLE`P>&G?FR2@$;br_`Qjb`7_>79kSZsD4nwr(vSp%5&Kgk$!@RDLoccb#- z{}B&-d{E*o7S1hE^JGj*=ux#4x6mWx)IiQj9>NxtI1|*M7yA8@GPC~Elh^M$TK!XF z>UYvF+nBc=kb(xCeSKgLmZe~v_Rqw{i0eiS_JdyS|JXu*$>3Kv$h2dB(H2i|cp*2) zKxyeSEX^otMqY?^rUl-HSbG9%)#vaylE1|MXpA7k*39e}O;w*r%|TM!0`49X_oan9 z0MgZ%%VV3NKk(xuqh8`mCJudfijyUG?@qM^TMzMVz}0cL+8D^*c`~>*m#H(CkLGR zk>_W($T!Xg;%G@Ff~nd_*d&e~)5sN20*7_{0Aq;}x>H7jJD?XwfejG^u0??-lwO9Y zFbXf!g%eo_%DK71vx-U#Y8}dMR4{$5s`mtCUWcJZ4A72@~Y7;iSLQ9pwS(_1L$S7Hd30R=Xl6Ey49!}(!8g+En z8H@E%-*sDR(5Bh?cy};;gZlL`y2kT$tgcxDh%4H=nSZgykF%{dh*6A6Sk{g|AG(NX zw0YG>E_ca3qs|Y7?WD``+{e*Qt$7j#a1;Ij>^puu6Z5bh!{=gV*#8BY`QD_93R%=0 zMdpOY3tA`Fa#7u{74cc7BF6emPsvIn#Jz{`io0_;Lm6#ecjI>?Z=Cl5h}ckBvdNgc7I$NU>6=ZpFnGZlQ49O=S#+?$*aAn%J$REv zW=sFnE&Y=%VKf+Bi00O_x%DFuzU<%$b?#X?`;cyK7(T7UOlod_+(7a!YhY1?E^QHU=14#d|A#|9;*5u`s-x ztQ5yG+R*&=31OL$-wVq;;Rk;lc^)hi*u;rT^&gPx8`z-TtP}LBx%$AmHiWMP`r~XC=TB|F zgn?O%i$L0B2o>xXNS4X=~P z&XvJ&oiigH;d3_T)}tI{`6y$k7J9522?VG8YF81oSiU}P0*)Ih?@*6}zs9PT4*2B> zWn8$mD5ZQEM*Ng9fv+n;!QzYcLYMI{v8pgWNLBJ#ljAe@xB>W#dwZ$Vz0MC1OWgl^ zpayx6Cq8aj|H}Vs6IMFtVBB!<2nE2w~SB^DC5b`$I_jn(Wc(RHOyc zsm_~Wrb7|BXfD*VpZCT3xo1TeUU^8kGJQ6<($Gb2U9_hb@fCICnHWwL16;M9VIrSm z2n7yS4L^{S3>yEGeBeKa_;-;%(HW-Q1OEkdW%-bcJNES(kc-No*oZJcmezioL` zr%iVP7(P30)@Dm!EL7IYuPX@DMTp%(>h{)1K>agbN}BHKFl~SxOvk!Cz=a4pR=8my z-Nn!b>%@O%bqTzG_z{d{*^lB+LzcPDNH67kR8}wj*6vHPJK|sRw;jB{tUbt~KK)}0 z>l^z_bHaW+>z{|m$(9_ob=38HH=^;DR(+}Gd@&t3`ue@-DzD^`Zq0w3RH2WswjZw8myI)OIcQ8V`=mjI?4rK?>tv#I~n=00RbhSih<5`ww2X?0eXI z!1bo)&GRerWy)O5Hz!e2sve?oZ;>n+(a-<4Efrg-5@j+mXu^7!yY=F!s24}i2edO01%gmfyn{CYu;??C*;r6 zUjXrl*pnd*iXLqBeRQzZKW#y?=kx02sZOekPLYXxxFo4!F_~TXdrBPtg|cq!3#|si zW^(5~7uX#T@s}A)?f;rki_z<#7q~>E1$rm%57ax)zsB@9s+}DC7PVvGMs<`#4NLo~ zR_JbIwi(|t*WUm!6kO47p^T=?{?MO0FVG5^oq$5V`bMpgLs{1cXpUz^o?@eetVT0F z!|w=IJeBUi4fAIn09p{gL1k)zS(mBYdrYzF>Z0rVr_`lhH37(2!n)d{uD{_%bqrhE@Unt0=ZJ+~$&wIvD3zEMj>x?AY^41OGs&5xjfM6%sL+O5m_;}cZnYwHOj3-97g zxDU37`@qrO{Bij`*a2uc`uRc`U5fg_XhU!i^K?~tDJT|nY5A?&Y1Cf`?MTJb1Iogv zE5ok_3h%i5>eq3fvfFrRK$)>{4OI!&UvE{>7miD*SPXL%gNL%ncWAU_1WOM86H$@@Rust5slVW3d#Ytl@R2IA9G=b{kEF&2IzVZhX4{U!IIrYBk+7P73(V z$#pwx&UFVnlD;5!S9eMFpx@q*f`yDhq_=OMuPFrt9HE`J3Txs7iKDk@RCj)fC&E7@F3*(dG#t4~LFzRzsuD1fW z;vnw8t2&N}D9chl$NGjvupL`t9W{GZ>@U4zDYZ?Ofz8HW#2ZG3lt?Zo|Dk)$2x!K` z{9@cwBon?ML4Jo9>(YcJKogsLo?oQ72Pa7m6Yjyj>=>pg5TzkJGrxdJpMe@u)@Z%} zFCzSiiHCP_{}fLNn8bI2Cy3=_rQZoujm=LikxV85=5mVM1}f0n+@uBr2jA+ zY>1b<5+^Ti%8S>O7dJ<*1W;kXl-~FcuAZns)sP=Il|gHfAAz=!0@RbJivw9qiCDN_ zHR(P};QqF+3Af6>Sio+8eyEex->9vi4v_TtxL5m;!Y*@I62kHfk(@C(7)z;Ld zGfb94!fnQyHqt<=a}`Xtjkh zro99adFeb<12mTr2app~6oeVV^-upGZjhGm&5XcpJR?)xNSuT+uIYhM^VjBgdH&LG zAS8lB8B1Ic93l}v)F4TJh#^BN?L26}Nox8yO@qH#pEDW+8tBjQL;dR>SUXvDDGizg zz58Mwj+9R7A&od_#mvy<&B*o0P?Ln^P0ccUH5CqK{c*nmXeP%f&>6Eway^z@+!wBFTf3S0qt{~W1=BD|1YkDpG3e>{Dr!5sNjQx|GWU3 zFk{p`nR%-4PILn-Fs-*mZPYv{;Q}aODr9|cD`3?=rgyL}W&#P$4#nM5|0=D2`yxIA z{VRM4{VRGH`d6-45vTdV)SA${OGP;?%5TKgG$5)h1L9<8yIFs~3HB5Gk34wS4K%`A zOf@$tl7*+&;HjvaDn`gz2X(ow(@dgRYpPE?16y-AfV@B%VxR5SFInTW2dn3+s9!qT z#s-EgtDCyp9y5|Y-}3Y8m^aB=En)*!{Y?S54cWqAxN5a#jEEui$IhDm(oZOf$8`T7 z8;$6TD(83wQlbh-Sy^4PQNP{RxliDg1f2^kY*JzDu41VMsoLw*xFh}+r*XaHz44~T z^}3T{g|6yQ>F&R4-?kDT7>enh;PB(qM5Wxfvci88FE)#gOHO<$45I zB!t2U(4~0;%w23lBe{QgU01goT6UZWrCkHxz>pxyZ}w{HL>VGtegoafhlqI-h$72V z&fyZeodbvr5dlQ}qFPwb&+@=o7$XWfMj)uiKO&P*mmnxdg@pk{jJr5=@&LJwUtb{b6?< z=vJp(pMd1>-x4O%8ozf_AN<7m?{i0=|KhQ*Y#IB7!GTD|{P)jV1t*#RYDHj8eKGrU z&VNsF&VRW8**X7ZP|cb<8g;Yq>lpLjwv>kC^WSIVMi;Q$tR(Z_=dJOT_WMtr|MucY z8lC^rlM{4t9?vMg4M#l%8@&W3Fp1_2reWHNjr z(u9v|5v9;&tm|?$b2(BKCxH=Xn^pWgg7-k3M(qiMewzH9X#wxpPlg1gDzA zc3>0qr*st3o0hI&&yo1Rd((A{a>2qX+L6tvBVrmzbwW z(UO(nwxHYQsqHUtn5*h~t7BmVYixxW)r|Uv_UTe>pZ=XfJbTwVLAX95%pKC#cn22F zoge)D)3iUuf92s;dFXeUq&JBF>O(v=1Q~BEtC1W2y;8z zzC;B2G1*#$=ByVIJ)U_C-a14wucIPIlIAAV*8oLX)VLfabWwFM7Ot$@f^|Pg<@}14 zHpXebMcZW?uc5)C&?hwA2Te=YfPBocfc};CAUh%^wFS#}jRm4TQF}4zFBk{)@&E~=AG82KLu$Ye{s_D7 zvJ8@vlXgwVwJ5X=%>NJT6p5sqaaJ{-6Q^_a=?P1xzBd{uXg$ZXE zilO;U%5S47zm$#Hy97U&UoIugkYBmVDu((UC=$*u=0sBT3jyx|+35cy2d=#}$OWzz zDJUkBlr@-QfDh<1Z-^53giLhTL;|6RaZVa4Q;1IMea zm^4MO+lvY8?A62pT#!&WYKV+Vbb}-Ib2q`LqPYZILi~~EDq6J?h7bHs>OOo2K6^te zTRekxh;d1zH`+-(p;~nkx`5W*ss!6>(t}m~M}j6EET|CMds3(#0!ZOoL9T=@3Q3oa zw@BJQseLu=y7=*lxeGy81h%K#p}D=lyAQe7SsU-dJaMP0=x*f?*6fISHq0@sB>Ne> zgq@G$#x-@8)se`2YnYJn3){ar*XJhDyEOpYTAoV{d?OI)EFtG^zRU#EIX(t64>Unr zr}$1r8pirmhCDYxo1Y-7C2Cqr*SS(VcGr2Uch>qc*(u1s%S~kYcN(uE-f zDz!$MVukdLo(wYw0TKu-NSs$5*yR5-19yG>hf`}Zn5fl{Fq9Xwzjz5O(3j>+4;oi6 zk5G%8Ay%#pb?*qQ>!=?H=^Md~z1F3cA83LBgkKv*7!~VAgvvAPw~R1Gtb=9aDo4gg z%G9>y{`Ki1f6VC~jlxe-r<7HoN7(2(BjxP@DJxD!4fK!B9Hg=4ZMiG>N)Ex2q~c zW$8N8{YW_&X)yvy$PC0e0C0rr=tURREBbw(b?#Cg_-OnAEQNtCIKWu`WtzZe%we`m zWnfcaZ_)a|D)HC|2E(_YLpnY^81R3bI;DR_U}bsJ!B)tat2u>4*^pKlXsQS_@-#R- zyd$>`-A^Gk*9jqEpPi%e11;)C8k$fYNQk3X_y>#!2*~&3$ai23+(;?Dwt+oOKenph z??X5)dA^k5d7*Ju3k=gvKu_uAZ z@~&~ZJDK6@WdsuW=?D42uwli9#c}F%n4W{~up$>K$}ubYqg7GlRh!!r@AUYlb^NY8 zwvj{r&k0?UN=|FQN^$h7KrGr&#_Ek0l=%a6KMSBm3ytNUrA_SvH!GMlc(8G#zOLPwx=$=Yf^5A5wgUp(zLbZ$qs%iTD>4^8wnQBsF268r*@6 zfd4=xYHf^8a_43vss54_D|dFFX`EtzHbRJ(q2I;0kUInj_yv;ATDb!|nl~*aGe4JB zlk5NZ2XOd__zx?Cqjj*|#D?b0i!}Ph&c*J zWy;33aFco-5K@t43dV(z!h=N^k|0pSCyNSW?OU)7JV+QnIICll6gD_s3pAv_Qd#qe zwp5U|!2;M3a9kDbR~MoC=sH$802AnDBiC0USquq7mgNeL&f%_c;7b_KNKvB62kvyK zmkV{bF`sSZig|Kua4hXXnu@U1IO8?B&RnaEK7zg%nc#*|LBc#$!^eDj&<_Nl_YAa$ zNk+pN-2|KCYzGlT({F+Fs2&{8T$Q0}84=JA5k__u9Vv5{?73?gCDG*$rDG~v2D4); zQY@Qm+PEKfA2@`L9@qvVHhqeHdD6S$1(*7cJ_-y>&rnLt?qe>1`S12=6M$S-gFEmc zcHC;?38r_$bhTS1leveu*QO&e0H212c7r_&ui>bNHT$fs=%$g6d5@a*D{jHn=;0Rn z(dxBoL8p;+btdQdj%TnzGTotT6TyScjxODG9#Mlg(&0}y7HB7#p#9mdACBXB?&yX} z4r+-~P;D-Ba%gyboKA4EDd{)u;#m16?Q+!h2q2q;VWjgUtZSdzm0Z>IaT|Ld9WC`V z#|99Mz>ZY{-Vy#DWA-Jo(Alna@5q0s*8YtKVcyvMhsw2YkV>Aw3;DIUx-p^o9j?%` zBPAMKg&%U`=8am52sB-Up{&veZ%T1^AQ~}wK)zK*ZxpNRU?YesXN0#i8wcFH&%{&S z&)^tP&Bkg`D;rBy9#l=Q0Gr4B1pHN=Y0MiTLkH7eV8YdhkNa^3RrTT-XG<3{bj#nGxH9#R2e z28P-LgHu>-Xz08C(vW=X-W!cH{T_8QgcT59k4ppKyNx5KG$oD3w?`GX zb(G1Y;ag3&gvFkE|D&Uie_$hbYZB-2ggJOrqyRztMl};@AX@D}OTX zd}k15ZxzrLN4mz4?@c%H7A3!#Ke`63qYhY-)*OL~wt(zeh>3m!oiY`n^Z^L;XS$od z&Z|Jw|1MAHg64`|AlLiT?&1QD%FrNqQqG2p4QagfI7VP_^EhmZVT{;U85q=oesuoW zjxFb~?J|d=e?CAowW$nT)d6XQstDL|FXL;_HYwP~x=AOhk@@t@MCU{#-s>!vvCsq! z6f4jWcDIblh%aKZu6S#vjXluo@%?M|Ee3ujV6PL<1Md^!lJ||ezu>Lr4GowY0$fbn z_juYOM;m6yZtj0>&Jgj@Sd8n#fSN{lba4{JN@MP9)-R{!jKeON!SvS1arpF-zR*u& zO4h+;0~-bNekS8#^Gq(%8WXAnf*!x02T4jPphPSLVXt%b$wV<~aCZO%C#Wu(UpY}U<(Y{#7Mk>L+RLpW>n55W z9butqPck%V{QObdhh@YM90B|TK6JCYC`Fe%gL356UwZEX0*bR)xb_BPhdXdmqzhDHrh4TD_7ll?ikqt; zyWb7J5933vSCMkD+KVx*#87*Mi*u7 zF)EK7iC>#kK4!IqAMUwf1RBer*4KbyvZDefOUj?Y7vPPqc}+hLmE&v}^+GzvkH5sV zf<`8TanK%YFF>Xy4kL|l*Kn-;jRe0u-vJz8jbBUi0IqsU>~qWBR-I5~OXoZEkEM_0 z-*USoBk;})#be@ZYUn<$gkw?q7+GN{yChfX-}R^;sGCe4<{!XV;6Kt_1OLWs(7O4b zSdbsec;-Dgw|cSbBYWzq3nW1Wo;Gi12EKgI!;P7iKWZiN{@5pTI!?TC*ivU${USde zGrv#z=R^NMRZBNR@g~G2kqr#a<~(LpnC;>R<+l-?8|w;Db2rZZk$-DW4!qC8&Y{j- zK!30ovY*S*YfKY=Wp>$8lqB`cG82tqOx_cw&!&CxC~8I@3)x4<{8=;z(c_xE5^t1& zOLMsaVM^I7%vLjASr3Hf;iuZ)LpMTKcrN_oa?(_uJLGLIx*Pmlb0*&)mz(EO$*b-O zdokIbwb|l`Xo~2F2w!Js{M@umnD(XfEl6N8SdeJ>+l)@c_kRaw+hB?hX{hA5Q?bGJ z0e924dG-5^dl|;5Z?56~E|AZ=G7;ChrG9^;HU6j7@4ve{o*@WX>>F-+M93EGLtf-m zyHf}jROc(9_ zr@S?UMbDr}k8ffssm14+poPr)28(l|O3D*?PgMKOz;&Otwi58a`q(K%fHFs!urutg} zJL6$zN>Xr)k1byIT_{7nE|?g55!aVKI@v;nda=}E09Xzt1BiT8#=#%T7*R*-gz(So zz_8+X^Ed!a!Cg$Ird~l|4 zd;^papiMlJXw59y2MO^uYHk{wVlI?i!V?OEmDvA=CyO>=iN|`xLD$ogjZrj$G2Q0v`#tS?lO{w16bjrOn=FZw9`8=cU<-nxHSY{J1OI0f&|Lg!1SyL^aWO+o*r z=YTw+VG!4A^OjYC{A$b1M_H1Y9ox$|`f&Vk;7_kForC(4fvwgLaYB3?>r0KfP1?Sj zK^cGtg@5WBal-O}ZS=`?5iiS7`CBGuRfgN)10D7ZW!-XrQA&6%K&0SsfY0@tyZm2SQU8&L4+rLSuKiIiWd>9V!tWxe7%GKE$*Niv$LA z#-ex5X10ZWU;+#k`egCL*EoKB!ylm@zinV&-$9N+QKOEojC1KF^RfLN>gac$ALc=+cP^wyA2c3?)GqJx6j58t?$&v61+syB+R|$%<<_eOsFt^>h+iA)>(3W79&;e?>i_#3OJti72ar ztL=21K~jL*-YE^i>{YXGf|24w4oSvR+=4lqULS=0eLvS^uA*9-1b2i{_aP9_AkI>_ zCenczSRP%PSJrR2lg7q>=G=t51sFN^oa+2iWEE4o>{rMlATRHi;9cIAxkD_#9i4cm z!xNhQ-qj!>rRXEn`B57Z@?ACkN}`l&4bA}CZ=Q`;f?2=Bh52hu#@r)h34NGuEAVEk zOn9;`)4D>y6tGDJw?r_Q1PuonhXXJ&C~1Y!9G}>aF>8*#Al|i=cVeYtZim_CI;tJ0vZjOQi^sJW;*04;wo+#wQj_;VnwO3w=|l2Q61%M)LQYYGy8m+R$pk=n z#{|-H*-R$m*U|l(`&eCco^b*~T|XhdNB_RL|LRCG zaq|6Fqul(0tib?cM#`E3#sc^cgwqSgz|ec|5{AaKH{&bZf}wY>07Jj~32hccf>)A{ABslmvUZC!v9%Stzrrc<|IWmE)#uP+E6m*osj3c1IC(s=Y zHXP;8v2QvSXP(4`hy&lCOJ2SVzMz*tm>a`tCA!KJ*h(de#gz!|*5Q3@@xoK->T%-< zT?W;(dFrK1+N@@(4YWD7JYbw{hUA5U%RSI%p$xSM_8*K&_(%dZY_vH5lZLw}VBO829$5g*Je~`IW zl)te5ak?>wJQ={G;&AIJcNt4+P)nd%=TD(5b4nGVWv%2pW&CSbruhK8Yo$Qlxm}MN& z)o$L=6Rf`E9Z?7WHf|ei?I_cH^`#jL&lD9Yv;FXvB%|+}$lrV#TW>Ts>lDthXa_1R zQlyM zC2G)1gJvL_X|Q>S?+hy@$plCIxK|F(WJ6qFb@QiiN~WjNDXFDt;@T7!^<=e2Hkc!0 zc~z^PlD`J~+^BEImQXrLl8cBAtgnY$!GtZ^4`1^+_|O9tB&vt2GU3od9i*Qc(vRIm zC6^K@Qnl*Js~^JvBj{7&IU<66qqfevho0Zqxt_=Kq&un^B@cd-sI0ipPC*M)@9+_XBBF?fLf`69m7gn)V#`e^lPF0T$g zmfwgsxCn!9GQhh|uDTI7)GdQ9NNXnPS0!&ex<+5G9sECU&f1y#G3oRF-;ftd6;R)=t=%{(C5zSnfa6%BXwLyiKdYCY6=2pf=teqW%r%P){eN zE9O^~F^Dec*D|922Y3dLX(_UlrI|F-h%S?-!O3-^PG#UDtNmZ=s!+xk?ik4X_x(SC zJkW&vJLEStsQ-@E#;fQeh^dC%8bvGywiq{VG=b(Yr*0RDf0jQvbrbr|Jm56v?1`Is zckKDw9UP$T`P=Bzf0BL6`P(LK{0!r;JA0Q5kO4hWbHn)2x0{z$>6&V0| zBhO74!9%$}_k{Z0at5{p>jmE5JtnZB^1${=REvaqS7mBbWnk5qz?&nAzQNJ}?3ZfP z4@c!Af+tk^n|6=EVxc))GD^D%`!8_&4wz=JG?3pV3|R|?lp8X!+)!hd8?IIq*jn6s z0#A$SL&4@VZl~}BuLz}hO5UD2Ts$1m>X&JDWIt!s(29_(9X0 zG@%n~IcDJ&Gb#2g)cJu6L%Cc1rR%FXbvnxfE~-T%7Y1^-UKr}Ubxi2uOm5=CUX~jj z(s-{s+F_V0QppKjwQMiJp~s8Pq@gpO0MbnEm3q{aE9hjg+9QLFm$h)5$W=?9IFXxF zi4BwI4#n6JIahKT1KW{A;R$@pu~kStdo?)#1J*(MRs(yAnz4{5?x8H^*e>?rqobH* zfDL}OC@*dkOz|sE+$;|ai{h45h3?(YRlB=MO+5P zMUTkG!9?qj%b4>bJ{Eq6VV*HyN^n$U7QWr3za8lO7XBxmzdmP@{`z1H>t*V%4@S-_ z_ctnheK2+U5a-u~AK$k(=FoqK*1wDSzPsQ#{GOFxLE*%PQuJt%vEV�vqrA6*4{^d>uwoXexwA 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

OuB|GD5?EC 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 z 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 z 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/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%0A%*Nrk*%b=8LQ7R>C50@X;R+q zf%hFs_=Ownc9&PLDsjC%XusPfBNqpy4tn?4ttZFt_f*gnKJU4FupRI6y)Bi6(0 z8kl;{^yA2BlRqZ9&LqFNMArfP&>4Hd`VA)E2pf|n?kFvzd~d>y8Tl1@VX3i86^3Uz7>L;}B)u{PTMNlr^QDHSfkVstBfMaWPs%VnDVZhl;Xf zo4QRzB@Tf83CHp_*BO(9UN$CKdXMOTUY7oO8&vczHD@b={@>t%2(l{;x#@z~Q}_y| z4XJ1MS-V=-_z{(={kysPtWy!(?(#-+>-hINd)SV;_9olIR^8rXPdQ}!pm(l4#iQ_w zH`boA0J6*LW4BCfQr=f)s0G$^U-I7MmX#D1VZ9yP+L}VC^jMiRNx7n(A~Fdp5T!>}v}Pzg9Rb7Wz?h=$knuM~0qm*Ab)0Kh`{r5w%Px6=F+C8zavQ9g`}p zIZ(9Sd+(SVKAu>lRXp@#?}B_zm+*~lRzZ7_Mi#@$3< zCn(RetP=c)ICxKl89-S(i5wXso$+jxjdxcYe9lv{^Y$s($yw#SSx1BcH1>p%F@I#6 zKe7#2=AU~QCzc^$WE1dyzTbOW-5QS}yl~Fy9Cg+2)~)}yZdKiTtLnxlUi(WYpZV^+ zZ@c#uw_o?GH$JiS`Fp$H{rb1v`{4DDe(1(0Zt8t?_q(fayLb1ke|%K@@x~|KGVx2# zeD}}1?cV7RFTDK5C)S?-PiMco^0s?F^((*k+Y$b(-@5MXcR%NC_g?hI^KQQJiC_Ao zPoMRk9o;5%1;q4fG*$ne&V3!y8FbUN1Cu2iZZ`iXN`2D`k4&$i)IS}U`K=q$*`|R` zdSKT3r3XBqfAks#^fzX9nD;fG@$ZA0Lqm4rot;{VZSwqh9sR`Cwtk|j%rK!g$*^{p zdmvqQgL8&s=zv?D!D!mwnAq55ePb8(F)l~;mfobRF`xT4b}sraINV>OtGjN$c%?S` zdG9PFM`)h91R6xl`lB46`cw9yt&6+Z5_$DV)-j#r6qY*x?!vjdb(ribPKFoYRkBEn zw5pc*!8*@xSvc`i&vvgkjq>ncUGdg3OcHxdCU8|sTZk=zj zoopzVrgC|be#PqiW895R2iIo*8O?!c8pU#CYn^jQ5;b`YtH^Z343S$!)jm;UTa(Hn z;as=U^FM!5n-^M9xk!xJMSymf3;sT`ZM-z)Z*->2XXbz0df)Tj{|Yv@2pu%Ra`{=$ zO@9tV0-*iR{kdO*7U;8e#oYgr3-yW2>cBrZCHCUN6x;nD>9E(|)3M3k^VkV07xmIS z!JH6{t*y+IlcOM#!nw5C*OQjEu?r52Qs=?lc+kTOVFFKH*Lg?H`rV9jjIWnAe;65x zs8w0r*QDvJm8TjZ`XMDmmwuh62R?%>(!Og&UUQCvzCjHl!I{ntep&0@QCoaR=ZGMU zNwtmn12j-Hh{~sOoZPFEMLh9w;7G1|W2{Ne@=`9ng2DXGm1Zy#b}o7cjt%|TJgheV z&zA}13>_g;cb)G`>Z4|xu34-02jlh*OWV;NtIM!Tx4vw_AM8f4&A|HFC#6@_!Aqpz z^ICT*%Zkvb#Ujw=`*r^tlq(w03_Pi}oFb&y|EfQJqxjG(=5Xr!&;Apf<~e4CEAQH6 zy1@R7sUst^;+RzPM&vVduja>pPONmL=a$>K%ib;k;C?v%a=jQ$mlB*rKjE&3> zPzV`&OmH&1XWE)Q+FQv;JGEdpq>Peis>miR#K3vuL-TL{`{4Cehv^kKLg`)!e4ndR+iuS=oQg~9n}5N>)9U!hFq@pdZxtvAVxJ7%vh8#tKo^8O-PF{4 z^y28;n+`BzLqESdV)_}ufqvfLuQL!!^KUcWdv7J4mJmBz{fv;-{TCO!n`H!I(M#`r z_wKrm=dyc$w9#|q9^GG7FWqzE4cOJN*U(h*4mm*LPBKkctI2IxZv1xdPq0n-qrP)h zr&x>0{CJt-$#!I1*}<$gRNS8b=YitDmH(ots>^U5n~COcUU`xw)$|q*U5Ep0Zy>}A zZ+g&G4T~h^@_~I=AE2Z(v}Ml}>!lOF$N?h-I$H*|ilO2LGHgWI!U@$Ks-NoF{NMjv zL!iY?-u4^%$|NYclb|NwGl}zgkBGAFdx`tknLbSk|7?2V`-5l{+)bGr_ts@rWPtlHd zu|ucdJ9D{{JCldi&vO(=xn0~5uX)za+^l?&)ifj{d@XL(628j{&DaeWOUElU%vjnzusY*v@ket5A$Y{3wjhnPP#; zMHyU9>cK&5HR+79-k#lZ55%0xlqW?GnOB{8>rgINAieD@MF~^!+R;azS-U?L zo$P!4{{AnEu3fZyAGvJ$D=-?;LR8;#(|Pod7hpVGx)t}ML4CSJb@pRY__2DvM}qp+ zAl;tfX{dFTfrj!>zV^kZVGTPJdt;6rG++PHpurYXT6RTSLp#UWY&;|DWHG>i6(4fi z+t0`rB&lYaQu9C%YNn3Mn%Yf0Pk^eth}(SQM+Sw)k;Si7PQw~DR+7cf_y7OVDwlmIavh~8 zXCer$;5i?-W+m~7CTjJ z=SFPjMv;^o`ngxKN}ztf=e=lWmm<&0z$>L%aRLgOH_VpUs6lLBKz8~w}*>pQ7)HzbJ zIdW9bD`)Ee{tu}B-`aPT<55zkNG3uiN9kui_ zuO8yDP1)WyZ#Z{to2iD1^3+++H{7cQe3T?;Fdy1h`{aw(zpm%o>7+GPmz&*~_s6xy z8CM3h`6_TVsRpx;t3+$EI6(7kpY7KU zcvmrd_MLp6Zl#JNUOQA)*A3f`a zT2Z>QvH!wN?(E#`#oL-^t@|XDOlI``cpr_*uVyVJkVsCqiIwWBj9~Kln;sCNOe`v^@XD z@?Ajs7pQy}sC*avz~xi??_a)R`pHVqAHSEza!YDi-)hNr6TbEg?N=+^Rh#}aDVox^S$H5Z?g$W6`9*F$|pYj zgO+cQ@_nANeS!Zk{;SJ(fvQ>?ysOo89Yy?V7O_8z7{}kHPnK?A-=;&OB1Jb~ZU0&8 z+{SAX?Dtnj4yS=@(|8ib409>0r|NesLfAIC<-i_MqGwvub$*3xl$p>T3 zz5P7jMEczSdRqEWcqaeXnf&oP6!YZynL~Hc^VgZf9i{rE58Uu@ac}dA*|Y9HJ(spV z@^oK2Q;#pztm-mxC{B5C1I$@HH~*o0)VC(xH8*P9!*p^MV*a~TPaaTgLodG{US@Fb zPH=C6`*wn1S-hZd$61J-&f+cA-~T^O?mlBi;JAigQvVducB;$NtKKwyWf#{<{W(QE ztumeUNS@I^Yc~Cr?^3I0yz?0+|3hX~`w=QbrLt}+Db;J$t@b0T)M>#6-SG^xH#hv< z$%{@aaw(H@)m-c^23fg8?NWw1IvP3)NXfe2*+XCU-28276ww;IQa%0Et;WT79=rXn zZwqpW~kIOX#7`(H@VtDB;0CJDs3U`#$Z~BSvqb zAw42O9~JW%^TAvV>j{m3$sM+iT3`M#a?h5Gg;^?Y|Jlyv-<#u64=1v~W8an@1pE>_=Tk3b1|Lh-OIIr98fQ{TKJ>B)aisO@^&A%Hy zbD4b7nD-AvAKQgH;KKdUcJqJS<%60!*FLTG`32VBEbaDPQ0V2AQ5e%|^O0w2rQ2F; zX#e!7ucl6=In*l2$-h*N6|LXgB!BB%|E8U5+vog$hWz1gXff44tUscE2Ar?Drsmh9 z6h3{dH@c>I`_E^+PkvCj^*N_cIH%*MrGLqp(;rs*)8czIBNY{zUT;+G$VGv@%{R5O z@@#hU|8{<1KlDSY-@sFHZhq;%`{CA)0q}J7drvE?e?$FfJ~~1D*VpR5SL$A>7+OO? z%YF1;CHilMh7||uYd-#ptf-#bA_B0Ji)!Kl=v`Y%wN#mYgbCqVCR9j&Of<>Ud*vJYFY#}+IIy?>lICA~ zO>;T(uNc#ugZli-9VeITg0#Jis6P@Gxmpys3`J$7baDzI>X8mWgRb5r= zZ(rHkX|{Q8r%(L7=Y2X5MExKUW=YkL!N{E#E_knhD>rp%OMieX9i&YA>P4!778_Kk zxB0xG{JaUt(n)O)iowmE+lHz$mprRFGwhQXyi5N0bAIpn#ep}l2l*@qIC^gT#cthi zf8lkXI{9NCywEL&idUIW9~*`Xt$jei=6%1m!z!Tpwu?Kfc;XknX9c5vH%NAL+WnYe ze@me*#CGzYlRwX9|Iv@K*?-pAvDtTl4xIa!f0~>9i~i)_No;U5dT5j~a)G4`8}9!7 z-|o5XlJn4oKl=6&*63$%;lb`ON#z+L7Ha zY-ji4Gh_$99CvqI=wB}CyQ=>}Oe^+rol~~fv)>%8Gwv{Y<2v%*E6y(tyyL6IsW0*z(>WJ%XX}O6edgq=obIrH>04X<-rIZ=?|Q1Y#~}jxd${?& z7bif^H>%6BIc7Jb%U*gFg@`x3F2Fn2CQwf)!N>pn<(>WLdBuGEM1i2JMWeDW)$<{7 z|HWBS^56K#%8%e6YhRXoAYIn5tA=ynQ|^9xPV-CFF#nIy$=2xh_03y=m z1{oO}p4!m<7Gt~L7B?rd(q6kaUqlMnD89 zmsMv`l%5d0`3!`LS}oFLN+QCQ0Sb>d8O}pPe-?Af#%({9v*B zf!ZKuN?h!cWm%Lv=rT+g#4&TX<%9JSDqBS2KxO_>M%s&N#9#N<%UDpwS&Dl3+x4i! zNXB1tA6(tdoFMt`5}&nGUsffCg+aZl#^g+~Fe7LngNE!nq6r~F`!ckW5!L@0u{(o$ z9hAq$bPy`cOjH8L##P$2@&l^=7M-RVDBJq}L!oXepOnUBlOTb{6;x`fyc-D`6R7-k zrM>P1LIYnb-&>Tqhb~S#*GmuA%6B&CHac_CF&>w90 z?y%<*NX4y}4T@q$!wIw-Vnys5_QS$e%hm>wlD8~5k61q=0#rSuUMrapx}4~v%ExWM zz`(0I7v)p6@~TphL>`erj0q2u6(D~X-yS1N!T?jmFHMiab0jXvOORyp+d&`T!-FJ| z<`QY%NT~ox5Vql>t%W$?QQ|R zb7*8#ov93KrBAeUJ4N|1w?F)efMW2I+AdBgbVG>TUKnFh<*UKkMcxf{g>irR7k4Du!g z&QgNNCQs|^Y#&9?`bA=efqMC<$Y2U!N)MSLYUOox}Keq(`k(n2hC;BdCZceSK3vbQ#{kFW(zE-ksk(odv#DVjO<7_6V zNRXxzsM%2Fd$}biqe_c7+?r*BR9S(Rh*qlNEYLu&K`j34qS97S>2VR}h(NL8>c(3z8i>#(gffd%&IG~F zRB`24E1{RWIdY&Uc4K_UX#@ofx~r6aZT92!l4lK-tzM>UZuXr{ns@NJEM*>(yic4* zYYs9frkkZ=H?Qj6Z`+m)K$p3t8oRN12(w=0wLy}N(ihCIlsdE9xW}hdJQ<(jA z=2omV6l?a^d+R*C&F8ukxx3iK66^I$$hpb6@z@H{Lqg{be~9RQ{l!n&N}af!+sHod z^Lay9vc>*s;2bjHT{;)xkf#^zpFDoWVg%oR1v`8W;iv%Yp=3&MJXZ&WMv0a&_5H75 zpOmwWUL;-NRE?fc1*Qqu4`6Zc$)^i#tf&p$qOfiN7@H$gg3=K4#&pqbxnoB)W>9Qrwj;5k z5;*1qtsxY7RPM4mbbIj`mVzQ72gb_23Z59b;}JB@cdmMdl>~|%UcM-=E6pL{mObGP zD2xtP>1*XRwPHn~q~xVb3B#I48|6>1UF2bFjjY1Ka1Go>iMOBQ=w3}DpXEdFj>aHt zB+Qsj3s~kQiSN>)vR>&UZLvOegz~K7)=nX)xg{*8 zD5b|M@8MGRIk3IR(AqFgHDC>-hq0r(wJcM>mfVtu(gt2d?NVjRUSF&yNC`K}Ul)^G zGw6`pt5IsIaaIhvDRxQa6(y_AQG2=FVr#ktNQ*ntSac}mRux!GmYEA~&dPgp>&hoP z@DloyUWey~EG8`1K>S4Q!oCW06|>m?i~ZY^l}1UgszbH9)gpst@~h-8{OHY-@@}|D zxzkg5(u_TJu Z+qGD@EI4}9yA~TDFIZTS6Vf?tO$n3cn8_FlH!4e5E!ij4p$2Ym zeKL4V!5Bcvl3J72RZ3vINO!W zAn=AHA7KqaR4s>c?X_icXkC$%r|A&*kj4g;5#RDqFB`O;AdzelAa%R2JoEyznjle? zuy)_mDE+-eNi+yEnD&wECvj;IuG73h8x5AG#EK2MzC6HG@kR*=###Nf@``q4>^`V* zqrBeOy;7Wduo(QD_N7cL7{O5!Sap5Svs$03NQB`=X-(;=;l$SPs^PRf$E!ADsj5OU zD~CjkN5*BeA>> z@!Ap~6-n{M4V84Rq8E+LC{?+j7bjVQwvQI&O%-F_aa#TAy385Gddta}KhGG%42;V> zq)u~Y(1bWNJ8uQRfMEy=c!i)WYqQ_crU)auSaP|fv6ENH>SeT zDP}mu%;^koN@`s;1SJUAb8c4HwDuU^s7>F;9wTJamto_~5_PwC?(<423ARzXSKdMu zAP?jk@_ZIF6c5hnwLG^bH|Q~@gM{cz=EOU9COF6cGJA%^pL++C@wz+Ri95k5MSzjmJiCI`$aNQ_t<( zUYuCumY$Y=2CW*qf@_(@59o&(c*L5Qi?NR>7*Gf&nOE5@?5|;w`mu&~oE98j-HWmX z`_!*C%AePDrp(st1@_ml)`DNcqtEI0rcR5E5LoR#iY+8G1K+ufLmQaQ?0%>yeUANc zqx^-M6bo!YpiQKY+r7n{=dNP3T}~DlHcziJlQJ!$`q{lvOy5uQUfw?t9kjw0jwQnF z#i_Mo&qs@0s5&@VEQE>>=$f_Ko}-Oju0uueKEsPWwC6q+3W~&XV_$zC-LaRby7{M= zeW5-o#q68CBw@$%=HA+#d)Q~zcdZq(ze2UucGJf??EbdfS8A+_i@|Rc``=0I-|a4T z!}6}D@hYRE=8^?B!YyZe=6rZUF7aSuk?;AbA4Jl-;^sTVeE6o$Rb(ie~{u*kg z?5QQi!OzXLwc~#;s`SP)v^SkSF%P18VnHs=t!+l`QD-t}t~2OEe59zGjV#(-MVNqO;&znWP*|1+`N2a_;cb7S`LQ=wT(XY1FTavo_@g zq#l*B4$f3Uv$f9pN4@JFKwKFM8nuTOFsn*Gbg3)y${-zHt|qiU6slYLWcAJ_KUOi( zFR|~{(WKaeObHD$3+8%^OC~sBt0LnaFHpC!^dAukM7Lbsr?q2r3sWN6d>O=x9=NBZ zb-$0)&M3dz9deb}?B&|N0k-1#Dj9QK-jAv5u>kHI3#gpxC1fC6hOEWofcBqN3HspZ z@UyzMES$7GS}!-fuka3zZqt@By6a17TlJJc3v!XEprL{6%b!FFt`3XlU=Jyh41shs z@IJJ08c}R3i|Ko5TK1LpL@$`S20tr39I9xQMn`{3Y*Eppo)9)O)4G-hc$rilv)23) zO(a^;s7Bqj?d?iq_rHkqjH+v=zxbp$&xpHupALF3gVjq2Vwha?QLQ7DLHAKYr+ot6 z>}@jgTD35YUpl3`Ytvt6@v&EP*ca=&Da3_{URaVm@Z<+QWDwKszTeVmU|up5b89I8eJ5A<0Dlse-4FM@j$w&v*EXf3S2k@B z$0URu3L9C%J%YI7PVE`Z%~B&KD>Y1jn5;a5Y_izI#6Bl2FHp70@s7%?=2#1_E2p;j z(y>B(x#TkJ5MM4B1kdY?#A!x-hRH}YIa^wRwhO8Su8`7(#qCTjXM_aHF>-99CljP} zw8ch5e?n_LtGi{wV+x@gg`4jj(F z>UN-7Gq*|u893xXe%#a<*q4D7xiB*$#Y&+!L5i;pgc7f#34+aaCrJ54r&yCJthMk!qgagW-gSeTdtYM{kjqkNlq;!Ihvi?%pZM)kZGY6 zxfDg=Ms3YR5MF1{Hfv0zc?A-G!ANNY5vo!#dzEexSF`AfTr7)VqB99nzqIB|L^8r^ z8mp-^rxY3%7?aElY8!27*j@Ct$GogFU^U~N6zQSPg8gz`?zxpizpC$|Sf;I#{ERjv z@Nmo&Aw(U}N3|YuIv69;N_~uoZ;!JMJX$aLE|DNqFDE`Hc?a_zhj3W0JRxs|dpM*G#oMP!L)n%?hV+GZa&6ZY63I^b z>{W+D3z9vFJ|&Y%6R@rf>h28M*6b!yld-4xTN;Bjp^(!sVk1FHNBlxrBnw%0(7}+8 z%I<{I3R=&Q(3*o@)}O{(t9&Bz@1V`THf=Jz2v)2WxoWSj?a7D%mVrySx=Jn-Sn~;8 za1`3SO|96uWZ;}!y1+;wN1RNM;)^FaRqepBT}hBK^hm^&k{8}Lo}e|kVWKu>5VkXN z!@g(KUiaDvUJZ~TbtPhXXq3^Sk5Lmd`UZWlZo6CSw$g(Qt%TTQ1o?Uera{eGnnE_6 z8XQc07#k&bD{R9(p5j7egUR@|9N`9yF*eYLQvxk@jz8BOd?b_ufV9}Y0S+ zR;CykwX-&zE&hteKryxM_R4?KU!PU=DY)8CSG{ZL9fEdhx4q##?tLW760kZ+ci6F5 zn#qN96`otpN(K!H6hVpl1q-bx=5nE#Iu&F@|p{AI3j<6o5$tVb-R{2&E zq;>sCRF`#`2Zqd9{WeapG;*0mAS}S%jIYh8l-z#LJzgVM(^indXT{iessIZpXSQHhL zHo=AEwTeRL1YQ-GhAcF4B${doI3=A5>81o!jXkRf7;C%GfJi`h;Jo*V-J7>5Dyy+c?>pxlMDK9AhhF2Cw#ro{=x08^GwJg? zgE}3OdER(TMfq2s;z97-+W0o#_uU=Ue?FYOUF99VIN$Q0RsPc?@yIz`c8H4_Ky>^L z?Ks5~`)gf7L`(Z+cP44BsngHz{LZk??@ZwAIKQJOLU*3u z`TPH+b$;i8wH?|0Z~sFpyWcuPcJOqOqx%AuM2~Efq1Hqk#aPq4;{d_i zXL$;p+~Ko41!sANILlLW20O|404fV6tmbRqp>B@E<4{ju^KX8w z4Qrk2$!6kQk9+X-70MLndR~LKqcg>w&4(+^JHOr8qv8mRbSUt|P{+BR77l}dj_;AY#Mzn&i80`7}MnGO$H~ErDWUy z!-suVavinoC@6kVLLvR+GDTzTJn>T)35z$m`+t{t;Yk0QVOuFrY5u4R#3my!nAZ^F z?!XvLj77QoeQ;<6gdGQmHlAmf@)RIU$Yk3!pinOkAY<@ujf_HXJ;yyD(s;F0G?wQKcxiyZM(*(y?L4$G5N_^{ z=Cll=$W6H&i%*Mmyci=;YcB6;GLqJYZY|(SFVVJdP0Q&G zpl-_YL-M)_!(v5E$JrAE;2K41ZU!_!9)2~b9hm`T6m5pB;F2)t`4zhk_0WsZg$!Mk z3-i&K%f0Jd2F+)XhgocEr!r{9uG7>IbBN8p=cB_>(jDMn-4e`!8pS7^PT%zE0q*QRSMb&{!v_(NS%Bst!eLA9 z)Vj2dj!_|eQuBO}s;d@ZPJ-!S{#-TaaKDleuU0HXJRKv`NrX7vIJHOAv6d?C10pOrTNzjyT(*qU10mj!NX-tV6}w`-E4nX z^}W&l9@e*bVB*6m0f>k&(30i1_<`cBs2C09P)@p!I z`0)5`W3XALSJpCYMPY+B-5fFqzF_yDhjXLEgSXgn074Qf?})wDEfx0q@KDuWmu(m? zgELn)dUL3z8N>|Ji&iXAvsfS#<)CC}=><6ejF_c&&7~rGLz!*g?AGYzH}N(4qcrWBEk(h?B)e2T;yNg+ZKQ zmdlI>&#fAC*cDBUsVfxPwq-(9ZB+mro^Dc=2{p$LzNNR(VAA6m-zDW3Qz%{MfYxTe zp`-VVcQuDtJYH4bvn47+#f)+|l3Q*# z)Ej}`4DE|hk@GsCEj>zxcFR@0+Q~Mx2qD=mxdg4YgVr->BZF4jL8}?G<{)JBaziJ$ zg4fw+kP^ z+L#k4>}F>i@s|D(LQ$_t7c%JxxAqrK!{-eqjFl7-N5{tnVnQXtm_xC-5jCmEYJ)g= zqQNdumq0N!YS0U`W!m#>slhMMW*a0XAkan|BxWGcdK)y9ptS@^jLyPJbt!Fef<|96 zu7+jhQ}WV(F%mF0WFkwDMnYZOf(s0}~V-cZ)j?Q0rWS7m7omc~PNggGiuI!8=iiRQZH`v}h_Pjb*$# zjYaOF8O}+_yJ+a9yrKz@R!@?nd=-8&Ar_*XO<=by;10f86@-vNE{O!j@mPrZJi}08 z40mE|tIBh!)0aq<4y2E;CyzrGto$;(*WpL{jTcrOU4T@4C&B!od~}3ELsL5dhK-7# zk)=ZBEgG8yiD9bz4e70!%MH3YK^X2JR51wKETviE32!7hPQ$EY&7rq=Y^cY`an+zh z{S(HrK7SdI3NfxUw97iuzhtZ<9wTYvzGx5|Pv^vDn|(K4En=vXD=XpSRaR4 zrNTjdN0RH#1(Av3%R1IuUbRgaD=Mm*qje&~UTnVD(<^4|gtzwNv-i1|QRKp9iMSoe~a)lGcF{;T<&8}ZasjjyOvckt9DK^R%f?ry|Bigx^{cxuXa z7ZPK!6Jw_-D$>M6n(si0Vmw{L=Wz6~G zjs<^{D?t+rdxN4bSUZSEjv9nG2{)PQrX!fCRvn7<18&|aFl-R=C1ZK5I)qn+SeKjQ z*`T;1Ci#D#A}}>f;imP^9A2c%UJ+#IvfMIfl8>u^sK|FeSsUaK#*xq;Q~NDN!dNOU z4x04W<368=<)C9fs03a8kYuXbK1ju;&fZV8_=mnAv0SSn+-E_$W7oeW!5GcdB}`q% z&t|2)e%#2=O}PYVt(xoHwG3L%ppLcbN(QZFP{&$zDT9_XsAH|VkU@(MLQW?))~fRf za%_me35S4h#zCzcF6bhCM;A>w2(>+~R-c=4LmDudAl0uHGMov#YMZJWqO_$p8Fd8P zD2_N3-r(l-SS<{~9MB-|HmU|8`!&ccb{J5~83ypG92(rBrZtULPVV8=AXm_;T#5)t zgI%EIHb{eBprtlQgI}PC2Q^A!YY6ti1R(f%z!}dBfO*Xe+%pQCZ&xiK(bXUmfHxR>%0OdZjHs92B;>BSr#V_ zwf<TP3r2!t&ynukFfzAl0MVQ-Z%#L^+UY(2~tXg0>N zn~S&Ur|)B>$Se=O?6k08)2A9q8;1N;U+_A$Kc8~SqT>b`5$BX}_uN(6<;!&nzIL3p z@HtL4(}HvH%r5jIF!RJ3#?>D-Vbq@Ww6Q)}>@p`;sL~p0Vd+*HDmG@UkJWd1Nv%*} z4YaY?B86434ZH5vqE4a0so~J%+NzlCMfu|S|oLGBs zr)`LA2xLDnx7D&A__-G<#YZd^VZ1jbY$vIFXqpN7F*YxvW?eb)e3{ONo9YN6~pFFlIlKapH7R*RC2yGT!#j zu~Sf96+t;IA?Cjl7^z&6;6)hAcA4KfFu9@eD+!1Kv`Z0f7$Mm0rt@RukrIPNR2W6T zgaK@1!s-E)jstpXgC-Mf>UQVw?lcl`24N(yr9pbSk-&piu_qx<6GR^ZDP_clFPVr)7FQF6!qe`0CP9ko6#;Hq0*LekQkFK7aL`x9^qUMM ztr%7e^3l-^gIHJ^#NrkP11J?&YQ{7YSOuCZ`xU&LGggYKN-fUwNU51u=q%#ZzE2%g zE1i;8ov6~NLmK6W1&R)VX5AqMxkESx#_b9I4gx%wI-iGq3(&zln}5jd(J1+Lx1H@^ zP}HAFyJn9xW*=edYm|?1xtr87qm4mp00-3ZgBv1oDP2@XbvK7=TY?;L z4>O@$CDSi9EvJQRc;y*HECNvZQkzyO@;aC?8wIFH?v_y1kLX*-wK5BjYp}tR-J&Q- zIoMSHD%k^Iai-Onie*ESYjvs}y)MnHF{NVr4v)Ib+xZ61=9bt#`L-%7GzH(LoNHth zK&Ltr=>B}pd@wcfS(D8Gi)NDy2hCXxx+NK{bVQ@{DVM{20zbbsuX3_bxargo=%T&D zt9er+Jf+B{a6lgEAy`)53rpl6ED3|H+run^Hp%N+)jT?$IacGw30#_o>5Zsf3fI*# zD5zWC(I^6`Q9xnQtN9oXHxG^iLfPMSp;xD(+wPXVD-dQ(QDMJIG0M}K}g-klcLmT5xbm%Ef2OlT!Pf3kRs7dgARwG zlkVMQd*TSTKXG$qDWuESC1V_V=&%UrbLM+x6!^tttOX#>(E4(xTV3r!$CIF8C(ONf zOj!1MOQ~w1FG)E^)8#>kEGUQ@a^q&^H3iYT>!+ctw^3FSW%V?awKmGI*gmN&b)v+a zyO6OL9RvZ(MO_0;&lq$AMl*3(V$$D8dE`bnOe9DdcwF$Udz_ec#^t3lE*{jO8r0${ zpE1Y68jBK&A64X*+*>0V)UCpYaH*<<${Q;GutV8b$_-n$A%i%dV34;{19;QGu7cO) zVpxhBEc30K1fV3?BZbqjrM!F>`W6$*@2b9oi8&mmh`^=bgZzXpPd}Ym`)}VIHuXaRh|Z zYJ^~vQwE{(QahA=!|WqkJ=+sm}X1ZoA8RZVIRAB2Mq+sn~6_NRDLEv4!rE7V#H!Nr)q z$kZH6g@E8w5;LV$3EeSr8cOg(YlR90fg)+xb}GT_s*V+gk)q`hB^*cI1{`!l|D;v| zOeht;YZ4B#>U9v5uLMJ4(`(Qzsr^J;qwioy-41GPPnh5M&Rh4kv=)IHri|^@-!zDY z1)#hsZ3B>|(+NPi{$4i-o~pFs;QE?CaqZ@+(`e0!u}9MT46M2|997X^rv_b=G+dx>q1=e5VEb4B3^&E*Y(U4WFxkYa?Ae*kY@B3QB4%&$)f!3TTo-BPq} zdpFWpZN>e@*us4Z$6Hq54vx1d2z0%a(S)&+!+F#ohQ2`_T_bqK0t8BhQDG3QQf`=8 zZps^@YFLO6^oHEvctZ+hUR}qnmH$bMqhhRsmgndB&pv}#h|A^j0)}=kUS&QZP;k5{ zhnnNf+xvK{bV$r>CC;M|a6DTVR5Sh-E<7$d-nhSfzZYqbITg->Voopg(6f&iYD;ug zH*c<9!JCS!ZsF3fW@p6h;CxMSAG&`t*;;VC4K0S(Gibv>v6T}CS@ytiomU7FNE;XJ z&Q=*H*+R<+TG80y?oBw}l0b2^d(oi?v<%`>ASYiA-?ogy93?2=l8M#>2K@A#v0!_&U z8<57JK$C5d#-czIZIH&KK;vzY#->1HZBSQ�c6~3rtcbZRXfO4nqrWMr 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�%s*J+jR6ib4M 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

Tgl2P(Y9KUUG+sYm_@9kmmp&kH$KE~QL zuhCLc>Oj_nrtWeGLoovoStFA3(v&e!kh?suVnKd2_^ zR^4W9ECWwdGVzxJ&)t|UFlQ@U&;fZIPVi5(Sf`*%x*3f7%d8ORVe%G@oviZJR&GXc z*98PismDArCzRBGA=4H6&C~^E)?n7QefW1vm5eWjmJ%)H5>L~u_SOc}LpO+(8l05S zN&BEd1{g=z_?Nnju^^*WM#c(d9nd=Rz;2eMYywP%J zoDp@7IeqqjdO)bkA4Rg@+Ym#WM|(mdmj`2_Q3YE_o$){MT^qhW5yF(XgxV5lY_mRi z86D^1+u-6615@7;?v1UNaNJ%C+^S2*wFr@uu81h=liLyf9Svwm>( zSg@u(OtX8T$qB9;T=PabR*e+=}ypL z(MPUI|Dnm)H;)&NSKV-%ncn8mU!YM!b%C9#t64io~{nQ^q9RmGm=o zS2nN3fV`3x8~lIVM!RVPR@|FzRHgYang52TYAaDD37A!@kJ^3Q!hboWwQZ~xzo-2% z=u4w1g>FXCu^@bKw)6k395*Pscwm@m;CpyNCiATu5~rb;A4AAYV2`YY-D~} z-G^000Gb_*-9m@21W%Px2i0@fu(u|5P{I0|*6V=A#hm)1X|?I`Qo7kcqWFTcqT>sy z{#;UDP|);;P^U|MI{nqSyd{pH4Wga>JJHzm24hl%n#86*nD|XJtl~>|b{>DW1%#3l zw_-FFTriHRf;5R`JztBrG?uf_9%CjZoEpuq3IDh*e-M-_iJE@Xyw<<)6&MWwWaB^7 z6K?yiB4fO)yC1T_QZwMOM>H-Hd)#!=m2Ck4BmU}}h4+9w#20uOZPpzO1WAI0Txb5% z4Z~WHX%kX46+bEd??R~rQ}%IwnA>I;>ID)6LK^%KI*ZEX8DibooA5b0Y}@fChx#r4 zqHghD%C|08krtK@re`(gDq7xP%gJcGI>NvVrNcsfHxb1dguX@U`lymH$jCqU4PvlC zBBI2C;4~G+W*S(Ea$94bUgCoe(xjI2)-8!USE{}%t0!7kzocaG#`c^hk`Z0-#N+NC zVzgv?)5TuFt5R(;N)~_Bu7txB%KE<5bc!qGmA6aF{wbPJwz9V?S^Jd^oG9!2kCMe7 zwxfa4`fJ&fQ}b2v?L#BewCg&Akn;u@uy*1Z8{FS}p;%nUh{rZvW9FFu$VSa;4$ZRM zCW?#tTSkAyfuAE*GU_ilzkwN@Z& zT#Ga`V|}rPz?6S_T3eKId0F2cuC`_fJd}-54K(xnz62xJ67*R!;Op4|pQ2++{D%?x zy!z)VR>8{|K3X!o94l{)WoE!TB9SQjPUn2*hiQJ63ITV8x;#u^FlcZuaDJ)Kq2>PL zK1m|RdGm9-iNq}z9L!62)^nj@^enwd&jQ|`7vBA03Z3Hq_uCnXa~1BBl>2A?Bq8_9 zlXCxnmyr8c*Y4MGsQG#L_fp57dX#JOJ=JwTA>Hauj!=!yYG<69raEO)8?jOS+`x(o zp6KhjmcGbLl@#Mt6T34`OKeeEayBYsRL1EKF-~{49Z!5J#%Z^BmULkmr^Kg*X6eAl z%%x3%S^60g!nrdJckYag(%9im?Mv!+m(^`h#`9&#eb0vJEVHLdW5Y+4G~=n^F=cmP zNxm9?8CYd)+8!FB3c?ug&>!QJHS=FYb&|$z9RhLB00<9nAcAMvFb~+nxoiAC7P!xd zX=&nExnq}Y*d#auf)19o>Bd9y-1xiUJ zUS4OtIw+j=8gzpZ%gEI|g7l?azqnkM6}{&#y9=QcS`U)C8a9CmVgqxKp)r``s)-WSl<##@aKb^ z5?rl}i0@)@KVO2_s8UoX3=wro@JA0x36_46)PxNnrwJQOfhJt+G~qv~gwupw<$)$V zTP=B6UygK|u)Q+*&avc-!_IP=u#){DyWu<;rx^#3>@T@JsR>u>`#m?MXu^WV^n*#H zrf9{OIcK!$#}Z(Ot0ATsY9ku)XupQgoat2ev`~lcz0h-NPCi?{ zPC|)6<1FOipV#n-{O8;cs4u6vFWuBhU>E1c#TZV1aOi?Dw0WnJ(fD#Cl)-)dnn47oU! zxbY>Xi8}qO;9njKG7*05|cla5#nh zj-4bFEE+9PBZ~cd4-2Lb{4zwwBtA+bLU;5p?Jm8-`~@eYCYhKc#=6r}qNAis?dfylD z#X%1w_<{i(O)*Kb{nITxK{eNCXLq7ErvH?t!W|!-W+qC%S>W`WF48`xY_i!H{iYE- zMZMq|&R)#cKItj?jbwJZ^PPp_7S8ujzZoG5Cr!VRbs-}}ZuhhJ-qHw3ce+RFK41i; zsxH!1nL5@B+NA3o5H;>*D7RTnj6)001gcbUL!+rb z8BVH~TS1-Sh_h(UcG8t5vnLl}sCSCGhcv4Qfh_dck5P zA43wNdI&G3SE2Nmr#jYG2CELE+qzL&Azx!KN?E{gqtyA%f`NL14b%YW=D|2yQBk%n zk+b#vJ*X?DYpCgjuF;w8 zk~U%LTymodPPI{%rC6V+&Gd-LQhu}M{ZL9o${xOVPjOo7C_iUws5`t!nm=_ys5?k; z8be`63ASB^U4EaJ{5q75w_&=?^12CG>|4-xYnrInjUV zg8y8982>HgbC16y<+I-b9Jg19rk8crU2v7=?XmalTRuPVW8tWE`MeN-#m2A_s@Y!h z+3<72K6M-BVyp@55$wT@nd9;>0nA!kalS%c35;Ugele*2W%U21UZot_5+*1vN@krh z@-d0Qv8`8QnLr@ITFD1J)X#FIjQcV=BHePsM8SgWgG zf^(6`=nlPzuS(EcnCowo@M*pe3+=#lw7GEM$Y*`;xRYezPOa$bi2*|ztZg_d_P zhMIYIg=K$Zi^Qon>q(z*(I+~CUJ-mPYL;pEJk-9?dKQH(SHb11s8 zFGYt_lw$ulGA!1YVyRtRz{G)!3^_bWA2+{D8q|V+=B6qi;8^SH6RFWn@w&Q$DLzvV zrg(E@c)^po&df~ay3m!;$MVfEmj*B+^`dawdf|JboV8t0y8BG_4V7X(fVMuYEPesW2dqV zC%ZhhK+~br{MYdn_pAiH!Bib{Q+K==B&c?qqhs;~JKtXO+W67-DL})NWx`I15|uU# z{Lbg4B0P=n<1^Cm@AT^m&CO}?f2IIOv(Z3;OWks-E+A?cIZ%i?V#gO^zxo@r%{k|MEcTH8x9o8PQ2NRgPlD zvGK*St=oyB=_)ov0O4!)9x$$bGnZ~VUa)g zY|y@+U7gth)Khy;cG(V~G+3^9rUfj0_kv|uE3jldvX})?FK_hud2RfmKMP%<{^;U> zJL7j)JhJ1zZc^>{=06<>S0Vl$CgEBhMs!DaOVbKeK@RdHnnv_i{L2oVUwT)m^z^Co zrOj(nh|E8$9mn`rM`~gWol^WCdy3j{uyz;DM?SxHRaH+#=H+sM=FePuk0NepMXGxf z+cq>kLHbbA1xv4J(b8M{My3t1nimr*_oln-BOL?$Z}kDZ7gsjE>( z6@GrJpv@N_$ilw$_{g-!p>DJF_U93ek}t z{{iLTM?1>P0WSQn7U-X-SACJH$;$y&OGha$@!XlcfWFg@q=5d!Zvj0+pzqugZzgMR zN3NPaM%_vtHvUC2nVJcb`JHyS;X_w1x31cOT`jx%(Jt#M=ey6*+1^EO+;-&HqSp95 z#A+o#7>eDJ%VXR1nh=%vsqRCJ`Y$6Xw4gLqFH`sf|B&R*w{$s${TuY@x4a|gTX;R} zbV&dBv-X|n_FpIX!2!}#hEPQHM|(b%-i_Qk5)w&IMDe5nwJA!M+FLLu|PHixAO zVQH9z%orzRh$=N9GmR0({lHUqnJ_@j!z0vzGx&EPXC5&*llAb%>`?alGX#oPtGp^`)Hi`zE+j!&OcKn|;;BxpEbsJKmJ+Fhz2E*_;FIylbv z-lT(;EYz3#ul&mqq1=Ry)4zJr4@sV*BzeA@kUT@I#6puiJCIfJRpLO^vQU!8|By7b zA6E#miJt$lAA#s0GKj2_PYYGp*8h~kn5zDHLi#ZO`NKCm`Eyi4{=9dzap zCsIuQl>67KY2?pQj-mhPvOl7Sn7J}V{*)6RL2f61%ANc7xM;ZkOxg3b(T)dIXmkaWb!yOPh5>`Tc)#Qm8PHLfVBD%V zDvVGWX1>JHsgY^RC5{~7Rv?yAw^r@Y(kh4j_eMa1HQiCw{qul!ps@SAKrG4rHJYkB zz==$Cf~jSnPT%hObX7ty6{g6g{-s_AlS?fNwWE-!H1Xq{T(bD@um`JeEwcVarfsvn z8UMYGh)O+~e3#aD)D6cD98&I=ewOS;=5Im~^?f==M++Q9Hy&jSu$G6Lf3Q&#@(KEz zloKAQT|GAW)Drmfw^@&oPd^Rh({W?ZON8kK**1eYX2 zjSg-^0>wulfeQG8q+ebIq9Ox)-G&+2=OVW?H7t5SX!e5|PCk&&+4| zEaSsFD9@})UhHcBe(H$Eg3c1y40OXOa5&gKdRL0 zvaN)x>@JR7p2-H2(#(pIqE)x`EQ@tnT~@TX^6!y{8#S3`!=kxMo$c*@yYd{>*=3tu zg{Pua-XgyR|GnW~rf@990lwi!?WZsT|DVYV`@r_~PxkqP+d}(%dk z3+##QyTj7Clr%G)>DZitfk=}-<{#m`5VFS70kNogQAwQgR zg9_CZTgdLWLEJg9pY4~KWucl1QeJPueo?^~p0=wU-doEZ8S?X1M8S;<%fRiejQ9(p z_6+aGWi8&`xu=GwKlLEk8IV<*oC5mTk6;YqyZF?K2^UW=H}fM%0=zXouHy%4k#4W_x!ro3=X85bvux0MMGJh^>>5 z)xZE>);!_MB@W-3nd#vZUr~X86T|UiV)VZ5?+!^5@#yB){H8g!wyPB9@99 zD#Oy|*L+blP+N2@5RzxLs~NCqlBC>G8i*`#xc()2_Q!yMu3)kd3nP@HC-f=P{_jPo$E8K4-F9CcV%?(4z5jVyvRE>Tj;s%xJzQC*%g<>9&NXoE|(R(RF#W{ zTiULizqRdz`t$p*Wb<2NQ{S?>&mvR%r?!)9;SUnkkTw`~iwZKu+#t%}N#?5$@&Uj0 zGAyJ1kTxemo0XG8+92PCzxeH`bMY;r4o*X(jv7zxfA^r(czg6Eaq`N5Joy26a`p5w zO00P!kE-x@UgOAP+2A}Y26>b{Qe)~@#(!tea9FaT1agT5H0;nvY$xa!{%_w3 zmt#r^{P2e^b7RzH4rB{s)#NdvLh=~g7igfa2U+Y8K=EunpH8y%o* zBm#~bdahD-mN2EhAa5x9zb1+-{lUqS zutKc&FkC8_4;V=+#py}TeI*z}YSKPIoi&z4aXGJi&21Do`KNu)LBEF1va6T94M&Bo6WF2)bhA>Xr1XqDJyxxxNeV4Y4e$wui!p-@uu6{HJsEd-#~yQB8+ zI7&PkNOe5Va9>%`TU=^HSWRT=15|a1SFnL7)(&NDH%Ve>L?bLq>pxEDjuG>JCi}kb z`=Q`|w4j*m+Fq$*Wkvsp)cu@_OY5E3Efue@KlVM%UmLD?OBx?cYVF=YN`OIuGt|2q4*SmR&6=x(F1H)V;DjA;%ZkpjZ&PWP zI9dZxXO2;2rZv!X8AT6lt?2lix0{!@X)Dz)S;SQ_%N6~;CV^Z+t z71i%(eof3}wKB8Z^#kKshY5k|GMAJmmubcru0XLpS*A(npTAu0_@|m7L!LHOqr}Em z3<|Cfif^>%Ggb}#OBs8&2IZqQz^V$&zf!wd@PZkKJoZ=Fd#!a3`La=SF`pY$FTI~0 ze16d0YYT>nGu(0E1ZZh(2V*$7wxiEY_!7f{Zed5M>Uk3UVw-Un6-4bBf?u2p|6eY1 z{TKYh$kv7lbyX9VeafDMnjMEk?q6)j_wS=i@rZSZJz?qqB$}hAmlcimX!8Q2v5kNI zMmiZ!ShI9e~pk~4=YSL&OW@wZ=VyOr#hhnBdVkqc5YQ>A4r z;zp&Hqmk0p>gXC(!*!&GU@EouAF#HBbcQLS(Z7_n4(Z|!(l zU(W&K^adDe9ddzXHt&Af)ol20G)?Q&eYfvLA@I(u@tNp%9A#d0fRNCpsa?NDe2=%Q zqm8^rOnx(I9$(|5M!=rTW$yefH@)sbem^SCpF`9 zcRHDA(8ca?nn!~BA=ZPY*QePRKe;H7Z*<)<(Dm8DAauy51HrpPKGT`rVUsqQ4h)A6 z6xQI~;R98Gop z$0}2JS(~XDaLA2PPKgBFY4+e2*((BnFaBE>@L$~90ea}_G^ zRl@qnQ0am}W&p5EAYO$ue;2DVxs+bK?Q9l0Gqun;?mIP~ygSId@CCbn`jGJlm@VA2 zo^KabcI5A6RWF${gZ(wqJDY!TaGRzhS@Y!LtBgAz;w49Cq3Z2gy&b@hNBAM2t6{b%v-lU`R+PFJnhOC$Cb(UjmdSYx19mLjQ0e{8} zx|1w@(apG!RioeCN)vsdYU#gK56AbhcL##j2ktmm39N|p-5l+^Q-*5vh!s(<_ZbYV zp9Q<Veo2goxQIUdUc&b*~xl{0(BS6U0>l zGa=sg_OFf$#!nNsXJst=X~IXKVt%De3NItecO!a^v09**KG?yH=*V3kigsc$>qKCM za$UGByy#=-%_zb0k9za%#umnN9}Tahq>T>_MslL6mUwZ-xz{y_ z2J{m!lh*$ALHmY@=SL?np=|z7>9gw!eb5)%T>n=tRXGpW~+mnwSh#-M~ zUX0XyVwmrOz4cy)!Li<5@e_B=EGt@4b(=Q)^wD81`Ep@%w##Dw@lqK~m39z$AGd@O z8_~HU8msKg8ZW+nsy~Abex+wrP=9IBi&edur#rLCU3x}&|HY;|lqc72gU!BS&q zdSq5`LtBuS1(-SKg8xVOlZy2F@>(GMQM6bg-NldGAnc{x&oqctJyvzch;SUdkbb|{ z7)Hax*Ix+RvRJgv|Hs_-b?a3rPT|Q~%H=PoXXLznFcGl2+h?bZ3}SRHqr(?vM`M$4 z`&-oCr3QY{t+$mgGPW`rOU4d+T~;TjkS*G zjnD#S#t&%Ue{cmjr5Z4=eP!N&3k8+k*!A`(wtDn`=6$(%Q{c`znj8_+f4J-r82&@R zS^D&{rd*@@35Nea=Dq|x%IfMr0fIvy%&;0nG+>kfE$F@SC3hG#-IuCG6kCBHtFnld&5Gc5$DtOqYDil1|NYK=-GQOv4{#J; zf9Hy#UUkRP940btsl{+oCDU(B!1oN1gnf#XdDVHi#p=47hXv0nD9qdKKQnLy3hs*6 zalU;+4;?;%Jz|IO%3ZSqq$&!RAi3-=d(y%NB+ZMiBB^qhPs~1(;i5SlG#EL+oU9P> zyleI3y&p-y%$b6}s)h-3+*J)@{M~WoKP&PuDz9qzMFlp`SK%_Hpnq?~e{_!es~TqM z;FN+p0BuD%X_dwGneFankKjX&L>vx$K!Patnt&O-4=~Cj&xd6={Fac)rI@mCt(csF z`R6ASy$F$G9WD!0EC?=%=UwORL9Dv(ucAW{PB? zWXNHMawBa_J|H){bou=EWy0Ea;JP}~V7XAjU{?=vd-LA)M~8=p{vP2IJ!Yrl>UCbt z=?F3hJ~_nKZ=x9f6Nqh#p(m{$QL$ZJsKSjV%xXSvR)^-#8Y=R@(Ms|s1{nUtc96`- zp6*?4?pEM@gb1S8AR;x2u3K_BFZ7BxR z^=uKi1+}?DBrI15y=NV;PR)o@*g4W5tR^-<3x7F&-K+Indc?qWBQSCX`oe`0NZ|dx z1%3G&+;@EpB~Njp%Kh8K%A%%dZXor{?CKyZ87{kfu+^B|(0j*;1efbA~ zX?a?P^UsgCmmUDx5qx-kZYujnx-guMmB&x(>sn~Jog{?@6f(!9O`2~EQf;NFq1Z0@_-?W>> zH9nzQgt3VjS|ZRk9vo~qJh(^BzY5g1TW|xs4DE5sD=iSAh|S2NUwrXyxLFeS|11ovY8xHY1U10$hPX-`_V8dd+u zhw1e={=oJ)e6K|C-kFINrhA7SYErxSvOWIbTzU*}p`ThS_xrePaV(FoKH%lYxYX|t z;!3?MZ&*l$@O`a%Y|qEP*uYqOQqxj>OSKF2=%uWpX%vDc@)Jhivyy zw!0|XT~>Y>IO2!8)B(<2paK!Kz0p&r26Vv&ovlnDlgaTZ`D6A<{+Qj4ip?9XKZ4{5 z$NpXl)-sdeV(~FB1l9)RJpxiC$XnxQzQ{km1^vC`VMFx=&9GkAhq?ip)qGjPm!&El zFUdNHd>IOG-12l=;ce zM~i98r?abo3Lj>&yND7f%*W+dyC=C+zeV0#PF}saj|!E14Gz6jE6_3w$+!Z|Q#yzM zo9RS>LPcksMQAXv#lEjJpg?h@)eNgi6-U{@T5e?V!?0@F#BDWLm6wDt2-4PTJCJWX z+;@!^nJPQwuFf`~2ruUQhX4_zUdQEEXJ2A8c_IBgM(8rxz|oGU2n^?EAXoIaB37z- z2sqWl#c-rtjYnzzN#b91`NxXxC#?)0h(qf9sOM?hs_yPKea80Coo&#CTZt5B}0@m#+#t+uN1GJi)ttfnCm>5cEK zmNox1ik8r@tj%JB5j=_aF7g^IIje|z%l7qmK~6)^PzNE3ZMEHs+Nv6V>hD|CIG=|a z>xNYY>NSl~bSq-WR|_jDYJp3J4UB+^1KIN5;O$yz7$}LiF5?j{ZqQA)3;$jt^ho@R z$PU4_ek=CLLFfBt?eB?j^{VrOut}~`m6}FRnP?p9Z}K5_fLrQDW+GF zU5#tuub$_ldz(jP0{t*MM&7ZupYY;=P-<78BCRdLQG*7 z(4m0M`kO|%7|sBN;m<}BV`WMJW{`dS{0J`Mi#Y^5kZLZYX%sl^RM{rY#ai%b#T%3? zUU(ut|6G8WEQhFjI= zToQhmN%&zV;kQef_IM$Luf@Vxcz!M-TD}}`q-oPI7pmE3$1)u?`^LjD^Wuwe%%}`> zDq_Udx6Xg^^JcucxH2;Z>T^+FjQ2`J?M{+L!EIiTaGTq}5%L4y7XDm?b}?xibPZij zJVq@CW8pF9cJdhUazp18wOZ9vo^o1Pd{#fARNIVfEsu`chd^_;t zRh-GK?c{QDifwvr<+)7A&?B~CKg4v@{9)?zr^JqDt*5?2sNC_AgQWr{;U|Y4MFh}Dw7sjzw zBUqkU6vP5I*uv8ncEnxpq3J+@SL&tUaxWqKy2!p*O36sUt-20a3+{vdJWms?j54SM zu=Y=Z%d$oS)M#skd!=>imhy_6(*+31#2mx2%J%lXu&e^SU`?UhaCbLE4{gU1&C`c; z-(V;I9J|(EyMld7GlHi?)6}uPM6qO8Ct0rAEQ6uf@I$m|u1g8l?Gg ztL>9>2x?5K9mR01)f|~>bs}<=og?F8lUE`?f9iz2sxfO$Uw>DTpWHB%j{QH}ahP7w zX^kws$C{&k`O^xwx`d$>v8M`5WV;n;h+uVFTRU2#0keJg(rX#@;>hnq7|!y0P=E6F z%RtEKb!;E@Zdj8|7ssQi4CUep>~Lhp4x@aVxPfO=Dq^R7XCma6&VUwLN@x5-i;6u6Z8RV_&?n z(#xEsD_Q!wWTpMO-L|okH#kd9V#$8VO3tqs!ZzO=YtpUTn1#fj$LjwO+$uLp4%{l4 zk=6fT#vku@c+AeK6RtTz`{h<08BGfuG&qJ^^;C93ugRe0Y<;Yh#Kzx@UeY?&A1s;I zf$iUhvRI#T^#iw}3}h6hix7F2He$p2FZa^Wpc6mbt8)jN$SbAD!^AIbUt62V`+a4% zl)|;hmyO6=wfcaTdXUeQdYg)g1&Fd!Y9aPc^wDCkT$E1Y95c2wV2*cyEbBxWyx7Abj zLx14MCOUj6QVoHyfV=@vnpb7H6xq?UJ$8 z;x;z6n)DXgsy`qZxK8xL)O`-t`h@_4y&I=Q+iCkQE0McKb+@={hU`D{6Nc;` z`Ein}te2siaUcT)`--f-J?1QOKZ`UX*Z};2SPUnB)P1e_qvxJDf2=ws8Gl^U z%ElkX|3oy)TAKMLe++)t!5?D;7#n}gKO>Pp`gXPW<8=8vkv~SDRCE47)@OH(4|s!X z%ETGKfY{w@SP1yp90$(E;Z`-UD$G`FID=4eS09zKt72tuHp_O_M(R}Da{R1Cao}&_ zS-y6lQC*m&+rJCVS-Sbsb(;6_i4H5J&e%s1jbE%0{F!r5NBXxf7*$!lO#;tmW z^&+m!RtGFNclBXG=2$5!`cId&=|7gf4W+67`ZUAkrT?P-+Z9J-=d@&q+}Ct^+~hBW ziY#2q(>@16|Lt)gannc>D_Z~cOys~vJ6RZf!1}hi{zIwe7#xS_9&Y4|_rA6+P*5s0 z5MzBS92m>Qt(uSc2K2dW?`C}-_NC^ZRXgL|?%5_;w-0}7b$i6Xw?_;-i2iPR+tJ^5 zN3g%{{H5GH zm-F*#=9hx_bXRjDxMTwO2QI8ATg(dF)toPy>JDxXmw-ro?w#ep=N8^PN=57a0mkb9^asH!;)t7oCGEte^ z!s?a$*c^tP<8w#KkNGGVa|gs#fy@~Be$@#FZky+~()gX11iyVM2GQm`FpNzTTMy6F z*y^MO*e`KQ|1{bkxGt_QnE2%)7JQfmYo+AtW=V5?{yc6~T|&7m#6ZLe6(}f+wS0lI zd=|?GP@ePqo;=dUZkUWd20}ghW}HxGrzRs*w9!VWFTSSM>7)s@b*F<+`-c(%CYdra z6Up>ShDD}l<uNR5ji@rvqkX2qJ2{)!!*Pzp8PjKi!;P`ztOa zIo~d{_~1mjW7K?xTlE!sXzx;0V}+h-t%?>=cXPJ#x84=ry-Giami_)d9sI9v{USI}WVBa}-#= zU~3%f&;2JE)+_35Sf3mw)}gE^9w%^@vUUM-ig}$tVUD_A%i6lrMj4iFVLeYiO~m>& zDAl6Mss5J(>-RdbZdw1<`1%3(|HDt>_X7t9myp8PgD(W5w=s z7F)(*pP}2JP=Kje>~`4;pMXLcb#V%Xk*y_BFHiWwMxmpy%k;X-piK_)3>Oeg@>I$S zyi+`7!|9}zau4}5kvv0Ds>R`P!{-k2%x+0N==F)In44f_##-NnZiZUc&fZmd7K%IH zsL5m6Kdo^q_7A|&^fA|c`$HenoR(Xhj|CixF|T(2!wyrlMwFDc54hpo2}4!m`I91WiIeF8(&q8 z1GwCGo}Ops3rrM%$F9?ift6A&10TjMXwUUyjY=i0x-`E&3W$@nw%A2$9h z`5F0BFYCzoJ-E)npV5n&@n=to8*mEO&F~m${(Mb7Pvp;!T_@pBSHwZ?@8(Y&KAl9q zcCa&(n!p`QF+Pj))+%LhEc#sBw71Dmddr>i2Qy&P|8b#3*MZk+_A>QrAKcRafu1I% z?87Xm=U=y7qf43`QHEPphjN_1PR(dW*gFqFPky{MPSqQZC8O$qsEw*V9B5Ry7A`B! zq}p*uaC|1!Lporp%3@h_cT)4jzb$HhK9GG)q~@t8)uOby>{B~}BTqS{jh64p@LQqr zJ5So=@ZDPG!0)TL1%6kd?WFiEWI>Hzw^`D}ZwhYJbtotC9}KIv+adkm2Yzc_jpH{B zOAd*4$o7a0zwNKL;rEHZIPm*QE|F&9_aAAA()>5@H0jZDmwcLt-aRHg2i^+qQt;!xzNx`1~*c2fRb%z~PK$C)Kf{CaV#{s-lV-@#bsbMWuY2Z7%=UXJ5; z#L;BQWNnz_Zthpx5}r9`296XwTRzW5C1Uy z&eHg87(nod-~Ce@_}zwE;I}7en-st6Sy1EmZnLC`-zway4*@grJD;IfcKQ3{KHxX) z&vE?LM3Uim%tto-Zk=YsZ@)DT{N_ssO!<3@EbTk>TMziWH2-##PZRNbDN417-zgvb zF#MYG_ksQvey^GA!0#2f1%B6}?WFj?<@bZ@cXQMnuy=M-yUum zzYXvIF#MYK!)4MY`FC!q1HU)p7WkbCh?C+sl?63^cV4ASn)qFZTXh!75x;90`e(=Q zXMY2JN4yZn?;D>a!*A%Y4ZpWewduE;{_Mc-+#DNzpZQNBeka3crTKTPe42>gIVja4 z|32{dABJC3{vPN{@QB||CYDV5w-s)I-$t~Z6u%F%pvLcQlN|Uh!>y`AIpTLJ z5x+sTT2j z;K0f7E5(v;y|B&iddd85V-t4Oj2oKL5qFU2R z0$-Lhh|*hYggZ>dNkhi^$mK@rZeur+DRGlqIBnHWJEjags9y4a(8T>EdkyzQ@ z!Zlpn!WQ@u$o|;56vxz<$#fu?)sh#{fJ9$!pE(EV&QfRIh%CL|8o@8jH2;B5QgP5o zE{GrQ_5KB*5jp`{VC&0LX9u}PeszYXCa4IIU0o*CHv0Q_YUD|y6$*9g_7 z5WS)2CG``MlGS|1dwB;0=E|q4OFEumD_~6>Ue+?&BNv$gCAC!GM6229z`!Z)no_(} z%JH5W?#$m(K*CLuk{NNh;Bi&4PXUWV*6*v@<(K0r!x_p&N}8627G>xayG zlk&_o7Dc^xj|n5wLP5q^<^Z3R6HPb5i*g`;7$32Dq!-m;f78boT{8P1=FX!UrUB)H=WE z+fypA9Y>y9p+i{+KF@*Yc%SSjCAH)}w45Anv|cWa%5H*iTF;#j2eY4oIKU~gyV>AOfpr`RhQN{0d^wGr4{a^4&Ad(u94yjqDb%M;x5Bw7-T3Wj+(4?@{B;X2K(dVvxybpGHK(gTir;qrkMTFde+Ylm{rizM zq$5BxLKnO719_wA!(Fxu}={0>Sd3!3;6BOKJZ z=`gsU`A(hGF-2W?3-zJ!-%J^HS=c*|4OU36y2A)f@#xg57!-MGlnEIIihPfqQ$}ze z3L!m^5uBM7DER1fk_48@P>&oF=uut1pd8pGTmQ--8n3|Tr9hE4)7KB8_K@+-L1TU6 zm8uC)meG1>rjfsCCK7z(A|{#jI2J+hh1!LYK*Vj4-z}#6#Eq7p zYS(Uy)aNwQ&paRv^sS_PET?=dXZk>4cI?!v6%=E8L#RBHNkeP;^YerxLHa|r4JSR4 zJEmJ%aonqK&*ENsRyPnRHoyBrVH5VJib~%__QDw9;Z*7PN{w6*p$bF3ARd5dga#U+ zxoEx+DA?d$vW}lKMaYICoDyKA2w@V$pZG$LWLKevq5yJUVcNl813{i&o6oSlatg(y z*9TT8AwOUTU)syJVN2f&kGzLtS_bqa;X20llLv?9L@}Vv-R0qVIcl`5yrT;09^{!r zJyxs57+*O>n@70N8qVk*k;&h}O(U|9Gag%+izrr$ag|q$u6dC?9>yNGJRVXNe*w~J z*6{>Nv#HR`93wOq8Ccr-LSxbQk?8vt_p;Ynb3dGth5SQ1i@w><0aVm`{h09SuA<;O z#7A%&Oa=f_4iR5jTUQhsl+D(G#o1sSwuar%=s23@!C*Mw6{k#^jRvP6;b+ciM1ji) zj?P4UG?HY_%T!mg)8Vuor$HWtdyTr0DMUdX%rAN_qDM*+7hH|%tcD?XO%TA`yG;Eq zAl0eqjGYSZ*8DjYH<~{Ql!riNs&jUloNCkWSDZw@Pb5b)vo9S6VrzHx1Hc@N#J295 zKjTWB1-~ftBQqJ#8gdy^H88bLlUA^s7t>5)9C=LQ=Ne|B*Vgxl%mWj_a!5OU6U?7E zf6(R+7f@jSY#ALhf6yPx{CWFBhxrp5!dYTmsb7I<2+V>Z=kk=G1Yj`apxE>lbX`P$ zlmJyGpj!F{pgR1phN_Q-YA@Cx5{~uS^9xzWuY*8vsd1=?tQg&D6*uj(9dtrD_AjyJa-Mj(Ma`v$m1g`M_-e>y z?q#=vHkN(Qc^A`x0BabKK2DtO5t|oBltO(w=t&etpOFJXhdSS&;*{vGPw&Gmpr@|CBV1=36mAAmZPSC;YWgz49I(ex2I-WHHtBoIXm4-BTO(-E;x|h8OYz)C(PVRND zm6l+kv8AFwJ?3Bdi}}~%thH&0jF8ZsS$GT6EK`17&EXHS$eP8NId-H@c@j?h+i)PE zcAD0}>;gXy6#TXuMG~exliCfUy4)99YW6SHe;WGN+TWG*J*GxE${0<078bfo z00=FW{vw}?*dNR<7D0`W`&)4AgVcy=9Q%h^C`%NDi@1f_z2q-!I4I9*ncz{%2O3i6 za1KdG&}>Sy6EV#xn>?bbK_@TXFP%K&t!AC9ts64mUGsN*lt{9UtpCT6?Tld{+y3jD zlkJl($;sx%!u@xW4WoiRx^AEJ=$)<2dL%<^m)Zz)*vPifU9*SfY-EEOI9!;sjlU;) z>GF5e#Jkg867z$WsHe+Iez-GHr93*>w&gUF|5Hhmz)=i* zW-WmIIi2MzjhKU{^&R<`(N=VSMXT6usorjSeiNB5>@ps6%!bt2W1!$$SKRmtVh6!P z-KzfHH6@D8|0mksF#vzlDmuL~K)-qZ-fk(;VbuS4S#ilL+`54R1OJKw=i=EZ6&=qQEmE`Y5NM4Ll<;<__);o8l`>m z7wG502P~N%?zMi0&4*e>Ha0j=U|B+}Lz&+DAjjAOZpmhJdyR(!%=DSQA`AR7^}os^ zvOb(~!$ECqG)n=Y-g?8NhU}C=|0DAgRCpjV?qocjSLXvUW~?58=0+e?R_a`1jy%y8kWs zW2i=g^_I^<8xr=ptbPKC%)^7PfN;@lr#{_i_7eM32HS$c96i%Fx_?jW{^gPXa>;+W zoYqyJ7{c|9zBn@k z!>rWE-&3(m(r>Vy9BMAk9n^v22kC0SB!f@oOAtCM`p6m#3P?1oDQB||f0)#&j@OyJ zjvLKnnXE|WNl>8spGM6SIEo(5Ku6Gj{K+_6K|w;ZVl&Kpzye@+2a3WcnRcXGFZfT) zQ%yo8m`-fLd^MQ%>gOY&xj)P>RY0#7a8J!$@B}WDkI@q0j5kj6NZmkoMi3&N?c}j~ zNfyn-`~g%iLu?)D94U3)ZPl6a6RXaPS?3x?2!u2KG+V=)MR;>8c(VvEE4)xwxQ-66 zIJEEmgV0`V)!geH+#@GKxL`XjD8E+e%2)bz12ana@N$j(F)nw_L;M0`27JwYTpW^nr2fXw$=>ejJNN;( z8!SH51AT)UFdN1c7xUVYo{H<#+o_V*eTw!XrDxRWt>>q?^LUXs?=$*F64(qY0v1Qhr$@NWHSoK5ioEj?u#Y z&qlVxqh9tMvKxPxU(=d@6xV#@uBnpFi$eh!EPYU>@b7pEgU3fODWhb&7DF6oNirAv z<8x`Rv$nuSFGPq12?s%@jAcm)%7e1|srj$lp(E1)a~Rc<7Ze^ud?T(?X7n_e&C^|T zJ9@y3p2Sb&dPjE>B%r46N_LRIKOId-YZEPK9VNhDT}t7PMbN z{=kABsnDE1?lJkJj1-`N`j(_>TI2Gw&qj#pwkgCeBU%5nk;-S$Vwgu`qd2 z>88{#f(2jhoSE6&b%YR4zC;#F*%754U`6n-*f3o)$eplX>yb{2_ zzasf7=_KCIoqdw`R{axOU=j!ZFYqVSB=Y0OjIV@tGqW*gyivn{!dMVfVf9C+x3`o^2UMpvDBXDrfZ zQsjFiA727cMz!LdhKpiDwq3s zS&U1iip{=eO*8e|KubU5G}jNz|GiG<{}%t`;-l->x!}_}X?0lt#_+)VT(Dx?^1-%6&cDn<=WesLmM~4TsVhQ9beKLiU z1sJll@!+3`m!4&oX0qJ0jjgx@b2S$pkE=PKap|gDO2Wii0248crAV=lYun&cjEk|+GcV_Rs1=Du_F(|v)}^) zx1churZ?b;m>I9coDL#ChJg#w5!&Y9P#8tl+=A=#V_ZzhTM7GZz6YTeGP6*R9yy7r zs9v%I6MZnQtrD+(wEQ~AWc0J-P=VS08M5eI3OTjw6)%`U z^?mbW!I_?lsk}HO=fxoTBO%F=@muk-NUJ~D+qJHxeb~kJ*fOjAp=SFS5}3^B_S4b+ z>jK1)eHw@?NR^yA^&$@T(rm3Bf5D_u^kD*#E9iJpV0gxA*ZM`v3G(+0A{|p>$V)Z~ z*=0%Lv1}wRg->$sf>pot?|ii4;rMWIe8kRo$dM)}<%=?zN7y>!K?bKf@+YeoYuRF^ z^x`e)#b&E^bN}X`nxey!7nf&N9K2VnBT!$;LX+kfiZb{ zemC>|lZcEzKW`tHk!dkCVbc#c(n*$FKQI`AVosn#SO-FP1|Jmvk&)l6AFe8Zy^E+x0r0Ca0Fh@09?&?obUh>md;_qt`Eg={8>*ueTN0E}D)U>O`(ewL$ST(?u zvN9HofrWfsDGvT9)E~{0kF0#l)n+tD>^qO@p})Jr{EqFhzK8gWU=3a0cu3_U_|kA( z0q1%=%kgpf&^%}`oc7`i-BQ-(@fkEqr5v@4xu9D62bG{%q??BP)dyZo7m<&Sg{Ml# zHs$D!8RS4rE^W~MLVxjy`9&$eC_4$96SVQ@BJ5pVd$tLo@j6%22w{(wAj}a6 z!A=$u3SH{x6anyTv-uo04`#EzNI;Vrk>^G8mG2;uwwu{}j%0ad^A9|nh#=PL68lN@ zeAeX5$n9~jTzve>z$C{7lP8d;{BSR=VXF=qSykCN#gB+&f&TvGd>>k_1AW$z1F(OL zkLaKYJ|NG7ck+3lpj~~DxhBg}(X))j8+gGZ-QcP?7fbv&z9`y3y!J>>Jyq(7$9ke; zYSc4kpWvVWj{K$^f4j7O_Is|nEz|7uzwuX{w;U)b5b)-LYCio zV2CLYy)c`oU-D1PJ{`n;=K^x<4kWVQHVSH%ON}^BmmYnr9F#GdirAwa1*2`cN|T^; zaZy@F#7qJk@vs|)9V49PnqhE=~(YEmD*2^^v)nr7B;1*1n~`5CPM zMv1~=2XW-aLjpa!j8%%C12H$fHxjGD`2~~li$h4>j{105FKJ1b^J18hA!fr&KRC+R zHPp)RDV*aXWngyZ!QII=;c9&w2b-K>gePESd(Z5d^iyUw6;{<}_*)}nbzsxLuNm8c z!vQtjikiGo!wsz#^hZ4Cw>Z6R_8=B%^)1dntk0Mr&qW(;c>drg!t?|v{;4w zi#L)h>JZ>c(iw~%V$c!KPakZC5*Y-!9Nq5o_Q?1tv*>?XJ3MgLWD94k$gYz9Q|d^_ zq#7L6{_B78ImWqWfDvw3@nmDoQ z4zYrtWjqwo~oGhv|F2BUS0qyPfje2a%CryE4 z2uran8j3^J3Dp7%uITo7@i%?pN3xFrRxKhXcL$Mhgp<$`N5AkFB0_$79y0Djp5Y;H z8yF|mASj~qaQJEUA8~=W#_HeUH_(8HqI+?n?Uz79hP!&HJVzqPg}6XK>AsYdnV#X{ zJ5#cnnhF=6XgbrAGUtZH4gYDvQJFs-0psto!a#i={}t#zE;9T@_?zw@R=Bucigqas z*Rm+_zqmn4_r*IYeg;Ja;pEtUUVd>{4}N8>^(Q#DE`1N=S?J>S_>sk4t|OXV#3?uU z5~61p<1KY9Cm1OVf=gXBTXisqdQ`HDLzLkAz`QnCOCEvg`;F2l`bhnsD~-Qo9v%N+ zc9lHWc7(d2_ebCwT|R$k8?SpM)_2V^7y?=#m}S^F%F;Is9?C|iE-edw@9epkrB=+GaKFASy~{HeCtK4_As6#WIxFAp@_afho=PAiX2Ed)Ct zz>E)IY^FpR&zNy7#Nfc8@~i`EvXFKwr6AVH(wn?h-=PsqxTMYe!3T>zC{4o zCsrkWjPZpYe}WEQ2pz^DB|ZeJoBYJHol1PLX&yphY~}E~3#;<`i2diTE~MFGDrO&$ z#&JpPRN>oDp2i2a%>433LBoOpY@Gv8%JXpNWdj8I2X#@j$)f0HbPNHO8(^#_iN?yQ zY}@OB=+=A*l<8Lk-zG8pVHT*H;QR}LYlwkGedg2xAW|p$NDS0gST)y^QgOQxJUyEh zg^T*ngA=$ib^p}bza4BE;l8TrdS7VJ+4UUfknveD`Alb9_zJNht*MKy-vYq`jbn{n zvDz&TjW^&{!)8c5CW}IIONv92y$m}9)>g{EgyGin9BSW#9O|B*Q14o3(q9yrmYmrr zgt8212Tabu@?Vl(L(RhA&>tJYMJ338dQ_}Ag2|G;;7Bhc0Ty|! zC+c>I-xynFgceQ5ad1$7KP#>Evk-?R~q5*YzAi0Ux_;-fA6eeXza238J+Pi^^^{1GH!8dq$qVA2bCU#56U2nOyvn8 zP0$?Q#5YFzQg;+JZ7B|;$UU6agXc=Dh9%DaoeVZvon0?Yt|PoDXacQs3}*7O3Bssa zMp`jUv~Ttmt*=KYK0ehPRGhkx?`61#Pd}wNJQb*aP-;O;0;oI>k#2}v4NXDBz_kYX zvfLMZL|Oz5>Uwm<2u6P9!FK$U;LATFCt)BBEj8owOVyvTI!L20x4jKL|kJhgYlcrOa=>nZ;1UmG?2eELugdO@{CkW53xZf z)T?N#7-E<42S-c=3jV1~Oq6CZ;Hi@Sdo`7D3*lb=7f%NPoKT4U-Q?oj8Ai>{B5cqK zin$itnPzH~oUz!KC0397})7}!f>KG;-1VdBPE=X6Jg(j6yVj}+WQ({`C z#+B0RNnSlQ=AGIi5fBWTm(7KyilZRuDE)dZdpZk2jR9_}F=E^32Lbky*%j=WHHkpi zhPBJ6o>E;Xky;$(zWklDt^i*yK9i{2q2^v{A9bUlOO}3O4LRwy?vMJ@TD#ast5yS+ zP@bDw6s$BhwQ1kS5_Qnu*f{Q95(N|TnI_^~L~xuidmQ)_@%q~6CsxxKN%vj+Dmwb69z9Y?7q zl@A-8s&l}TRr8ReuKIT(phshNao|1F;d0$630^O*jRc*!mh2c zWX_g?hQJ-V-my;j&b1KSJGWRQW<_UqW2QtUKC|1^e;DT~p5)DaNCco>ga;p#~1B z57+{v+dg@2oxA*+c1r_?rScud;+Mo$c)!G%4Wu%V8o*LgBYLolH9(Y0jR1%>(i0U~ z$fmz%0S^ByQju;t;uW}G)7D=&t-}E*lN)E8T$vDCrV`1ngZ2nr+>Jk?M4miivMiJc z!d5G@R1XGignM21Ori#X|CD~@M0;YW*b~@Zqe+7iGOH6t$oUsJMhJ|F!B%rI>+xp9 zC|D%bqk+Q77aUzCdutM{1dhdgv~c@fFcIFo(B6V+BD{Op8itmMkj6j=(^izBX4;B= z+KPjq67=!Z@Ts+TB~{>C1ce)tzI&SQKyVH>iV#0!jMlu-9@dpLf5vRfU7acgn%iWf z4b%P^YngoL`>7Ic_hQ_sN@_%qt=;$lwoiio+8} zL*0I{j*Q#uYW@UEVf`FGWTK!Xi+L_+{S1es7z{jE!~hr1cruZTDGKvI0&=T}84UY1 z9Amim3Tftf!Quu({~Ohvw`%0e7d6-+{gN)^9sxg>HSc~+7j%!n@t`~#Xf%Ip%p45vNcjXwVE%5{N;KptB@aQW71 zi!KCnh0Z6k7n+O>X7`Bx4x59qGE*FUt2lUAWs_fmhl+!dXbs?U6+^V&bwB!Bj0wHX|0#!o z(f`RYpjlx>wgDJ`kF39eUFP3tW0xQTH#U3u8F(Wj@2_N$ZvFU!4f}zD9e+1j#K>Y= zlS-`LszzDy*L7N5=XjB}!WR#DoSOqSMB7%h@$n3BdVrvZ*BhA4(ShRhMfrjsAY@jZ zf-o@&ojri@Lva?|3canK$EAwm&l&=#4&w^>`}pua{@KkxEAR)d5mha}h~D196@}Hf zs}<+AEO^s2&XhoH)c;HJH!N;C>oG9+hOs-5Ya;sI zhdi}dQ1!y)>>mtAv;UGnL%M&U>0s^{et}Nn#ovm9xTon}?n39*Ip$iGFS`=UHa8og zw69*1(fGCeu=>Epvbw6uHYt9@&LBb{+^bupONyMWsesEVz0-a9GRtVfDwLlonjn9S{CC}V52CXbz*&e%=x1y*w$*RI8u<&B z6=X%}IGs?{e2Q1V6{<_eBvL`QIEc);C;k^oDSwNe@S(sH_t*B#}yhYeI&5 zb=U4y;GG3k4H=A#Kr2=7>igT#hZ}iT&_C3*7Cwy>)jtQ#@e6J+!@3lT>qC6Ng;2bB z!9vjmaw&)o_xj@}7W4QBth2PnCY^~^v*0<MxFx@jKEQk_C+pSF1L)#saDYQlz9G0DOt+=j11 zp2ZDSsAypuEY;kqu@2eP@F&f7S!BCBJu1Q(x2Y~E!l3H17qwrwr%1hc#dTT z%iQ2KaW6Fw+!twexTk$m@G357Up)=5;NL=J>N&Hn({x>59q4M-b&0NPoYdut)isKB zackR8aG?h3nntsx8_b&e>Y832WkGfH4+7QMQqy1GwV>){)zpNnl)i% zll?mrJ5+W5{-A5xzMB2>$7-s>z3v|_(7#o>u9teFuAM*ExH6&IGtz=;lCJAHsVgT| z*JG@U{rep*)OgkerqE%yYDwrY*6+U0`C_vtgLYZA_)bXC91eioS2EEnwQr3~+C+Lo zL?XWp9d8)p5QL+%jQpXQ2v1lSZKs~wev%NbFYdJSS9Gc7B+Wm!X#VjM21Hlzk2wEC zlRay{sd##Ycoz>+Y`FBBk9dxd-qe+#x+A{Z4C?Tu!%v`7=so2)5B@r4^a>n z4wRSGg=T|aY$e(YIciMMPNulMBswor+*}%H`c<)V=lJIyPBYgO!l@T|XHH_9S>n~( zZhW)fKw=!D_ckNkrn{QchWJ&oYxQX>`Yh(MAyMpI#VoSz{>O3_Nn8m`R79;1JV z+j|-DN?JFl70XTVBiG_PGk)^gX0Qg_i?N2}Od}V8Bp-iQm9HfQd!a(Hx8(i2vC+$X3>xo;yG}y4=2(GA8)V zc-}1#6wOtsny@T^?&AOcUi-6`d{_UXVsz!Gw?wbUy9xX9Nv$3awbaQT_D*(puWr+N zh}lPSf!U?6o=ohLp5M-2n$WMvC}9nukfzU0Eq@>esMaBWKq*n{5;r6^C1BwtnUR7tp>OR&>=j;S;?cv6ovHsOLpFf7L2O3NQ%_|nib{-&M$95y2jajc0%Pcyj_z2)kd{TTEYmLIoDTyGg#--D`9#8zcDbaY(9=r-8tTgG1TK+T zqDVaw1MyTW0lImy{*EG%4HE82{+Zn$@&(N>8VbAd>+$h47x>c3@-)YYx-NjowLbq|Niu6y-ac?Zswg>dv+knmtl}x=vT2 z#y+f@oo=KKWzw0MsBb7ZU}y>bZ^(z}Ub2Lm z`iaHJ4%jg@)~MAa9O==RKrqS~0w8+r;YC7+*8$JRZ!gP1}!g*Si0AG!#Od9y{|X!$l6H*^8M zD8I+lQ~0eFF{j_pUu4R<$UwxIIE5STw0skXsdEk_wyRC9olfc^X1w2VhFDql>+vEa zS97nZ1%ja#+N2i->a+Z(;%_^DCutv-B648R-patObO@*V^D3_Og-5m`eGot7Uh-$s zr{6b5cn(yv6$Mk&`xsa3LPj38Ddi%LeGw8G!AAqxDgt!qQwN)ZBJy*pxB5GYkp~wc zM7_3&nn~uFV?-eDjDcQ!_cxXxac)U8uWnRUZ0HuMi9$vRT> zQe4tgb^(4h?p2$G7TOC#dKKC+CZzYTD0W*tiQSW_FX|S{QK-#tbg(co^ zTcu@88M4WiCy{mIT5DNX0#l;24lS0Wr5)~NX~LTjzB0b`wiqq-B{xtGj>v+HERpe@ zD{QbW&IXY8xs>pE9M@jp9RnObM_kAN2L-mMcX#SBUWQ>0;Y;yiiF~L4=)WwWvO8vP zM1v`W@(;{J{!wJ*oio|!hiRJCccb?{BlVc>y6a}E>;4B$*7eOpr=trg5ck)&vZDYl zO7-gR$$b0Oh4On$J&9l8%l#Z*YL)rAi~J(wYpYr=ms=n*>0iQ4t;h>iGSA}KX=2-v zQ8jw82;s#vJz2rsW%_gpM%9?2tO=ID}VG9|lyJ#Bx%`(A`yrDS;3@s*Dxsf`lnYlqb3|qOE^<|x`oQreK z6#aV81ZI22!W%7CjQmL9cvPt;l%|Q5r>4Dm(0M3GIPG7zz%%6mfviSa{n$oQn>C`!AB1v^ zuEL*byt)Q|Fh9pVW%~r)>2Z=X#~df%zsSMw<6nP*4CtIcn7$#%b;C!}EW{^1Bpk<9 z8m(M?z1O4uBDmfcNGA4$=rbC(jZaCwPD7M=7KL#VZFZ90lHqwk zRD5g}^`^~^Cd6hJBTdWj5=(|-AZ<~dx3yrWVVacPw;ImV7o-U~zQ#k46q@#9oqNe^ zd_fs5+wk5um6!riL(It$fTtvng3!)eR@-5t2G)|k}ezah(hq3yq(a5e|^7xc`I&ACLiXvltF$>88|E#eWUfmw07k0ja9T?Fe%|5#4Ica+SIDA zwBY6q;~(TVFmHMaG75&%{?e!+uf*t(Ltgwr4D&Ad)*9wLZ!~2I^M@kIq5Pe0)ntj2 zQjW|r5(sl>El$d<8C!`ub&DlV%ytmMKsea{!JjoX1+bP|{Vq1J(0c7m<28e3s|)Yx ziS>bWCg2E;bGRUDE08=O=7V%Ey~>4JS9i#a`61EA!wvR62I>pkHBSjLUed^Drn*F8 zr?VbCKZ9)e2B1m5oj8EXDrqYD)>)kYtHwSY@z(1g6_&fes_y>On{7VIF z?3sHN+C5NT=B|DS7cu)FP@j!$bMmUMyZSo0IKSd@2f6hU*WA`oGdyGGTJ#Il=eTPg1(8tyNl1P%DisUkEL^m} zsvUj|snvvyE%PZ>N~TAC3mY|1-_KoB3?-5PEnFWZ;+LX5G#6wxzVQ4t_^vq?j5`?+UnU z0|cdB2!`H^t<)X8Cb_tb4e%1m0-LymvV&CM9vIW3QKHlar??E%-yw7FF6wjlCzx~F z`J)=)!w(5zPr@Dlrujo7=X0xriGmDopdWsqAX66u*emp{dz21pXG`Qejc6osZ+nYalp!tKv&IhIrQ}aHg0)tX{ z1{h4>duu`@cHRv@gwWwC3nPhifT;cvba-Z6%XB~||M+FIUT-=NT+HdYrS8xDd2)2G z6m|3c)O`+s(9XA*Suy`Aw1Xq&W9@AG*^h3=P5rFazV2*H^{<6N_2}K!`CvVHdmnCT ze0Aha5I3p~u4H~bpLdt=&p`e;mw!IxpKI|4^8FyMC-F}w{4tHQKi+H_XSI>}UnlYE z#SJxWpLOH_bmRaf z!{#rn{m1b<>f$~HUa1e?#}OnjBowS)1W;Cd0%Yk|aOZ*wrJw?S1C?0EM*=LQZ-Vd8 zfHQJwqZlZspCRL`3M>IS7@z|;wTX+dgtJO(e;EBc8^!v7^XWxiz*&z8mrMo`FRfnX zo+=O#NTm0sA9BCOz56G)I9zIk2eqej=|0#28u2I&5@3BBA>@AwkEG{q=3qBoVoh(a zx^Wq_NFWa<6s921hGPp==V9T|y|h0e0QcpxNlaE&x49G!@AKU?lENJ(6p@q2HZV$} zY@EFQcU%b5l*`{r{MDQ7=%XsfOpE192xnz8?lBF1y-SH(@wACfvtMs#wfLx9wOOkL zwFbw@N|8C@?mN+@qCYy|yEJvU`{jw3wklkI*fpZv`oi@`JR{m|Gx3k@{Qj90H~0$? zBZxC&J_K}$Wwz)t8}RY8Yi7)H*Kk4&|G=efkYE4X8@>l}HWDHtXEiQbMh>LJ{|0hC zedQ#`nIiN)2_ZWI#Mt~ofc^$WS_YZ{r~eBSz3^l}KMKr%l|Q*tSoyI$urgQ{+zmIV zy1yFi975P!LuLii!s)J6$&PD8TST!N&+KiWp@&YrS@qY&0Gjh>JsqrV&e691V|*TC z>!jWhT>PISq94NbXbUD~ZH9US+C_RTG&U(X;a>I=3&`9Sfz)Pl3u8~O8-Jg%xBTUn z0feAg{29f#DOeY8d{I99SF0$s_8Ln+-H!dzal^*E zqJ7i+e6O{Xk!mRE38$D22Niv%ZnY|lS}6v#ePqTzd+EQzbbx<=Rp=P_#~_WV8y-WQ zU>xd}WJ+I{jV%5Ez7uMB{%E{ydl^UaWxvcFE)h{128!*(1JED{6>;{L$z|d_kFo-{Z*^Dm8vaQ~WkN z|K`E$Dpn0VRjNsNPbAF}oFfkl-arHlXQ^+yxocMOOW>}uIqtAN#`PH%Bl6D1g&@o; zf6WwpL>|u5VHJApL5n-ArkJBk7`fCko60QYc~!TUH1Ys|6M2zeqh6tF0&E(7!e?1@ zceDVTOv8ULY;#|10X7h};uB5S>7ZVDo!Suq^@{jsBmT(zVK6R8@Je<2-%N{ZIrdS& z;)SDTtjB-`OC!`;#YECSZkdNz| zFkO0C^m8YtAH1hkBp>9b_lMJP{0lAPsrX|%o`g)fl$PM{b|NlU?rk>XZ#~5(E@Lx( z^>m3TE}a~RaYxn>{(^DIY#i`4ms-vfaGI8nUiH+Utofixv(uJ@vBE3 z%X>J#yV@Lov_w6T70s5D^!R(8*mK5b0EQgOr=B>!nDa9?=V$4hpQX`ft&<7GqapBl z*FgQbcXWrZ+n*IS_F>=qY|QWQ%-<<`Mxg$D7QT#y7bFy>*vUZ`A&n;IsjYiIY{G-C z`CAe`)U$3(m#h;^5dS&Vk}phhom76imx^P;dA<(-F4Ix7W$M>&vybU_bRh8OuzR0I z&kWS}_1^*budcxICq7oU%U4ah|C=y)=Di0J!#x_C^zR&N64x0bfK?joebnocxg;*6 zKSD;Wg#-wE9r~4{c06YhHx`26hj%@hLRf)zWqhrlsl|q~O^7sR5J<6x16Fa9i!{I@ zqeklkz@mNkIcg|iAz{$GQ>3BiKRKd@gN9Q5`VO#QXZ+Eur*52L(ggb>zSsF$OSSy3 zq<$=?ek|wuP8Hx+tF-8^*&?0MqCY7@hOiC_c}D)p2t}wB`fLmLGg9l-Q*C9uesn;O zS9G6?#o@HG7lN3g1Yq9eS>_G+%V*M5D+}$=0!~ar%p9{NtfrJ?CA!cLSr5@;)==L( zW0AEStXl~MsyoN=wRRVIZ-BoYJo)ZeW?Xh%z+nz#Fw)?_R<{KS}FqSrE%q_C? zLVSq$9A6$%SDm=YT_Z{AVSwVOZTGTv)(pYf3vh{n2_-5ViypvWFY31rn@dd>h_5%6 z3A@4rEe>7b1kEMWEiN%&f1z(SY(RL$0~XQ0$aKo?7~D>GhVU=+-!x0Ums;{&`z@N0 z?pPZkUBCUBbUDO1*G6uhZzElNQ%T{NA5A&hH%~ih2c>5b!PyznRKFxL$%IRAVY4wT zwjsiyJ%JHzX_T}yEWt~X(6Twg)l&#dYYE@L#Utj zBm9bf@5!g{^3QnuF$eG;Cz%5n`yK=(7xV`P(+pCCe?XfYY=PYHw6$~c ziXHR->ZhfA3R)w6e=r{N__s9@M1|API(JQph(Tn2`}s3g4IcT_-*L^U#9%n%o8>sI z@EWVmM`GWpw^${<6JJI+4GwwIQ z=*Xfl3F?qQb)Bs{%bqg3qi)f)VW%fM3XPjZ5t^wkmaiw$)7Q|RnY}e09*SXSkQA(d zzY!lrFS0%eux21PMRmak*3%mR)homo^}9URHJ@66SRY;UgRzfw5_eh0rx0VVmNi__t)PY zAGd@>3A!&Kgg-)mGfcq}6#u>cUh-JW`g_p_fAi7K59^zW&Np+9H5ZG5asHfwG^KA5-y_=l9DKLYaC6R7`r z#VI0Uqxl6$keV_FyX-KJ?G`;hpL4PFuh*Bk?_FOT?TH}?A(b)V(%~tHNk$-3(KjFK zMc6EiPlP_3)eMko?&uV#&t2dO)aSc@w?29*BBtTd%ee1it8fP?j0oU8ag#seuu znaI!kw!foRW>CnPNDR;qvs;&}7U*7@k`3O6EF-YVqh%=-1zh>&?kH5%2^$Ac>I$#q zj6Q~aUpOojEqP=;jN&_g+a0e;;pp$QnCv~yWP`}1&5&lp6#F-OZZq90+ki^+`F_}6 z5BRBwpuunqN)!P_F>wr_b2QNM!51Ju+xF1-fcnBtxS0UD2tXg>(HG6YT^D^xAeDZq znPW|G^+fYJ4Kvqw>h=20eH0RlkBaLL>pN9Iwh=aek@IyvP5xRwMEoFuErVylMMy}e zm0dfhD0d&8^RxW^BE9X7p9Bq$?0y5@ajTxW6+moG5nDp&D4PPU#R*MQlJpGLTSDkd zLDCD1kO{})jRX${dh>faCrDjV6;{VNvsXzUPt>euWXBG-pzN@meabzla%#MFq`CL%M@ zav~TRQc-uXFw0nfq>T}5gENhW;Qu?Yp>MiW0nA<9-BlY+Q~PfrVJ5<{$iyJbU4jFf z?(PTrfZUNz@=LY+C!a~c$f&r?5&r56{zBKe$qll_rTXGM)1`#d&a1_Ce(;kE>dph{ z!Fq18>WOYJ_Xl5x^57xM_o;=tUTou8A>4(qOTBOcQaRjhK!Dag*$a9V#~8B@&i(IKYyC8xFqE+mV4SP7x$?yXFM8F_0tBQ{=V(}d zzeK~L83nNHxJ+Q#$sfQ{Voej(-+rQ?Jh9pVFV3lCunyQ56vLpx~W*Nmd+K zeL0pe;l@6jL=BCDtR95jh1?|;x(d^|Q7$9@i&>Yj>%f;pgZgMtr&a98NRd>>d)3XK zkYOY-{yGM!!mRU>`E!XiY`nw_L+97i8EuZK-&AV)qYZL#5P{&}27EpVDTxLPVA#Wo zVpz6zL7aydfuC`!?YpTG3P6mR(b!LJ2U5blE-E>l{s%R6?)#?MK!82!7o$xIh#2_J z`TzHm-whNCfun$M2BiW2pr4=|chIuyp;GS4oP(rF-TM5hC4AformcZMd zkHNJ_*MCBt^RdPuCM+BH$U-0PDG|Yq*E0q?oc13N#LoS_pdNrSv^UceC~&PLEkVX| z_}65Au1DQVENupq6knt9PVYqq5ZsX|yB%f!FMvqFAzpZbrVRMUM0i11;DI`J6DpBm zwc{>5th_+FVGgU#MJ8e+Dn2}A|HN$g-tBWQVQalSki{*99(9Sp#c7P5lEf4Mu;@~2 z4728F;t^9?e=gDUyE5V*tJ(Ndi^Gp4z8Jio4uRtD87aa?fr8I|X>xi`a{3`PRXW8@ z+@UdG_uH{MVLrf^08U3DYLaof9sokea9W7$72Kl&A8Hbz9ES(#gabwRHHkHCbDQ+} z&=|8kMiAA7=R@w5OUn?Q6I_sbbrN?#?3ZNL`a-RlRy-Za^!N+eH~h#imyUxO6w7cS&zzzP6h zj?@xnc#TS3(YEl912k%gQm}FvRmRPmWjua4M$3<$74LJPP1H~Sj;G3{9~J6H+xX}! zzf;PjjWk(Sq)cQ|i<8LjCtt)SaoEpfObnj12VD>Vzh+b)`U++m4*_tB)x#2xHU6(8 zPB*9MjlbhTC*}(@4?}_o2o&tOn^*yJmWW=j%v61Z48%y@GCkToKoQS()AgMO|2=KILaxSMsu*1awq^Y z4vKKvu}w0{m3m)~?=ogn71qJvkil*+i$N(yyeX`5^av@0w8~mgxM_HLt1L@q1q#-M z2}wI2=c><})8CakDX4-jVX+gpZ%z?~0mj3Fi1eM$>@WNjeS}7d^L&fY9THv#& z?5-KG_`&g9c}h#q!AJPu6`y0_H8~@(of@dX>u+Wl;q?z>kOSg;z%^9?3M5#sSYJ%= zYImG}C3TZydG#`H)^S3AQXq}yT!Yne)??{A2y@7yZ~np|_~zP)qhxnOoZ^!Teck5xicgC&~vF0*v53^!O8kh1@(G3@-JP-Y{nmqv3|$Wh;JqvqV!2hz zU7yFJOBYC;n@|S=3=RRYrewLoUZh$a8xK>ZnY$CTo~wiMh#JJ!>p<)@ashm_tT@{9 z&0>6MHd@80>p4WLiV_HM+>~$w&f*#|E>e_+Lqj`G;3XD~{B|sTpQQrHAL7-hm7qNy z8$J$QCV~OWY`Ms?BA%VeH5zayTXlUiF%{=yz6V9n{G%G&GM4^HZ*ctw2b1f2fx%$> z1MVOO_QJ_5S#o|S*H@P?zM&;egD%guoS&;dIOB!F8Q&^}UH3M+W>0LF4^s~CpcOD* z?VTAUff6(X(dnSuAHn#AFyou#>{g7nD0XsNxUgQD>r)iz*_QYXP~R-N7&11y4hW zU9ZIK!k=6PAjU2ho)1mK78$)N5POMbF*0zsp6kp>8AO51CvSrg#U8%~MNvnYrC`ay zAa(^}^w;BzlW(R?=H$oOL@fQ{%7K`Ch}_j?@cX3kxw*B{I8T|+k#W%!4~i)sG!rhu zIAWPWek!sKci1@gO6H(V;v3kptdq3ib^->Iw0~RTNbqwrfs=HwaQ04D4aY{jeceC~ zV-8L|HjjS-Qy4oOxxab_LW<(T1x!{UJ`cW`kvPO#l*3?Q3s z>{ z8G-VYKnTkXMFWtlRhf7n8vRyPPJ(N(;lj5XY}bE`%NinEMLwC~QlFjxnnve?xGoV@ z{3v!9y{0`1`~M~O`aN^ayX-ad_irV=hsk@Zo@rZSj=Xb|CGS@gsb95D3K56=S!>xCG_aN%wBgr_ht zG~;&!=9otqg3yu%lu2WwXiym#+6e(XrzWfBAty)7aC{I`Z?0lhF~d*1NvS6v5G$~X zd33aeLSiHcd6)Wk`3%s{cb3JA58(4%erqCu+Rl_k*($leT|pK#~%fF(7>;U&1` zpnvh`_2S^@k$_)p)b7KzLtyz9lWOQCaI zo;4QNedH9!MqGIF{x}Ql{pxgR*d5ThSC4%G!%2$=8mM`2SpA@2&{S9jS4O3iWfMrRpbv#)^Kb#$~7_`V{5Hbw2kl#=bL%7 zmHe15u;|W_l;gCGA}llW9E*t%C+Bbwee!VmhPiXI@)#>^qW!Qwflh~{(+e=3aN*CS z^(22>Pl(x>5Vs4pUG()7bn`%Tlltwx(nml1bEOr9KQIH^7|>BOfnfoFJ`XMizXXtZ zoz^K?D|+@lv}0hAi1JqY!Cn8L*~96~i7G9^LC|;I1;saUn`*z8{ZY72#~84heWnQa znV?x~nYFiOovc}}GHcTnDGW*Z=eFZHJ_tqSN*g`Ns3z*}_>*sa;z>;U_g|m*24}%v zhgiUHp}EatOPESOTPio1gkVcrPfV5aI$=vYuTLCmNmkbK(z4#wB1#K;%s10G9-30e<4mf*4QSb`V5ZO*i2N`WfqsjCV9xS1V; ze;Xbgt|q8|+pZ^=ED0-^in(NL1bT4E?}Y`J6G7aAFHIqCbMP^CUX`xj>1uKT>)p|} z`llL6Z#((O@}YlNy#msb0D=~lKAx2PXgZ{JOIjaGrywCZ@dn87MBxxUBI&%(Hpj}~ zsIrNV@WUB)ib@>@9U}#bfM?J|glNmFRK3UnJo2o1al|Nx&OATY`uF}z|Nh#1+h!O3 zeINfDPbH$8_1Vta1Q?s%=uJOeC!QoKMUAQyINj7~6{rHNAoA7V#xH;Xsvgt}vF}B{ zSOj2uo+#)SZ;O7xD@wwJb8jLzlTs}mArjUXm7-rDNU+VQR6XJuMb)7cy^lVZ>^=NfX2xrt8v_NL zp9~$OBcoDQDnOcpp>3FjVoH!Hd*jvBgi^H$Ca_D?m$@4ss|nbfE1K07XjY<3nSTlZ zS{&nLX1NINLqUFtA^3wH{`Pl5wZ|N{KjY6PUnHV?u4axvrU@Y{F6>!&q$xWpg_I+Z z{~njzGx}u!3+NZ1p9&@h{Wi$vOR=RhM~%BE94QT7bNw&#pc~)>TGMf)7;Nb7)@P)< z{g_SPkU4ZEF~Tlq6wrX8vL)*t=Zdk_${G^Ef$^=s9Gn36+kXYFa90mJ1A0(B$H5)6 z15G-2kV=VX7z5#)LESF{u8@ktNAUenc9M@2n2r+SAi3kfY04ggU=MB)F!M+Y%EX7t z5S!8gnq3Guw3C>L4gg$rwe%LKcx_c^Yn9xEMOPI z+=diOKj3MZ+s8)%>()$4#kvm;x1dr1GFaHDhj;E_Pw;R0^_^sg4N%F3fCd{;v2o6o zK#*&9tcL>lX|<&@TC6DwV7BScA+)4%*2reElG5OnYj%|HHbOf7k!6=U@DP|D}G=lxIQIjef96f@FZ$K-2aS~oWz@=1l)B!;VP&H|Jep> z|1o$0!T?SM>+_{zAzDRe1;N?sH59m&po{~7H+Ge3$TH&Oi@A;Hm#PUP`L#GMS%scp zE#MmZ?Zg(YF{hkCpy5-}aeC)#QPt`S|4yn45XQRJP!jtYbcU<5k~#zZo4!@IcTqoF z_{7h>LE^I;%y5j)uQh;aCbfnms5Q`&a^4f(NXEb7Qy4-%g@FPQ`WLhYt1zg4SqvNM z9^U9xX$Yy(u%GnDr!)+;p$9b_c%_+4IPi>o>K$t9tIDts1Qg<*cBr*q^|+Aee+~zU z=A9=h!=;+_8MB5W%day0;1G+F%DkuhRR+hp<#$i$H!$nF=no%Uo2oy&@R;;`6|+Tu zNHp(8f0)f0PJfs`S@ee?pMgD0U|3mFe|Y&iPPHy4ss3;+!x~!Bu%ZF((7paJODcA) zKRn660nr~8|}q^nxy}l_qYB9{iz*;Lnhv4$6^z4 zH*$Ti*Ee`(rqjYMa%NA;sQkiS6hPA&Lw@8Q}Yi}S`uHUJerBovXr@s9wrdJ^(v(IwBUJB0)wb>Vh`nIxje9*Oa2YssRoi= z7lr2m-eWjUGYpNIu+ot9qGhu9+QC-7hTNngyZ1$Ob0Yke}yxEijGNbp`= zKD3<|%$P>6B+!t{m0V^l0`9f#SRMD+TvYDwvi{Sz;PhQ7p6tWiNNl9$jBy;v1b7C3 zZ(N(<8Vy3FPC@TC5NY6*e(%N3!sDZ>EgHjrJy>Lh?RJ0Zwz^QE!P38bK6=^@{!>sq zGxf-(= zE<8=T2T6)S79k#T9}W@?mytee#5A|=qzMT3_&H4M^D~O0mtYEiiYa_V=Avlym(zG@ z>bi$1dJy}DHS`VU^(CD_@&3;U3amj`F=}TLnlB`&h051ICXlT#g<#R~i}_g`wV$I? z9P!KSBy5L@lGp_hr%38MNo zPg5@!#?x2EgU}Vm1i-)e0tY0nHF&`wPK$KK4O1mSOe#+MnPbHc>Ryhnxr$)$$x)aF zTO0t$04q&akh9Q*C>;qNljx5>=-%Ot!oC*el6_%)czucRuOXWK8)TbS&FZ09cQES@ zn)S~Ir1A~SdI(uQE@z%QfOFtE(wFIJ{-Hfu-}`~e52y?@&HeUyzO&B}0jBo(%%7&p z*Gbx^tC=nGHL{ox?`)sbG#4X1mY&BNPQH#gSLJIamIXimB1OJlQXxbr;TkGm2N2I% z(!jEO@^w78!`YY(1}`3=RbZ95+ovc0NKq35p=1-ED5Dy91hJAtIJ}0~*JsN45wL%0#pdKG}KweU%VZU(A!=6E}lF2~-wf_<>0t zw-+b8K$X-}G(Jq?*=6>?gU=P;^P`wT8+dWwA35E~W;_L*Z{9kv`kv`D#61n1Z@6jN z%xe+{EdjGt_-d*Hdg_(zU4PF3E%DXP{~RAfu=`Yj4fhK|(r;f6W$~cTX-m$Z!T|}A zbN8K1-!_qD@npq7?DSclZ{5tV?q^4r znB2)A_9G9TRX=>JxAY&-PVS#rq!BNe`WhbpRm%=UUQ|O5qJ;Leb2oO`AAfMk45X-GnhLN3R=!{7vb7MQ0U zbLY2(x9=Tj=wQ>~Z9M`r-{c{4v1usl?g0sZ(jye>c}(E>zHscCIgfpe+XB80G(3hX z)PH$0UwZB6A68xHc8k>K*0MR&IJ z{!b|PP56(^a4Lvhjr^}KEX>%;2<^?LqF)!-dC4Gkv)oI`FPFlbvG zWCyY1W$q}BySZwpgQy!{LU=ofvS3AUI6AWu9SIfSPcRt2GH}$=z}!~?^P5MCWGf~<@1&(NAE1|$)uc2&fr~282k7A4(CW`P z(S6>vx$kZcl&wKSZJoY9jCs|E+>|R{lrQy`raRCh|5q5+mpTt%PNP=7On{mzPXsi9 z2YG})*TcZBR*V~lxf=({PemYC=j=kx!1}7*QkpRuQVF;a8JB~psm_!Z)Ma{oUhPc~ z4EwDZ2ZV@TpF$5E;*!daS6(Rus zdyEOyKfLJ&D}uv%$fWm?o^btg=V?dq1EF8tpD?cOReRHZX^gRHOGSrn*u~*INjR2y z#VEI1}XeTHTLxJF7W*X2QAl$lNf_Q3rw-L8`TOscNcz&}IBWDO8&f%+KW3D;K}8;zD8w z!bM#C!U+tbpc46A;ukIjf@0Z|@e4nBT6M@hh+l|`so9PCc%*c!yZD7tS)2Fij}P1} z`eWX{z}$0!sruvP1O4Dmyz^h^kJE4KwEhIik`Icht%G{C?IYSeSUjum5iY!DG68!q zx0^?xjN=;574lbCanM4fvY0j$xEe5ChZ?N3)sZPUF(1m-q3xJ1s_;Uu4-4 zC4QRJ8P&n^KaOvCY*Huu*oTn+uJ|$b9uGfGcyf>N<7x@A?gl?HrDNUUNB+?SkPkm@ ziwk~a3_9eiD#zNAmc!jLq2WGv~WyxdA=m@d;dpa zEW?1=#rk)f!Y@epb-Vt}lN_=BE#394e@bwJtbamt+x7Z4(Shrq3y6(ftbfa<)+yJv zoZ5HqYp>v*O1Bh#@A;M>yruAuBoM&220Hjo!L|Db0oPi_q~h9p{Znu)BT2q{6hE~` z>)+GjT>osB_0OMplMfc-4}iq_H~Za^#_1rsKrwL9P+QO5iREzqhr7Oaz5dw*d#=lg zwK5Fz|9hP1BzMktCBRgEy|pLv|4W^J8Jutak05Mi{xfzr|C}Pu|6|?Ef2e83j44y6 zP2tq{ggNS_|Ci@=p8k&|D!@1WL*~fz|0WC5-#R*V`q%bNnf^Y$>EEOI56lwfZrA<` z*z(we5B`!3kUw@0km1t55gFE<>mdVqLly(BJO>8+m)i~#gy1wL5yEm5E1>4#r~&d- zzXPME8`FQWKeqWytiLSzE99pLLwf)WnGFQtp6-vG(Z>R}`}G%l{>epjJ#-gemxY7D z`c@B=v%YYM!PDh%$Q>#EhpmC?0gGuvA-kyt+54dA;6TGxqU-AnC%__%t^#QcpY``+0aw+pO1r)DOvJ}={cb!JNUR();wqN@S=5PD z^*=wXqP2_;16_t;VL%YUYD>kT=Z!Q}}v9oq3Za2|g?k>ik@N=7Y70Cq<} z42=DAGBC{SqS2c$FR}Cs z?+~6+9BDBVAL2~deR8tX;9_a8pRS+*KDyJO#@x=;b-Q+EN0MAK%i*>?L67Lz9PGb- zMYkNhXeU>8HVxpmrUTjk#6i0LS8CBrR?W7VDL*7t$f{Y&uBK7MHK-|Ad_m_Qh_LhT znO{A~o-+?CKe`SHKP8s1P`2~NraR%c0xO>Pv}2xP-*a1Vzmk|F8Ki= z2Pd_hoq(CZ4jY`Ez}fh5%FveMkYr2>_J=m=tSCffj10@?I#Mg0EJ`w5T3YOwe{rNg z<_tI8MuNbqUr!L~knOEy7^|BYus9GrLr zFT#Zrq$S`NZ?%{4fPQ8$BETCFRG8#x5b)dkCTsKUI$57R;7yheL}to25bQ+5NT9{^ zvs#Qh8RD(8{397hP)1XBGte42vq1#eJALf>*0y7?z6IQ<&~vKXIyH`}0(sK=P!WnA z6N=shYMUM;?~ZKQ@h&l^)Y}k`lePYo1T{LHcu&{THq^_vD)23HkNr+LZjJ^CyYC1O zU=(aLt0-EDkDRR^*`ymMQa;k`RRb03eDh#}IuVo(`L%$e2=QNy{EgY)C^ndW+c!}EAG&SA-v$Epd*Mms*SC;WpOE6LMG|xt z381VRL!PrpAVbt5sZ@(ZcYy;?&vPg0z;~%n+)+#<5~Bn&;a4t$=68&RXi3v^6P5K{j%*1NT>8>lMVi`9LSpx^8vM*HK>}Rb@ow$dL!|A04%-0T}g>Zq()GDz;}wTw^9{ zN=D4mW;`=wz@?{kKj2a~V0=#pT;K*=p#y#~w-(L0F$)`vrN_8sGVdJ@`N8oRvRz*V zq5H>NYF^EeG3(VPYISCC@C7>NDXd%l1LjodnB4-E4qIhRC?Edam)}*Twi_>5*FDDr*KxeEgWB9A%o)9qme#iO0NMYHELs5VA?J-$mPk z^y2>56JOeaPug`+Kz1S!y3IVeP;=2Wa=Yk6On94#+FXEJbF;`KF$))D2y5`~r9JQ_ zK>LL?g!ZvT9)jVMeqiUAvIA3qjRqCLh-o0JEg@DN!SA78ieTspA*~aV-*JQka-QkO z#w>OL{$?A)4q`PjhywEurUbarv8wb3u|DRa-viqn0AF?PG=<+xOibtXRScJi5iJz} zWH~gXdD8o3m?y8S=D5d5=dlA*kSK!zp3t?BFqg3_unC5;ZRBv+XhjJOL#MEM>_^&3 zzh&~X|JY6n|K8pDDjK;82NKJbB3;?1q3EuxTem(-?>EK|hDehT{-3Vm_Zv|tTsZy= z&Q{VOSR%0qqFnabjs3dmHfjKG8}ln_0A2VmXun=|{gg|u7W)-(+!;O}#_H4gVK{x^ z!+;}c26oS%3UV4Q-)FaNO#k>>gnZuaq49a!4s-OQlC9srEqKL^9Zzg?nBa3-`yRg+ ze%wy{c<3$S$8hO&SNJh*f5ne|c7-2>JLAXrZQl_;&U+pB(OsDT{~SLKJ1rGI=1Uxe z;0MAgcIn@0u`RKXHHF`2)6RffcM1G^?9lI(edr~z>nSV-#<2W#eYXW*%kloXLI+2|Ngid{P(0ch-be) zg+uqnd3e6o9J6*9F)hsr_|E*dMyl>9|BbRSAOD@9Y0H1FVMf`^{(ILJ3)@5| z{<|Ca-SEe*;P?06b_KsxHg`|p_dpfkw{;caH*H+^@SB${@Y_i(wDPM!s_rTL&SYag z_>IxDh2N1(3H;`F0lx{~bP2!d-NXmyjK=VWV|f3Ke`@{L_M6@Nr<{HdCrdZ_eH_tX zv?=XLkKc&RpEfp?Q~Z2ij@_OSh3%nD!We~f0I!prV>HeGGPU1g>GN+?rg6_NHbAJj zT2cT(U$C^@p;ORiiXdOArd(4w_0nSSkD?}dteTPo`?v4j&Rt5r!9XM`Yw&*slPo3O zJhKnF7%hdGB3>LS;EP1_k0W~g>>~IRmVS;)LHiekR>RzfnJ{WS1oW1gOxS1f4Lgv6 z{4b-ILOh}{OG9Iu4#I~{8@2MZ$ZO`>X^i`LUoZehqwptetp@mBwBV4#VR1g$d+vO) zc`%K_g^PY{VQHg|)1{;IpXm9p_-68a*pmt6T71>oz_?2Wy*wMev`56Afxc2a;#jq2 zYn@ARbiR~Bhg(anjMRf-D{0EWPbCAC*|Vonq7u)P2}mc0(Z{5AgFTQ^Va+wgEuI6% zmVtdVl#R~Slf%U6QvW8pE*=-a$LDmJ0VNpwUw&jEk#xGO9ZbY>P8Ybq%Ea*^`U5>L zKf&nFy+QmfruZ%neXc@VoM0D7gI*Xp(E|F1bu_{M!Ny(xbn1X|GJ5feRWdpoYUKEQ z&MK7gzP|(8az$J-m|=0c*t0i(gO7v@Hx%wPl+2W&z%`ciwwxpg=Uij;(@7SHKb~3n3)(Q>7H7^)VI;KcdQGQv)FX)OJNX(C6j-ZDJR{Boo?8Q#*YGG>J} z>qX5vjaikN^;^w423e5LlaU$sc^~fHL&6{L{5Zs1)j!AA zYCoz$dF4Y2Fz}c3`!2!q{~wlX6aip{eFy|w86tTOkb%Hf$m&2&i@8o>8gM#O^a8-M z3@qW_Cvm6&L}wwB8(|Tq#cky{F=HGH%W#ozj?=1`p`rqSq99zjlvU$$Bx=4KvXO5B zQiwy~1z$T|_GJQ_930Z!8kUa#c(tD^IR0{uznq5yHe=Yu2u&q1ljAKEFxazckQN^9 z4lqPHvIa_yM*Nx&-&DDala6EQ(=P^$ezA-&vc7Scz~RE}qb<6)@TaVfAvV&9ZHxb4 z45B6wtyL3(Eg3{6CU=f}L7}ijngBn#-+sOR z_n!*-9Lg23?9oFZBo;=aSZ{%Jk&~DbKTTpO{f9>VhrEpf`h`OIDHS0x`-|CVL_c|| zgp32TA+r@d2fgEwLg;6Zkke5j?#${1c!khNK*Kf=#g4FODPCg*hwztMnMU)=Xd$HB z6=$I$nmm^I*;&{6xG9_!q|>$qk`(CBa2dHbH^~ zLJv>n@+M-s@Z}ez7n1xJb9oILWBN~$BUjcJafh~W_@K?23d1%I%<)KXmA76_f zj1N}Bt%1;v*Fq7=Nyt=2Ls~gQ+kG)N%RLC9M2o<~@6Y91PUrh)D&N&KJi39bdZ`gW z)Nv&ftQ8ojIx+6QIF4Ky6ets}y@y;XXRL80V$h|2ExR``SknO~@mv{TC^iY7O@PN?EfhPuCXlrkvy`VfrCN1Y4vR(kzL~#BvmDa`;jqGfP@w)UOgjfb zqTx}h?Y6k9Zfx3B--5L7{_OjuLe&@w99CshtWu2hCP^>KWfjVlG>j1I<3+gPKC&9y z{hC;Qn`{gU&?2?TKJm z--QU?34J#rxO~)iA%a6X5y1+aiz`Hc^{3&xq5=z>uBf4qK>L568Y16=8a(_(Fve(T z3{}UGoBN4?yHNc^04a@qvqh23AcEq^C*}__qyNuPfvG`=QI{k@btcbz`%%|)Ad(@m z&0A{nWU~K(`kCDy{+<$tvJtzt7{XyThX$EE55Lr=Tjh7Iav?CeMtN^FGZ4u_NiXuW z?q;UJts3zQS^g~1B08I#MD#PBFYqtCDZ<&!_1vfBBQUUtq*UJ=7pZ=@mDxecONf1U zbo5NNXiBuutcz4|m$DEPj`UXxAh?I4bz*h!WsDSK+D`s5{5_T3P0T`T(*5way>ID> zqs)&Hy^W1P^Xdt`JoqgR%>DIGaUmij7^VI|5+<}eZooo0T$q-Ft!8}#Gix}~@UpMz z5c+0)Xz8{ehd=Ba>an&1t}3{QUg^LWMnSU`<4^*Q7v(le$G{Sk{2uBK6YL+kXiW-y zV(G)LA*td_b2Bj}0P4#OH0l5(iYfYMp1n)ne|C8aY{1nyvl!N4!NK^sIXCzc!GjwE zB)ZI;gmaBa4vj2@cK5t%wNqW!o}VM1zK$8buGQP~;O`e?GFjTeqV77l>KnjawJ%>U z&9A>=2U9o0H_6Iy{WzozjkUI+ka=*ZmUDKE9 zzYhy4Y=pu)6^cCc-wNUsRNwn^YYA2$B@(UXtbL&!(qd< z!J&s!a=>Ftr8zQI7VB=zkfb>)4K{t0-4Els_?_Dp3LrKH&E@0P~+jM?|oL_JX{sHh|HqfYoO^vzWaw*t#1u?FYw$0K*0TP~X z;TblSW!Ragw!vwmn$4xs>6$WAAP?ySt1{C}|KDS}uqurY0&Oyne{(qS1hd0Ht(H0h zPu{fDQFY^ExUh^L;yn}s%MRS3AaFEwvYJkJZ)74EDfO_(&#~DyPs;Dh9CZ2TV%=93 zM+C6gmI#Q-EAt@385F3bj7qZ*8913@@6e9s(CAlg1rqMRf;$>NS4@tjfBw4x?DRt+ zyDL!iyX_cIxFD?>AG8q;=!`g_@%?zmb6z43$8P9Aso4kqkC<|}Y7bDyVFAU_u@a)1 zXM2EKVQ%?JN)K{?_t$6-T5m!RG5{U$2OQaz{CpuTUy~=0d){)Nsllya< z*(J!|HvAStUbo}7sO44sMN+vVd0g3wQ*$SPPGHdTmC$gx{H+YNs0qb6-WtUE^2n6p$cGGZS#Ta1zSTUyx)!hv zsGuUcBP)oEz&&l#@cwGbb@`ypM91KO3`#HIdQ%^nIB18e>rHbs{s-{}W_mimU|U=X zvI0x%!RqnqK`tLusca3`b!kboRR(r53@re_O$OZz7ryob!UmkJwjF8yBWG)B#{9cvRma&Xj2($5lx6U3Sl})r~mf90$lQ13U*P3?dK5NA)G{ap&PIZpP|S{GkKjNe~yS7 zel(xRUqBwRljCr}PGms-I{hg4jzCpYL0{mlStZdcb4nUMs>V&GlORLJWtd-L_aey= zQS`V$%bf9k`;LxRi%~YGWb_fa)$bKWa&tRYrx2D+DF05!ly#i% zJUk%Htdvu{WVr`E{z+sjhm1fB<`*c6o3PI$j{tP<)2i?&A~rRaK8;oH!~vq@{jVNO zB#@|*Qm}6ubp)uJjk3f(71~>vVNU=Tn!14Bcx8WlBPQRdK1&D|fRxuDmmUfJ^@^!tGZIRP`4`LQ-pby{MHltKUE zvwoR*!`Qm5@AN;f2dFWYIT9Ps@tLZT$WzZ z^z(x1;dmb!rtc>=q2Cyln{9!Z=eZ*58}70aU1+8kQi`|5rbYBjPtFZ+F9ovodzZ>0d1uugg&*HHmt?<&pp(S2AHia_CDk=?R z^$5Tb$3_#|IfpH^Yw?35K4Sekyck3JQ0^Wo*@u_7x_z;W=Q$apc&q|(4~VmPt_j&-Q%$n#36r}OU@(>&7# z%yGE7z_hCWx@&#N_{mTLDCuFSaA2b3k zZ-H%Vjv4+H=HK1e43U714_H}yMCw6<7?(rwcvFsf`%Cb2SkA8qOylT=Jj`vL%#3)^yBo zFJ`gLL=Wb-%uLSjc=g+LH@{=cL$Uj1Iz@jNethcuR-ifm{8rkuo8MZbG5!&De&^=0 z0yPSqU%IjDbET5=WU~Q!vOCXjkBfAE*?>8>x4QA96~JCv1)>uW$rcp~OtTvf1OPf6 zI4qhGs6QHELIV0A((({;4`q1p%>ni&oz7)7On@G{d{P|U(GyUw#|`j* z$J!!Sk#XoLfP(+L2L4hu5vR{ZO#E~EWh7qON?i|0^XTX8D*qEtAP-}{nYIAiK$KrE z>eS@5Z5*WJm#HD>h7=od!~*!@00#5|Rh>d+MS%99?tRBxX$VVq1wL=b6Hw2_lHhe z*)_t)&nM>MTZ~VZI{_Sf_7K;LzY+Z9@%t(G+lZz+;qL;;68Yosw~1K@>5$UEU!o<4 z!=l7jVkgrq$25_Y<)z$#waA71+m0o|D4kv5?Zd0C2^SXa%h4ZAp-p-SMedl*>S#vD zVc<*|Hj*K>K5%9u-eQ$Bb{~rYU7z@gk}WH9{AoVLLAf+uq$S>g-ObRMF=G%q^OHtQ z61-O8m5pWo3O5qK>;c-PhQ$b0b016e0!ZmH*y#7~W9gvO#Rzps-~o5QAdC}NtrX*K zxMJCdQt6e=fTJXZL(2M4F&T0k(*eLuwX+9et~RT_~=Ckyd} z+;XA(>XHmmd7h-bgEiHn}Ufwf@e?};5peH&Q7se7~=tB`SerktshJsIF^?Ss9Ip82f6YvLUcGjp|=T3uI9RQ4&K6#pH&;#%5d z$CzB-k;sxuMgJKB`?RX9JOoLQ#(~6+107Ar_mav^YG8>dnfSbvhO$YpvZqepA#|B$ zIS#vtt#YXrzk}326R4j>*#TjpjlgqjE4fD6Y}z%_j&wYx#YhCGzHhYCC-xQ@olDah@()Lnx#;S-nHv_=uqjW!*}dkj@nRn}v9)?3K; zC|Aq+gsV-nJkum1!kOh@QH>KMYBLMvcNc2qR{0*d5LnU93gxkowk1QMONPofV8&P~ zLS3>fK*;%Z$=ew*Ai896tf)tE1a0vYeZUJ#DE)mp zoH9yii&aEmg$r*Pz@Z_8i+mV-(qcwAL%k|gjliSlSEsn}Kio)N*f?bVqOo;W5oE1IywQ@!m6G_gB4SB63b~b~%#79I#IV;v5c||qI z6DLt4^883u%CY#6s?4TYj>thwByzCapm?DE0RT90B{;0-mWK+%bw#-Dg>lv`CqD&K zrc~|w7{m@eexr7b`kL}|#=Ewro=%xsr#RB8>dMehi4hugWipUZ-G%b?702aAL6i4! zc6}s&=Xp}f-`A5*)ommlP=%@FFZerueM?a?La=+12UaM~P?V@erv*1QxrZ(8A%pEC zop)Kuc*1z%6%_KgKY56>5poZNuH*i~VZi-oAFL>*X^m{)jIa`CU;&zBT4u(QZ@6$^ zf8rWkZs4QxO&x$U9Hf$U2?)J=E*TEf8V=WiHZO zbVHVd8?|Sk{#||Q7pNy_h5qqkNI;GQX3yA!Dp07G$Ao40SnfW1KDZXxcMWx|3QB-- zFtnR*hXmMnE+s&`FDD?2RRm<%j*a~p)|;q#=IM4|YYWE1rb#4rt2)}#jp^lh08czs z+UmzL_@4iKx*Bs8+lXb3PluNt%)FLu0b6HFn=TD*D!X08*%TZ5lRHFIy-&dsq}C?e5Pg4c0&B9{4>WY4i7 zpDu#OrRN9_A!YTTeX8BBWlh)y9EK1b=c9rzqkVbh1hAPUFfTgLo%^DbCo4|ikJ2nx zfl)&+0kamugk4>S3A^%cPS}PFP8dXXa>B4bLY%*vL;wG_zsZcr;k1|y$Sgfv09FDI z5}Yq>$V64jMDhG{_)&^syvY9XC9EII{1>(Zf5+K!>~7cxV0UKl-?{L)8z=xhGfd=9 z_#*8&>c@#~U2(-Eo0Rp-!>~4%#r4Y!u3zGYD_y_bPu4C^60q}KczM<`6MYeW?v-4- zl>23Nw|E8ddTuo5}dJT%EP>oUCn zX`KJni})n^x6lD*tBH+Ur=wJ|9GDd-_O1Rc#Z>NhoTe<8Ey()QCgs9X#LtDdb=J9? zP@|L1-7Hxt!Q5@k0%=KUFyVHjIh1DpVkm^DpQ~;`n&Q44zhJ`iEE9IsNm~Bu1vbsk zu(=QcfX@jDhPUn?xJzzf3UAH6?JVLaBGdP+!u`fuvjYv!NZI>^7m+ASkv3yEOmH5- zfx6{Hjb-Na<9E(P8^fv&#NYh`4Og&c-KZ`Kfg7-ku6ghuqFkr;(Z~UTyST6d|L)ci zfrh_fG|tjLc_=LXy*WIg?=f#de*ya~W2@j_* z&cu@O^>pw-Pd$+hKzX342xmnVM5)?|L9r7Nr)9MUEOLp?S_@DocxP=_ifVy3yZ@h=9f@Jf*fxzpGWN&tXWairw_?=D^UVr$`nYdX(t%2U_`4wvo zYz3aHHDK;~9{J+QeAFE%M)^|d>Hn=nzPgQB0-2|D2M^>6;Z7RPmS1%Rkd_H@!7egm zd6?%O$iTaiH-C~>R^GI`3goNOgfLVqZ}^t}o?q^(2&!p|pu&kAg0hxH(7d!%1l3-5 zkD&5i5%kU)NsVi`ve&5}q~Y(tuoiG{MN&SCHQNY>sg zzb~q#0p}HqQp;V-U-A1d5K4Ia9YBYy=fJomp#D}7I57Cx68tH%JGBt+)IuZDPVeQ& zSf2IP+Hz7JUuw5$mgko@u^h@XpBx*WiMhF3B*At5So)~7Ae7hZNGPXmv4jHsUuMF; zn7|xU|0b{*D$4>QNlO|%s@T?>i+vD0dvuOwY1xSYrPx%VaSKzaP2R7$RVI}8F(dV6c zQsZ$7d^TXd#A*LtD*(E*3Wh;QushNX;-O8m8*ccl*Y#vQBK3*iZ5E%UKH6Dp(`~jL zgS5^Z92)Y_>K@kOA@M_~qolJ6lxKSene11kt-r~pYi&BM6P>X<>*W!NQBTUFANe-T z@*Gc4kj<7m5O>`FyH}w8<$hQI3IDryp#E8X+AGj-AcA4op#oGOVX|V6Km%iB#@3#k zdxTwoZTJQqm+@4h2l7zk9%kbqQH*d9QUwW~wrM$`*~A3-4}aly-abfAI>DMyOEb*1 z9cI}Y#E?6;Hhi~1^2}1O$PwO=ldU5a(l%kzt3C$9<@?jx=BDvI=6h4ZwEr1l*KEotZOYv*J1 zg-!V3j1u_8Ft`Qy=*Rt+Xxpv`UQc7EqgQD zk>-}Y7x-Y_T!9T#`~njELM?vTd#vSp9lsGBe?dBjHQkcP)P5Nl1a3y3C~fvCiRAW! zCo9rc9QlC$&-olptqI{1{L`u*y$Dw7Od*BU}iC^J8XT20Gj`A^tOyN&R2S6~THeF%U9hNJJUA{@_2UOQ1FzZ_E4=M_88ycv;0#Av%K{7s`{$I#G zoNw1VmHlR5@@04c9lMof(~kY-ARR7T{y8UDR6;B8%(UDzd1BoE1}%#T9K8Ss~;S4OxXaP34B& zW@(O@Iu6q;$23(PvN)E53!)AhVIl)@bx@KV843n%L3w#d!<@=P79J8$+nJ@ujF_;{ zHc#7~%{SRJ4N<0B`8i+$%Ml}}3m1*XJ*Xdow_`yv^R|hc zm<>~niivBircQVY*OcEy0#AB(+L#98fRatd;8=!f`V*$oekYNKMv9~NQHSLELrKGW z>Xx{rPqGqiGGZGJvU}|Y@s)e0(w8(0+;YlgJ3oZ9qc3HkS8Vj?ixoQ4msGO!#R^^0 z*V4n4zSw{ng3AZIRsai~Ij397*uY?*3i7PI39pB24g9q8&2iJJlmt)tdQ!cr0< z?w%FfAGwoBS8_BE@t64O@SNnpp*cJ!RWR-FoWw!0VmXi%1GOaVmL4uUN1R5obt2u* zp?Yu#+I4GH*DbHb>t)3*ZngiblrX|41pog_+W_as?3FryLF!k&`3u>!o4+!o5&!;~ zH-D_)LEfsTQpwIAD|9)3Jr2|PV*}<~+$rF-;sL?UpBid*+{z!DpmwG3M=Fjx@keTp zJM%~CkmQd}*KD>E=XA|hn`SvOEGnp+NS4Dy-pq+C<*63PYm>=s=w)$Z0g~i_X_z&F zaUpR8O=Q?Kbq=Ppkq#GLlpq+7CQ`8-5aDcMJL;{Ka$c;r(PSguB4W{t^?oT&LCDHx z;M)p9#UBM-xNxiSKEXcW6J$I5gmh`(%qE*;j}T7Y>OR3@U~iM{Cs^4$gS!ZlC~6fn zHH*-Lw8Xnub_f^Vp8TYO!yA=C!yA|?y=is;;$x986%SRqR!t#uqByibbmL(b!#!Ryu(*!lCg5?HL zz69!LiquNlKNak36Q-6Ti5Nip=Zl@~pI6oXi4!Lzb_Mni0=v^cyPWpVbz=W~La6S> z{z1Hk&;F@!_75T{)&4=?q}V?nOIrjVKe?0r!%Q=PjqTe0xrnMkBRdWI=Xh)XoRFd# z(EgFHQ8mc(**$l?faZZBvw<2=6Rh1MjiFl$&}gdNbAYyD?VgEJ`#ab@KXdkuvwzU# zsl&zYF^?RtUDmExv*($Q2&0|Np7$1if3s(jw5etf_9)QoF^_X3*kp$N(TOnltQQ73 z;3a;@3ucAl;(}SfGaVniEtQTNK~sJ@USQLXj+>AU7e4hNAs}?j3Xc999kY^0$E?vc z9rr$1>6lHJNw{CYwX-`qeja3&LdUIWp)(z~NnR=)wWmZ_%?N_^EgN!%g(oHH`PI;;s5+Q zrrP>HS;HHO)p4Yj)p1y(OC4v#NS$dmU@Cc4fCGpHq(|?6d6pY=CE}ZDe!&iRm4AT9 zwHPHsOG0p_gwm?drx?=X-AWl<8rjDFZyPJff80JqetPIo0kPk#6&vy8v%q-?os8X_ zTk0YF?F$Gp7U4=o(!iXIizdG95t#WcKfGg=cPd>*sK+|G4uhfC1%SeZxdk};E}JK` z!2Na>ju$}=gAIb(=;-$Yv4_}1^f5+4 zC?IMwu+u)J#=l=j!MaEB@3Y|sB~oBjbDsRdrk3A&acpUXt~;bDgoknr3`+#3=2qwf z%JBjJcx)532mT91;|4#%J{K~Lcg^_azfkP>0V4SIjBv70>gEiLYL?gb@I$0YtP(%W zgR&#vN+^_>$i2P5J}6k=At+(v3)8EyKUTY6H=4e}>H}+U>^Y?x7e(k`uo)-=#krNu zj?%s$ey?B2R&_M4VIW010}S+dg1VEW(V?|Bp;2sS#$qHPwc`#pN^C8&%YCw?Pd4=R z3N$dTG4MQe9Tcix6R3X}nxKFs8yWJD;~vOqy}sHtQv}uF_yQMHcP<)pi>HXmTBOk| z{mODK6=$DWZnxq<#)}h-+?{3 z^HOBfe`yBkC(a=tL?J340-Z4(orrJY?u+P+dBr$6zIb%Yw5wQno)p%NZX$J{nGf24 zBOxPS%E8VnOiygHC8^DplH5i%P`aku$ao|RqMyj0$2>#9iLtB*;jDb%nY2y0BVUY+ z#on?HdWIrB_krsX|9LdQinSaiE;zq%pNz!a_<}heqe{rPET)=euaYl##O+3?`*!WF z-AO_}jqD<%6Hc0vvkSZ}yYT$lSCwRP3nXD#Qfx#W&Our%fiN+IOW>U+K0^=U)0iSK zItFIqieD#q%RB9y*elKx)wtyl11_httriV2G(*8}Pfx4F#D&}@5vOE4^eh2qBQEbn zB5v+l*u~*%o!d;=m=VX?544flDMt^QPv=+>7I>a77^>jp>Pln`SgNm&~3gcV`KKpuL3h(Q~6R9>px6NNa6c$GGvNl3okF#dExpf zU_}(kNPN+i{-F9{H}K)@Q<=-R0yyaePF$8ux(CjtUI0$V#RSe3f93!shIl8~M4lAb zVEqT(-5EBAN>#ZItvlEp?ZF1)XKNmCj?|O_hx&mT&K!Zy$hW$J&zL*@OZa^APrwKA z8TJoPD&7V1R1!X`E+TwReW!c)T=j&&$6XiK8F%_f)jfvKaJJ^bCsR{C_-y;FgU?l6 z!e@A7m++zfxdn)&@pDylcj0_A@|y^jhxv>6ITdTVL@F$k+({nDtmR>WV1u`zz`wue zX?f*NHA9n9q1-(Pb91Mf$%k9bA)l#87L5i(9Hc;H4Te~Um|!g%Z{4(pbCHZEjY}il z$CJu?4gWb{5XCRrH&rjHej+dZ`h~<-%dQH$DWcrJDFV_Ro97{oq20Clu4Jf{F@KNn z>L$#E7nj|HR(2U)jWt2LPd>R}NHixvsF{_au4EBXo<3srOlVXrcR)PQP$ylTWA`Q$ zgKI);=LrmXTm|m8%7S|F&LpCJ$!dZcwwbdw{JUBRIy3cgL4Mc?!W_siAp&_~2Jg5M zI_~p^hK34O;Y1%)Tjn%nsE}z0vPVc7jU>2x9vP!?jM9mQ~-cK&v-0lz#g@e z_t^nwzrOQ;Lr#pZ2mQuH2%E|VN2*tPLE)s&ELfsSpGDx~pwCL_?o+z`67*RiX?V%- zE5x-4gOmr3Rvt1~Bx#%Y>2rlZwU4m$(+@$)bUS}BHi0bYiRIvm{FM-JvU)Z_(24x~)dg>%^s^k% zDo1|1-2j|D!G(UCu^H?jc@K1*&|-#zi=pkoH8$e2vv5}D`)gFJRm4He8@~W{_dcI6 zv&w(C@P;=+n3ujhmI3jp8L}lp65{`Q#GWYZ&Jm^$jleF6PRcKdUWRbRax54eD{b_` zvP3@Yblg8y99dZ+=jT7%z5`djpfsXe%kuDx^LH=H)`On^^E$uGT3HNIs>wnXvl2Bp zuJWSjq+n5We5fdTQ)yB3`m&PfOakAu^7c8XMCD@tFXocoB54Tv3gg%G&_{XX$vy8s z$o8xyP-9Q-*|A3Bd*C@jR9zjK6*8%H4{yb!uN#pd_G)7$iQ2{ZR{;$%g|7o9(Z4l z6V!R&{Xq}O#MlGxe=p^`JMjK%fB@s;f%kVvK^)>UHpn)82j1fX&X}Bb-%5aar`_Mj zltWC)ViHFIu@oM^Qp$%}K&eINl3^Yxjf;FBihu?Bc0Dr36tlJD9f(0EA4-K?Vzkig zxxxO!*EoK;0}=SG8g>O9@;h>XCpm-*HgE^w-)v-O5k`%i3iA)9M9PF;Ri-Pvv2Hn8 zW^#khl|X9Cbhq8c;ZeW-MOQnq$$yjkpPwgB*@OMhBx=DY!bu)Nc-RyEOQ9$gX1j-Z zQd6(A;#(T&z5cHJSJOCx6*Ebu!b;>x%{I-tOt&G8{m&~2Q{lg?Kt9nV4N_Nf3WHv6 z#R_!lbg}E%$J`LAI=Qu*%|>6*I=M+G~($D$ky zLCQ4CF)fe<|0T?Q{I{LWfCS5IaaX;(Q*|N+oh~d#H0OI7;uZ3{NEA&5FV!H8t!ay{ zBLAiBW0ulWLOvz@S0*h3h2$a2J>*C;(9Y!7J6;y@*E@3a753DfaKjnxYW_7`o^MT` z4gSdo)+c8k!hnf+C`QoKqUCVmycSM7)H`<8DwO^2;q6(~ynZLw7c+;|jxD@*hf}Bi=%uSD z7njmW0IwRhrm)kpiUD-sbaP(G;0kyo#oH6e;EGoemcrl!Mkx%AIp*s7_l&{q#g^bd z6cz^*QWjSxERLtC}u4FNLXe! zUB;8QaE2S1 z55U#(m(h*=0=ho4ZE*D^A>8a7`O-}2j{^X4updS#0pqacfa^EsmL*U4!>gN#S^R2j z#Pe-~l4tytc@DNuV=66ybZDoekC_hfiSvn?=|0iBWkjRqXReLJF7m+87U%WnTgrz|)+vk7w4S|2I&xt# zj;>r-Og6d^F1&6Tkz3?L8ZtzSio-nLLJV}45~D|GV0f8GEN~;%ERG`JDoOMLRtcGf@IO}Ls|kL`t>rugEnA( zSxXL!J6wjLUVg?DXPZgCqyeCN3|JdvR;FP>m&vhlhz{z<9R}*!?`S3%`V>Vj?1!79 z=>Pl`e8uUuUrIv7(RpjpS>Z3q*bB)^FnreAl(}cbviLneu|VHWQVM+dOymP>^zzh% z3(u7PiL&Wo^B}dQ6`GJaGB^V))IOKPqDJAZaGC-GRpf95T&PV43mUaHu@tG z7vXCjyxu7r?_pKOTQN#~p!^Ja@^dUh%3aPnL+s!6U4L>s!yA@px?|}SSf`uM8uLYb}Lnx=-?;tdi zdcOl(P7GktF1B8BLgf1%736U^_N+?275jC}+lv3pp!jJZ_I8IbcB`c~~A-N@7N+~}YxlQq(4VbD&RZPqKC?Y!8D$FMWf}htGfuc68 zt>Q*seiigm6T;;#;3P5`KwZ}B1NjhW=#LTthk3}7her3X5D&f?LBPbVh*{@^3`g{Q zDAperZdAR734xl)qA|n^#ij@CfwgP~Wsv1vsKN&2;-2p}A?BIYsgqHO_WYAkW7BRj zW+NRgJn;oP8FR#1B%9I6(92Y$lD$lY6_S^!_$FiSw>la8qWSb;PKLu++bVE_Kwx*Y zMd;i%t*s)u8ENtefecg(sPgG!a7&BX=M<_KcP(Z=;Zt(`E6wuGKh!Mq#$BMX=?UVBNDsTEHeuJ@gWXsKwTi>y9N90<)PF)l;fc|dN)~S31U2oOK{cKR}ctHv)KUB z1OO$%JWen7Y;t1lTvFb!exE?Y>FAyXeVnjI81rkz5t)j_I#l)K`|epB^tU%tf!2lw z{6OObOP}#k_R%06F8t_u4`{652J3*vN*>Tyqidl3_-h3kn=p6d4guFrcR;YC#wJ$q zpj)6BJ3NCPcE5O>ES}McA$XPskXbzAJ}kkrEacHkuD^N_J>VFq&qj-5YsVZFXc&N} zlGtTCN+KT@ee;*1rT_l%*ziX^N_u>VPxlDa|AnHB*MdaLptaOs6;Ai{Rl7)dc4q-b z1p=S6v45Jmw->c=>u{DG%n$tm5QKk0WB93x=b5);tz1bxW%8*rvN^XWSoQ#Vo0^Mb z6R{__G+z#Rj!f;B0m+CB!9jkZx=(Rr|9*)Rp`ED5-}Id$4*x_hvWhSUMAk|SXGY+z z@x(vGaR%xq;whm1fi3Ac!CGHr1R9>>6Ht;UitwWhI%Fy_%5$H>&9xJL1ilF7(!`f7 z!3_LBNO}D<6VBkB5vVN%aJd8QVjPPJh|atP=motG)z^7pt35)oo-m!>Mvz2$Gu9pP z>9phq_YdyrW`jrMC~(x}h2*G(iwFX72MMjx9fb4qb%BsMz<>sSeb;9rC~h(mM$D{Lpjujg}_ zb~E)t`G7W_I1uo{_qPnH!lA602R}i7l=7BD&n{-M9J6@m6PU%w$vTS*`I#;!n zMJW&+3vgYKg)dzCQs+6M{W<3DZq6aNEPo*I-wems!i966^PuZZlouDr9P|6xGEY2* zfWs_z^AvRR1Ou1zG(OqVY?kHWzur7C$6UphVwrb8%{3s{y{(Bp2%BmmcJZ>1CqN$n z#lr>@5gYNB8;7Tv^M8rBtyp?ovlcV!RAd!958fZ63{bZ>gFJx*{Am(tj`7X+CC!~k zSnd1ZpQ0ETd`9Be|LRuzeqGLYZT0l;OR09%ZDe1me=p=O^l$kEvNR(t7)6014?*`( z%A#HSuTs{RXS)h<_s}Rcb$x?x>AyOpRfUG8aXTDfM#3sOuY2$qHIlpq#bq8&XWQ;(nV{X2>UjUz2frfY*|LedC821P)KxF6R2O z22d2o`nTcmc8Z4{>{vFxpSr%0$1JewEa{pqrHMe4E?H+)Cm~MZOql!DH(d2{Rzq=q ziC?U+X?}+38vN2cU^%$R`v>l-0=oPBZ`;!YcRsE!`@p^@;KJMcR-YY;mgWUs_@Kx2 zW66OkS%T(?09H*?8cMa2E)7!sXp`qka5i-dk6MrYi#J1C8?`bqnI1lVzJVJ$fcQtv z1*c*7_r^gn-{2Kdm+DAx4a2I;P4t#&Yo~UR9e_0-tWZ?316~JNQ!dZ zfZ${CMX{d4l*J$P!p`g?i1ovm@{dM#9zHHu8|s^T2pda5U+YgK|2X#v&zC#?f%cTo14QH>eUmNeC;j|`Ip$EdB%nC)u`WOn-i}jV?q_cS1kSd% zfFW~a-3C3Y`_-LPb$#`ez}#0l_8PTj_PMzyg2h~eon0nFhE(@7hQ#~B(Tq1H-d_x< zY0Xfsug(w4xPUYGph~NZ!1KkqC(d@^Ex&%a%USmIdJ$K&9@T>*W{ z3^dT;NRv^}X60VoMNhnIGO7|XNC&cm%RCLdQth6{iDb4`A*zN8E0PT?WRVmJ#~gDz8vrs;hslTio2;-vE98ktgdU=cNaiQ3 zAh3Sq(Jqk%C#&p5R1R<7FHj$2BjN1_R_*WnRnCq~H~mES%WqfRPs#vs+ih8) z{@94jd%=cG6*UZqjDNONN-xa?5SK~(-pM&9(`+S((Rng1m3tkH9HBG^@{~8D zL1{}dO&q!yOAI7!iFxpJ!Onkss-R>X!OlWI)En5P+;2*Fh>9GR{@L@KZ^Xwm} zVZ4zomigIpR&JWMSrnD0a;e9=2Q8Mqm9zebd=kS^kK3tp`#$_@SZv)~bBoZOYT0&| z16Htft6-!uhYygLl@OGFe+-RDe0~+bSeY&7Si>Ab(oA7H(dUc+;DvVnG<;o!{n^~y zh-KaoR{y7gAaLqA>}WJw$y>jtL#e^#low~1k28cK4)`l6Lg*i{5S)MZ657eEFlYgX z^5Gdxc!Y56by#PXt2PM2@W$FWHU^q(Qh2x}t2nZ>IC=*BWw`LDG^aRPmVG7tC)2Me ziViOseM(04iK<(0g&S5eiqk%cti#RM)rS!m5QaeA1IQ%Zz(_;fcTrv(8;iX+D{i|l zaVR$>#?ns^T<3xu7QCe+=tnV(ix@~l5sY(`#qR-qZqCgygC|>j>$J|DScerIKgOg! zYkWY42 zdJD4HjU1rYg5@Ym=4hVPGRlGeFL&<(9%XUGjfcyUa0zd?1fm!X8YC)eP|-w;4H$F- z8;O7t0W}ID-Xmm56wt&?lT7=M& z@Ao@1?`C&%A=>ZxKi|JTlK0(t=W^!EIcLtCb7sc%$A~zs%@C2Nrf>SUZ6tn(bB>**Jf=lzw) z0}~DP!$UX_6!I=r=lc58=ANDOH{_z;q_*iiJbV`rZH~w@bTjfu@1NIs(sZ6bMdS%O zt*QHUp5t_$%7{GA9zs3R`x|wh!8*?s5qWxZ{VYAZNar~od3-sy|Iw{gTNypq^t;By zarVxcf)^5Hnp#p$(&3={>M}Q~%|+O2^|_%M=PnX>Xmb-bdO#Wpa^=Y0e1Cd+=&QG! z@6gxaKMH@|C!a%ay#*%1#5*kAZ4XO#@(zT1r?eLexC8j$t4r9ZF8%g{rWzJclG;C( z;@d&09W0;RR(Yq*bW$%MiDH`OfDs}hDFXfm0pQKI!u{(&`AGDH%gg?$%h3yP&Q0J| zbP*yh$(`K~(jtJZdD#;ayr)8jA$20;e+fQ~OYshZRWMETdyZ2&=0MD=9aD ze(+4Zr0^w|c!8S7=>VcDi_!{dkXvfwn}>yH3IRvaMz#2B44^=x{FfO(LU(gSi)BO? z3qtRU7C!i;kgb(@6JB#oeAjQ1>)z|gE9}}$N}6E0?M5KF7DCItH&SDyD9nE z`@H9K<^f4hN=KwOs>Ic<`&1^n0#qH()=-GiD}ni2F;N1P{J^C8G9SerlKBIt1Vv07+eOZ833sHU@E_N9 z{Xkq~$F@of^`-@p@5e{aFE3IxQjgzB8*3{QMX)fEqe8EQVQuZjf&WPO!J$kZFnts* z_6Ve3v{r36&8h#$hSw&W|!VZGQE8Ds@cr`k z$~)tCB>etd`JvZ$vPC4uhEQni0~6EC`WF6N%!*hI-;b&AJ1pTd@n>A-OzX7u-n;Ht zAaf;?vzVO4WcUuPM{5UfkX1fET5Kjm7BU*ose27gzzr4$RfiG`BOon2Vy9WKl0 z7il?DBTHq`C+l0Tk7a$!=@u_z3$gyi_x9GeQ!k91c7s26efR(O^~L`%|2=YU`~3CD zsP@0V-(GpmAAV3`^cn~RYxtuu&3m1h8upr1vm4lVSvBk2bns6SFQXi@)>=I8&_@uPk-qJ8;#)OqcHzr4Nj9i@-9#`mYK z@87=hi0k{Okfqi2{dYN$4Da|y9Qgm+_507Y-$C-hiqY)B-(=`A$Q79>hkD4@_%F7$4}>;K_d9yP56)goEQ$ zDe->4Py3D*073%HeHb_e`F+~5`F*<7eDcYApkmp-NIfVJ^p9t z@dt2@k57XM{|_jEQR!xAyI^Q#NCSe*5}+7It7JD?zR#FopNDYQyu%4_2_5!iulM5E zP8!ibF$RhkA_k0s02|@kzbkM;w0iefxL&I&7&!tN38*Knb@R& zUk9*B0^LnOcatLAw#e<+w$AepiD)ixEdq|a) zd*Vnd2>w1G18$y(4oZ;p$4uPvA_+M5AU#vkSDGW^UN&cPz!lin9hi_%lmGg9s7{P! z*I~GILkH=d7C27&ANTc*8?^?_;{2chVv7*?!d5(i2^jyeqMysYnJv-;BP@ZrS?&NL zwJt=o&Aaq}?#O3+6{B}R%!M_mwJcn#X*(RsCZWMPoJN|TmTTDs=IZrwI&y9WwdC$sS9iX=PT9^I@@BC zjcqd9F3E;%z3e*T_)_pxr|Z14OkM#Cc_k#wc0K=Xzqqw0vYf4Vz(}x%+kaSfFF-?fLn;L%a@&Gy=b0v8X!DN6UpPi60 z+qG^ggXs~Xs(#o7oJrK8fDwIDs#FllN>Ug2))L;Z)VxmlNkyHP)%>bctm^NC<@BECl_d z^J?UDeWr0{=v!U4qz*x9jSQeV_bf9`!J1Y?G3DD5E#EqK0TL?rDB{BZwB|6|JVCMt zBwe4CLhVS)yOqL$`LDl4wUkqgO_mrMMC*C>733uQPSX&$} zgAHfNrxf?am~2DLPGEoscN};E7vqeyQ7^Lom-uJY8vgaVJpR{0^J{P~Lg}qF6*=$D z8-u9#Q{4WXEqL?gY+S%`=CE4Vn5}hqSNV*H@Nbh5<=7T+^a^>nb*i=M zj)9~62Yg>1m+wF5wqE)+e$@WjG>?_{PE9Cj%<#>_w+!DOiZ?HYIJA6`6LW-8gj;I> zqP#@$ucQ!sdD(;)awPLog=AK8^-?}<*Qc-dV*K2^Zj7JHCAN{8xNI<}%@0Bmm7*MR z!|%^$PjO5VXcB5K)B_!Oo)Q}BwhNQkQ+`rsOhmV3zuY89->&?{n_*dxxx_%4z&inx zcK}CdIq&Sn(-Rn*gbTPzNxLjvt;t zk5SYWM8Bf`7BDniS*P%Mqw-JE98=8NTYPR)>ZyI1hLKoK&ncNuUWHEq0=EQHZ$-G2f!Qu@-}gVG_(+&NFe_z&A+MKvoMWJ;NPaQF5&jNcMw5r zRc#hF)>BU4vZR{I#uI#(o@d>2H3+7%u_i66#JY#kWzPDivT^a;v+dG5D;uwzS@dG* zrIn4r?Y-A}M}gBXnS=3jXK(cm%SSkH0Ymt>3HVVXC<@7-kh>m?5yX7)@cqG_lu*_C zgL%vXXgI&f)_FU5WhwXqbtOV9sMish9Gs{#1qbqJC*KHaVTPfmF`TrC)tdisJ{7Nb zFnO%y!INqjnh5f238((;(y^ISW>58=iE8?n=xUB}2NEl;6J@!QkLt}<^|>e(%r?y~ zMLFmP8YkWy6g_J8ks#o4>gq471Lgb5GjZy~2v+NV-R(!H=q3hsFU5DP$d<7Z zEVMqqmEh;b1$&wH>!mTakE5i4Z*)e_Uk2y>u%jU;7r0`8{>aKWKyg8mV`bxGzq(+E z;O~c9oAFmTQ}A~QAH?4`$Qt}w7Y$9<=Z{u4)}DJ?79thw zE9L2~dR=<&2@p|9gaqr-lCXUG7I#`voYe43WgWY=QSWD}U<#N_KaFhw=U07#aA#X5 zt3EtONmRUhk*w~XN-@L@P@B};i1!=t?!k;yl<(VsE;!m9*#L3}LJM3`zzZR^669P? zJVp6|J_Xze?BA+FIJk}zTCTeZ2N+=Oo}b-t*Rw(R=#He&^%>TVeADaZ`^>3$&60@n zr&i0K38ehWJ+*?0r}fMM{b7y#j^5-Ip)Y80g!?lkTa~6$=meaB*f%i0>^6pdK>BNB zePL#J+KIfM$783S3^2I;zrs|wP@c}wvyLjRw~4W`PWlcWxBo|qj+=1X6Q=-3A6ZW! zXjf(3#5BEin}fVmYBXE72BEpC9r~E?g?Z`F<$&|Ba*ly;Q^S!Wus>iiuu>$kCOu5^ zBPT=O0f~^9)Hm_!w*m!U*>l9mwT5lv$7iIj!`#F9|*6{7gpp7HVjk!II-O7~Z3q@bm zU}UJl&6K`Rjze&9l67w$Fe~!acd%R8Ozz?>Ex_N-*4+wU7=T=sY`%B)!Z_bEbb{Mj z*E570zz%kW-fR6Gx6niW;-?GWr}u=w3-n}L53Ua`W)=PhmRIwZ?{4z14_4}0dzIy* zME9~m_#3b5Jq51`UYE71XDH2D-4lUfzJooy@o3T1-&5xc*I$e3#Gqzh@_h|Ymnh3X zkwkBg?{Ox`_tuo!P*=FgyI7Mqix2(5_114{yRSEwgCDf4yLlI{x1W<6&v9K*Y;&kP zi_ycLU`@vH)TeE*7O$s|eLddaaD4HD8+`jZ$uW0ge?-g4WyEP8tEvJ-hPVE6lbKpt z%Kissm#y#M03O0gD-gb;_x5eyIQ(w_8mORJK#n1InKXH z-`El$f%xh&uxSbNMZ~X|&k!Gv72?E*$&C;jSR?48vlG8Kw;zT#f!v#djhjh&(s}N& z#5k3Bsk1I5?cocusFV|1a85AKFo^I6cTj;?oA)+hxvDx(`=|-~2f+RL?m%+sm1Cf0 zBzpP4N(zlnND%tWt}l(3&V`O;lS23@uy1_O zhn8N$_0JIOrkUG@cTw+unA<9R*I*uPhVSz$1isyTbO63rXB-K>jT1F|JJQ>QkLS0g z0eU?}9?<8X77PD9t&h6I6e&6$CYBOOUnHASWqNZXLF8r)^qW!FQ#C7uqW;A#qNqb_ z4=d^isHopMhKf3rI(>yO=d4*$H4810-~; z1ZCBUcaQDr2j$d*3gr`?6#XpBEN*+TNnb2yB(XA3|795Lt?KARv)&a`9V$&j3H~Si zsn$+sJ;p8t!1Z*^c?XG71c|in5qcJ_;RMHSL7UakX5fc_oyAl;QDF-k51e2+PeNG8 zCw^z*NsuKQYR|>*8mPZo==Lc)UPSRwh~n_^50GD!9F$1GQ&`-0u&-79C7>T=y|kSbbLySbcbd3HNBSpDYOfoPZ+ON24Y98eM?k^A1B+t~r6(u1-;+TL&=b8cF{US%sFppc2~8!$`}b*x z5v5`%Enp~(I98JzWQ-uRGGz(6z<^&P&q?XCa6kt)MaA|LI(H`3A2`>c%owJ_s0zBE zHi5}T+&F{!&t9$nK;UT(f$5~FUN~F*M%MpE2vpV;14SDRH@3)oODlPuv#Ij!Ij~1) zD~rd!1*c7MCoj!s9$M0hQapj;G*9*?bEZ)0Lo3yas3)*YGm1Sde_Y_a(6~Tp2rkLI z5F7~gWNhIg|K?Fm?@@np=Qm*!FHmCEUj^B3Sohx!0T*=33In@#KT$*TD2K%KU6o!T zNGzou8-a6bmC!`>XsEMyV|-%h#o>3Nj4(v3Rz)c`8a`mk%ExlZKq{smn)7fSpVs4} zTQv>t{uT|Q8-?!ddh0$p)Wu(~ZUqIxmUu4~^l_!9K|=m+2`yR4cOk)-Q*u3}E=-E9 zGW_Npt2wveMLlvpw841fE|J{Y3dP>+V$YppO|kv@_&jUXg#*X<*N^h;IVpQ z!N9mat-#8wuL-^Z^XwQ}7$G0l;k_*)xL&Me(F8*=r;&t1NP|2jWT|O<37%B&iyaJM zSb-#tWo|z9O%qAEl=b96{wMq?0=HGnozfk=(#BBbRyA2w!YH7yV&+h9-E$7 zfR##9LG~W&o>6FEyq&&myg%>L1LN&spBC6RtMT@Ec;2=@EBK6RD6bMb~ZFzp`@o!_Z`Dm`wol~QlJ1os{KPHK*tGKe>t8sbxB~F8`4fv^Et&?^RKhQ=y&#pr|>4Kric21La zoF;HsGIGF54CNI13sJ^dfwCu4O{YjfccCZHga|PYcKe39u1)=A}G>o_z8`Z8R{Pc+F{h-=`DGb^lkjFw`u>4 zB5_{z2{j&h`U|p!awd9Fn zs#i;;O2_l)EE$*@6<_I^GA^#4lgL?@Q6b}v!=huSl1D1UZ%25y& zLOFdk4tJmx_&0+1&sJnX1~bfJ?B6gs zjK)L1C?*EhUj^e_rf9Yea{j3be5{uerBD>Fgf$_qbO{_<<;Fa8;H z1WcpB7^*pRe#}}Po?U!dCMUZh-~^Ft>pj^Gmi-|IfwHL}Fl=+hooR3e@j9Y{zykQ- zZcZtvZnEy#p%ajJvv%*U0mP6%`pi>#AqqWEE%=3`QHv)R*PGk?j@7WtijL4MawMjWRIOwh)A7+?EhHRUkeNLPbbTuiW%ux>%sy_o=GFW z;4*jD+6mP2_AzL*Ts;KKD$!YsI-%sViyO6l#A&Yj5mKU^a~_IG8-D)wcSRc>wlN9D zR#pYErRA5}z&jOU>O^e`UHXl;su}6xv4?cKl(p@)sz;)>8XWK5=`JkcU9V3W6XzXh z^n=9p{MFr)om`8T((8mf*?DUBjA4R+frpc!Y})BXQy6I;W}#tqP!n`W+{+@B!Wv1} zZJPLqYl`rN@-$-r5ndv_fqix)Tsy6FqyEOUJG`TTkf)>z|MAXm7a5oKYKaW#A28DY zj;^13b5NCAoy@k@C%>l{x|5Lgd>LUEm8~iXTaA{Iy2800Y46e_GXlLS7v^Ol>NLCUpf?bvZL3K8t+8LdEzE zA*dRe9#f{-eu`!v?1c!sRcH&PUv)|!jZ*o6i!$;9S7oZQm&7JuUB>AYm!Bv9`986` z#3R9%b6_$DjCPl%OEIesz^u9-FKY0qkY8eWDUBNYu3)zVgqmh97U!6`QpX+pDI9}l2Krh&d5obvD zmFY_fG+1>xpP1t0H>^hpPP?wkG!drG(ypA>IcbZSFq1gM z!HbuG6!p1qG2-A~yd&3k^|sL^J9Y9gP>eU6OaDq`<54|t`N4Z3Ftd5QV1}_6sh?(` zCOWE}Yjakj0#5)O1wb4!7IF<<3+)Pt!7I%3Qu8b@Pev~AdyaXIz>~uT_a*E%YAxcW zIG??*{)V@<=d)OM@d-WKnciecO}zrE0=kO_K*&X}tDRrk{?Zq$4*LsiEjQ8VD}RzZ z0Uuf~Kl@S795dUOVpH2RWQB^DE9SspRd^7axA@0BhSeK0} zWMu!_$m^rqOj}avIn$ae&NsbC?=hZ(V|KTc_NX|2sMj@oOHJqupk%KOEkC`)IZW@K z(-Gbc)%Uk8RA21(+fuc~s%D67#k`a_@2wT{j*2TC3*zCTL139$s9s&A*Pp-C>(64U z5fGLd7>xhi{W!Wei4=?gn&R-R@=QG^3)j#|bjGD-$RqJ2c@Ss5x^n1j7o@2#UJ!wB z_!9CG4YA2S5eWN{;LG`Pq9YK#!EZ4V?#7EsLIi-wgD>x9ZrOPuYihpzbTQyS1dsCt znKRwiowe#>4cE*tT>qIUa9t^IjSs_hnFCh=;VNgi01d?NNN&dF$ikYWMYzD(ZHcE= z<&y)L+qV%R9Io5PGM`cFyy7p?_+} zPy^f@zkv@GLF<5@S-lV+$!)>c!oiYaKf0o|*a+XD&Uc<&k(KE^ z)ml~9siLvG)K$?~gp>X3#N)04A%hhdAG>y#CgsOAgnA6$66%J3AYqDe$BEvo;;Pf4 zzzE$P6+ih7$+hkH$y$Df>a+<@>aV-_+fIHy-{JDYOAMFOE98Sb{F*v2;uoHmCwL35&Be25oNPXW&-|zFj{6rwk&ZrAwDzTza<|B z()mAD6R0v{9+pYZ1gEjQ`F<5q}nik6XP$hTMJfw|0FP8#Ww{63OIgfY(pRJ}+Y5jUYKjaIrSKKpdhKg9@&3_=B{p1tosen;#f-$A?7$g%z?! z^K1EjoX&>OU2s)G{hKcOzFdf=mI!=c&{|D!_w5d6?$!Em+bTud1 zw%4bmOVZ~7Jjvf;tg@3sZihZg3Rr|ffMM)U&!BXW!CT!OU_cI}x3A=Q{JxH*seuE!jCDHhIA^)v=v@Lj%p#vwB z+%f6uqrKtx;3AXz1E5~!gA|?U2D1YU^rFxJSYy=-5v;KSX<^p5ZxdO=sn|4#j+1|4 z^>V%bw(jQ65RZLb^i@$w`JH~CkmYtw5PLIY5V1@Fk2mu|8h_}aFpNRWg&Bib;}2ns zUFJt_YmBk(Ld_V`QNX>FnSo})ukL{=o*hJCEA9hoFydvm_!+oDv<+@?Jh|(x?7Y9ywe2aOD5`PrH&iHlaX4;Jkh~DYYMsmgl9r z;rB~IDzeU?bq5LoXV4mxf;q92`>mlOawg1$8B(k>@Qp9lSHr>ns|L|3kA#INg^+5F zIw5Bs_Jl1L;t9d%_ESPek}qkSx;lrSEt9Imr|QZ6%35?R7BV&B?qvKy{`%dp(rA%< zaUlKVv4Ke^BYHzy)jj@U>3mnLNc0B$*lT_uzC-Uq*R z)zB=8s96+Kv%q43rSYMha!5)WEEA==G}d<=k?%Fy{@6pyccO*%N8*b1M|lFEOrg6) zLXQ;1^^(u=7rv|q2^}fosDf@es?bjc<%Z?|MQ$37#BrEN!x5}T*ngA?jzjhgW``NG zSrvfm5X}gg2NGadP&I{dak*9dt?J*Q>D+}cr#~zpXlpa4o~82pF_}6=5R2r2JY2yK zKnp8V`A^E)>+S_q@SV7NM}07W*s1nZ2w8nLd(3SWCvDV1wpJ>2yfeC0Yn6ctV<8BD zWF&niM{t!)r6B~bI@=KEWAp%v)4be23g|J&Q z6S!&=Htqof8og%JKrovGcs*)rH9`zIJ;+d3*6qbN@zFssGQLaH2R|q&wuls4OopE& z{-Z&MG<^aV<^_GaNuMBB<^_EgQ}dk_{B`Sk2ID(7;gcr8&-DGg+_Fs)T)`(uP@bTL zByt&sEJdCx(=+fS?_|kyaeA(#L%rpb7~~TZa5asKZn~qf@f%kYclJ&a@}K~ca|Jf4 zvz`#5xOtu?3jM_pG0-P9+NtAbf+$j1nfDIh$9e;)DPtZ2c3;dfHw@go&cfH zHNHx#=vlGk2DwS==oy}B`=122eeTe>l^RjD#N;)&U2#PO!?E6V=q2Wby=u+h1-HX5 z5Zs<2kHjDd#!@|W{nqd`1sKW+e+*5@3(d&s$-{ApP)kE>}c9d29 zu|Q$;Y!HRW0Sv_&6jwuBva23M%2q(Eh4Q>>SGZzl{4ve#b=&x(<{wMl=Vpv{;VfFS zQKue8ME;_EMBfG=%&37x)mcg#MYxhBgPlrDKIAXwKm&#fd9D;#9Q%1h(JM?*9*N&c zItOdimW(r}sY3u>;#M6WEIEL^9B_&cFe9c1b$+GwW-lY16h>3Up!Y zgkK`ydnL_u4OgHYKo#O&x2hWOMrKWrTD912jfG;EV&mh&6#t&9nSumQ*fj%bK~DKf z`w>_UyWzod^~@pcL%Kq{9E}(@dW$ZpQ}_+tW36E}y6t5>ZwY$BQ-GOgIM~Qc97{*g z?6qMTNeJ!`2(as03%>9S&jO@QJN3qK5!a2m*)skK1OK?TwU%{@)+$Z;IOTC}xIvk* zSS!F1-h1#5f~~i`?TY6iyV3VEOy8p*@U{a1XFi!>jD&8{cnTVaXJW;9v<+rLr@2VL zNM4QvU(O@vyN!EgDSn3r!Z!FYUetzuyI|iJyX8R1zu2fwRT4N)s?Gv}u#K`qu8CSs z99mh>aYtP4)(Z__PJ!~gS7mn6Q-Rhm^m3P?n-YPYN@89H^<08W>s+l9Gb7 zrug4C-ha|U(-v~%tzi0yvC_AJ5yvgi75u%7)$yh6j@8$=4U8ljIZP69r8d8)sU;HJ z=5D;KI}Pk@2k4|%B1OGdXN2>=q_c~S4sZsxrl#Ou8qjQ2z0YsF->_;K-YhNu4|lez zYxx2AT`o^2R!D~qv`LgwULE?K^!BVd?e?}y0Vvanx{vI#+OdYcHBF;8dkF#t=>VP~ zoLUtHIw>kBIgGj`5VbhH zmckuB()dGWIQ$S5wBCFX6;!4+;r8er99fETf75RT|0{26TaHqOPNNL%fcV@|je$CzV-PDo&sdFtvR&iYke#|X zPVe7VhmJ)Ys=q$;$2N!Rk^e*t6+u|a>M=hlJ_9wRUmZ;4J8+a$^)!B3s}_k8GqZ;A zQ$N67+!`*Lm9n{1%2>5bBcP^TQfC|bnENq7S!Ibv*(@?K%9a>rHsU;Ol4j7zIYb}1 zo3RSp6|Ry{nN1--$9yT93rv_r9Oz!f>JAVg)hA-X9vmv=xSs9kYFMrLW+$lor!0Yk zf5J|4vB7Bn;uD0=wh;q`hJjS>5i0OMZI%4W<(2U&tTOf~~vHLF;0CKuUhooB2QP$X|a57tenN3(GPogbV0-z#qB+LkDs( zw^T-X!A zhP?7ZNhvS6EDfBM%Tu$gx_ybT^K&<8c4jHEbB5$$;EO%FNxk>5WJfMWH;i>vP$9YUThQ0>nh^esd5!*%N zE7ADl@ljR(6pXcsz@LGS>vc~azp*uZ0Jmxr_zXPP$#gXq7bWTmonhDXc5zYn_f~L0 z&0EF)P2&ReB0I$dD~6mfdL#_hWh6Ba(oeNWr)FGHuZg6eFg?Tp=|TocGAJ=*Fk1ut z)D0SFX66VdNM3fk;X&zk57R5D1Q}8!LwJP8zKRL(RDysBkd=hj55rgRlmsm$5aLkf z7dXwb%GcP%JCJNuf+903&%gQ>Z&JmbooAE|3_)_~WJrn5-plau*4f_i&GhfDi0JU} z9Xxx8Sc9$MICfwSzd|&uFwId!;4GU5u|m`bN(J9_5n9*qWXM_w$r7lqs;dw2uqaJ6 ziqe8OCmd26SRJldP(9*$aWmjp1cc}uv`Re6UAKXKY<-utLC0SuikL^_67zV;i-kI*txZQ&DUYJD}Xk{ttwA%!iiX1 zvF}noeP{W;?237OzEs$getUj<3~4U zQAk7LdavNZcp^}WeIjOeN&U{I5RCy@%p;w~LHNee;h-p}7!{bvC4fSUcnJ8E;g0`p zDY2BDXfXl)Hw1Y}LUK1GSXHB?y;l2iq;8;b-UaWk3F90vv9NUo6%QB&LP>=W7oEaXSk+)ocJN z(vLzZLJT^Js}_gq#s@^oEi)4xGdGJtI#09>^L8<3U~|jMW?5{MSQu1d1md%YVb;)R z#zYH5ng7+Gr^r%{`@rA;11mTPjM#HSGKMC3Hy%w}xkM`@K$UexctH27=kDq(u%^eJ z04dZu&xn>p6rvg7F;u@Cza5vD<{<{%?&5Z0o90i;$61BOWYTaxe0(@2Ica=gQc^;` zzYf-0iSU0H*Cu-WUljP2dbc|pF#abJ7$|EFqP~v_Q`K0%XJ^vIcKS{P`tM|*zc1&v zr;@6AkM(!mIo3aIXF`y{g+f?gstuhAr0LYzLnR$cRytRSZLmKB6m{f4vzE1<)XSWTdnO_I!2 z1vnFn3H1gzlLJ|fEPCd{1CTdP#m$ z9ivR$Vf!be=kJe~X(PI`A_>?|tpKo6013Lex&vBtVuZ|y#iL&K{B9_gJ-6eA>NNlk z_-{~qz~wc10>B!mn7x{1HZqjzRY3)E(iXN5PcB+&@Kg`(+KF~$+F&V2saaI$p@6Xz z0IEPP5|osp7Qy^^jc zXfqh1i$L|_VkQYabRtyPp-L_-67S>pHq*6Ja4}WKcWiIP}LSMOJ7Cb zh5t=RA(1bG_UPrJG|anWim1#vQkdislBY)Y4qOI*q8S)H9L*yk7CaIy;l!y-z$)HZEfR9c!b0?w zb-MrqW-q#<(I7A|E!_=pxA{H=xQzp36fbjtJg6T2O7J3@B2>mU5X43b*&H;bWC0+_WPSrRtJBL+Ub{jKv>K}Xn)FVA#dpQ?UQ%UUxK`c5aF@p zo&HBn-bI8ui%=H_`$+o^SdRw*mYqEHG{isPkc{eNPBi}Q>X%0o8PU|C{*}7B3F;+K zj>u8#rB4#(z+yxz1S&36Wm9)I1)nDv{M`IO^m{ZTyV#@>x{N$wj0s_%z_0$~Gm+rSNgv`iPM1^gTSC~6$BQax z+^Ivw(lnr1SST0W}a(u>cO!HRX zsM-+G_nSWGdE&Dt^odhrabY)jDas1S2_ub)MF!1Knd;B)>*+3mC{7~!Qz)v^INfDX zanB51ptoGmK3Ih5TTfwb9bb_lg!;7h>0=5@li!aS|I{Mwp8{(XBAs(rkvz3EnJVQh z`Hk~tp`!b8mYl$`z=kl<+Oe&ZJ21DXPY(h{9%8YRvo+D-6eZUYO-|KR!ex>{zNJK) zvk*hmnP>_zkyh0un54!8uEzevf6ErXdpF_>_b2|F`xA9c5ZLYMLEJ>sU{w!Ber&@2 z@OZ|(4f#kOr+$nFc;vju(6(s|ZJUA6HrR%NUR-Znk9~^@r@za%Dg)47c{!g-$Mt@6d+TFYmm>t z!|jjWWVsbl%s4%}!2gEY*g*J>00-vJk%R<@Y_%UPA=KL^Kj-{rC%^6>^F90qYSewT z9cWZ-;*l;LYqEw|;l?`a-tT}F{NTn%t6EMJvXh^|Mk&G2L;@5@?md{JnQF;nND?0H zU})64?SOG4%&9KsT$-2>6j-b4D9i2SXHyJ#EAd-3{HvYzVlW-nuhC=f&$Oy(yugmt zWvH?s`xC4BYE&5(=j5PGzz;d7p3lIkUDAk(oUVBA_@+Q|XS~&T{KeR!*)7c-=E%WZ zB#^sgH^n>TO!xksAWoeM_ACfolY*sBJ{-RV{sRSpJHQ3$2=tg_wpX}qv&uk9iW@PZ zLJyQ%v!cNNE<)Yk8;GrLKfc!vW{x-#xBt*i=@`5Mo!n1n zRUZ!+F+yHvgk<+&AX>8)`$bs0UXD&_?fOE|uFr;cy|ou83>?mH@C5xGKSjGnOy6U| z_Siqu-%+obDFi2j&OUrI4rIJRMo@%(3$)!8)drQYB97wY65mP(ARL>Ma=!6SAKw&^QI0Ue9^0E%?NpJ4&63OC( zshXJ!ry%tEksCzRzI`M1S zu9J{zRi{!UJ3Me=pAVWe{^*|@PnwPZx7YV+c@}u2GSG^0rW&ibDyr@5XyVKc!E!msn6KiG2%~+Z zdB<_)=IWe#q`!i}ME$9XlZZG)rg1$j>pS@9aluQ9%BbZERvZ}os26`X!R+S4tva9r zc-P#xRt5{oyD+T$#kg?{%nhBxa~e{^rlRe?1~zTiz5*G&b3el9{prw$?JR=SpWkW+ zrBVAUHU9qnbMRL?pmqG^BO*iN@0>mwf8!(Z_ZJvn)V03W@rO9d3{ZQf%Bw#j4z>Jm z6_F`@fk=JOKqMmX|CJzexknJWZ^zL%A7N@^dzi%cH`_ra?$1~Yi*6)A#=L9%inl-J z{KO;DXK`}t_zi{}{5Bc-bh-WC!Hw+yj^04l3HY^>yY_VM$JyqMATcix&J( zqVoHn){Z|I?=}&)u$b+V=OSb1St)@4w6KZ(h5MiemF z#QGvHFf+;7pAk0COoYCLAKLat-?G-PktFAX6=SiTnLu*iYE{=UUL}xRY>BnzYIzK~ z1`j9)QMNZ26nKUhY;QAYdxLjYY;V_Lzc#IB(zVJu_Lz1eZJWA^Ye1Z%)SU#P+sk8n z2uk?&udSAov$QTlnX7sj0DH2IK=R*v3xKuq7_uIZSaZ^A%?7vcX#0u*O6-r?B(#DH zGduY)p1(;PEa7kCrjawDB0Cda-q3z22Rz-|h)&`M51aCyf{MBTnc@DSE{}hsdS^{b z5S$9C2WkNR=nO&=)cO2CE>4Il%2bz@$O`4_o?M~efT857JkYB@c{dV#Ia?D+6g(m7 zBm52>g)I#4;YIvshdwnH^$AkKxc@*`O93!-WLZu9oJC3`LeL9s24nOy%tpU;vG;j+ zCoYGfD=^|FC33hkluHC$bN7#3)?@w1)KV1LAIWgxM`1%YxH zw}J(MSs8kW=bJt4qOOWnD+4V9%QI-q5+9Od%z`CrBW^iR!#A|VKF3cVZ`F@$6`YUU z*^K{Fs13(k6@u?ZJiH=&yw#08I0D#2GU9F*M_|NsB=~YB^)e%nJQcrX6UhX;z<&Fv z!T*Q}l3!b$xsH;xj4=asbQ4MR`BsqwfEr}|wgzB37kcSvIm(b)q(T+)Gd2)g2=Q*b zKKvnWW;Kp{HHd>@$Sp%ftr{8{v{V%|e9B?%QxKUjNH(smYOdI_FiJ$xaq3*b2YmipJ}CB6>R+~- z3nFvD(EzyUvDeXiE0tVqX~ms8IM(ep#0ucH9o`nyzqD`YYGdCVFn0h_2I6)YT(^^J zEq*OD7{8D9;^K`@yU%`H?%Kf(NM~|~*~dTuvtXNb=|Z$C!R(Po0W}OqS8qyB!&)x` zSDw43;T~2s@YnFs;|yYRf6kxZrKb+qAZ+3Lb7qe~tj9mTZaFoo?dw|LFZemo&ZP$N zGj}R*lg8M6Fcbe^IKal!(leVe(%*}2kBsvsIX*V#^VOxnOWmNhc{%Mzq=bJk{yxgn zrpC1bOc`h-X5HibjyTiBC$aRv}e=O6rcmk;eft}`a^?m^1N(?9C$(ao6cwFj|<-4ra z9e1*k>jo-Ke*@X3Ln4j^5w8>!cu1~z=XNvh+J|T7%@)_wamST>_4qPc+uv1^- zT3;_wb;M`bSQGStqr&C`5x^xJ1^f|zu_M}m0iLUGBj8e#A&$BIdIdH*Rqyb^=V>ro zSx1D+HG=aQFC?CShX2^E;@fz8AQIHpnIKRE+S)D;($qzvmQ)z)V!hzy7DO52VwL$R zc&PP#?GAlt{_fKmNNZ#NNiz)(V0>nS3gT#3aJts7FcwzTeWWbdlG23e4f&h%`$ldi zZ6|mAArHfp=#ocCxo95mHf=?GFB}%NA*_MPGcZ6Qe87{Qrn>54AAK*yK9)ywF~q7E z`zr0HUvkJSb=#etljeP59?KX=1 zn7aE8ap-^C1rGh&r!yiob&F1VlSwm?gmI6SJPj|lpg7uJ+NUr2_Zii#MbHB}M6E>d z|Fkx_LIlzDDtwk9f3xJTo9k^DIPR*C*yEffadbC>ZSp9XaI}kh>GvNu;pHqa&*_$C zs0_p^eBTde$U)_dQ)r8BSCF` zAN|Dr%)Of{d;KU>2Aw=k^^(excTY`3$s}LSNT;$9pZ47c7g67abkv8%SDd;&W%4CbWd!ze3148lU~gGO zed!kJgM^7wZ_AbH$zRH*a&-1Tot(~Aoo}$`z&8g8Y=54vZ&E~kPxVE899sFVt1SK8 z;O{R^mC2P-WdwXBNKm0|0$NH(h{DY>lE5emcaw;?MC0}6RdsNrAvR58MB>tZf$h=ji!qX z_g;P;tBiopjRe(G*OwkqUqvs}C-ir*uI%;6hL{(GD;wri=8W$kBoMx}|CIi|*Q2?= zXFK)r`=Jk|%V!mtDo=K*9P!CW(`AQ$>ye& zWe$G?kihn*>iW)#sP8qWKKZVzT0zJ3P2weJc37Dv=~hEt#5cZcBbhszB9zWR^pa^m~v5`XTnbarh*g6jG1 z&L(xwuTTg=KaJ{BhFT3;@#UdC@G8mbA6ozoR5Nk*Rn~DL z+NcgZx3eiYQOBb>dXe)K{r)`YMk$c*w_*?{fVtFVoTz7+oo%qjsa21!U6>jXERGR>$V}GOmoTPtqWU<#4b$I;AeUT{VAKN+cc;$8meo{HL$rql;FIepYop5I|>WF|}Ce6%sRC@A1Ej z{rl@+y4{cO&e5fElZYN47aivoT5jFG>J34?FP#0DS+|~m^ z4wlPW{dM`EMmLZ#pmy-HIt#yoMf?uxl<_uEd8FGSHdxGzg(@T_;u_i*pmK8m8wkS< zjp^m|rAU((S>m9GXw|dSfoZ~G!-rGEJNt-C&=6{OtI0Y;%}F|g6o*wsR)n_ey(RtP z)@HIjTSsY#EQJ|M>(8ZJ@tE*jWqiX? zesdONh(Dhb3E$TrMXju0zdG~`xyJE+2XBfwE>W+Kma*zK*7(?SZ3YATAsCHxBL^zO z9e6;JQFSH;2?0vpbIb?-E>_16a^EjElqT-^0xXd2`UnqM5XGy`-@Xs~6jlwrfKW&i zZ7x^?N<`TV)Wioz;ekK=DNVPOL znGkMSuuklAXTNFPHyIUJtNJHYHdX+>1>Iom;g!f>q%@U%6)}uAM99N{gMR07Ox?0R z^)+5q`VyG#7+MN4AdS35m5oiPqwFYaRU=4dUf>+sDbLHok^aTG)`PEyPKAiw{p-CBp7u84Cdos^QlX}%X ztyQ}3mywlP)p0;6&c`RPclGf#X3kIWHD+7C+YmYhq6Yh0T(u7nNR^GsqM%#Oieyhn zZVk_3Uk$bonNikgjYM&H#2t(~t1`i#8u@e-{SHH2kyDHw-zzDheS08upOA@Ye*a@yLzLPq`yQ=(6ieFq67Qki<>=CHm;x$)N7l;#% zmZ)6T;|}+w6Kh02D6@H0tF>x=`VebXDdI{&G?1Hg&;wF8S*-}9Uc7Pm=7pa06IJNP zCXrY8h`w+Om+jiNATdsThl?+<-55~de?qaj^h!1grjq7S8JlOz>76iR<)xnp`W>~u zwo_?8To`&dZy`YXNf0r_wbg-gYR3%x-_$SiedIq7rxcBoNMt$KX_h=3_Y}44$w;y! zDpP_bt(Xc#zd9MTnMB&e8XSKL0yEPJsz3K0%`@wILjQFYYy&jOKbSlgl9XW?)RT#xKb_crn%lJegQfBcrstvgZwXZ~zyxN;vKmVFny6 zAY0tZWe*T;b))qZ`p$A`o)l}l`sQK6JDv$JKf0aSPW8U|izeLF#;f2yrY(thD+h8b zU`aAfKlK`HVHhGX7A7Fk@YKUE&_-97Mys5rd>z2qw1xZctFHlP)^G?>MhyJ+ZHHmL z>N>Xv#QZ_Lxyml!XK>5|f+JX22`r{P+l`zDyOtSS8t&9BM1e+ES$7d@(C<1^)`8FY z0u}2#Vk47KfN!|J?$Ans4g4Dmo5(-H_iN&Tbwrg_>rqk=%3W4eLL4oHJuhO!~nO{PNF=MKdvG?9}7-u3+O3}x>T?7tNL)0oeUe%U$XKa6gd zvOf6R*$W>{zt94=wXR>NjDrr>fc5u&p&Rk;!pG_TLcn*w&{Psl*uhNdvF?3_sP!G} zUY3Tx@$dv8-!B~o`Eq&^HuhA1y}ku8Y+!Zn zr1|_ z=CI&AQu_*ar6~lh!`1!oz_?r*q`M~b%hXx1{9~G|tRo~FH6KK$F&?!f-@XlefYTzx zxm2p%GqcFs#T;j_+GRLj`$DWYd*hH4=n3>a6%bB`{h|2Kkq&_a!kotG9K}?R&zhQe z)@(INB3zwF%2_pG4`(0frxO28w%E*^zJq;A2L%V{*W}VkAoC#iC*U~0d+7;=I8ztT zp)i|9r9)i!qM{b5G9EdAYXz!bCQcnt(4>4XRzF^c{grnKz8ln6&$5olgAq+tTDLBe z`c+q$GlW06e|x7C<)nZ(f$08bs&h+GAM|b<1QLmeOjRijIY;=-k?=0)P&g!=&TS4q z=C^$KKkmN?H1%b3(n+||T^htzJ z6vJ$J*32W2N%)r1s5Wg^#mmt|r@p$j{h9zn{PB<#c52d-2oqTQPSlDqM*QmSj;oip z&UX>p9T&GDhRJ{C{^PUYV1V(53`75{O!weFc{;0c;Hg%=o6~BrGqE1OmG=|jKdb7G zq%`p0cBE?g+}Opsf4I;enIf#}*VKR(e4k)HH0YMz`hnhl+444S4V>V-h+469L)2;X*!%KSvf+d*=q^_Y6<4~4>r*FCA2LHIAMD^RQ zMmXo!rUGb3>|HRUcO` z0&=ZNuK=tdm0x^^x^?tzB)L`}p>C8M^hyk2UUH-|nAV{PmI9^Ohpk120089+#&^-{ zc;~j-qWtW=mi+*J0eBsAFE3gv!(gbJ#!6TIG*H`7gjvuVidv3gks7BnRGAD?5*d~< zgY7z@6NX8jI=@I}2uBxEzrLn@Yzl=m6O7vUCr1G?B<|e3OiGH#cj)of^R?bVw+iG- z2kQp3-oZk3gU;|rlOd*qqvP7@;B!|Wse`4MN9+qRDd8X&Zb*=+C{UDO)}~@B#L*EH zgw^{gp0Pe-umB{loK%qao))f)gnO~C^sc8o{x^bMTM?|0oWOQk)eW_9I{L9A3a2u7 z^qWSzodofcjPngKBXT}OED%sI`X&sl z+$k80wy#dTF%MjWGsr-U(B;C@LvnGeTAS_aybSsKBEKV7LRYn#Ga83#_itJt zEx4~WC5rOf+)uF_E?CI#y#x;OTM3Zn2@X0S>5rLsS97cr^r#ewMD+r2DCU(@=>Y)s z6mv?{Q-NMgsqdc9QWtb3x=Pf!tgvBMaE%M*k;T(2bwNnZSEGG?p9o#qB4Z9Z1dD0I zF+{jd7ePSQ)2AtOQqek!93^H>;mh7W|0JhCh2+o`g%4SSTY=pPJ|TTY?2vHjCj63@ z?RZgNjS&Vtp`T_@exy9rEm8t)))_jR3@pS9yZE$S7nOrSPnGvY;;;xypgvc&WKbCd z=f((d8TzY1#9^0Sw=9t{@@}FOb^+IYuX119n`-8nALDo@-RlBuTC945C^TY_m!a$9 zDL8-8Y}K-tIKWDE()~EMZ|fb+68={^@&q0IO|F>Ut{#ovrnlDH6RtQ?Z)ITpQlSiN zgMhgPm8qG!(ckycpfQcTtCfaa&l1I_$-6#jF3e`nOl!ZQwEh`;KD;!Bp@6Dx zqPA>T!#m*8fvvQN^8t>~Bu1?_{KadrK{U+c@kc5XFuVogFNT(l*lfmaE=LvW6k#L7 zwqeRysXYz8*R*v1jx3tX4lE(ifhmyjvy)&+bmL@(;5P6wuvx=T;Npeyq)SP}eBe1r zkRg%yr{kCo@5pFb8svJiH_pfDV5CZbSB^W3p=IT^#&%exq9eL`DEDu(57H>g6{^l( z0}Rxh>oF%YE(IKNGUIr=|N8OvG3yKLsR)O;eHXn|J;Nt6Vgo2o-rJ`B@B-ubcB=PR zK^8Lnz6mpxR{qK4di^c>|A&x_SYrj3;mHuf3baJaYe{R2QLoe}A^E{pYm8xb47NB0 zZ#(NmcS?x$UHoCYUKxvl7blY)BMV$p+9%W_%$Z*-Mwc-J7}mDVFX^HqW-0%bUOzuh z%4zF<$=Cx}bbNBy3a{67@QRa5w#HZd|izRi8}p6(~uAeLBO@`?>a|{)pJzqdj*1H~GGUo#vj)-=zbB zH=uylPjLUp+;mwU^mqHthbw0B`q1$3@_^-!*4LLKTz6OZ*~jq_KL=jh-k~lyrvzuC zu*et&d@kdtLEM6v5q2)YphmLPtNvGTc7s=l)_qt_8fe<*`FD?A0Ae8-y8~x^h=!5PM4&+($kpE0aFR=jC2dbKwBZ* zE?QgM^S}`)zk8$^U+agwV+8tP5$)?RPxDUzm(!EP7^zpRUU(f)aw7dLa{`16f{`!{x;(EI9&HtP9# zWDOki1KRMOn)vV2(03paE(!J>ICc65`rUzZaMaf8nxtaw!{zsgAyDOLB1YPTo-kUt z_(zUM{ixN6KOui`=C)IBSpo~iQGW+5s54PXs3A&s=Z`kZ57FgMWBK>jvHbVu$RBVxsslpJoo*)IPYM0 zcB+>zDPi#j`Iwz}J<_bI1h#R@V_FB#4I8Wig&-$faRJu_+*QuOlHxejAOz*wVMv-< z0l{2-fZrOvMS7h8f(M)$E}1kBAh*1*UGf9m6tS0EF;7^Ap|DsPZP(_P7~88i+#!A? zOD5ZuOhg{34hWH>4B*(P#|)andN6~szOXjEaYE!e$&5i|9ftUY%SeBaZ{8LU6mKKJY5tZi&CbgQojvka?Qu z8dQ<*+n7?odu|)Ji)xk!sE}lc`g}NV^8<0}q_^SM*UMO$AA6OZqWdEr?$9_aW5xYd z7B45vhd5`(&pu-vBPtP`Al+Ff-AO}MbO$Tmc-dXxbY`9D%zk#Jn3F~(O*&QUyI>%E zO-N85CN4Rn0w051`bWdLC9v8QlJ~m>$C$^Z%!mdm}F~RH{kDleCg`N zshUpe-@Aq2Z*6o%R4~08c69j~(a^%k3IZt4)z6|A(K9wshK)IB8Ar2r3!Sg^KPFq% zgHX(a_Cna?g4TL?EVP0P%yL-_&L0n2NW?2z*ejPX(BRm;>`l-+YHLDWutSoa zuSFl^AmTiKEh&fW$MxH<5(MXf>>(oAcNpDSByVtR4W@o$JX@pjif^?%iH1I|Go1Dv zM;CW3xqxXnx&}nTkE#PKBkp;+gc%gm(d6DKb}@-Ae0Ur)Ac317P7xaNoP zQd-D)VG}Y^me(3W(*=H%zg&u8awuXkb46Ycocmsg-?$o&Aw07ICH9?+A+S_H zS@#N4_d-6&)%TwcrG(PWs#*mKGx%wOe*Pr02u^&BmKQ5NJzU>gN!`A;rqtqjaaX)- z#$wRdm}FHylEC~r6LyYw!@r9WA92v~_CsF$o3aJZsVuW2)DIs}=5&-nzJB;OHDRW8 z+6MB6^=R#=!L|7HCbe|=wSLUtO%B2h!-&I&3=_Ntl1oddPLx#!D z^sIU!-Kk#$e+v{h0kL86f&MpjwW`JUXONxPjAn;Euw?f&_O`13!qJH!3y}{86TLl< zv8T{aZ_olVjzdP!K~D_)`erh4;A#QVO&n`qlM7p|GzDWwIz>!L-OKU-KzuV`9RHi0 z@lR+TQ;M$8B;?yr~sSqBJV5v~Od^r(HW zV!mwMj5j@kKC^YtvEvb6_aYaX3XTME4Bx`}Czwe(fw}+82OOuNETpyGJQMNDv{3W# zhE^F%R7mxshh?>aj;LOOW~dVv>9w6YYvjCN*E?fj!{fQmY5~S{JOT59EBIQz2tCqMn-G( zYk;CSC)hw%iOveec3tySZ>;atpi8w)g+3sJ0rd@pZ7RjhHkG+QBJ{lBS=cCS*U2cS zc29~b_2DnWrAnGh<+9YHy3`MUL8)g=DYMT!<-u^Nh_-sL)U~?QI+nUUy40tO!=)nH zdT&2UovuqQWT^{GDXf^;udWs0QW0(aj-?JhBmJ7dQi;)}-o7hbDx$4fEVWUWI)We2)>JQPS-u_c-ZTKf0~L=C&fR|J4sDHAa{E9ZOvvUFzsoORZ!n3#DpetV^*5 zzMglsFvn2-rA5T5%=)I;9W3@EoUgj4koG57*Z2qaD~JuoPr`Z#&~b-_SVS}3h)B)_ zk;L&sCO_beK^lCql{Yhdo?Zg#Hzp%DOh$#VXB@O?KMhEp#6w&L%qf>kT_}$ zR0v!GHXP??UX6_Lv&W8F0~J$}LgSIry9`C4!RVBnu$>@j)EcN2I(4XCzrp%}yinM5 zD%Nr%9$rbIpR)uHE}n2RNA*LfUhJ)eIgKM!tfwceMlxxBn??ID)?Bb8sf%8T?hI@M zF`Ze!&gk|JcO|S&heFe(Kc0yGT+*UHzhHm#`b(@IC?D?C3CP{DN3T9FJ$elfr$^6G znT35Mmz0^tz?Q0iiuTDB`WOg)(J%9P7I5|1W~$7BZrFw98Z1T-M9NT^!1+WtjTC!j z5y3QT-T9$&9r&;g!R3mQ{P***XN8LplQ8}KnowUPpoQndg#+iq6Skn2=xL0vr5?&w zp;e+)?9d+&8Xch@Nz=bzX=~j8$3B9<*a4CD5%=@~j(w!RG{h58x|a=i>?1t=B38PDE@K(&*&}^$+^p3)ot7?HKOiljlTOj=2dpWPhLMr-_{#-Ecc;8b zFQb>MGuIzyM%$l&l_xmJ*19vr{sj9L#_vpL{B&@$Ml(=3pIIF=gFbeEW`}PHzDLpx zr2b=tsB3TIL3NFSNTTy;cDlbaac^JN1o%2x_j~}3=lGM{M}qx`of!I_BdwOb;U;saK)oiTP;7>C!n1DyS- zNXL4&H?o@b?k4Nu4Z#ZmfkWSjKd<5<3Yf<5H3)1P)7{I?A^k`^xGU zwZUplgxCZ@cQDv^sYTJ2YPHyUK}jGAO5gW&6+i9)s2zm-SrJh_FwLj`Zb!x!gRUgvF90TQdhU@dzI~)_A4!DH^YBpn%j>l>c(^| zHL|@_S$nAkDz)R+R_eGddo#8MSKP>km-DZx0L1x{z}Fw@?B8$K9JA^_N01)z#rmlJ zzjQ2hOna%U`ioR*x-a$eFDZ3%SSr*tYwI#vV^&=sen_b?zSJ*O>fDZ{4r(uzRo5bw ziuqELRO--f2sd7KXo5sUE)6c`7xaW2slJ z?yg;vRqC0$KVOGlef8%mq)n{Rqy1OTpP77F)%fM~&+!_%=-qa}K|VleL#9ucy2Aj^ z(crx}|GrTdM@JKhso@i)hEJwSn=@?KPm}}&o_s|}p_-ck-kc^v?;>{U@h{0J=@-4t zc4`K$Fv*h;DG(Bcoi+5wuKHYpe9As?X4khpVe1R7i|casIFwil0mL$5qEq}~HMYY! zSymB|3u!6(z0M==7SDY?AI~3kTuFRk{BHU5e*=D3O#WOtc7tE+h7UCR#6O~|FVkX6 zf3#`|`Nv|ov7AxYO~eL>IV=yGlDE&6zv@qKV=3+1uc~p|;nTj0vrgT~BoC=OyjgGR zU#v;yudEw|(Q&{k`x*Qfeyn_2S3mH1biI8ZV?TpW;iu(lUg!JQ`}o%}y`BKbBkC&o zJF@Oj!9OWB=L(2U?z?;)3w#}S^V6(5H1qHA@9*{R@8hS1+jaA6{p&OQ>ofV0H``y4^Q2$O_S)$<{$e-0Es}K_gQhUp+CBfDoBH{HLGI{VKCp>@o}IbG z1Fvr^$1RpW9|I5Sgt7$BTDKz54cAchIlV6NeqH&qnSTRNF=}dm0sd zYYKv7RUtOpX=AHt^Uzj$Dp=kMv6hWZ4cbep#0zfiDQ|FGeyLW(XcAYwgq0Dph2x+8 zs8oGH);r1^|6d(Q=W;L4rj-TNY^O@dO9#U7#-@|A0Zy7Wub;hbH7OPYDweRQG_2JDX z-b}puaT`Iiw1#2a1f%EH6p#2a<3_t&BO13i#^V2l%1!?^Za*S+<|9WWXr$Pek$7Rr`!C! zeg20${D(dK-|rg!1|(?X_KIm&Hf|qTcRZ>3X)M?N;j83CM-_VZ&+I@3e7kNavD`)Zf$vRb3|vJZ)cS<(MW$=}@nTrnzV zG#ADb*@Dwm=-0Xwe)fIpi^t%QHL)9SHNs@kZ0PD>=yFBc_Tn%YvYMgBp>$7riKSN* ztYAc9MSK$rv5Nbt0vpsVR#T;FT4R-*0O0uBv4G3%W*m>mcnt zseA|AN@{qE) zagKj5{QbWDu0uXrV!JzwUw2dZa0c0vwp9Pw-#L&23*OjXoNbkJC`TctTYh2oiOfB8o-_OYZO28uh`L}ekcQj&?Uz| z{~m+1yi}GSWZRi}Eq$J#{v5j%Ms5}@z0kdfzc_r$7}jn@UOuy=IovBxesr6%zGCh?m#w1n{speqCn~y!=dR1*%Q8X?#dOb$OF)YK{mTyR4rb^smgxjLWo)igd3? z7mK`iy};xg0E#SY?jrTJNpEhO))|Ks*ILji`0nB(_FFz8H|{^VAji%5x|bSdZYj!h zyyCM5)p(lg9pACpLwPLZ+}|-9x%e~7^t@$aZ^ANFRqC#EB~#Z_y3b~j?MlmbuVp(R z%EqJ=PB@9Ng)K!FJqCGm{gF*bjd2DDwu?#x1s3j@F7$8QWg?11kRJwqXrO+fve@|;Tbc1$ zY*;JVW@^Gp_wsCvkkrNp%hKU%r@?L3CpYT5BELpGB|t!CDZ0EUJv2Mig3Uj>jW6|! zuXKnnb=r53J6}A$l+J(M>(76U*Jzmak?kcU9`p`2DgT?1CJ%-lr*a%(2YM3>4T+90 z=~2o93S+!MtbR9XSpB+h!0O|V^{gJan<~WWtMARQdLULuY|Ow1@ng2h-DQ^Jx0b^= zog5LTvwIJxKdo$IEZg;#%{X1zjMF!%Vo8dFMN$7JYEM?ql<<%5-zsW&YryEPj%N$g9v}h1uR3;&(3nOBcJ|cVBzPuJ?B&&&%#U z6I*EofQ&k<)9>f^--(4C`Y(Czm+C*suUozRTAD|{%=*ZwKagLW^o#tmU#wBB_P)vc zx8l}ko_}6g{n4`Kt~(K7^}x|ySWR+oaq=i$anNrv!itUzh1DcC`kFT_K9O5$xjy@K zW;~HA5?G9L1lECMb@MITUo9H~OA|^$vSLw)&p9Tr^g4BI;NEW#k;8AP>kHk#fFXUF zY096!2-^cAWcbdOMr>VEyq1R+m^NafDYg4eP-glFGp zihcv;M<74EJ8bfRkAcvEew&2fFb{8Z7Q9tBn%Z$OcZCOb^}>l#(wsC*w~PM1K#0<>L20Zot*`5=R;w8^?kYr`Eoo2d4C4veG$m8e+S&k3)eE$ z@avfc@7qMZ@cny?2X^X!5ZDC~u;cr$6Mk9r+mjcnf1`)D=z(_nHU2m7wDPv^*IAS6 zeiDN06M-D?$n%~0cL6WlX&&D9v*7h{!0RRcyU7E)r+*0S|G6s~AD0=hEc_<$!szGW z_0NL0Z!7Q+cK*8ud3FTyhY`pD+ctK>&+)=NP;c~Gb$@$%iyj0X${+V1%&^A(02f~y zzk@Tto{fM-{kxPG!f%3ySC<9vl?Ot2`hL3y`EmsE>0d@oo@F3uax{J?3%}Dmyy7f) zKaSwJ(><^oBVgBMfQ^iRh4>vmEW~d|owfJn``X)kNd!;$?a-W=8gN_$^2iLx-Vw+M zzt-18KM$`d3*JEyJom5%_5rTMUjE$~HFgzcJMiBhcwzMO@Q%xZ_u~Co^qb&8&W}L; zI0Bh}je%^xUm$;y;Wx$F+q8Laz*oZGhtoc$jm`9L7=gGF{m-Bf7@LL1*_s<_^SG8U zvD(eE;#h--OsFqzx?Uvl+9aHQ@+uZ?RV6jaY8Gc_lm&^N#WEY@iFcGJu!QvLC&OvV zAIf#-T(}b;{(MDE^1Q;TC)qG<+dL+={Gzg|wr9u8dH1@nht^>^c}jDtPMusbI`NL1 zULf_r?AW$T>49kK;Q(SK`)?cTPYqH}7B>n9f2}|h$&7y#8r^2?NNsliwn_DJx`8kR zp*Zhu1Ev>Ys5DAX5bt&$o+K5sE`_42=<0gb%H7*h9j&CYZ6kmT6(Nfs>t zg;_*)m*O6*o&FWwzzg&EP5(}H(Q3$^u>c)%h6vwbeVE>7YiC8v>#tjcN&KTy>8~Yf zEgD>{#TO3B&m#Wa3VjDYU8Xe=l~hW9OtJu&u4Tg1gBTqskpJKsODT{J$0r@XVDV-{uF;*;K_TB;4IsLW)$yD5Za@z4cV?!|y`-wTIBjt1I)Q5rI{Iv^Pjk zs`lc8Naa`GDBy<(IPoQPYw0(5VnQ<318c=%YLfxos+@cT#b*D`W| zzee%Ja=&8m56HmZKZ2j1fj`~DUv!1qU4tP9_=OStf(-mccZK+OfdAYa;s5y0L*fj6 zif64kUA6_*7jC;HnSStT#7g^7J!@y07z~!DGa59Y_L&E*! zGUI{!1?ewE9?}pII+dUQw+K>=hxA^P5c^67((61Mq?bv!Q$3`Kf;2sZbg+lC{pkqO z9v;$CgY@#xqW=GbAgTZFC!zlT5m+(AYmpn{SGuEW2v_ohe`my;tsg5Ho2+UTL!Ggi ziLZVl@<;JjIB%@5^_2*l>O%RxD5HX{YkuAMHdb1b5^mjTstS40a$m>z>yK9_ii=ww z>9lmUM`}jA990~ojw+7gx*x1c@%C1w;|t-HAW4S!s=Sr%a@8i_1s2%-6$8AkJHX*P zYv1M6Ql$1VcJ+s?51qD8mg@ZFX?gWk!oNgf8wtNzg8H`&8}Og2L(H4GXB3#6M>&n3 zfSC~qjK{~qtkcvn{c?Jh0ZIL%tZ6l%zy$8=Mt>FX2{rC4PkdJ^Sh;; zKJw`K=VJ+n4)=GcHIu~AlO;79+M}+8YSo;LOM0nLZ1e`rkdv4qPW&q(Ha7ZcWNKUN zrl065evbGID&c>y+{=G7AoH;D+c?Odf&Tm1;rBq_Q2}zd zVuV<#MW9TuWwtz0H1m&6lskev=}=U3NrCl%`_^FXm*Zt_RAoPj3pWHQPbd}$MdU;j zsmh%ingH``%n2N0H#)3uq1@r@&mqdaJKqjyt!9L5>pGdmuCR>XH)sW|Y zi!Z@bl?9E^WpN>Mv< zK4qK3jFRDt^?*t91bHs3ZoD=8L~;Si&!ki>$vNED6(r`~%S*nki?T&hvlF3Q$tl@9 zXyi$MmQ9o_HuLoPn;>^Q;hSiPAr++O60*%>X@b`6r z)BxVNb5XRAX~i<%T^8A2wMf#&YSQYfNma3>JhuoS^^8dv^w z?56JnvufE#J;%fzd$}fc*q(p>dJcgU&*t$+{-4=H@$;@f5g0Ra`i&|3XKeP@D9}8n z?A6$fLrL*@kLw5Wd34UcRgJBUvDy3SJIO!CZqy2}CfV2^{O2s2ab~qVwF=e$speW< z*5IL)S}c5Zd%SmA#Y>CN6AI){n%Ig)=Qg)$Y{}1i^=yICKij2&P(Ux_74#C3vd)i1 z^jRPjpxx}7l^D7_@E@KK^@3Q<3*%CAJ-xPlW89GCRE{n&p@8^6YwHG>_{Kjq^sXKs zc1?4M%I?{06({^tvRU;9!|bKx>#XfLyolY{i)zjA&a`c}_#~$?n?GT7;+#gCgCVct zG*)J9PW?Cs9S5(i>a81aQNtC$JLRhBs?M5j6Jd|dL1MPmS>YLZJ|p+3(R&m$M*bJE zriaZT_4r$-unH(2oZyEr4TuPYor0*!MfVvwFI^eeTwBj1rq@gzWkK>R>#jg zV@$Yv)fAQ55J;qCp~olTxa&F5gotsI%)HcQ1Dv3 zZ~T544CZBHkhOn3LTuap{Eab05mAF)#6IaLvR+Kr|oHdQZ{|? z+4j{MRab{HirE;lgo)iu(>P++-Z1iJnuQ^;QRSe`z5K=s!q(I5h2gWBul&pSwYElT zSt|GUPsI@V;YCira;BKwu6Ky3GIevMcAb4k-C@LMefXheJMPb3e+%`qJfEER9%js8cd?X!p;(YW| zrq=%^Cs#Rk=u9_0LaXH`nSO~9zJKiGbXOdtUvOG>CJKs}DZU)mqE3!u|C~-?9rsnn z$7gMAAk{a%?YoBU6G%Z@CW&o}g5E5j)E}PLAXQ%jkveM~$9|_SOS~3;rYOGSdoyz5 zJ1)8Y5#46_AgU?qLRK3frkhVS(#=??)Ii(bPkTxTwzMTUeQQ{UWK3ad%DVW@-qQ-3 z;i$R;%Ac9hEB=j~`aKc{+nn0+fHB%qq1tj69-+W2Y`M_{eWo{Uy~OxEv2&jqzo%FF z1%c%M8o&SleO7D8|HW!Q`~Q+hK`Q*kS7{l~h`W*eR$YM zoZaJWt8{1pYz<hSoap!XZrR@%+0_7WlCk5hAEPrRQKo2^6azWr*=%t8Du zt<&EN>&wEH4Jg}xU-+ZtINn}K3w+xKtc%ftBHp#PYQW&^Rt@;>!PY7~t5X#X{r1iI zlPKk0?%SnRZ*fOU)GBKbZK%b}aGY<1M*by?&x`AN$9GI71SH(g8Z^Tb9{*VUJl>P5 z{^BuMJttaA6u#Q;xS@TYhsl!}_?Cs5pdf~P@Z#`P(v5*lS z=1XFw-TO?W-stUkQ&Ig8iaqg8&eg-e>BvW#@qhQ8Y?yUjlTQkEICRD7u#gx^8$ve=sI*By-4+=>A$xB#OCOH zPMi^sH=20|i6Nokg)@h6eh$tPKedmk!GGFMV=7aBJNFGfGrtS>4ZiD?tT8qCtw9<} zHGUJZ!Mdm!d@Zqn1nnN_PTgd^)%dVy31tY7z@`|Jp+Qqp;D-1${5y`g;IHkc~eeeZX-{wFOh8B4^#zq3T(KZ z!qn4;NYYCV<%7Eqi7S$8s3cl-f+3tlX06iP(ynyOttsyBrhn~CI0e;_HWkDk<5han zwsr-qlhy^}6zNKX8OJu3mDV2}d#tuc{OO|j_J+DX@$FaE<;J&Ph%At>|5GV{kPlxO zzV=VYkZc(+eC-oO`e0A2!iz5c99S{B83ez&gwpAGK4EWon#t5g+@i?l7W z5nd*Ba@MP0^)g#wX7Z>wXD0q~4y#t_I9|W`9o2N!vE(5QIZCw4jP27M`;p{;)T`7r zmZ&vLKUxI}$(*+9zwLFFX?=o=*qVDK@mkBEjP{a`_A)asHRZnGqAe}Ce=1OQo_bn$Vc>0-?k?x~Nhiw8m9Jrb|U7S};z>!^dcTZdL{i;xsoJ}Uo-_3*-qan@G6?N`6kSGeKKYQSin@RisKxQtZ_PX{RlBa4@Gn!3 zIipWX%_j@4|u&VqOhm0 zNtTZO4;pC{uXL}aK~H<^(5q(`SQ9NGpWa0`_vtbU>K;=VQ9+h zxJ&6o5dibqI@b)O7Hs_MX#S<&iKP9t%o%DHnsLTafrU!e1H!=?Qv22HhKw@C5&mXB zDbe~7-q#;+FLZ}cn^%n4URvY!iyq^x6YCC{v+TMLHPljrH(d}R^0E9*s1^aUssw#M zlLB0xd+C_4@|JlK?euH)D}F`i`j;L-$DqI7PV>1Lx`(a@P$N@=&*avcCAtRH>^IXp z)@pVAAgYV;^~>zqx~6^q{YFgCwf{6f@AztcU$?*Wv?yx%f$Kw>S_aWgoLi%pUF!$d z!-L}6j;wz#-ul)0P4?dFzZ?13Vz@)x!FlIJ)LQv><62v+h3+L#`5|(f5E3W!qJ9Yd zL3e%GbaY5giT(7~cPRvX`)-jbybFy>rQa_N#U73ivl#A=?o7=gOzm- zS`G42Ja)sUh(zn(BVsq5WGdz{v8J~{fF6&{iByGBH}HLl$FDLqwjNnO)fycnepeMgGMQbn%BDz-wSCIT(pkBRh7YkTY}`0d#w!&;}`r1hDh-m4`ewb~bIQR8Vsb+E zb?!hWE6b2ro>+j5jyqO0ZJ|nT_uCKUN0r#0bG?0pk;=AW&NA= zc2LVDA*g0+De!}>D+;Nqt~c9=rA#C(d%K~ONUQ`lV^a-UL937Hgu)(E`noD4&k{PW zt);j77ndFzP0TJqi*GAbhY!2Wv;1w1JbCl8pX@^!Y0_%R&^N6qdFgM`d!0m7N2!FG zJCZdX7g^=mUu3?Sach!h3=R_gi**o(ecfGHaWQ3eW5pF1KggJ(c5TH~wo2n;Wiu;o zp)m<&jUr1hz^GdW8kASE*D)C+anj68Mx9z0>1TMkb(T-bg$-1N{avi`&Y{0dR@?a}~uOLrq zz>jz|`F$#=;2%d(E!zrh#JTr$N@lh9A&ggSnH&LmC*^^}Jdl@pbmbnxi|VDv2$EW+zYGka z(8-YFs0@_CrVcIX&7-^0L&?iPk??dI6fPWE$XO&_@!^#bEl$3@1BByvbVqv#PrVb- zLeqr%c?hAmLAW;qp+FH5=#r2YJ$Q62V~iF}83>xE+_ypqy$r%71_50y|2AC71DrdN zrZ7V8NvGj_$9jtn&b^*b=y%gOC4?oZm@k&g{ZKF3$DjK}F&=q8rO(=#E-PjF<3;dZ zk@Q!p)Su4&YX^!EQ83&6*WNqBcB18EjFgu{S85bOOS53=yn-c~65Mj~2$4ec*&@H{ z7Kj3u2S&n`W=Z+F1_ESZ)G=xJ{Q&&1k4C<|kssgp;BUF|v2H1lHK!z2P?;C&ha4eM zs6?fzDN!{D3GGoKR(VG>5_jmvHp8wK?C@Kxdm`gzcsU=|8;IZ7U4_OS{K^5{1KUM2~&ABWVo?wZn#y?Z_$8J~-zkoxhH4G@3m$m#HdISajvIXx9k;?yj!9gb9 zCR7m?#Tc*0s6x0w_ga`eo3*3l-@xCz#dq|Ophr~^muF=@GP>>qhQHzA_)&tQ+RE2( znGEhHXlGGOo;99#daQBJ{W=1cs4B_~vX$-}#DW+7#^J)d&8+i~cQ0RQzyJJl_&KCsDt8SNP8cIj?Pr3gZrZ=EZ+`>q-nh~#41A~A-%0Kn53lEf z&h$29j`m+K32O_f4XQ%M#r)SG{Ax@znZCH@F>uKf2J}VXjYA2-tB+Ry_sd2|y_eU{ z!&x12)>n4dA@!LKX%{V)+9kmDATNrLSQ%jd&TAt^O(#cG$OOw>Mh1Gd(lZ~E2o0}+ z%`iODNMareT7&M9X{41k;YGBu0>#Mb*Rxm&93nX2q!iu|=-YCAP-dGig80bdw)*`c z)t&LE+h9_#A{3%V6GO_*c}MRutv^x1Y_i|^=1!5tC(%8;cyg>01n>&Pt84VY#`~PVkZ@zhZa_Vv ze|5XfA1t50Tr4POe=m$=k_;m%@QM|2D$M2d%d1KC*ITurd{G^0g1di>jfZycA#@L0l??AkqsbzUW}i*= zyU2*+T2TfKRe#@eBj0%RqS8$_bO$WDLx{+eMw}8g2KlvdwGbW9-IpKhAAt6|n@R0zL=b~EnGVML*r2rkMX zN?*}M&D;I>)1<_lKj54)yl~22sOJvKoNBJ3wB?VD#4lEU%L!J#>+lWt4_*~jI{NoQ z0S2)K6(gBJJVRZ>MIJQ}zme=3spB;`3zeFr6#5-~rxc1@jh4oP@2pa|J}JlL`L~g_ zQxm!FlvC|c0`^5s{K>&LgxNUGkUv}5@=#p!{rZ8dI)A`vj3cs?gJk{>$*299+;bzi zz1=^~Z9l9KARKB#|GMrZrgbI$4+nl;|D|_#zD@Vj*3zq9#N5ql3lU>6@DVX3dPKz7 zFLW!@GomA~-#dyc`L&UtVPgpmZcDV12-uNZubDG7bDd=DX35yiuHqZQ_;Ow&GV~d7 zs&a1K&ez+h;SAi78MwJOd{-yw=24!^CP<0%bO_r)IHVwQGfI)`%1E5CTS*t|!l{KM^s!r9H zVuSF)Bn*klJ&5v~lkAEWoKm2)qzCCDrPqiW$pJq)aWw6iXPs%+wLHw6z_vE{0T(HiVKd4A6*VL9X=}!KpDtCCCRrLz&@a!5aH)CK^7C96 zK3f@{OL)%oMJhMv{CxapP7?ifV5-ng>7=ge5tMJ8f+^Umpv=kZpCE$z*B*JDe3Ab9 zO(IEDPSi?0H%Rnq$#r$d!?fNjB+(kA&gh{d(RdqIE7}_oG4~_>mE}K52pXdO_ToFo z&Cf(D2yyMVhmt}w)^Ah+m(r$kCs4T}B*U#L<(^UGfBLOaRODa*`sn1K{FT_vKSc#f zf1RP)No2YM2Xv7D>BAyRrN;Lpdd`pUeVGp#-=dpThytTm^!sG!5;b#E#yZFNXdhpH z8xf9M7zb=k-$>=&ejY^L((AQ0ELv+3^(!ynBY6|@ct%W9&I2h{e1rtXQq((Mkz}p_L z82%lx12ICQz{P_UTU*a3645JgprG zRZ;65MQk*>zb@P0RgFosb%xd&1FofnvP=@~CVCwMrT{%=Gp$(w@MLkL<)ULW*`;#F z9INB~$S*hjb}cEjW-UR0t(}usGn~d+ z`&iFTsf5oPgJe$}FVB7@508T>ht;Hd-aa1`w|88Vor&9%Q`So96SvNFJ_6HNh*FTl%Ca@}Gt3ejqM@Anoga|NZ6gy9p1- zoI6+xDVbEo@Hhn@t|;61P#}hbCD>CH<@+6!W3Fdd#Ie_p zdjIvd>cj@(wBzsj)9E?K<% zKH1CfR&_V>d$WF1;V*rwV^*5ia`+Vkl-To=#fA2}sJO^}X>0C#e~9jgDhBJUvxh zczWun!m+85sGl>z;5ftJfH6{}_%oxp!2TAEO&nL)GE?d~;IJ6@sIo}r@v=IUiXm!s zO+$%P$e@PdSxMV}@aR7D&pWn0m_Ax9p5aCFc-J>{ji5UKm+2G4P?2(3l<2C1APo% z#=ve(-_PUS^u^H>A^xmno5SCdY5=rImPvi`DRU3;Z)AOZ!ySICIMamW{ z@brn&hHLpUE_oikeTV`Wk4x@54go+I-}9O3GrGiYEIQ5bW$3@@d2G6f&7H>1ZsW&1 zd2Gb>xqF=jbAzUD(>yEeUf2nK?6?z~PyRoV(V<3N9|quM9ik${mSEYDF#Vx0PxW%@ zMXbC}*d{}UHld9W1WuR{&ao!BhuWmo3lWXk{5RErWxGVdI))#MmY|pN&i5L$^aHI) zxRL8vmZ$^{k*=A_b;-RM_#6n-`enp#B_EoKE5q)I=n$RXYu68-93Hm6Q^SF{O_a<&V4w5eM_pm$|{KY_tA)IIUgn z-Fd*NOyp%S(|B*Xb1NPb49eyfjv|`PlwZCj&G5xx-uSWdIB2rnQm0-B>|Fm_t4vtDwBy#Aoy8VTRkRqVUYMrHMOaHgWzR&Nt66Lpl z1G&|e@;0E#{L?0B8!;dh@7`yLOgPSZP7V^KN_sjF%8PRZoSyXGVqQO$cSUM)o^Gyz z4$A3n)H|>%RQ+pPj>^y%&XUXslKq*E?Tl7v=WHXyfzL1KCSS^*o4GoQqhtbT)+)&* zme{^w)v0O}KUM>HIQeC=s!@|A&d2M%78c%{)xhL6pl8~6?or>&8rg}Dv7a3wu8r3B z^}RGnjVDG6Fc(wSGyM3L6NT3@0c(3o)BmJ!{OI1#n=ci4?}o_2trQHZe*28=$W0tV~3rgKWO}ci>?D^OkwCQDOaUkDDwLk z<#up~AB20z@j=Xt#wF%87HoSeXnR`YRJ^VE$@q5++CX|Bf85_o-tU;cEiC7H%ZNwu;65?;nk^LOAm2$!G%fj4hqH;?abuphe2=fZG@~#W>iY1g+{NUcv z9rUUEL1A92oxGcrmw;xQv84~E4UrjLq*2{&*w**j-0xJ_Wbfaam^^-dtm582=|^9D zb)|w7$T;U0DH0PJm*J2s5l@8nxiX)&ff4w$4UF-mg{j`DA8PfR%6-0?Y4YhushgGZ zoENt;voI!aHK}2ipjxv8T_thh^i?{)8U!ZylFJCLR&-DKbppg3Q|X@iy%DD^-aXM( zqdUasnJ~lW=}7GGc(42;*4FLCrB-<@d$I->B1UP@_K2|sBm{}fb`R?{Ij}^OjwtWS zSHDL~bl}R{LpuuVJIq{G9bZ{GPFF)1)fWIpmY)(pS8+M2WXX7+9%TY)QuttmZx90X zo?eQPC+jyg_^b>2SEdvJaCoXvzu*30hdfw^&G}fPNsTpST ztqoc;PvkkLZd~lKgPOzhwFhAcI^)f+bB5!%gW~T`tZdv_Ss9!E6#5f0s^8P&uj8%5dZ)KI`2px>h zdw0CucHr+kG6VV9#X(H^OLh5+v7674{EKreNCR>q?UW=dpgEs2AU$ckJ<%QeppD5N zHFiHH7l?c}Jz#lOH*`NHt!h6Y&$R)`B7mI<>wx**;)+)6L-4o5v?~_;qlviti+bPijLajc&z&=l;+G%KOh~BGT_AMLqu-G2Fdy1ad zgwK-dep35j6wN-w6p!wPqIa-aarZu&p9kKmkvIcegbl-Cr)n7X)}}~rvtLXY)ZI|* zuradr6qOko?yh#&6`5P-yz?n?_oTKjOP7!PEa3o^g)Eube8NcbX$qKtxSwuO68L(S>ddF9yPLJq@ljI zSb;o2p`uz5zD|$sd)9KCKBOf9tCrhJ`dWVCqp81AQ{xT4#t4|hh3ZR%%vUi_-4`RWkqpg>Dx60k@KfAlP zcR$X(3sszcp$|O$>JFlN2z-HEU=3>G0as$@dDrHcrTqq zcfX7i8~4AA7Wp~vTO%VtP{{n6>F`Nzvgix9)QW}>SsgymN*Ix?!wFiEYViGS^}7iw zM11&pbo!O@lrz{JI{np?Go4O9u68BXkLOcQmo9%W%DSic<4yQuW1;v%`?l8UNy}jP zOzzm}lifPG3UuxC1MyOfI-MXAM5aRzvpXZai@JYjW2}>?H=Cimt#x;Nu%mq}c9#8m zCM;)OCzq@a*)%__VKdXu4_o@tk%VwC>jkH7&EVmGZK{QAVtGdG92 zr)fU2>nWJ=JX4IsnLcOkwv&*yiw=+sLsU%0PUmZC$)u{|4JDk-o+ZeHko$`0ia_x; zGIU;g$6q>@{)FSn+LampVq|~AC97#bt_r>wYwD{6onN7)bG#6nr=0NRz%IQ zXidik9IKA{mymTgT+F%&HcXtJta%EOc@8^0)%U4!scP|M4^<^@`(;(hueEO(32AT(^~>RYepXf|1G?OsqcY^l zqlOH53VE>N4Qj7!^5^BbZ!JLbr}A&A^NPEDLcTOAODgxoDOe+XfMoBp6uP2we&5~x zzLfE%aK(vnBgcx2{v_Y*FK(dx3+Y^YZ#u->if|H}9~NrAhix+TxwZSf$y9ftauL7# zaE;^~ktk7{ZQm*s$<-EYT_r6gLZQ&G9gqAB&2g#R|2)9lS!gCu|J_U&GWomR3Rjy z3PIG$#N=S9<)zu{toc{NLP$&zw_ubBjqyHhGGkIiy}6=yczKg{q&GkJdYjw(m*S)W zqpubxakHM~0e$P6Tm_9;IzScENBS0Vk~{0&Zu#in|73D{b(MH1^f|(>3Hdi-_dGNQ zZv^6hTQ1`uH74R9YfL}fDc~SArk#UI3`@^JRw9+V^gcM~m0}4Y?-})fiG$wR>x*y@ z`fq&Y9^)`Ol|K_p9m8p?So~0oMm5R4xJ8`Rqq&Cbpl|4HZ_X^?>WZS8tFaI}l&0FJoY^W)Jb;`w3tJpApu(*+) zlYG}W)p8Oglx5}e8Up^Oa?hB|+&k~bI5JRi`}}Kr6@LD;<)x-vE05$7JaLdF>1y_~ zPETBxlXp6SRT=-~e*E`7J<&HOy+1O#S~r@$>5eSWM7KJOg940==KG)KH{QLs1`Z4df$i%y?;+YKFA%zTzpHB5%f?7PJ88wzA=og32UY7jN z1bj3>SPM;xbQ1K^gwUYx2u%!l!y9&I*o0pq3<|1j=$87l4c$u82Ju!p&=U8G8S!8qQVpH`{LIWX`S*Wb3+&3Pb z>UOm6!v?)e<73uNc8&IPPT2iu|9QSfd#UBJ(XRGKqutscj&`-beY6)DmVUHb3G~O` zGTNQ41Yor5`xoP|h)iYD{zs;rhh z`R$qn8uy#y2nnoZZn*D`bz-7M#3WJF@9TRX2nh?ZR=5zEY$L|oz#DzKNF%4&r)}?H z0clm+V82H%-FFm^PZq0aP5EJqc#O^YF^#Q}IA~D=#}}Hn`(*L)T(aTt{!_9EJ5_?u z`%OI7*SfFzj1~H#Dy4nhYQOn2RG>Wfa%CLs_8PV!T%T)y?lc+@Dfun?W>T5uk-!K& z)i12Iwz7(uWIaBdmEgT3pQ__7XM~8oAeN|p6U!j3TSwCD?ej!N1dqKyX5-9Ae4IVK z9sg<(r&ctT{b1ajck8%*TbBKE4dNsO9MUwiej+M%?1tm`G_IV0wAWRswBU}D38hAc zvzo-V>g6BorM~4`C6LGU_@Jusx*(^%qB;GMhOZz-)#_nlgk4lZ79bWzD9c7Gykzv7 zx)gtg?-vK-%0G(T{4mOU+6PVc0@<4=&*2K{pe-Q6_w4&^)SgZQ_GeAv&u8Jk8H>;3 z!#7hs8(CkhSeUiGSi$;YF^X;0`l9~|*1c;wtb5Pd#k#jgsn!=u^V-)JeLvPLvyRnY zO=7zrAL$XilR`a_25BB_P%rzA@v^o-G9{F?jXrI%wwbg^4-HLAtPu!kG+F%&&xlvt z#`z{}`(NsXtujm4F0;H?7eis2WiR(&=7$);CCZx0y^34VGQw71GQzg?wQhy&-S4aY z)0cLZwr=?DrR~r>N!u0573t@qK_qXD2BEwa4cg^xsUhm+t(8dSUa$ap+c40}TYdk( zByZ>Z=Rii?=j!KPsxIymUFF2S!UH_G-|5egy}c~HjfZAU$A#{g_r0m9F#Yb|y@^-$ zp$0S+Zy<JwNNCJP`tQD#r*C{(?=Ry=SFozqkk5uiw3uxu=Y0v417MqvwX!2g+&C z;U^ZG)7LmlHgm%0YmIIp0I*OV_%dB09yVe9k-3~tux8b_IR`n|jxo3e2f*^gwg z7vtLg4UFrbL)Vs61y_W6$5i*+{yIkNeMBT8tO2QtgQE;MtKzaM^W95s_EJ_OP|ZxO zm7zLg{Kjp8F zJZg-zvsQ`H{*>uNKLlxsCDuiWO;KVq2>|}cSUJ2YICZw4*OXiBS)gC$x%K>-=BHog zuT9~z2%~3%mCT*iYqSk?BSS&5imir&>7mIZ=nU*0!7_;eyc?1C#Cg$`Q$2 zo8K#M-}{9CBS#ZN;gly{Z;Li+w?6_L%1)HMc#;G$P;fT_kOv=&oSVJz%bMRTL^Xf7 z3C$*d=6~PIpGH22Rp#o~OZu~cipJMdhAT-zl@$?g)o&{I(W_a~4Y9Oe7uuEX`I{w+{MID36*l$250>5^yyYUWOI7^-SvnhEbZn0VXj+5E z5Bg6XqYw~5cRh~ z3u8t5%Wm;Dang=GVmC||95R>U@m0jRgAxk``sYgPv32hEz1VukpY#M73LGg+m z!zApvdS$F#y>e}yJ8}-M^gwL%b|Ult~FA}l?2JDMVwF5{bNkh^E!LbyICpY ztZOHTv((YzZFNpcGn5#aaq-h32Z8fLsifrydZvt??SA@Y?&!y4LW$@h{rUEuQk0jwm-yAfkG5`bH}GIn0obAa-JX(D){V)1G;^z0}+Os3B^jS zU_QDSCSbL@r!Ez<2VO^8DWz zLqkL$$f~b!MoIdsOmrP~N22ysd;Vr^dKq}JzgFT-{uA6`7|M?+|H-m;|I;-OvMxWA zBU_RGX)5=RypoJ4BI`*Np*Ozm@9t2Xpw&4HDQ#n=vhp2p3i;S@z<%WOKy~H0G%L?# zQMK+5J`YN&@{GyK(=;Z6bF^qSz&Z!=^=Jhw)(!b8$zueJo$Yw-a1n-3|F!`y)v5;6xaxCYM4&RaRXh7~9OjezP!FlxJ@1qO zocJr=&(9lMA@q+89)uneo)zyVdlyLKQ81%zF zWuzmAJV%IJUedIWSNE%p;3{f5g;WNDvWvRolFjM@O_=CyZ2t1TMDO>sn8xFVSxjT8 zvW*m~j$+Cck*(Cq`Gbh#l6F^54f=?bj+QaxG?(t{4-Ioxx2+WvUv;CtWil7aYOW77 zD`P>oH2g4Gtq3yb>1(CTDX*MVCVDw*a*~K8PyAI1jEP?fRpiG8UHDhv0R(>4Fk&DJ&H}hAa!k#yJDOAJnXYss}|5Ae>|^Un7a?x zcj1flmTZ>jAi@3oG)JrvU)3o2-5~khARSR0VqDN6_>R4q6mae_u?G9p(g%o!Xjk%J z{GfpDV#d}ndZFZ6=2a8hP>bB_k_NmIgVT)zo_aDqU`En4X4MkDFIp*_x=1v4^v%iYbE>@8ITpTm` zx$%BqqQv#%z)8GftkuFutI^o&(L!nl>O>utxPSgpIZ7;tO=aY$s$?p&%&BWC-8f}i zW7&ErTXQ}4pcoXB{%0b_Ri_rW2s~GggNgG@`gqsakfutLIEiX8Od~v+uPhW`!$emlm z0WzP2``}Z-$i4T^RfxO%+w_yjzc5Ev5+|+5-i)d9cxL^g>y5uj(miU0!ofIemB#4G zOPaOpo`5Ko=I?&L2RDYhwJ)Lm6^8*7B%h~#`S^v0_4xewg+0h4$%ByX7{4$80g))r zG>h~#h?fp?M)rf@_kSXO;mSuefm|jdhvFA5x-?q1xcgoV(fcCt3;&PdchRFA@ax}> zU+*uAU+jiEU}mNvq?5XX`4c>m$v-nw%Q-%jBfrFd}1Y z&P=_;nR%i)yGexF5icoI1sr*j_C|tzBy(TZbj(~ENW?SWYcb8F&wS4$tVw^eCjACC z-nuHRan>p!u+m-hgA7BBUl%qheL9V)0VnAO-hWf^9b)yuwC~pE{^#xU`tL1byH4XzOF_m3Lxmg8FXgUqVsJGS)_*s9 ztZkN|d&v$PYo}b&<)7{+d1P(qke%^!P9S9QJ{OnPWEx?)Fcqpb<);+Y4|NOkZJ(9~qH)C@WBZK3Sz2~hsXUsiku;~3 z>4NWFU+(?QY~FQa^W5WxS;jh;R|neUeP0StKvml0|Z>2>E0rpJXJj zVh0k{0ctPv)P{Z{_|IDAirRe^!(}-Za5^GyCGjc#zI*!aSiO7tF8w0(J@kKtzkf0q z`ksAf7yhDQ23P;oZh9g8^Ii9W$-k-aHg#Wy%?I8_aOtRpWT57U7p_0y zYHnweZGkHnvchUV9i)2h?{2U1A+^!%&n*dhoJ&c8h_5PKiH)QLj%vT4JbaD$?7a`8 z=C~*R5~7}-+)4In4Epi+JW#+9d370RfFreqyUnE-9uDZEfGVyO_b4IC3M04YD>A>p zzY}irFKJb10gqQa71O%cY~lq2hYPGpu#itwAN=P=BuJa?k7faZCCEm-NES@}j=%UZ>5X8~1-*VIwP z^{-mg_!lCXmi_DLYm%%34-jK5)qpwV_I*MFOa30;kOdUWiwG(_k5y=)bChmX|E2Yj{WPXD6qHL->_t zE*JuN+qp=Da`S1Ht=ZFKv&j?kha7;R5xsR80+F`Ut)YENVH3D;J=Sy@8;+;{;AGnpx7q9ze;ektG` z9l*NP_8N!o^zfd}9DsSASqsc)pX|ORWG$1Gj1HB3dBOo|tgZ9}g3}Mul?xHoy@(P3BtLj=G3SaRlXJO7yIv`0bajtK=#C2 zr`Hv`7qC7t^I-6#wdskxXPhn?30KkArEqVV^bYq!wn9DrZB>=D{ERM*kk5U_KTwVN z9WS~x#{70U7WJhX^Vb1tj3+iFrQ$<$Q8tykZA1rD(PS#M0Ae8o+pM{6W{^AwR8KOF z(VbA%ez_LhDD|NWex7a4iSXmVRy)hA2~vG~WwXpFA+e9%6@Cg2@o`A4;l9hSK>*O% zuTGm5l&`+}hg}eW10a2dK)4CC&ql354|>0AXFt?`7xeLpOVo?oTu+J1#5VL_N|BL!~Hb~)6QS?-zrgRXontJUX$t>6MeZY zvVL#8WBSIb8n=BHy*j>qkNP38$NTaX`FP2!ZN=ZMM`Y%%D9>h}<}TeK12X&sKQJ3f z;V{l90jsd@hwrxw+OvsNnRC7BIHyA$ycpNvg}VYt>(Y4qc+!Hu8}X-zx{q|HC3yPw z=ml;a?r>4pOjP-$#7T*_Ugs~A7HKC2ZKrG8`oSQYYLJMof7D4l&fCqthlI61+=Y-B zEtSEWQr7CSPSnnfhf0m+Afibr@^Rq4o+=YPD|Z;N-z@VauSK|wU&$=MEw8Qly2`E( zc8*l;_tR_`?N7bYUg=E>-|MhFVu-<8AciL$9(_gX7=*dxH5v$*jI!P-b+`2M(bpo2 zE?JHeeKxXhfu*uqoCuDlRWZ|)X3igOi_N}?Ji*Xy)l8kyoh8p#$6NQ95sN*3+)0wY zn&g;aqVMQ;u^W4<{&Em$?b%Jo@J^+pj=^!hT~IxbpgKt$8+DAI+e#(KXBF(CXVSv} z8MZ&Z^XSjV?|kwbey4PYAISfY@Ovw^EBunk<_vxnpO4@D@RFM3XV5l|x5DcTb!%r?pUsf=qQQWN;<0I$~ug{lO;i zO7H`%yLsr+txP9h9<9qUA$Cu*0}L&g&9)J`A(o-FFS!h*p538@l>YK4y@uJWTa>*1 zrX35LGP{!Lg=y1SA1=Roau?comiltC+?}y2L=bM*9h)uO-0%LzJT`~AW$zyAD0 zfBNdrjry|(e=r`oYxVFiITP`4xgMNZRP+5xf0n8pUQ%vY4DzJ0bVpBVe;^5&L-OcX`z zvYvHk6}LZ2ZdPCLPFrF*(?t>E12^#y%rFBpvmY1A&&Z3nmdAd%yyXDdj41rG+oQsL zt+3W$(JCDHoR5C&jW!_WrE5B@o}PVncd;R)X8CCYpB{^n(AFh;mjBgn#hbhGzv7f3 zL~su&4_6^fkX2A`qB*s)25V{L3WbT6xoRxd2sXy#H@$bi&_Vz5q|7|{C23vBEQ9@B zlW~KNCd~yL^q6VE58jleCrEa5CGyry_RUlV)sOH^IGTs3y(l5X*4#n6F0VO!vW)(r z6KY531eJtLA6F-@;u@Cnp!`$WNtd;-d5Jrenr31er5gR=$>K(^ZFhnG*4y5qghHXl zX-_$vIZ@5}$Xh-A9%7IRe+kskcw$c7c)3+AP|G5Hp(a^r z$}D6XPoHA&PgQK{9d@VsH*mKle4mziTR~)(W``4M4_}+s>=E^*k#N>3;lPP)jgMvZ z?;w6cdO{^%dlhw^EBk{RF%j`b{KMnqKQXVkk&;4E%z|9m=ed7l} z6SnipCS4zFS7&@O^S1OMVRwcW*+Mkm2S#+tRElb;)QPd z@vcG~?+00*cIw9wQ$MdCHBxuqg^$1S#kvsJBR?X4nLe66^ZRq3Muzo4?cMnPe@ESD z7C>9_xkna;9V#9v(3C9yxDmVQT*j!z=R!X|b(|adyG~R{JZOh>G(Ok(e#Jbvy=QEm z&VqVJwI-dyQV*|J20qpu$mxP@tUEYx`3mnmf5*4?*6wg^K_sbbBT2p30DDQ@%&_jg zSB4RqiW?08_SdCzJU`Sjx?@duTAe1fz1Wpt6ClR9w5;rkf~cZ}e2=CCRkR>CQxR(_ zcWziiU^T>*IpSN%64f9G)L>4`l0nR}Co9%~?2{Yo`uigVA*p7q5(O;;mQh9qATyzj zEz~iD&bcZJTq}w|*ALNUXS*xjb;=MUva@EBM2&(Lgs0Rp;$+z0JTH!yIAOX7cX;q< z_Bka{ybQMf>mXU0)7tmcM8Sr&@A&kI?Oa)lUzCO>8zh3#v87q4j!QD_e0u#}!_n_s zs>Qrnc*?dCZ30UEPT!b?Z*68~W4_PESHefAGClYa)SSK=#I*nV=`@bSe-UDaBJ#($ zCwUR+?f(x&V)BKq)+3Fd-(=n2Ge#DQUEJS;i1g0P_ zr{b$;FCeXdaz0+ok~gv+=z5>%g1{n15W}?8!nik)`I2T0=eoV6_;A(4ZB{-EjNd*9 zmVMY4%+%}8+upIeF+^~#WBA6sY>gyth9Hibg{$ zdjCMpg1W_rc++IDgk0s(0EuV5j=qUTb>}J_*>%e?lQUDQ*mt51s@d!0el^LH^O*c% zH|d7+=4P>};E&^+*uFI>0ww67{Dry!=|ZrnL2b|*jZ^z2yRfK+jTO(fm2cAFbdFQk zVxbJ;v88q`)0b54pkwx?@Jls`wXWYOumx}|FFAZ!TVJaT16F11$`tlVwBw%iSgSGx zyivs`Kh?7j7Ix{<%i3OO7H0}C9dl!L^5|pp0sT{iQuGGDamyB>kFEbeK@{;b=ts?= z8Q;j3uz`?nR!;1VM{9b1$&DE!7Pli{oOC2WN~9KsIZ=SE1odvRlE)El&udJZ-6WJ8 z@rKn-4z)|qQ3)du&sLJ}o=|3ad`de?lc03$=6+0^YX1Mr+q-~ASzUeK0T~EloG757 zNDUg>c&b4~6EQUb#0dtBhuR2g(OMfTYJ@}sC?*cEjKgR=)>hl%q1CFbwzY_2EeHyt zk0M${vDQP?Jq8sIRg}Kw`~BCx@5xLOXrI2{_i zuI5s|;6+X;CFDb&h_(@kVT0Z2oYaB)k^lnbW-IvpUpT#xSS?TYy*}A%NXMzj@co!~ zYSb@&H-h|6FKraR_xG=odbNaCwP0%l4NgfN3+Zu}ldVJkUgPh@GGs30XYHjSPRT)H z4?Zur$V+uatc^zaqF5ELN$xU*?9d!+F^t0+JcL~YrOi2U z4f~pC0us0ep^w36cMab8NB^6^Bp7OdQl>x`CFPMvmTNHKq5C5K<4e6THsb1fOl)=& zwL<@B4QI2ju7;F4hlN&ajyw_3c5|cpOP{U{EScz8w%uQU9cUrJrO<40k*>B6e z{r0xJux*=`+nDe5W5<5;b68+@oOXE-t{sb2rhWbVoyZm+OW0%QTvk{9$c4sl^3c$y z$g~uBLaf;}Zb-hUKe$v1WZ8QnfUHUIWq<()Ypi@-RV>j6gSXUk|IOw=v&HIk4NOa& z>DOfzdEiGB|8j?DTo;OqzE`}-?#m^G&{4qa$=X6tAUq^bB7GnGB$tiu;G)PGDd8A0*|47i+{OewEZ`d0AvEWB)|2jlIZo15m2>$!TP4r*aylFa{0BY--QAT zJ=5_w`o;P^D{uiHt*GIu8Mgd{lNM@f$@(JUC&mtNu}B27w#x43X@Pg&*^iS;qvrsr z)pXcKjc*`w2tHp>X7=@G^HDq}cX@gM@#$*>(ABMr`JfE2{ZGjD zq=+Y5Pp;l~q`)<`A~BOowlNSMlI_dy2V`4UCxfh|&XukbnnDe<*2@N?vkkQ75@0;D zzb<*&K8iQOkO8wB2UsjUaB!xCW`~A^cy85aD)P$z*$E-J(jENmJ}`2m4X(G*_k+h? zBOrUZkOD7SiwG^>qLh6GIW>s^`COyb&tv8NO-7tGiBt3Q)6XG?uup}SC-jxEoIjdV zqBR$J{RcDZfapV3$80-4@@(5qZ`>9J)5r9ClOPKhnI-VgzaYWt%04E1tRG=Og8ux7 zw{vH$$Ry zC_Nl2U_x^@6lm&?))ZDiXrSm+l2$?f*}Y(+(``X_Kgck!0J2+UL8(~F9&at4&V4Bc zPON(f!ItL^jelC-cX<8qdu_tDZQ4vbTHiZ;q95!tV=nfo z8s=npOcZRYL6mMm%cusu)RK6!9heE1S|PcU?8wUcOS`2XxA0s;;zhEz#%fG8G{0v& zR+B(AD4lDayJPulN=p&yD$@*a4pg67eur*4FN3QxGML@T(u}@9fnYck)@7_^)CM%G zbRMb5#C?MJu6eU_q;!KP>VKp)AS3GKHoI)1)*H7s1C)@h>LIJ|wwi=ih1pUht3%rp zaa|IM>&3Lf{_{pfCz!zYh1^=b03WUVu9||DR$uJhqK>|hu3;8|zYTSWsDF5|%C>jS zkH)&VJJlZ3#*E3yUZwZIn__P~-rTr6FBm;S|2Ifm?s_8aLyH9nhtAMyW!r?VL5({Y zYP<_YKTwK(#k)e%5opiaBl!7}BT(#JJ6twLN2g~9b4xX~co$0k9#i7fZ2u?rlo;{v zdmxS;zR)w`3}FsP!i?Xrks0=^y3PoifvzWajz$R!p*};o@1dMNS#mnwwPRCvd=!s6 zMcWt9VOsv{8W|CTt6R&lB35EWY~=c*V!e!B{*`{#aqOppWX07O5mWlD>D+-=G8N1^ zXw=$DR!ljO^2I_X7Q|dg+J^(M=6z@P*0;TCa&by8xT7zMQI7joyC!=X^!=#Be6 z-H3nTr8>@%fAY3QWfku76^gAwu`1||J6ILC14rriQ;~Zg^-?^0Tqduz5#H94_=Xy8}{Kdpbu#25WbPO?RTf#LHr z$-3!V^2V|x@78~4-XzkNbz_ou@-hKNdtzc<&mlyXOd(615&9KF8B}HhjDM%-0vTdi zQ;agj+JsFY9TznJy%>6cQ$U)*1}px*5knQ>3^KZ-;o;sh2u3Gx&z>FbB?;u*fZV@s za8ULcdhEbD3T*lTYIIGoql!9Nd)bcwkI{DbW4txK_wqV_Tre4Z!%@Q5gc zgkI@M*b?Y6ufflSeZmLTpDuPvZ1F!%wTD30SM$)}b^VJs`5EP>574G@);}L#wGQ~_ z#y7jSE`~3VatNE14*iMcCVL_WXIj`Zm`E^&LLObSZ{e8}!&xZ0)8yN{ zpcO@l#49(w5rU)T+q)Pzf>zGq(H-PlS(s@>F=wtKXaVzz7VfqditzXB$GL)-qQead zk!cTeM7r4E5{c@_!3y@&*^L;_dn@Da*Nfy#w(}L>?cTT%{HI4kT3Pt+`8AB?=9o0s z*Q6BPt%z+h=$DjqcC!B--;^Iq9DvnvKuK73cWqO12MXQtLwr^KO4ocKrv+8L(5k;? z)i=mgWHB#IKGRin!64OC{20a;8x1UH zq!!kBbAH{qp8ISgcc`gMQLt^~w&0f?EjP3|h}XzewgI%Q(s)+p?yPEe z!Oj>RCrw)=GoqDJTEwF%vv*hV->mfe3svHKlya~if>lLf331g7&KWi6oKa?zE-Cs+ zHv~H(Bm3GqXa7wB6T!|x8FI-DIUqcjndRR3?0R8dE+6_wN7a@Tr7s8ZI%_LU>`&P$ z<&mAT{aH6n2tUF3VLRmYZ_W?PqbK9ht9SIL;pbJl=!u`k5I?it3-MF-qg?!Gt>$;g zY@@w%gm-NUV5n-Lrw_brf2TCHqHk=-1DL(p9o6zq@K^l8&pNNrHcznIJtqTjc#X%ex`(IWdbrCjSTgaY6w9#bNsf{~fo-A0N9A z{`WWJ!e6AC%^!P08_vf9V@1+vE_eaMs=+ zCJFtA{PFeP{4s1#QzmxgGhmSdqNAKE?E_oSU(*X)#((nyjCHfgEdjC&f9b1wVk}pJ zhB9$qQ?%VIDOrKAZt_+;3mLQ6;m|B0`?N{PCvqF?@f5bdE%_|{ebKj((sVXcCy(?e zS*Y`^d)Qjn&bM-tvd*{SE_>en=+SK-2z9^h$c9qqtxt#jv!RG&$r}8J8a)1!cY6%D z$75K3yW>Bl$M_*iD3e|Khl-$cxAf0;#Pyq!u%*3@;AWk`y?Whtrndg-oT**m2O5rV z&u!w*C~tvkK3`^{*P5`2>qK%+Lf4!*?i{)8BwgILSNX_BCVz71H!-? z_QdZnn*S=P$K@&=tP%fthI%n4IZMQ|!v_3XjTKtfc5$mn>Q^)%T}hAi^f)%G5FTc( zw;tse_ixQt0ddG_9&sYbfSGm(=-O4}ibrL_S;xT|pe>K5k5UlhRD zC$5!{lygN3cpls)`iL%>Sh8n)GkXjooF7i0B;Je7bNCEG%+poie~ocxr>kp7!zHD|V_nBUaymtjd$bC_#j3au1GL%RXfP zh?C6jhEtUpZf6^Tu`Q_VX4_IXR)AvyRUKluGKog6jpqDa=UC+9i$Ko&ASNH>gr-nT zGx)-7)wuQOKGL_<)m}vE*rir`4B(+BkdDI`05~{sPSg+@ue@AshW^Vcq*QUYe5`Vh z(^kClbn7=GL9;xZ43zmbr<(iH`Jq{qA*!VH!CHp50kOGUQW_e49bYlGbhjyinMK)N_nSxBHJZ zhMeV{1^~KbU-Cm)`g%O3JxI?UwZ2&6*WY$aCYLL!XV%~M8<_>4Ea}$R`yem~GTdMz z96sa$xfjOnWFNZRZ?o?6BUk=Y{BB!0B4hiaMUQ=1%$HDCcW;vV@Dr^bRYTUpaz1O5 z1W=s7ner2g6lAr$M&VlPbZHQ-6m=xmzI>&!++MfegJ_miWawOE)(7?C5($g% zKbs>gpsUrc;||7-s90#9q}0r8gay(l2O^CDh(j7Fv%gwVe1#|}cUAMeh+T|h!Y1v?z8 z$HxFT0R!Xf^ck-lY_)eL<2x`g%G{-MHzYunD-&Gd%SJcJAp8Z=tbsa4ujM+$9j|=q zf7G{$BxZlST{t|)RPPK|NUaVNph$(I@|q7pblz;`Go~f{_oZ_hBI8|5({7`U_oa+& z8JLwV0Izigf^*}^B8h@eXNQ8brh5d9xni@?T}5N@%5Qd;faS8y$`&`%`bKQ_S0UtY zC^(J6R3E|VzHysIXhQRqr#0cgp0srAErp$XN@Du;&(>Qh8i>t$R}jobDodIwkQrd= zb-__qqNjMbHz5V!U-8rA6561{G`(0oU>0sdkj|#2c*qA)=Q8?cZLy^aE?9$&IT>G% zqAn$*h-_qDw5&Y$NDd>|x=?q^4apmRlR&(FMJ$QRlT%CQ`5^Bqj%6=0zMeSxNiDrU zd~N^({w&(Q!X|^#%Phg5B2eHZ&7p|11x`wJR#kNc;k7?#8?L?N-- zvcKBO7R=k9Tt@jke@#gA=$9YT6I&JszKNWO9!;UKY7vcm~^a+ z7G(!hu{harbbP4_{{kG>5kj-~r-yGDd_zwS>S>00nt?~73QbU+*HobyAxVU|RAfSf{WHjg0aOpV3*E_JND;9Mse4pNVA;y zcEx9&4O(gwYtj|sBgMxf(>gTQeAZ8whREAaeuINNe3^b`eMIdtMt|fi)cWqn%lhtE zt#P0V05JAHQcw5CFS|wZlVklT_WSgmilqMc=6?rh;uo2eTyV7vb?|hZ5$@aPh3eo4 zYZZm$_r8m<%I$)49*sVxGv9dSue_=E;Xe_*E{?b!In=~u=! zRAWo#>xjZ?D~C!@+;Awlx(U=wy#1D!S9D=q^s^WQp8 z?E>obcHq0G436IUBh0!Kcp4=%2V&iPM(}=e0Rj%X2nvjcaf~*(!tJ}F5W8gMRP~^+kHj7WW2qzguTZqvj|=u}%9&q}OISGf zsqaqk>!eHAwR=2QsHf_GH=Y?PwefyG|I(mSn-dJotd_6A)|xj}wE5{Ob#E)f#_W}0 zqZ=vw*)$RwLM#UUt*|8tM{ts{fuCpaC13Myz~U(EJP;zV_vP-DpBYK;BctK+jC*-KmXGvbvqtQ%BvUA+Zf*1P+xYzmFw!0G()aaVWO?~`s;4ieK2tQJKOnkA+FfRZnk_?#y5H>sF!_a%YB88R z9zvN0q4<^d=D$dryzK58njsV`H3vvsSmoUgPpb@-OWpYUJYs038bXn)4p|g`JS3FV zsMe36)ZU~LTN#jwlK3Ysfm8^+XH0JMPlM#_01@dE*k>hllPWk=Z2_2i4IdQ{`5PC9 znOK!Lt7C}+)xB`$;>*R9a>p~q9|6~8{G-sIaj^^`mTf;pc5Yebd}kYyu2f#*#A zz&{;=Nq!b_4!l^E^sbvYXZ0pd)VZh6Dz9Id=1h%Me`qnL78#_VEN~N_`)5($Q|=qP zcnU1jbYgvos-r3B>0{ZwqL0V}s{r!_lZ9rtJR=K$LbsQw&P5GCIhb8$g){1>oOA*K z=Lht+ktha_cU(f`f4A~tYP)Z%CEvYb1&+sye?jKALb>!>P$0y2@iVz{FI-r6Vc%k+ zB2z0A6AP`yZZS~~KB}^OH15aE+2Bv#)c4Zgj42QQ<{HF(XpaQ{vh?UQV|1>Kg_<#6l zK;Q`Q4E)FO^LF9?P^MN0|9syf>`>Q0udpOHkeE*)l_^`)xudw1_*V;kIKC8nTYO!{ z{H+k|Qdf$6QOJF%`;(Ot-RGhb`)PI#E^B+>(&O)TiGlbg$ayC00RO-`S}vs`kE{Uh z7as!-cmYhcRk83aj4ReK^v3k>Jv^f*DD^ z{JZ?|ett)I`a~+sl+e~6O{Z$%B_(?P>?zxKYyHmZPQatzT~FVvmPSk-a3zs-jEO58^BqT|%#P z7E2zIyl6mT)__h9@>u_*8W~@OK&6Mt;NlbYfAhE1iy)RfIF>ja#7wP=SDy7qK#G&9 zL;>@w+;z79f3USwo7~~(WZuNYKI~BhtxS0+WAmgZIxq;r)YmscrnTi}jfb zK5=lF#{z$#+?e!pRCGz5U)(DFjo&q}FCD7azW!l8@*bs0Eooo;i=Jvzk;%^&=G8=x z-V(#Pq8(`9H_G(;3my*sD=IU5ZQCCzn|m0pY%D$Zw|{^ z-ZzF5b-z8+&k^c9RU})m>RR0EXkVFBjXPm)??1uIl7@ih5i{=dk%oaXjUQ5Ph$VK6 zSGGL_6?Vv;7$06edEZr@=+No39_VLZ_tOtmS0@o|i+!RhtL~(b$Y%$2XDkbBo~ypL zYu;b>0YKGuE#nmKXuP`SBXqGR4gB^xQ7Q;dN$!1ga@V6PhLtp3z%&v!?(7em`}JEs zsw_h$2ZPG_sGU_y!~R45{3NBZ_s8ferb(pXtt!&NnqqZTk=}H2=%xj~zI&3AVb|2C zNe)R4R+waeEE$9bX6kCRkr;bxPd{ zzTJ4s02c8Ybj^T7Y(PzNhgfo9EAt~Zq=hj`9FhVksaNsJTf$~0w5XYRE$*pB_#cuJ z%4(9wmcqX%lcwTWVmx}UF)TZ|RQBaue#XCZGtjb5Vl(KWUOgaO>EYNJ@yg1u%7l7r zzTVBW<{4A0k>U;VAJIPkqr~LKcx6FYetd)U@7xCbcT|Wa12NUMO42LKRO%LpC(hi4 zK>RYxo3}0h)6rf(A)LbXm5GFy{Y4EI41eFVHp+Q;&4t?k#a+1cdkn@Mp{&fQfk{&lS=n$=;hz2x`!9EP>maZH|1Es~)R~$1@bm>a@O@=BoBN3y zdcgO5)=YiC_ny}q%++V>}B0}`0nQWxVmQ_cW(^($c68_(|geG$>##!3y;i!?;C&ECVU4G zEFtnNg<7HC2UT)g@ZGpjWi#;Iso}qZ?>}8;;=}hnFNE)Dg74RqQaDv`-Cuja_jj-K z3E$3X+kx*@-Q5&CHnUqkEK%y*RKY<#`-o^tWz2 zd_OC+J}&6l$CY6px%9jGyFKK?VLt@E$Cu~8cg63v3Ey`Yb-HPnOGhH0M-eeFh(ZDeHoguHNR^p{d_w7z_}C82Ul`Ca8Y^vScz z>v^$0mrN`3lgA z`dfwF!wR;(rp`ZU&FU1WPBT^dv+pAp+DmR371_e7O-7GS4z9-Y5MA&fQZCHj#G3)p z1HO$|=a{I;tG?V>NoMLZ$GQPK8qO*O=t@E;LECo?wzl8+n=dYY7IT`KNkukv;knYvLpr_Nb2WRkbb9D<4rqhCv8j7KDZ#3Qvh%q7O`>xjg2@XW-LN&KxXImW#rng)h5q=xG`Q=jq@I=El*=5|Gf z>1SqIFHzQ^9=b8}>0naR%8zH62M96x&7RxE&g& zw$IBpXA#NA7H$TS07Vs(gq-9~-bQPr?53M>2H7U3eKk>Hru}@I591V+jfQJjz;8K`#KMjoJ&iQQ+!L)?8Bsy@7is7 z_3vzI(av%P5?yjq$zkM1JIcsatyZbka&7Y`I2XP~nm8tkMM@~5UBPI^Snb)yCwP=ney-$qXz#XXBIW#R!jhPByGOKgpi zmow8|?>F6a0I>arkE{VUkhD-Z=eya+@80^6ApjgHlKw`7=i}yt&+Mc8p5%Y}dwj)N5p54?ur@D3SfLYDw%TMp^!aGV9Q)mitRt43|r0#1| z`+W0fyO0rQ>xl4*ffFzf#?~fY$86q-pK22?vp*ZReL|7LSWyim;zw=WTc=8*&v>}K z^2yF9|A*MyF;8m#++XlR(Xt>924BJ!q+YGzWU3vAR_^?c01&7lYae~@;L$n_z^YHL6)Yt8*KwF5e z1!J&vWoSQm_-g4|o!qtU%h99HIX~L2dF1q^aa^E(mHGrt5ufSswCdP=t5C?C~y}$9$>YZ#0q4q4u}H{tiO_ z>q~Rg1EzV90i|gSF9&g{xS%9@JbNa29eFsrx^3=&3(knPS9|ykH2C?uyS7G}hk4jF z?__X0ERc`!tu&?EPV}o<`WX0}-PWRpps#4Vk{`6T3~Y+FuQkYdAU{;a1LJe!W)gNy z5{veq@#15xMG$`e=nG~XP@Yz7W!jz zMBCGPkQj)zzs6Tjql(lPBxg5y_(t0w;|&m}lw?sj`N{BPv8UJ&Se#JgyrdmW9PaM8 zOi2a8pS(mMmSAKbPzsBgRdqNwS2XP#vVxsPeTq3hopX>`Bz#2SM?C zUG43T{)+Ze1@i-k85W^pq*Ia8-^aM#ThK^hmu8~ocH1r6B|$tK27by|hlZQ^uxVW(MUL2}e6Vzy>k#A@jDA{LlP1XNBA%1Rt_QkV4zqv~_n*)g(oH8h?6ApOJ;$h2ZU%+e8{U_KRj{6rr*9 zO%Z2ID9B^~crTH}12^?1i8sz;6ah*6Ro}Ns5Uu+Y@F(6h~u~YJ#m0fPP)M2GsO0Y54*Pfzr=HIdEy?g)o3#qJ}hI8W*kGo7xPaY zhDpM-53npy8ktz9nEaAig8~KPWQ7vKs1`1lTwPA5BHN;l&R_KG zG548x4p_LVNawuz$K<8kf{w(5zaQ-^SDFeRo^Gct|Vx_xHtuM8IL{=5AZ zzm_q9P;Y;|_g=d3nycaB1HK-(kofVDl2+hqUnC&yi!F5mk&b7kaAB~`k_i(H6H|Iq zKVCWQdO_H{|7s1HE(xmkLhrwtH19uDZQg$?mx}abJlMbUU*>)`I|QP5`PBCa%@}BH zLifiAValoccXtRI{~|DK5>r6Q6Cl4Tqdzi~?$x=&(PRF>rP=cjk}|yFTe#j*1()q2 zOum#GCh7*i-)S+TGlc?T8E?8yGq8l0%Nc4cvAd|mn?A(9s^26V7bIbc79Nu?@sA(; zm?C{?6pz=7cxFiYH>gG4HKACL{-(*Zc6+Ksp6G?hK{N5hAksC)$Q5{EiufM7bX;O@ zd311dg!5xGI$TCwH|1jP9!RX~Fe>SMEKH_VW!xvp_$IpL$ z?gW-)kt^)!1SA4|&d;~~7?L4&tzSTvxON&bl0wM=46L2;g&a+uo7|B_7pjl%=O1=> z-f^h`E9@+y@bGhl$w-?h1v2K?pmBcx()hL1TC)(Sb?$#gYT0Z%>vA%%NMYJ#?&MJl za+@h;ConfW*XExL67Hm90wAP!%wZ_;PjEh8mv_QHMm;#+@3&zEpLlzg`|0_NKE?}y zY7HHvkvgft&aa7qyuo1fTri?S;mCL#X&{%>6p?)Mdr%w5!qhvqxEc8mJ2JG|N_R0F4~^40|uqX%uRoq*(# zDLjLCPd9lz>u4n?=#){y%%J)(t3^deOb4qE?I8cHM#}kRW_MJWwdYHhve|K`6dc`V z!|gsvhKf7JQ{YZtpi+^BOK z-Kl$SP^sXQbS6YM5 zcYc8IJN-%`aw|4%2wcDJstE!%k}W+k*u@k72Kg<```>qdOOaun$tJJvx;LwDSqRS_ zuJA#M)O&_)7%PTF_V?!2_uuil;aC$&h7%L_LI{)|EfhA)H!F`H^V!CBr=cmxeW{)S zoEQCvp52Xz9b0=M;;K;r;Dm@Qv48S~*<#=QaC`tJ?1zopG%YjsLy&*clf)()8uG7I zl#}wG2D*IvTWEiaU7U6Un4#UUlwme0H!Nk8o4m-#d|L<25JW6fNTa^RSTt4Hq6zU{ zTS5SUe&q)Y1Af)F;%?K}+_z>6**>n+rVT8}PpJ{)yNjzsve31Az3ij^YJRt)Cja~S zK|dBq`v1=Sep0pF`7QLD$2)0Z+qP+o@CN=i2l%s3mb%)+*PdG;pV}-gvS+{PFUeBM zv*EUdzgebV2kmhCRdm6-d{KZ%nN@_oYm)u&4|64P22N=Hf?4195%pDw=tl_%b1y6S zP7El1pagv8eg#j%->)sl4#OO(izRlBR~~ewB)5X%^L2h{zSa+Jda$iu6$XF2djwpu z3uCD^Uz4IgF8-R>V)*Ol%Saji(U~$?BCqho!M@^}ATx!zXshRQvH42sSmVj6G| z;#NuwDq9`O1R{_PUP!ZgZah{g+63DGnkeUAE78bVz>{=vJIS2 z9PTfnzcH9Ug}W1V3cfEHLxiX0{DXkuX)>EW+}P>`0h zmVLT!ZICSHSyNYWP5rLm`Ssv=DW9@G7V9&Fn-$7}n+pA};MNmjM#c>u6dby_X^<>X z86xy3%VBXXX6I0P$@Kyj_J7+4m-WE`lJ_kFRI93CQHd?s(fy43*vP_RceSkRIS#-6 zjV?GsveKN*W+?pj!C|2Qgh;M<|flwQGp3AV|KC7w$Ki!w9G*@#fUI`X~bNLK&g*AGUn@l93o0T6VhKlBmP{Nr19xU7o5#DTPyH#YsKwY;Ti zRBQR1ri#uBgWsDQ&TcDjIj{MQ)|UP=o2T1xmvGCX9E-kcCG`h1k8CTSbH;fyn~%ux zF=q-ynn$;lH_p1Cv3UgU?Agsjmm&`{n~T1f5k{%|rZed?;}Hd5*kVGyfmGz4z1Vs` zNC-~xHnSYr()AAnSQvVt$=R5gVZMRaeSSnX4AY9|2|;E45$4~^f1`7G3Cz_a+5@47 zFVr7^IcNH7U1xLlS#-7yPtFxN9U9U)ZwR~0`Skc1D4CX%pQW`$>EWx`KY3c5@3})+ z@PdRD#n`kWPa>isEl-nne(26#inAOuXE@97%N7Kdw#_Bmms{-am7P9;qWqXVX14Nuwl}> zx6AE2Augkiv+64pqFLt7-2Arg57kP<@4n%7k5#~M&EHfr4Nr_O?AJPXm%Ju6)FOX9 zN6KQ)oF#hHBveu323pZr3{(`V_*ARI@$ zxPlk1pXLOxPO&fFygB&h7P(p?8^ZN%Fv=i$w0qQ%L4G#*IkRyWo|Y3r;i}7XsCIphUmzqR zqhIAW244_kivLIyR-z&O&b_=R{r-j_J^}e|lX}-2p53vh-k*dW_W1Pl`$N%ad=pTa zi4;e^G>Br^sV`WRLL2fcs<~$Ma;(2Dcg`7PtdaQ9NXx{y+|M{4skrVrBA-A=nS>^O zBeWdZwh? z_-Wc@+}L!Y^gM+ybli%!kTP^f18Zac9<>i1l)ZC_7RrZ4Yf}TFQ&Lqh(qV0a;UGGQ z=67?_Shz$ke*wRmKz~|+r(4buG z6hxh_J4lvwa6b^&EojxtO^cSCXuxhT=x*FMHfBBc8o!aahCScTuknx?b!f6M&#vnL zh1`OOeY~Th!EI>_z0up1*C7%gC#qFwfJWuWAA6a{8*i9Ub}EbpH|;wh0Cf-%oY3z- z^Qkbp(`i5!G0p~lG(Xb@R1s@1iP@k|X1LwdhB(F@@Gn~7T?=V23h{qiB?L^hX&<)E zI!_e6M9#WAxL<3eMhY5Q)jbt~WUNXeiUl6|TPo*T3&11@P)^jFyrcax=Mg80w)Y}B>&0MqvhYwd* z_p5?#ivjV$kpNT?2~OztuU50J6t7$OqkBW|GAtjLJom&vKh+N2#VZfDjz@_8{O}n-5Iw0KQY5ZrXwh%3)&^qfrZf;W z>gxTp#;E0)v>dN|`w~q>gepx^Xi?#mtWm<0Z&-8u5b!sZGry-4cKMQf_jt|BJJM@) zW+6GgSZG{B8yea=KDCJ0pf>II2Rxes4ad8#^*DuV|Fa_vRSR=0Qj6bH;=Gunj=8bEk5h21$4_rR%Pk<(iil$QFHJ2{*8C>`lau^KK>mMrG=XrMC~;)ln_d` z9D?e#Ji@&2*+A`!B!qo2cT*DBfQ*!%xBK8-9M>7&XCO}mNkK({Q(NrQ2jUz2V-;(n z3$CM==#K|#aQl*db#-jt&E72FBA-2ukU3NDh9XDYw%)Pt|*0Vt5YQscJMhbTHM>m0sF*O zo2cl{zAO&E+^^P{vr**SH>5nge_Wswku3ByqQeuS5v>$o*C!BJZqJ_5wNg~^XyCxq zv&!q)`k;I(&vxwJA7Y@~5S+jfDGzcWCZX;bs;8T-;h*Pf9ikZ=a2^(S4K)0k^7RX)Xpl2)l|H2Swi+n`k%Ho&K-|? z;)GmN^~M9UMM3(T-A6dgJ{`Xu`}CEI1E6HqSA&6w?9(Tz#xWxd+ISy(e1V$doo$ZfbO0t9j`w)%31{y$QH(uZ#fmYIth!e)rF0`2(A_;UXrYFO<0Mk zsbnHs7pj+xeYQ4w)gP=OS(3mI%GhJA|l0%up4;AowTZZKOScCU=< zKxiw~$BoS)fXqrFHsEpFun$`xHDdCVGPmv}t3KGOd*7JP_HlApKa=gF-RgUx8G0FS z_%&X}JsDai;fLUJa|EwXDsoZ+(z#kuZNRZ55a^82{B`lUb$QVRPfB;eiC!@skF63W zkvXMIfUoPIot@OqF|^ZdKf>*@L4V(*N!re~$zIY%TLc#x&bQ+>Gw9^-BktKTukFjO zn~%EjqJ7TpX#28%^>3G5G_vi>2TtvJy?JQ2k{RB1wUmr@D#PumV7P=_l0>M;>px5U z$n~h5RZ13sj61aX{GJ`j+0^eM8-S@zplEyQvjq#VcDfJ+_!Pqs84> zBbuHZ6a7hyvcCn8wFbcc`!NW3g8Lr35x~rafHG^RP&2biAOQb}g6Iqddgsog<>c@O zf3qX9RlSFp*n2y8_<|*};lT?JhGm(8OgQw9adSAaF`3gxwROmcAFuTC0l_8t@RL~~ z`G@l13GJo_@*%8xVSij8CL&^~LrJ=M5!S_NR+F?*518Iy)yqw)6Q9cO94=StV#e>b zDmo$YxtncGn)oxCRyL{7YQU$Wy(L8D=wN9c3q_?b8y3_CRK*w3)GxIZ^(($%&xjA! z(3NFf2`{ttO_J7le39ItGe}-rsLhRa6vX5$mK{p=l~iP7JNVj-+bz5C1zv@()(bNX zbC;SI!zjMZu%$P){$9qsl4B!x!8BhP)0DP-Wh_%{^xyVXPreyjvq<=AG`{JuaW|no zl(zat8{7h8`WgbWlsL;%^u{q=ozoQBo+?9Y4H7!r{3y`WV@t<}tE`TmLsBTiQy0@yd@c2nQE(;Ten!r}~>QuL#UQf&U&u z5ls5RD*_ptGJS!8->Yyttv4Bd^sl`NumVy6*M-ezl07{(QO!d-uKqczbImVQCp@^W zih$C*GBkj($W+?^ z@wxf9aDQP>lBxu>vpiUk;)SceNST`#c?4Q!)(f#sDw~FmU?I4ieG8Pevf_R8D2?X1 zKYS^u2gMVofbU7qfl&HM)U)KQ{GSySUn zp|9>6tzCkF%vi1)K;^F?c@ymXHK!&x<4EdXu>oZ=S*E|LY zy`LV;maqInZ#^hFBPRksBU!XN^6U>aeY`1yIwNien|HygDlb$Ts9gAaz`OrPLVUPl z34NZysm%|bG?DVnK+`W)*NR+ewwCd{5V;~Y$#-`I+v*LWSoq`rVWVniDrCY|y!=}B zxnx7=Yu!~lBR5g1mXJ7egVrYRu&It&ju!1&UQ4`X>HtJ~P4ZASayU4e{B}*n)6M@7 zBSjE0p4R&bM+Ux5_RP@yxK_2 zVk2A5i>It4tK0{?5yOf^K2L8^xesiB1^0d10|A|)ggtVUaR2#Ipi%IlhsHw2-0cw$ zsAJt~1I6H5yzOXZWIKL0GrCacg!}g~;@f?tldkvh^Oa;gj#e!Xzak^5B6r*o9)9&9 zQ4PJNr^~>d`%l5IM{s$v;MGb$B`MF+-!YR3ANZNH_BE4%eo#l<><49Kgw)ho0i2<8 z@=wm^evM@neoPttcV=&#zVs<$N=4SKVuRwT_tmdF)X<_46E1>y9YnV z49Ks#Uk&$#c=D^Y!rTKq?5SXX_GW`$4}4|BsO%jmkTf>#+9D5VZwN|cqiFac{m}OE z7ij-u1G3kL2oB=HdqnJArt&y`rcd@i>=T)HzrE)ap+1vzB6vhM7DTrM&p)rlIUVEE7b?Pk%Z}_1R7#E@o9=L7c|c zA)Z;)p+En|{g67g<6y3=)jqNg#4y-`bBFMO__v>e!RXmL0+fdXolr=-T6CzAqg&?>JPVJzCqVK|EFoASte<{c9(VIbg=#L|l^<pA z7QCt0Iof`!eo7YHRN-YvBluiJJc0Q)wx+!taViWxJhYEzh@|7C>t&CbQ2g{pFBGkq zgyQ%a5RTUmnI-iFV@2X&8`XuhQRL?O2L71Sz+^}-Pc2BlWP)Q3vihO!#^0v+HebET zs%M)`r6ylX-G_&I7HbUU>$+vg*Aiw{y%c=pDb{qz=FOfqB~pw?OAR_6 zIk=9vN^x2_$;YacI6{S_(u?&80vFSYo>j+hT=HNRXv*h9@mG3azw9km4N$IDYZB9{ z;*~pT(7Fq0e0k^K8trM1W6bGY74DEM`228>AQ>}zgLCQU>56p&(XZ2UH*CA{GjfID z=cF4veyo`AbKB{?@$>8RYZtG^KFKi~gU@H1M~ zbMbSW)hCcM#LrF-_rlM)AN&XSA>F)OeE&E2iD$7?fFA}u^Ry5@=xp#)O&YkkoH{zSj9It`@O&YXo6Oa-qN@z>Cy^&I2bf3dKMhSI_T!>G~EqceJb3-mV zja9^MwSO^ev|r~nw-uA-e*V+|85s+;KLe9d*b)LW@lkIJ75ndfZ=V`puO45D5X*~K zF0kel`}TkC(<*&dvBka>^I{V(T*NSSu;TANQ-Iwhgu5<3vt%~;Zs4b)*HE6}IDRaB z99j$jEc!Jdnhmps{_U^Ip822KqV01GK4Vii1@iGUJ!j%Fi|V6)c+{-RMU7@2!;q}AG>^}_yZ>w$dg~g`a8_CjHzpjYokAs!(60}s zm-WGOXZtpOX>Ej-tc=D@)56(?HseUE@8fquOi$bowi(7SyFHGFc6OsVy>g4;qUybZ zy!7h;y6vm`X1(({D_l>crM&Of4-l)V4zjfakOqoG3n$q5q(=YU&L_3{@1;?;_B+%} zvY_S=55t9mS1NKX&LsC+#mphC)&wwYv7+oM>yy)R=RIP;`*nvWZ!0G9{`8b^-r)jl z?}G$4zl|NvyEwwU3vJ%CCvlE`c&~fnB7;Hv5U;$$+7lU!xT6Od>Q z^TnHf%*(CjkAj+^8p|?d#X>IWYc9BdXRkk(QJeGcR%_?*Xddz%n<(=HF}M@IB?I*q zOT(!Zn;4KE?)D5)>D#ReYg}%QgHjy+Hfdv!I;K{H8la zQWXrl9l;ZDWO^k|#>~SK9>So3#Z)Fb;x0b$QCPmHTY|`dz={lhR78PH=_#onkajUR zZ^(XvEHXBfYZG_a&(+bw0VN`da$4j;hk$sBg-^wLs#mA9aX+7}b1U+iek46sWp8is zNjkCRz9Z{h6}1IX$0sh=ROPJi2R9kI=ikDFg0fUZmY#}e3Uy)A;V>0S#5RZ@ph+yq z+U!H^TLL*P1|R>O&^Hl$ZhhTj|9)nxam}!HulJ))#E?Ms-wkN9&LmI^=l?9Yz(a){ zC>HvD_d)&&8y~CFURB3AxW0-9}MT$ z%p14U5Vi}h%ye(@rNQ~F^>Spl^?5!`h!uB90xh=BkStlj*l2gv2HJw73^}zQvo^Dh zui=k>OEQQ6GU-?L=-dH+7diuXa?DOza9st8^^*rp@*J>8k|*>gU;3Q@wHXuk-u=AT zxk;k{c^Zv-(AV9}Noct~>%Bv{Dy*E@9lF3O4yJy!q436vYCM`S1_fJJ8Ef-T1{jM7nN}9B{MAX}yv#J7 zTk2le7c<85TtUZy0-9D%+>gn2A;!A^_wW(}+$UFhz@Y|Fb`vul zn7l^5&87p%>ukV@KIZxA4_Ngk*wviz1H$?l*d1c^5lJEJPSe5pT-Y7=kG^3SSnZ`) zg}{zAr0xESV>B8)H0nXH(?bu~%@Ihmut4ZOAUyL#Kp3oVLLgpUsyW_U(yAJ5tEBi4 ziJ{BX*81+A{A^~lWq$heY>##~Z|Ixf|0xstddJ5DKRnY-!zJ(3CxH)Ku^CHUQc~4< zIQ;o!EG5z>P?IQ%ROL-WGO4WBxs?_E-d7(HAB!(X0O<5{ZL$hF!#G($gVHIiZ?EG^ zZR&)6wG}VUK3&`CF@O0hGy=Y$vyjC;SO^h>tLWOqi>%K^-u`M=ZR$kxbXSRETGbeW z8NZ}LwiWyFj0E)z!J^J$uoDw^&#z4l*ganPuj7qSYZE)|-Z@lf+lkeEQczC3)VV`V zVm&8L`o$`qk6t~_LfkjkYW@CYdaym^0{-AZy#NpV(l>9zaUGyR{*~_h+P@PXwv}Id zf!7Tnq+IgK6a|QBP@TY46gU#^G&vvYDz+v(;yU*e@tESuWJ;b3;B4=LQ(}NAtV2o+ zf@Br>U_4v#)clJ?US-K)3nAbV*mA<1Z|eSTT*HHwGJ?F$!N9o0-Fw%YxQj^~hm0#z zd!FYx4#nv*h}<5Dhqs-FGWff57*gQI%Vht)45Mo&0p}g^KK(s_jQzj934ek4o^J`1 zqqh>>iZ{Gd!}q|ka*a4OAAEf=>(p4qmlxOSc+9>pDyzrmFN660u@zr%R%UH1wFi#5 zsf03WeJ{P<11zDrk^?H49$&bb60uT7U%1hH?dWDdHztxz0O`F9@t(iT!0nMA!(2^L z6u`AXb^(Kr6#NZ?&?$@zvM=ixv+VFLvMB$4?Q#yf(J_a>oxEANilAs&8^JTrO)u` z#GD$nE`J31{|?@mjb$%nC+*+|g>itz0k)?#4-81rX=@oQ>S@%|ut z`oUxbpz|U+FV2$Y?#=$$eRM9#mD}M{Z7P$$U{5Xix0S!ZTM`xn@}XRVL{@tfa8Yo; z#utb#8QS{gbWWVY(nde6U(Snq=K><?E4grA3I^)Y$Ly z=q7=Q4gmSutp#~*#EatVuphQI`R@DH1zvNlA#>a>rul5gy`Fvig6V+ORYkl|7`l}fTC+w!Pe+;eET7*Pur8sa7Ln3kx^XR518iLm9-GoE`CHVzJbfc}_ zjNwiCr|QAGY7q+3uqayDM=QZvsu9B9VEXP0^j+)Uap*7Wx0TuD7G>sVjSl>qBQ?6! zG(byeCvimv0IACVbI)M9<1%XR)N<$b)tZg&xmacSHGnqoAbfexi1J?3fV}Fx~vU8 zsCYTr{#zA*08~Yd(5p;%(wr=tEIKHHDs+spML8Z?^n?c=nmELpis+I$ON|jpsf*IX ziC|_8;#(tf!YwHlTDC}pQ;^WLR166{s_R89DutWoZ!mjpp8v&05E!LNoG`Y-M`Y04 zLT&I7su0;%eGIr+Vm)xg+dj)KHqv09rPIc%C$B)ei=LWBTUjG58?bvjb?R( z5akD15lbA&=Ar&yM#hP1{1byvBRozo;t?0c4t(I9m{6FmMG!EI+Xk^P##Ra1aMyAR zK)Ou7^`sVN$jO4`O?%+fSagtZS(&nrQ@K@fUPAb58W!rLY?2ggViG}(z1oBhQUyo7 z%2wwQcWz+)?LL9>v$U1TF~2c1=PR8Vl`)eMX0|b8^pn0B*JCJb`uLRmS?V{3UiRy& zHNsHh-je0|Oa-6N&N_R4OK_lLk#{H~hMc{Bz;B(TBAvH@y>}E52b~lDhq2iR(AQ-t zvMnaBQDmut%3a0ux)6fWEnJo%R_)gje8Hym`~7)M2Q8b&FYdQXIbZ`uHmFm~5gU{a zb$GrV5+R>$yTW52u-?~1!rOeCj zR%=;Di{np}#}Xf#?2sLRzATF+*<@siMn)QF9f=dBrm5o#bRO8#<)WD?YPzAn0cELC zwU^35w0*KgG*94McfI$wg&Fei%bLfkA3~- zi5awYk>NrI%PZE(%v6I1sKND11Q|PVKG{|S#p<6@(W`euU8Em`^|lM_?fxkG%9p?` z?B*P^k=+qn`(_`rM?2CRx4rffJBfc@_x#h~_4i`I3I36?75~^L{BxJR=OO|=lS9Mx zQ~b;R(H~DkJS)eON#JP8?HP&<6s>S@iGX7=1=EHHASH&}LburxuN@^z<%$S|U?z|5L%JOEWO^Yz#J|jMs=>a9e_7bf$;|2HPWEBXreT1N zACOCA6g60*G2XA-+CP&mq6Y+Jdl0IP?U5R_<4af_kppBk_5d^5vx;>M+ac>Dz64O> zTaS%JuX3ipO{qujo&ze{pZ2Jz&!8f5a0`O>JiSNcsjgj=n>?jTgj^M?crhA(*qSk& zGvE`3a@1#F4`GCU-rw*RZ9iW{5UjodMcdAz0UQRg)G@5gRz$C8v=S4)LUoV&`m<8- za!no@HZY2x0e0x03Nmf+#wX4bUEp1XE^t>tOEV;`8uXU+J{iuC(xJ#Ar;g8UCVXg2 zMl-oKgT?>KX!x{?92L)A>x~9aTnf&3wOaTNjE2J9w`(-qZ)GtW%%4wnE@&d3mg*DvWS?f z`sKMdBq-|vZN=AhpRl{OL%QkeN@_V;H^I9{;(bgIS{Xz3NIFR~i5zN2$bqDTl- zA&V^cr;A0Hu65bAYB}Z5WM&D=um$-I^moolEDG)*(yrIB)#B;ei_r>1tdNL7omN?1 z_K%Merdc(JoDy|awrYTMd31;GCg`E6>7MpS?ac6UM@*0Ru4w#Po}gocu%PT6$Hd8!Rb|OAo5d@n@(gx&nr&O2tMWSjbJ2~HNmo9`=tcq zsM&lsNeWN6fr!yCe-lPCXZAr=q)zQ5X(u>}vO1F#V7F-@U_yg8bB3rmUis3u0|`rF z0iqL06FhJ@05Kq@2z!UUNlNnhtU(4XyiDRk`m5SQfMSi}F1i}rr)F!TR^AwZ)fiOY zV{L6}z*?Wi;sWaj1v_A^s?9*%uFY5CM7&Xdch?SO14|KI{Nf%TCXCRMfZT=t(DC_- zr=nNS7KfOt28#yzO22BE99AeT5*rFV@n(GBF8(B7fpkI7Bqn2)`#i;cn7;N(jc%{R zzx&<$hYpcU%#FV{7-AkvLTFo})jkQsj~~^qdG}cIyAbciRq~HTuTZA`SaLT-EU~09 zFZ?=pIXB3&f6mPk%{%*y{mlcFr@!fV6R#*&(SCTR)JaA~1*zFG-vYO*n76TrltwAF zk4UPsOes=Q`#dNmH4_}gIjJeOws9uO@t>SrEMvLURsW9|9^dx@@a{7=!>#LF&HV0k zNceAqQY}7KGAxHd&`Pfz-M1Tto$1ucbFKuI%#vanGx||+Zg+o_EzdMd#-up6YaoqY zX#D>Nzx#OnLeVoN67>hvYJwU#5<-b)QjzE^L7yP8m)%)OFD1wqL*X~ihPe3a{vm@A{k8Rym}hUIrYri+9AXBW1| zmP$>Q8Wn`Ok1*iZ-y%6uFyu#`0?Nf2$Uj?Z1Q(AT^m8lHK%|7mjZl*@NBWIIh-8{( z1Cf-6*JOMBweYn4L0836F>T9d+)buJFqk_-(iIKr{a03|Fy~7H>{|}5V(;MNmBk`&a{gR9~i{`HIi!_?OS)+QPwNK=t z>?o_xcNMblFcm$As?_*BSjxgSHXJPEJkeZgky+v-N~u?6oT8`VKtn}jp7fK}PeSO7 zWFgX{zC$90rPXnWhwoOI&+w0GEO|uysQ%5TdD(Luv~e*YI5RjVxRp!JvBr#j_;(%hhzZL41ABgnIy`_8DcA(lKQKbHJnA?x2|KQo&9^n6cq z=w`2620n`2yuWo(n{^Y%qCa@+IlCVz=Tg!!*{ZNiYYh)0hAI3;Q!8i&c6ymf^lvT` zHMJ_4G;;fdCv)r$L-+Pv!ddr?UexI#{+Y*#*oBHOc^qQ3y-}p)W@tek*U*2b>BFa;8l=O!BONoQ!83 zU&vl6!D#E)@}a@8C-TBQLnK1yqt>artus{W<@DQ2@CPsczn1@5_VbS0v7f=X=ln&1 ze=Io2h(;@ufK6cNJ@+W|1UyT_H5=LX;j?03Cv%pPk6SGx1ISn>n64VL^6Q+x86oJ2I`}F+=U=@9b`j$a`g)!qs zTyAPtixjw|E{97xvfRqI2K6}lj0}_DAWQnPYQ!N^ z*mp`G27S;+EEP_Gb#4}i691Lee=_9Hl-~?mMm#F}OS3*T_+XEniiAYMmdehRT5e*m zclh+(ZS&_;ePnI^xCs|>hp_hNqYHH1oOlqiTf3jW-#mlLSHMr zR%vj*556@T~^Dz%spH_2;4TAK>y-@jSq*t{wfKo{$Q5KcbWRkQU&Fc*Zv za{ZX9+?BCe#sGhi(ap`@0)dApT&zN23jiQrWM8OZLldmx+*5D$jg9oReJ%mK{W3^f z-aXdWI?;|elU5VQH+CTaR(2<(YLxPUx<+`)MvbMdUvCU zlkP@i?lx=m`jS@4O-$}uZ94&4sq?L0^D(G926uut-@9l`J33H5ju*|GUVZO=vhD@> zO)?Am42^YIv+e%!7AJ&CTFeeA^^b^p?lu&-N2#Cv->UTw!L#oiST1Fc@FibzB8f zQUy<*=?(5WAxJjE2ZtBt`AEf7wh!Zt7vzU{MX9%$4j{QD0Ev%5^a(iK#(pBtE%NJS zX2nzrn`$$?=j&{O+tv4eY|q}W*i7$XvhZ#X%3Htk>*COZGP%4PsJ*arnAuLD2L#mq zCzyCc`aCmcmI9jxY{TyG8(9~=-Zy7?IrqoD<(%iQzk^lyYeu$zL%Y)OSF3))d@yPw z*rL+FW;%>N+I>t#jz265L7BYSQHzfr_q>Nw=pV>!(HhG*F(gFXm5YoDR?hHLQ0|!* zZu28Cr&qYnk}%}-#nE&h(Kw-xjQhf^SfAT-Z(-!&R`K`k!EIxoVkx5`a^MHW&Xkp+ zKS;a=Nj!jv7FB8?W3zA#32B#)SxSR__rs7pkidRlA!cP5~Q|xINsCa4q z4`sNN#*%yBhmqfjmD!6|0yF5}Kok~DRd#(>FeEyKhJ*bp3(r$Jt)Mq)_?vX}Msb`M znu^!x<9%PFqz((ag}K2`%V(lyfxP?hZ`*;SR`Hw#pj>)&H%vYJhDyHmh_5ry84v{w z!K)__bK!>{+d!v!9+HB4Z}>&85|pA>C}=g7JoGsqxcbsX^8&D5@?5^~Ru*18>b^+y z3EaI-&jRkBe3(sqLcgNPF#Y81twqKOdbAZQ0W5*9TqGZS1O zB5K4$BOoSrg0#)msJJ_d>)^g2g6J3)S=<0|1dKD{HdY%{+ynTU@Ao@Z_x9~1EaUtC zp8v=5klXj(x>cvnUZ+k~p?y%J8FB}4c@dF2ZXd`E>*Pd#8~V~4nVi@jKWo`*0JBe= z&-(blaDICN=MMAY$NzTxvA_7Z%YXU@Ez92gC);JxZU(%i)Ro_*?InIEAt?!=>G&Ge z)H+bp9lx7T>RO)HK_q)Tp*EJoDF#X*p`MH$X8p~e=RjRftHYnhHJw+i|2c}jfaIV- zltTfTO$w00A+=r-24r?9l!f)*iK2xlnk{RYVGN*~BtFX07~fJr(C+b9V4iaAvt08N zln=2Enmh4C10gIDZ|EUoD?CsUerIt3_7-*iZqnGEl%0_d3(D|sMP@h}#Qe^$83YzH z=%x1j&Rl6!{5KtAhz*GR-o{_O2Uv;x4uk$4eu#dK{O&EEA*uSYeB{ok@XN%J_6g|7 z%FqDH>u%x`Viknj@0|?y$I=Q()pu(of4Aa40s~NDZPc#IFam1kT#DW=c7kYk&IJ)H z--ZcV=fe&SXE?<3@9$i;x7eAznEC)Udoy=cRu`%H)Fc!)GDOQV>(tpe{YB{UiJi2d zhdG;NA5BcQHOYrMI2$>=4R=vC)8O2IOHTWa4dGM`VqS*-L|sE@{ig96`-B+{#4z|K z_g1o6%lAQlXTN&v9-fbncK3suL8(v`QjiZq?+t^1 z3bY5N)h0rI8wySND=CDuD#T|F1$~<1>c6}PUzGj!uh#XE+P$T91r%>XkAw1W^2^$5 z`4^lZK2awKF;{R}CGXL*3Oe%Jr7L+k$Y!NZ-0{u;B2t+$;V)~ zu4qmV*0_LuCMp*&_B$v!5Hkt2)^D_1A0{cs+OT8fN=hzIhQ;3=T~kiS)zs zdLiXJ7LInyV0r{m!Vn;GD0EDOH%Oq+a>E<=F|JmrHH%aU83lBmMAZm1xaDU-zvlAu zYGy)yTve&I=zz$NznTXqH|LA}-@BXb)uP!m_R?$&j%bUzam3HbySRTh{?wAfE~~DV zeb7RH;&0mCI_1Z#f2${A_qP7cjyv1F61iRLZp5*OaPl4zj{HBJn82H2-Y{0d8!**Y zX!nuNGC~VOr}<;gAv3#i8oWrwZ8r! z)`iiD>I{^Sc))u=wbq{!6u69-M~g)X)y=t8bn0$)$|wVNn0zM6fU1!;lId!^GPRTVt zt%rL~OUd`m+^6%e6YEerx|#d*;D1_mpEB>z?o)D$|246+ewbxM`F~lNI+WZ8E>5ba z85iHOp(Pg&0{Ywonr6TC_;NZ)7}){WVmidu;vYB}BF!~T{_26kzmg7MuQ;&RvHBkQ zfks+8@82Odq&htUWCJj$BzuvuRt#$6EFnY3LT#j>4P=uetuzdJts}5+)WbzmPLn>A6r~@uqe*>Kjy`lc2)l7MNc#O#IP0j_R*8y!Z3;~%1QWw3&P|h&q;id|s z03G?UZpeg_nWV*HEf^xJ1Z1=p8+nDbAS?5JySXRkdB4-#FT#~-K(6#BISqpR#I+bA zW=z#|fUbHiW1$pWYzhL;ENgj!EVx__jG&)nPgVhZ)MVyzaeZFC*6~+c7Yk^%E*7|K zT})u8m@}!WG`iScv3lPQWPA*AwZxg*Tl%hdbH$qaC%0nN)f)OpKknA^Gdtk$fj<~Ti5p5u(AuKIRZvLlNCjJE4M{G z{BiBq@_ViV=iDgRrahKKV@$!Z1om6yC}IjUm_JesC<&@6j&qJpT7}$ah*tpw2HVVy#BOtk=jUMF?z;9!6FWW}Rcd(S79e?nKyA0mohgcW zd`1QMnT7=QSFbP2$ABaQdx1+`69V};Bh$(bl4-dH#O0LQ_3M_V$WGyAcOP2R*3fpq z`f4nt>5D*BUSyD0=;N>9v{yb_1E83FG^eS`5tVs*?k}g;e{@6qcU5d`-_gbD0>{hxGy5=dT9ae{m7zW4@V` z);q*$B_>P0QC%A8ZFS3+72{U7L$Uwoq13h~QUnQVp1(_56gV_wjlt2w8c00iPr~i* zG7R}k4Tqt{Evq^sS!Hv`(uwuz#{Yq$*Ook)Lh-M_m4X5aSbppbP$=aBiiS(Y}|+gYG$HMtuKz$~|lo+87nMm%&pE4sms zXGJ84G>16{V>ACI^%(Z}5c*P$WBjbe!yZ2;x23fqc-_cQY&1;YmCpEiqu=^TIRCtM zB<>MwkYVf|KkxR>J)UpC|8R{bQKy90z&J=~cdJ^Cm0PxcwuMr|De$R5+>3}#-1Xuh zAg6`%MYc#7;R)r8r0mo+bX5ocOu<1hy9jI|-<(PhlAq>dvPa9vQXnU#p_khFlMxWt zSN8fGF1_TEhUQ=UYtF?}#wYMG7SY4(y1tH6(8wVrsvg>PU;Ue?&&ToCTp^#xfY)|+ z89!Y95E)&M-zY*00W+Cs5w9k?4L_i)fW}!{cXbx#yzKlTqON_SYPXsW9noA(U*033 zrjv=GUgDlWtnBa7u&c8T=U_?^(mXRAoIf~2d{eLdO_RTw92EuV1EjgR5K5~A_?yLD zomuZKcD>1iphtQ(2XcMdUV%Ks09kz|!y%>wEhcLmloo068SdXhCdY zRD-_P)-(xD&R1^I{J)1OMM#+b5m##S23*yD@TZm%6{JLk^nm%w)h(&c+)Y7d9L^>5h%KT4d}-RlzpnPTK~XK zEKvi`{uyqTqx4=Spv9TG`^3n8gga3SOh2QQ0+!(@XH&@n!G7ePHF!1-ji z`LO==P8x{$<^v`djP=p>$Y!%?ZYyjKgD76F3pC5=j?9a%`UTS*B}9MSCLh-RmH zD9%nNy;=^QUGN>^py|C&y>8 zfk((NZJo2ZjA|El@~3h|-X!P)4+aB&g`NED{HdNtLYvgo&F({W4Z~)r3F0x|4eNL5 zpCbM>wBaI-qnr$@zW0-5jhoRt!-}6aeJJZ!xikFZq*}~Z`aMC-y;3g2O&*h)aJJ5` z@&Ij^JA%p*cB@)VF06&EHz`-Ai_9!}&K~bQEGy(~0Gg#-2>|cIek5gGxhi%#JNaHsL4Ms#?^H_@iM1;RgsRnqY*j6sw)TJF9*9Bg|8^Th9awNyVuEuBC$f6I z^TuW1R0L1s0_+pA*_11;U0z9c02G$z$YGGrobd!o2OF_53^)77t9E!r``=UE4#xtL z`ehJDzET76RXg*%H1WJJg!N$!MX1drHKI7mn~;Vz(3^!75w>Gv`v(d6JNPTDKd87W z`6V>mI$lxRMqK3?e$!8v->~2nEJUA_g?8e~fBa2TC_O=;QWgrbTX+$|mH+s=5Wl5Q z=zWoSU+j8cV&40ggn`H!tQ$A9hfK&|**^j+%@zy&LFb(aY2;&(q<_S(k=)M?g2KiA zTc_BWO`HfSE{Jx*4vFwSp)(ho=%k|nJN-u^py4dzo$BnCoDF{P2cseIuWA9hx{+rD zKqlZ|NPL9QKyi>QnQ%aclGbYTBQw)d{59-*B)5JNB==}3iCun2X2~wHS?XN8tIb<;1Dwf}HbmV#;t>D1nJ|A74I&<~At8jc z=40^~ns{{{c^mpvidela{{pdnAd!NjR{ZcaoCx^;l5Ne8D{-2T&bCH>Mkeo#uSv44gC9Bu*E7DTbHD74Gv(cfN;&cOQf>_ahCX6XkoZ5f&*8G)qMJ z9=?Nd2e4K+hQY-!Y%9$nv%mtT%WHym9}cK%n#ytLxNzW%fKIKuI?YMH#W}o9AEHcI zS6C0OO#7ZeIg|N{Bm`1*3Zken5`oJsS)OGiZD*J2n44!$H$!!3lf|P`}tBb2UFBZ1h zkfYfKS`~ZRrW1lBwi&fmqukm5`aGPh^aeHxcd^Z-w`;b+__r%qCQ!fyrb|)8&h*T; zDgyaTF&)TctY86mPm#n0^47@MxVIaz|6^NeIzL(%Xz-{;G@EaYZi+`x4L)sKK9NWX zihmQ?)z&|s+f9Y6yx(PmfbP&FhEd18y%UYF#<5akC)DUIU_MRX0?BQ`N%vdS-RxF$ zg9-qx*zH2|_;3o(%35p*!FwBca(Xai%>bc6MEW-f3iZ>(v^>wv=57?5)Y>tyf!0+h zgwoEZOc2=+wmNUd`44T_zmDN(`_1t>cppd*4FiBH1dz4yXZXm@O5N=>;Vn`9J1!JT z9hI#^IebQT09G39OHR3=U%6&TkNJ5q6#pU_V-nVZu5oH zbenw1HW%>pRo{Edl{PeFFp4G81V~EDa%4F z)9yem{qeQE&&6jm_thhw`PV{BRe$Kc*0uKHms@BPJvp$vHLaZ($7%ijH__j#D><5} z2wD7N#FN7{_Bm{w-4xDQ@4sORiZWXf8o-!Es2d@lDalAaQ5(j4!DKAFwUG**zWCtxhcJ^|%K!C<_en^r|xKir3i(x8+h^&MD`yGJk{Y$&8L;713qPjtSL*Q6crsOr^ILqDo^RDjWFB1?INiIgj>;XHW` z%_3L$^}NCv4B*OtfM)s_j5Veroo+2Rc0?^EG>-F&_@+SKzz~BCOg+LrrY_Aj@F-Cs zH-D?vyOU!7AHz6&p-KvD#<4+JN$S&E4_SlXisVlD%`kQQw_rZ**+ibvyIqs!g#+qj z;y{ZNh9?9c$#5eEtRFGp{e}~`%Q;n7e$y&=^GK1)kA6f(D3o2ekacHQg>AaFii^g? zVEO^F?=d+l5oF+DD%Ny*9_WlHL$DE<1#OyTouhJeG%&gMo($8xwMxPa}0*`yZ>VJ)R%&^?Cp z7>6a19gfm!<0J)^L-?yF$&Yk@%{lD13~Yoom``o<1#4*N2R8F`*NTJ>RMFXnAI$C` z_F}K6B!=X1)UZXB6tiXdWK|e+99==^HiF+cnfL2LbiQN)2^L zpa%bl{TVONjyqaIEAI$xA403`ucIGE8CY4V4eK_X?wx$DpenhMu%>RR9|lfJ{cHmu ziFw|}9cNt41g?DE^nNX7$FO?K^EwLIHGXs(YV@NCCt`mXD#R4pcoLbqg&GB1j;sKC zZ^BY`scJP17b2EAMr7C5wiD{3$w^4inz@8fpGBxMEm&dB*6aS}sA;3dLNUGfz_>ZB zGKYtqgHql~s4UMpLxJW?uGeU0)P>H@^8&Hf$m;kaLHEVSYjjH)qWh(v$sE`K`Alzo z5bUwTAN6njt0{ggpU4;?99@HbSVS(cYx*Y4U;RvaL-q=yD`Bf34GcjUX~;)HM|4{_ zTF*^5s&7Ql6SBLZ5wq)U{52K0Er?CTz`kdG&e*hT9*9q2tQnu$>cmzsTAhe)q5NTg zC^V|aHdm!;29cKMp*e>jK0gb&Z#e(uN0Lvb zSExX_(lQ`RDKvi6Kv0nk3kMyE1Q%{g42e4n;$e1ZChH#crs!dI*d z>RQABY7RH3G;DQ)ahoc@92CMnShYAB9oqBGb!^^q{yPb*6txFddZGyjD=$QL3Q^&> za)T(b+z>J1hONZ^g+J)_lh?tItCnv#-u`RfI($%NdN>``9o#^W7Zs=++cURZkptY%1B6bhS;IKS% znnJQzg)+^-JEfr@7T&oN2g-XTT(L%;bfo?c=lF2CB4VsB;u(p!NUl0f#~%DqL)?w$ zV1P6IOU7l4go!(Q-nfiWKxfYoHaW8q?xuEawpzLdUDo*(3)wpA5PvIE7{!bx(Gh~6&c=LiLvOoZVqMqdbKyT6 zTlvn2KYgjK;pnRPH$1Gx@?13-SuZ!w1c+;c-a$j0mPt9Z2gq z-(fQ}Fh-*B51BUr{v8CgTyw2PONfnGzWcDXkP9ulmhS~E9Ku6jlEcUS9wYzq1@IIg zP11BAVhrGR4cyF6#y7X?!P_jxy{dLBlpa5ALPF*W2C|<+cJL3s<1-CWfs zA!|&lVkRw?I({vC!c0tC<=LrrYKeT|ISnOjui;ak)rFB*LO)Poz+z!0lRy3&Jfexf%I26Cd6SKM%ve#6CafSW0JW>%V1?<9qN;&4WP* zTmvT`J6x@Ku+WSxQB1vmj-ch>zT`d`t;4OFw8LQXn2A)q3?JH?qPTIAmJYV zeYQ3aP*ZSERN6%%9A%iN@^v$yWCN69f-;M_b?AD?18#1t$v7 z{T~j--&3dI$u{8#-{W1uc*$o{A13fj2MHsqi(QDO|GsCT8^7_Vn}w;UAC%S)sbtNn z9YV9{(}oqy6?{S>3Tsy42QAl9x$2Zd_&h`TcDC%Z+N4ID0hEBd5fh;!!X$(1MZ*FS zQVb)m)F2zgu&|W)sR&u}OHUWFKKMa8(6Ve83cj&~--FkmN3-h7VJ+(aQNXcfsTlQF zN{gas$S0`3m^@yIf~+3`fK5bvuf7WP%V@nL^_V}yGqqyu_T)a41r1onY{c45scqUQ zU8hObBHOlUBh|BT9^40mzpB+lD~28nhc7B5@Fv}`s9Bwznl?475l{A7W9_PDh4r~A79`Z?3g0II3~ z>_1R{elq-|T^hMNUDofFrB_u1hQIvd$?%GC{_|3>Q_ec9&5mxR{0&NKo}X%yt}Xx| z#JM))4R^YGmH4gW$B(m; z%VzK~2q%9=9gG-oPERE8By<}WZ`i!A-npikZ48QS%*977Z6j+@_sSRcysUIk&As3B ztyTuBiSD%crTf>8JP_HDO&-Byj{NZq>WbAt9oWPx$DmI&^^%Jh@()L5N^0tEBt7_t zuT=L_@q+88v+3JJ4bgRqi0I=52vj!8ky7B>H^DN&fDJGhr9=hsN<}cKj zb!IzG6Nz8WbesK7opT=s^KrL|#MY1($Ewf7qGA;0_|El8I1fcc4u`GHG3pyS@=2jGQ}%rW){#;qEZ zCDr#J)Gz=qDo;PbU!#X4zW3fByJ^!>3!>a*%{IS1_Ff+lDAehWjux3;&g260_4ONmcJ zjp*A$^Ue0wAxkehP|v*!46s(o->!vw%84Sib&!Y$BI9CEwL4f#y!{1Ls9n=r;%&qc z3{TU)n0T^5ULE@gT1I;BUic#NRODuTDNp#vj|-7yh1FNv^#trQt~Q{Gyl(d8|#%c*h`5yUv#9 z)2C?oVati`=rC+lagG3hq4UU0#D6WEVUPIAQsgtA$Dk>lm=6UmFV0JdjmGdHKS&=% zS8z7YityPLj13@Bz?v0+e~a%EZZ?#C>i4gbxosa}Jd~aU=1~{a82!e~eqib|E+y6M z0f3}+GP2frI38QR5ovTC?G;z>9&i7YxO3<5tXx8LK*w_5&@G60|90H^0zTuEs?$$6 zp}bS&%(f@^s~LKsRV|V1T+pw+H$cLmC*QcE^fbjM1#q=eIJIJp7>sLqacyyE=sFG;| z=Rx(n!|3YxmDnaJNjLLG+t=sF;z|BP%nMP1d`EUc{bC7XN;S@2rb;47;kV)t1HC`p ztf}Jm&$c)8RyXAd2d+xhgHTu=lW2&q5Q>U*#ON|jeG!yW|LU$wfyv?dg0}-bU|tVm zI~ZAJ+L<2e^bqH1nN95rQPt_I;(=h2rOyjA3AKyiGVSAXD@WY1R>#x39o(IaV zitI`+J3q23ST@+UFIBrL@e-V3c`p3gZ?|cW0_;GIcz|fbB2>OB+ z)0sfdKM+7cdKRkx?lK_#5R_5hO#cc>fxB`+gtO_N)<20SFv3^oV6x7*8XK2k{x#)| zbbe94RM^{gV$wmN%vCyhhRyJ9sq_aMkbei21FHnU*?fThyP9>Ifu7Cc@G@9UHtHY1@BCU4mZ| zSRept;+(20Zgt~=fT!u$-7iTrZHXU~KN2E+Aw~QH)D*GmVzyKW)O7u|Q;I}d)x3TP zlS4BW!8@oQ@C(us+wlyGoVVr-tFFglv-*ae{1WW38M!g}$hl;urEJ4isIfVP^k5Bg zXe)~5N4G}zU>>|-iTKl!r5ObAL#}9pbX3J^Tl6u0S~H@%I!OPq6t8s%0#my5AL$Y> zzl3f=$TC;kYlAVN8)oN+=j`#%-2ir_vB{F}?$`dGDIdl)D9`nG4E~0AAM4ymmyWK9 z7Dyycy~myA@If8>4-AK3vWC4xvtWEc%M(NVNIlMsHuSlAy<<^oi+mc2zS2T3j1Tfko9UFelf$6y@v6LqHa zeZKC5N$`=5*ohpZFqTB3-9~B8bIMOdsP3k^@!00`KvD|W5Ujwr+R3jl?FEU^J0R(q zugkU?DquFK6DGdU|NEXH89b9-NT6(B9Z<%U3I}CNN(5yaEUb%&h!L3UNo z4;oZ;{86KdFW`S>wvMYXakD_Ljc_9>WF5i$7XivloAGpcu(Z#D@H(QfNV1KkCU|AL&48jeK{rA+hbV(Ou%u%feNIT#Cn^(W{)>AMvT zQ_d>HKo5`g$&38vEkC}%ng&LlFJzV-1`hWmk?o%(TcB(Z@C%p2lrtzo4e9=xYlT5B zz>)2r`saQCr86pa5x*LYwCg=$QlxXIuozQrc|Fs`_vM$gF&Ytnq|~;}dle zD}~G=tgR>X6G>{snND6b0$cQ*rXpXcr!s6RVuBTfG#ZdqX&v^&W`f@%gcNQ6=nA>KJhQrASsr=J|F8=DxKzk(@3{|f&)R|H%^f?~>GZ~>>`GKGcv+CM-7=4OeyO^|1htrsS;)VHL^!j%=5uh37R%s z0kO!!TZg9oFBF=d^=Htd4-@BNskaMF7rdWL(=X9`!f`jg1}(dH1ctGRHh#t|h9(dI z1EtXmzE%HnDE;m+sCnJQ1f>T_#X@PRD~Zy4qGqxwkf+$Dbcv&yiG?IeU;d4zG+(F{ zefCCalc({Z+zFP)pTj$D{oY9Kf!hK z+tn&_T`pIpUeebvmWM3DPuUWD8~qd9xW-iCWXouRSkGj#l-b<4YYjWiu@?tg?7kjc zaI!O#X<1o%bK{$kuaR)T_4tdqwHSYaqSJ{q{z1jXjGr<-J6Gmk;SWQ=@t81_`j_Cm zBWrlZ@hS&fov07i;B;KPgw@CBvKDlE_;DZo%UL?1?G(1a)6>6xk5rbOYfCATiPO_d zm0vK4Kmo>S6(XS^3MAC?;d?&Be_0cn!1#?LLhDL&ms5JyOxPOu;5wS0rQ%$9iV3~! zQ1q{8@LFjQ>i(bxk9y`2%^B#(D8%djEbnj>m5ifC3D$ymmEM4KeB5%M1L$D1qHcc_ zUs@IEEE`l8^A1}nuRSYMKtw?V3JNhIDsqOy5?@jE;Ns@=Q&S=>XceE)>KIVd=TiFh zE$KsCqbHySIikYeB^8`k05Ol*vSPL`2V#&~6fOvIr| zOr?-zka{{yal~NN&cvq@t`n%K}-=Sp?yXEOoYE7!(<=^H(RHh>tAa zf_4-$=3GQaf+%0S!|x$S!vaiFni)`sN*(|?H##9blDkR@fKAF6%fM1pOo?MDDsNQ? zO%S@YaC8_Fp6<4bB1RR8&dkO9)nDv}M!S>*@e0PcTiu1aC2>d)1k z3Po~9Nk!5rFhQbIL3OnNC!JC^^_LEWGHHur&n)uAq`!ym19i41xE|2nSCwW zK4P8R5#V0A%~oq!36|N(OSKGlc0fmSFl+acxd6LB1$JnrZe%u*jY3MDjZrCSLBJx4way|HVo5NwRCflA(T zC{fy616jCJSja(u36dm2B)57U5!;%6dP?#Z68dTRal#!x{f?!X3H>x&zIW@Vt7N*~(NBG) zKMY( z-yne?9Q`C5{Y-s^pRx{MLqjzL9a#|DxEcc4|A=4zp4fj2vzqH^55Z$awSax*W$YFm ztJuJ+<#!o9h9a*7MA4H1b{dNA6lB~Yk1iZTJ|T}t^pu7UhOejnB%9ssEEcKH zn54iAE>GHRoX90nBCAVRm9-CH(Sn|cgZ-~xgw!U^>g`g65VczM^|i>cILcOK)L&N* zf^U^Z+QQYrpLxR}0+@dfc1HYcd4Y)2DS{#|clt=5hk+!T(-{*e>{WN7PX7}8YIrW$ zyczrUn)csdLZ-u4LmS|v>WoUMQ|BZz!mLL#W;+ywxfkL+eYr())e&g=a!dIgq9#%v zu_*d_{v|WKSh6q#KbhQykTr6W>A!P*!f9w81Ckz1!OEtg!cuo6S>dgVn#3oe;7@SUSJUf8!RB156p-u!_H|!vA4z zjr$9Zf)GWL@Sp4;klOZs#?Qr3_ngxi!ShSPTBAXRgb6Txp#~l$SiXE0wJ@{n88d%l zC8-ac==PfI!=As zmIbgrN=7;m1GmRlsE%SAmS;$sPVPTLozh2IIe`x#AZ!Jm;Oi?428Ky4|IBQ)<4*bT zsKaT-f5|s;Fw$OUwi}#Lq@YHKTx;$ z177b&UY~*=X~Ob7+JLXSwShdQ!ei>@e`Q=o8u;+=DPVykIgfLG5PV4MW_dbX&n?d< zWgHIqPS^a9iO1jFoS=v?q~l7IEZKWxT!#(xXQIgWp|N(!{@Uxmvr1im}EjlzzrtKa7>WA0e zY~S6y9zt{2Kbz)cC@=Xwe;&D)Bp+6|NED@Dqfwbhl?qe9NV9gKxi>OUhi(KDeJ`i!9w82cK@10!J8s8vhag3p7O zI3tMB40Y>~Lio3S(1a&xpdJpF58aM+zRdDFgx|Hi8R4Nn7|AgDqo>J_NK-HLlKP+Y zLz6&*vwoO>SLJioZ<~NPXV|g+xr@x-_C!}~;@@mHC11Psf2P_DsB9{0wUd;UdY}sa z>CyuyH{<*9p0=mex_(DTR(#VnrPbV4ez6b#tj($P&wA>FxPAL)zg)3z|LjlNKP#nu zG5$Re0(VW%j?p=zlf}to?WF01Haceu@tlD+?WF15%>7G7dgp~RkTaIr{&wyC6rrPq zh=Hj~&(N$_Ob@OSA9Ge)SH4d5KSEew>Q1s4m|fhUrOS-2bljk?Zq`I_wqSYaUNf(m zaD&>7M7SNZchUqTCB(@hwj+@nn$29j3_?t3ZW~%pEV-~eU!MU1d2^VC5PI zlLU%{mlU~$F!(a?lG4G0v`Tvl^iO=J1q8xK0ok?GfbV!pnF2oJkTUYzDh0&AQki1c zIa@$N@IUsTFum@<^KdAo<$3xrpIGi()wYMUb{`)=T-X}KCFZndi_5E)h|7;Ybn9E> zuGzvenI*+PlaJlfQm7t7tG2Z0Va0*!MD_Lb1D6o&e>*E_xkL*g*%$wxEc}ly!5r;} z{{hp!#wQ2=U*Z2;@_((1|5M2SObmo@6}QU&nx<2~N#g${E%-myjQ_Vx0{;iV+%En< zYk&MdqzyR9vnL3?_;9EOitIk&Y_j_q(rAL+7t9xS&&5mI9#o|X=3m{B#O|GJXdQOX z5ojHDkH5_BxY*r9wlQ*0hoBWQd#+~oCLG2`H+6_g?JjM7%LfT&e?Y2o+lF^<5@zpk zFgn!+owAv|%x<(5US9_I{ur-|{lDbE**$)93ufO3e?OE({vM?B^Y+c(-KXuFzh$)A zY=3C+8=Mtt@GqckG4kY$2V4tIw_~VH?MZD;Cj>TIut(zxUjsul_!_lfp`vxb_U*aE zwio4T+5-$0M{@t?B|~d%ke#srZq+c73XNsOdL8sk$CRo)P4^AG^O~Mjd*1BObZGgZ z7$yX`_yv1R9`Z5grxAd$JOxA0R3@5&>g_FzdapE*a9rMw>T1)W6drsUtjTF_Km^|> z^_KHbMSYzSx8VX12g>tpD48kA5sM$rp&qed{*Luoo}ZSW;pdRt7Rk+&;#h1H#`q;F zm8WC1c_#Ai5p?ELbtXT;F90zbRc=uO=SeM>dr`|JsKw^Xk6&~UggV?hI9>HdB{pBS zx{Y>g)1YGA)Rd`g{{WrRZ7rD6rG@qQ>(>8;e<~3HqQd4L;hBsz=6uhIgIeL6H(y9X zi;Hj4RVShne3O~r5Z@2mB!ht*(r++O+yRw>Lz+TVWff9cfRGmz zVA`Lm$u+(L)K86u{r_0Nj;}!%yU)NaQg5<2KnjxevhfyOD3vO0!<*cNJEVHgAuqE3 zr;)vfnfisl;am!T2Sv}>{4M9_PUM$pBxv*Z$Os|zMA~Woo`u?M{{HqEgG4T1Nz!&f zbu#L)`MVgS@DdZ7n+S1NAA3J9I+kQ7_`3h0KfN1_9zY!TAz08kF+CrJmSb*u)GDj26 zF%P5TOuPg!W%2>R1QXac;w6dGkzEJ*ZzyF`*2qTe4jKA&TWH0up^;Ay3bomVq#;`t zLnvaeF9~ry$_@SWN0?(teAFHv5jM~Wkw}?>*sKZ;(bASpX-lsIw@n-53+t_BFlpqSz5`9q;*Jq0`T3Emah6q{hmjkwe25(iR6CpBs(l~ z-P)F5(kv7`E3>xYXxo^m?<>jHbUL&p5&fd-nSa0}9pAA*_U9(433B3ZKmrQ(H^f(T zsSm|~yc>tTsWR+63`F)^|93r@?51AsBwTtqAAm*BHV2bKq%OCAeHmM`JdZaaQ2fxz z3CZpzC81m7TelyRrN#pSTe5?Y?9i&E$Y)JaRgid$Z=o)hazT{368CBcZVy<}*}qwT zAyy7h*q?0?Y}fwH6Xf5d^nC_ro#zl*AT#fvXTNJ zi5f@)10Nl|#8@NM^_`|BM7sOYcjlX}_8UT zNB1l*{p?8Y1B=Kto#EN~e^d*db>8RHx%2OY*3_BNN}Y(n9G@~AP@jMatNyt1aE6H|L1IrGpw$M7 z$!rP7IOEf7bvawHJZC+s<>q+!53>%ER!-p~a6emtp82StRL%%CT-~nL3*${5KIR7mZ<{Kn0v8;CNDxykd#1TY;RZtsOD?O8hiZ5-GPP6YBFA2a>cPPQ{ghg;hMbAS{;gUjsy#m(~C)IERy#8Q8Q<8;hokC$# z$cJjPQm|kMg--$JxC+m-3v2qD4-TU49*Dyw+(pl_i>jZNBpN@FvCJ%#3}^JG{9_$a zIO8+PIJpAW&=r z0`-zq;WkB|Rmg`ucR`@Kqd&Hj8MPa0CDijC;If5DHVeY~RZ#Rmq)BxxVxJCBkS?~p zO3j~gK>Z($zYvi{8Wmive8XoP3R&Y}^+g42OALZSG6+|s9?gwj{d=CaJ8s^B-DfH-5}P#5zVLu?$-9Lj=R;*_W$AMU~050f>l`LS7Z?f<#AhY@6cx9~(z;D{sREs}eIsoynz#{qcsxf(KTmrMK$ehCUVlQ&yoJn<;-<=wKObxc#Fvm4k2GnF%`9BS{FbFU;SnJzysFokwU7 zj7h~l#3$OE>ZsJDA3)kYoA;srxqnupUcB0dt6-{j&?(~L)kX@Q_%GAGBqy|yGbJ^yOe5Yo`s0I8i;#Tji44h03K*J})1ux8qBrWAnPvl%halSO zi4+ZLDaS~^aYTL^fKS9$(MgVx9(n*UxaMzMgQPlJ|AQl5QCJ4~gPsTBu10!Wf`Op{$-vw1 zGlXwta^NV^3sqopVA}l-|6-8O$$>IN)5yP?YxQOtz2^SY;o3~Dm}fF)g<0f9XuQ9d)-)?})Dsob;j0m)C8 zh4eY>e|#_dD&zYs!?Wq+*;*`PwI>a_@H;Rq97c&08~+_s_aO2qJHfdpqAuH_Jj@!k zeH=%F@3txF>Pw_4*p7}KbL(AObk2kQVKh@9 zF}}?r$F91YO(!_^r_0F(K5L!Lu@AF=?H>h`6>U(x$>M+x@~X#K=uN3qDT*1rar;ME z>JF*ibIARGV?8p~5dSsxi=Ktak@zoo-8H|V<6ry|jbz%YcI0J*)D!uJ2QXs%huUnO z{q`;gpQy>rv6<>*)MIn39_MOa{qM%Ss&fIsIWS(8{G3_I{A%k}`-+|nczZwm+dTd& zx&nK(Adw0BQK!q9`CC#$CM3-uw{{f@d)0a2e>D;4hUe{e?W@+`cYtXzzJ*l$G5w8* z52Og{M}!J$HKE4Ut4qz^UKwZv@O48;@IQIS^870u46*c2+9AmXcfQt-+GgIiT2*z)~j6l#;K-jfrBA-Znm zk*SJUxJ6bk8JiFWR0aC(bUl8YJH6Me54cq8|04FUko|)tkZ`JKa^yNv|5yB9T;KU~ zFYx(BW}l&5Tw!M7s=JS(F_??W{xxVxB z+YItsS>IWLCS3WwOYNeq=J(EG;nwqe)7hy#OiDwiLXq4nq@vdHd+!wBbd2Xo@{Q&D zoR$Vs0G-3I>B;h~yF(XDWrt+)oPyichEll6Ex76GG^t)tV4R^K#|M&U5JWItenN{I4z%#-m*9O zd|Q$o67pI9y|xc)lH~Iu`QFXWw_n8GJMwvk6o4ISMLyS|3734P*+pBG&w3VaT|O&& zpi>i>MW^L+!_7{og3!=TC^o2m5#Y3ZcG4X>+%N!~rrIZ= zg%iMO@jybXZTIs375iJ>9imW}>d5!%m?H{VZc)fm4UT7AD8d@hOnD|*#2^V#We7}4pASjL)0Z4P9a2H%qv3Fa>ZJQ3f^~XhN8Rase}Aw3~$iAiXqq;-P(lXg}P<%j1lu} zxnC@s{V`(BodX#$FO=(oj3Qk90sXzdOLfL}XgA(-!!zFRH1|Psk6B20&+qx3d-eEh zZo%JBi%Rle}n*ha(awt_MlOHLnS0CSj4(r&5-*vG<#!f6tAR4wCkGN-xJG zmS@q!-1-D_1dMO&*-{T)$640g{0Or`ECQ)SE!;=&x49H~M9SO072gTxP!zR)ESI{zm)G}yv30H}YEyS|;P-xC+ zkcqcKv8zDvSzIW86?W;S!iyaNS;Ox3$gflrktB{&4VJnp)tQ4_Un*_Dya8^E7#`|hX%RtYh1^hQ$ZoDRT0z+-e?cc71fxBXk{ zB@f{&lcP+~1J(uC8~tBfhlard=80=UTE>@ylA)a53`&jv*&6@*g%ML+Cio)+3dKqR z=ceoWUUiZU=zFS@2J{^kO#s>&oWSZPwdc>tSdHblv059S*bHFD^Uyyu{J*t?KQ`9z zPod!-!FYCpe{B32{z2C!!EMw1D+I@s1~va}y6y^pBqqW=_`NVTZ4c+Hy!tBB-*NAO z86-V%E4GMGhft+N8k=yUI;ur&BT>-|$Z`d?uGn?;K(w*O%Qn)~=P)IZU+&v}ExM@L zPhd*0pS}%68`VD{@Zl(gZ8E73t_55jQErbX_8xV(i+l+_*jRrZWzK!e!?v=bQ!^K z{mCfD`Kd0@_4b0m$m!USQB!vej|B72{kObr%k3M06)YJ+CrZ$X06PJ-+-uMT&M0$Y z*z$a}88gZcGi4H*pn{XqGKn1<4c-`!FE*-+KNqj`fmgH>R}tb-Z{Jn2&-CHEOw^kx z`I$Y74WS#krbIik35%5@UyDJj&)s{C3WH)B15w zKuC z9nUXS7ouOw!8(NPjIROP(L$Ux&I&b(Q8DI^1wK3Ve;6=0A zpoQd*AbBENU4&ZsD_!ga`x;b*dMYg#BaHci79 z$~ik7Tb|c7fTK67o6$_-Bhr@#lc)1wa=+sF35l0lq3POHcXLRNzIDB-mDz9`3YT%M zKH06t;xF$_i)sAMXJ?Y|n?NNU70WYjB6P@e@50w2Qeg!;a7%Z}D)E%__MD-VSae*} zcKf$vOLO{X69rG^ReH!846kg;bw&`e4faxX4`$*UUJ!q%Wk;k|wd5psZ-j>NVPe=c z{NHH)0PXGgft?>k)l&YjXNbt6?G>f;PeeJvDVcjn~@XGKG(P$Cwg!bt9Qv)NG@6lOv11|@|G z+6)z{ha~|4f*tD;4a7#bj}~I%AX|eKLArzTG1L_V8+#O1c-1ZP$!K7CJU}Z#)b|Ld zOq!HQQaa_@A?lt`Hp_2p<1Y;;8^c26Z4AbK}1k=*G{$qFf1 zp_WU@TWQ=v(OS90q8xmLqVwbe8PgFK&GxQn%REkQ+?QooL!VBuqge!4^M@Rp)6$1T z|HUGAno^aWRpDQ-vZ3vO_mQmKflnKbq2Q@4nykq@K^*tuKo{p=YQ=%{?}&GYk$~K z0d%h6&_r*=zU>)j5(6Tv<5d97f7gd{HqMzQVRAKgC*)pzYpyW0Cp-X{3j(H#F!L6Ec}*n8i{5tGI&HdPKv#{esc@olAEFc&0| zMM{gXO+18eOesEltodhQ#*Q|tH~AIR40P7oQ1svI6up~s+HswM-Bn`Ht0tUa`Vub$ z;+vabEk6>VNy_g|(y#rdeD^n=vUwQ6d-)6b^H4Z>6!{{yxBmQa4dE&PK9OR@f=^F;WJv4Oot@fb!=2f4%f z@G)#pJ;y7%lwsJ@^gc$u;51I;#`3g46{;0m1T(uI)tCWuG74gOa=rp=I0!`qr_ech z=C&h=XjT!qHZ!HX{ebs5_U_Vfh&~&NFh#IxkOw|a$Dl1O6q}hI#`)pcfiax3ru+iZ z7ix!0jE2C@jl$ov1PSC+D|c6qv=lkIAU|4{kL?2MG}mUgA=ifSb*u}{cnZ)H_F&vx zemh{eg%~tVM|a{ta7e{jS7M`wKAX3gft|YMI2)vRs1fKyTMEKTq zSf{aBlJ=@IDuIt$Jp3F>yl6j`n`FL<+U0yj)rI}Tz|E@nYIIF`e!jSKOrVU_-BVbZICFTso1$X6ItGK9!~A?r1B1kS*3?xkXNjxtOU z7vM7K)$=Tg=w~+D$JaqzEBOq+8C;a#_7Dx_7|7&1>J{s>T=|dnY&GvAx$UkR0jK9w4mjBzPA634M+5m>+hZ-3ZV7!{o$4o^ zh<$$F>9o0AXJXBl8q|xEw#uwTMQwhh0*4UPyaH~B)I!}V*gBJsj-zb zJSf2fRUZQHS*c}%)A%wol6#4KAlt`R0&G0YYUqM5;9~0i9@HXyQk%D?l97Qn?AB8J z;J+}s&EFx*zV>=;6qjj)Gm2E#zkDqN?dk_uLgD~haXv7P9yP}hK=dF%z8^;FQ6|iX zX9#qV8ZXIsCP5rsMj`!$$Y;+FL`#gLmBoR7;*xQ5#D}j$zmfk2&(KN2-eBhHOZ9<9 zmamehVx$2cXVj@0+F(3v;3t3IH`RbG6LlKwmO$qkpi2OB^i=@;=x%_8o@s~C1+>P(RH4aGKrsUi`|8VR%4 zHXIunz%j%alCJaLNRbE~i(%Eu@UiPcD;kG}daum4jtF4rd`eS&Q$uG_=s>~8FiMUp zErik2r@PCKjQ~M@Y`1^xBv6k284X3hQLWx2SbCjUg0R)G2!$%CXde8H@jp{zjdlfzLL4;#&q&{sv8Xf|oD-{X2k#)wCu)!Lw0@P=l0I<{Vd!L-;(K&P*Jm zao8QGfK2U#divpeQOT~p@oRz#`9QZ+h{Q|kxtINghsQ7g!~yxyeGHoU1q49i19%ai z-^@TGDuGX?qYS(r)F2TZ44*NE{{^QNjX)&ApC5fc9DNJt$c3Y83gG|dY`MO>~yg&Nt38?ajtP$Cpai(}{W#i-FS{KyR%}EXC ztePD_9pUJEQh$6X-smw0qQf`=*}<*cg1-sYHr0))mA?Hh)e%2yZ9iS}=QHeJ^861F zo<(#qMseC(a4=>tQ4SA)Nsp|Ln#>0=-)$*~LgjA0l-lu6A)RL&;IY9vR=|jaEGi!z zXc&yqg!(#3An>8?o@ z^-((OJ=}5W@I+op#Q8Q9D-csAFHFPa8vMu9!U5Drvr`q~JU~Z_12CDxWaa z3)PGa4}$VHB!9uN`V0RO^95|2d;uFMiYcaR4qK_c{|0m3IjbF7hg6cIOXsz+w3X<> zTfHjXAApN*s5Ayp(TIFD&KFg$v6!ab$3)$~8Pu`Pnfqhiuop(|Y{UTx%1^Vh*d zeJlJG3xs0`8RM+94&}$^Rb@+zwC|L>stN{45o7Y4QZhoH3aRH)-SkKJ3FF&APyG(J z1@pgx3E??d*VEgUP0`E>)sQ8Jx{eNF;1NnG>nx+YuCX!gqodoSg_+MmZQj8QJ`{y2 z=@`lFa0!_irrul2xa(SV>QDs3(FdSfHX(Ny5%R@+gJD60y+bg`g~?z-Fx}I&Zs<`j z*cJOf9_dDC{GDd{i{pz-3P1Mw_Rsw@f;wQ~BBB#4T*#|su3)M{(kR4TAL$U&E|=m; zX0DL?#d6d$nRy=Wg@KFZZ;AYcuj<)xfiFef_`MeOqDbzZsYJz5bUk#P0rD2B^>+z+ zg(LOvw1yrsbu(X=!}&R=iTm?#|9`~)g9)Rs?h6=&&cLQ)6uLLksDM}1{B0m70L&DC z@0Xm1d1i2c)QO-xUTjW{TwscsT`K`tmH?x@TLQ=O6qj{q4f9@gxIi)K@|3Z8c))U0 z>nukm;yugrej%>T2A2?Zc@I&iq|u$_dnP7O*w_K=CJzcg*vH-76{q3VBYrTH0&kAm z1ZBK{2ptOG!d#Fvxh~eZA^?no4Fa|m6%r5@Cm`F+JZ9q#S)5sDMcT*U<14(xW!Zfg>15FHJR#wRKO)Y-5k4j6_CeJD)sM1&Afl{u$>*x zv+d~98f9Q!K^+iNC(q{#>dCSj<$keXf-Jio_xZ6dNmGA_FLLtlH+Xm#pG5` zezZ%&!ARYW351=M2 zk&^-*u%0vGbdZ*M%AH3>k$r>07eBUH*fo~jn#95nw+J<-jC1bCg zR|s^E1-c7??y*4kM4+2fEay9)*yw(o)zKiJpx~TpsU#25vm3{dUk?to{aZ{O`l~14 z0p=h5HL{O2w2-iV?C`wEAaD7Ma4aovZ96ZeA(l2GHo5(X=!NZhhG-ogQ8})|)xTuE zmRMwMQFl?xY{xYm>xy7pIJ#B6Pr0b6BL@SpxZcy+j-w}YgSJNatB;D6A6nz$<2)}0 zl>xPC6*$H6{dO0JisD99XH=p=YIlMUqYQqZ5CrGIB5qPAua@#p4`F$GJ7ha(A>$8I z@iblWBU15vt?8kD7P3z4oOBCDmw%GqXjBj2F|-_5@17M%?hRR)5UGu@dD8iYH2WFi z&ze8mwFP?FY~1E=?wd_47lRJcyM&cVF0 zJzQvUrG8(h_506=u0y{sC32wODc5vPc%}ZP8l^fVDyUu?`5w>f$X$rOCV?B!s2B+YQ_QY-iv%89#lO!3$m)Z~brJ)ZaQfyaQ z@(nWmwn?0rIEPM`&tKD!#V{0!Tpu{Nyl?)iy?d8ka@oaKl@;W4Denfa^jh!a%gPVV ztGu>TX`X+6PWLD1jUsdL>xe>oBXSSbFKARbf+i^$P z*@`Ru*8*fl`tn}w!N*pwU(OGt!gbfK8$r6y!->0>$v$7j`5jqpwV6g50~@hEz^*s zPDfLr*eEdS`RSM#$o+LFZU+v*1*i`*Lb1iK$8UH28~%3_@nNvJcc4a8uP-}?0=k{u z1x<(r=7x4Q2=M%T9(!1aDX4@2SS+lfe(<0y+?D6~P1Wk9xUAy*BJuq&ZftztiQmMx zj!*b&=CVB66#iqtY!u>V=LZU)U@`ywXR&StT$9r^KT-!aYs4|}>Px0SaAEgffq_x! z{Jv4@;gX9P$beL5C|DO$Eqo7s>fgJQSRK+uho!}jp?`s$^3|>ZIIyP&?;?8u>vMz^ zBOUMt=mdaQxVegBhP`Cs$S?0q#KS8C zM>S-j*g^i92BIE1X9|4KPw<>~vO2u1whFItCB5LckKIu+VsXacF2s=Hq(iv(g&b|NS{f&4$-AbEzjp^!;^y+;(UC2}e{aUImM1h4UQQanK(|&1fT>E80By6dk@h;Wd~UCUBnNx6j2&sO(KEdo~DlYQ7I$2n8M*7 z$A?Qk(!ywv`!gyDeeArnaO})V?A*RWkZZvMR?*Rwb+=6HH-|Q8UKm@E3n(7D;cmXW?T9jh;Zl9&M8`KA z>vZCIhWmzzewr!zX(AE^>=}3)8m*Ds(7`U+US)#5A|DeEb`zB@iHoQ>A7W6mfL1dP zQqy;~rf(7H3!&zpSYT~i5v>WWA(~u)Jk@6l$}*}Mvbvp2a%LlC z;HndaWf-aEVjvD*K;&yq@};O3AES+x^hH?%fiIySLphuMH(Jt~Bn2`Wi7B3A-wv(# ztR45h4)y*BOHI(1*CPGcbhZ zppqFl6CDAQsd-3Out{171}k!m3=ymEw>tUjNJXkmNHBRkP0j7tf~fH^trC*{|5ok) zKTEHnYR4k!?9&+wd4>NkS16$8c@JU&lfbovQ_wjCWYA(E=e#V>i35Pgn;y}=iY||o z*x7tN2j%9V-ylVL|niLiGoZR$(AbN^HqiarX%V!Lqny6+B{nBbeF{Z@C!3Y-+ z8l68dOju!NP~CDgVturNB9}HoP-lLWyf7F%b_)JqjUY^4=}b>27#hV3@fxFLZ+qk0 zWKow3;;)+5nnkIEfZcP@!Z0i|S>d01D|(o34c-{Cu18Z#3yC*O zJHRQ;kCtup;(QA5Vv*PnwFfYR2jf$uPFqa8YujMJ0Nx1GL~z;y>Msx*-#$74S-yDA zX*Far$ztR4r2&SF?C{;=tQ1yyA?v7GO_5xsx-g3gYgszts@mgEZF8}|#lz3+sWj2$ z@t#O}Z>F=|x0L@yTK+Gm60h2^m2F0!)&qIS|3c$FU1I;;hBG&I-$u6dWdNw&k|-En|3*lWo`i38tEUZkQ%FAWHh*{t`1ko-(fr--VccSuHpShCwL>}k@J z+HkfkUkmVnto2K`+iXs^xM6qb7RkHszfdLWm*c-FHdrt6*Q6P2rZpmr>W`Lg2dUG) zu_{Dc-(mPMbVOU9lc zq>1u)P=s&Kzn&7B%J)Y24hgY<4DJ@i4QN*ylyRLH`?9ceGH z&X?2(f3H~jn!J_ttG)u>ENZa8F>WG;DK90%k`b$_1#MHHij_@vLEr_M-4wjyj6sX zv`-=OU6ywgSww!d*BKX`GPYjs<6kR;4up)I~QB~^bVulm)sNsCWN1K)E2E)0U zl;K=!SzKW(#T7;=wL7pm;cyCE!xs#v;FWiCoPjUZbA~T~AM57>_!xPH)2%20qbvH( z))BLvermL0v5l+#`xiS5qS@NvqPM27^jHl_q^PXsOk zI?!S&lP_xj8n*b5G$+i;sQpDuU8#j$Y^69JkAEfFwkNWn$qX{9z;%OJj4qyjzExdE zv+PGx@S|PrZCkZeW!%T-xROqNK`RErG_vHIn8Bh`9~6I^HQ)H#qDy7pm|dchM6T+U zGI|IeldHYwZ!@5$E^|PtML^A2KxJ;T?E<*dd)_0i(24sxcxw#s9fHTj{8zreWw3n~ z$I7INz4PADHkxT!c37pL?F)`+qZve=##ZI6e^TVs-?gDmV7(=-b??n`EV|BE^yH~f z+J5};hkH0)QXMeqrTalVcVkd8{4w>X&8a76jniYU?UkprhF(b3bFPq$*>2X5BCFMV z_uTF%OsC$kB<7Q{BodrWT^$mG4u2 zFYRAJ%a+*~xNRg37i~_<#%+a+9Yr)pqhJSF^{iJ>u*tYWlP&3H}0<4M$+a3lj(4q-oA4Di_x|#(P<#HYJbl~ z{QfUm&?0orGz+F1UffhTIbXviA`vZ|T%_Nf{O(UDw0%C;o;$K5y>vc#=c3x50I~0V z^HDq4_b=1TT~S8_$XV(%F_QX z7nRzY{^#plP#9s(HnhHFCCvcj&WIbCNYfq}vFB%>p#Dj+4aJ^ko_?2(a{q7dj@=wH!N?y^Ow8lx zSMuZD!#Wb>d)aq8$CDG|$t!5j$AW3f*pg`}_$NfQ#C zyDW9`w^)b+b2d-041tU8wJRkrc;(%yZY^mhFR{zsLkC4GC4Ra0&c`xC2UqK@Z~u^| zK)T@i@gQ)+yaAHAJKrA|ncH`xk-1#`u{&Rt|4-?UwO>Q!+xW2PyBj6WzaJ^&`d9SF zT~*juxHjeKd$3Qq}o>`8VGU}lY$(jmi>Q7fBb;B zTTP}+=|Vqr|FL;yj*~05ZWU) z*B{TH=az(14F6BjA2;6NTICeO8~$7L$KM#o{}=Sf&(`_+<7m;1fP(q@B+9>(aen^0{AM^ETDpEE)Bli5` zZ|INOo(aXCYaep@;~g)fKem}yp!CO24iTp0>W>HHLkE2QakPGC>5taTE$ENvEzTVW zY2R67CGVm|ng;oSC|oMkAoqU(-NNK|(;v+{6a5iwVOdGDK1;EMJfl>qNF6E;3W9Vr z?mwS~{iSC`PU^aO_H*lwMXltDFF9w~xC4Qa3NW(0(cc6H6p|5`y zdX2o@rjGf+SR)vG6zG_fRUm5xqLQs+;$Rc#nC0l0OYJ+X4iiHi)7g%-zwt#xn&!8xY@5@18kVJL)_XToQlh*(15pb^mZn+j zU1=4gX%-m};{h5CCMFAd=B;`s1jl}0J^`j`zI(97AXGKMXwImNG9S#5g7US@YVQDj z?rWLo>HW0KPa&XanIDn(TBg>FckM46qgf*SM!@bOMZjKZ+1%q`(lQ;Geut+&kK`ezWghxPaCoQm014#OHwHu? z@sHcMt|lzg|JH}=4M_mS6k_8zl&o*IpvPw!f(PYhM=A*EC94 zLZcR17F)ih*z%Q9c&FuYhENLxs}?mYB`;v*J4m%xHQCt@HE_t6!`PM8E)ApC^IJ<9 z94yGPShM~ZOc|}8;fwo61A+Ai^&wv3zN%B6al}(Ii>^o&vM|P>fgiirUG2P>Ddn^+^=Im#rgT$P5|Cj0) zyeg&zXjsFTS?x@S;UyEI253Trmldf&-e8=!wLjL?SgZky`D3C1i7+6IS1}l@pG&EC zOT$4QC2d1~{NZphp+MnE9WL<~PcSs;f)fv5eSak>`RD`Wp($idJ{rxVj)BNTCv*>J z$@d%t-OGqUTHo<-ecu()bgkFWNCdK>Vtrf6l66b?26y_I^{%1P(ylT1MYh|nrCmo} zrtnvuLzKB6cRu+4L89HE7{giZ6((PJr){FySjuHqJYK(zrG)|wTecKNlni`BB!Hx+ z<6h_<3Q=Hw?D(bdJRSdDG~LbOjwW7~97l+6#cC#g`6JP*x=jC+t0ZD&6SMgg)tM$V z=H|gt(Bz(*j`UrCg0`c)59vd@tp%183>_-s+$Nt)nXo#nR+^e~H!@}IqyyDE*nJpE zsP!{98{vJfUtIzvE1=L&RdfBHcb|wE27R-BBrYi)9Bn&-E_2-Lh$D~eh_-!Mg9|_{ zK?NEoAV$77C_^8g{5z$Npwv)|JkBq#mh$2in;zAb0QEh~MD|jV#aW;BJ`x2z zDP&PA!L}5|e`j6iD3Pd#DA8O}C{d?nefEXtl~E=p#(~Xo=f+vq0vGWqq|9vMB#I#R zmv5<)qB%3>#AqE26Mzn^l^TFe)~RLMwlX9{HuL=#6;n^=KU!bHYTWaCH7mOd-qLGb z`@5~dZX1a9_gU8W(4+l%R*gH6rhRC&OYQZ5%WnS$KkwR~OU7wG4k~`TUHkpZ7s6&6 z`uS9i4zT|-nkahK{yk|w`;JfsTW&4OwF(vAA?E@4c&X&zxN}*)bO@5!nv3L}D&spy zY2%YTnfE7GBmeCmU}oU2{MJTcrj*f;b#4do$1|CbxLt&H5rsQ}!_)yO-JL2>0~${W z{Y=NNyl^W1rCo{g(_QgZ$>CkS5%1tnUy>_yu-VBD0HO09Y@83}?!75EWRlf8&d+%p zS@TZ9nXwNP@Jp?%F!{Mvrcb6UIr$0q<-Iri6HMaHSNeijW`FC^XksmsBDa$2V^hQN ziuVO^9}Oy#>%7Gs4hfdntPfbW3y`48pY#BUSNnN~1OrCmKtVVq2al`04I)oM;q8ov z<<7TGny!JE*r~+#yvIdXh(v>v!vp;M9L~V_PI%D~qI|9BLMb&x{kBzmHdv&n3{S}Z z<<3XstA&Z>%{m{^6i@39q`<9pw{a{s(8;jK3sVA!*uX;NSH#AW;CogSE6;4T?uxS!O$)Zv-ARcH&NSv$4+TX&j31;TCKQlA^{6Fv2 z)C5jW4teBG(y5j~z6^PwmxerW_*(B`Z3k+39AL{M=y>j+#1judcd9vl!EkUT#gu5` z80cq3YQ!oe!Xjv0@!-Z6VXEVgJhJhbtu?@V8*5QK6;`pTLloJxg<~l`kP2KiHb2xA zP2We`qlw4)Tc!Harwqb)(n=QW!{6ho+xTI&i;C3DRrwnB>YxQ;b#r;WwIQ(6&a1pe zDXWO0VBf%puG;ix_hq#8t2v{W)kzC77j#(%y*c6iZ6UqL%+ubfnV-k=^K&SU_t>9= z@7r?Y=$Y@fHjT_U`m&g*>Q7&C>B*FKhZ0gVMaAXd(xqX=Q*pNpF|wmPh=q789@q~- zSP`6%IGJe-M$p7ZeG%Re^L{ivoTfw*yQ@K3O!3t4HJZ9wu5f7DkXa|o>-_r-*2&e( ztrdgH2#Yti*s^)?r0iw$#l4KaWJ!vre&_})Tr^Khrjti)C@Fdu-RFK3YdUF8c0qsmd22V{W%vYK+#A2_#xb5~Pgxk#>>yMQ5EXMm?#nAmXz86K$0} zi+&ekhvM@q24R36UZu#Hj<~$%P2y*NY{(qWo6>G)#jv5d!>mr{2>XsYXn} z@H;hUbkH2p^x*Wh_weOb>Srf7MMxAZp43ev$EjG;gv@E^@*?jND->oDFoovgaMKE= zo+pdW&lWiRcD+P_H|f*iDyI;ND#jn{ZlM_I?YQZA+8CTua3CBV*oj#v%WE7~p`>9S z5p7lowq4FrI1|RB(Y6cBgt4mU`-b9?`5$Ivh}-k}yCDo#o6;jke>|M!LunN__i_Gj zwE9Q%TZdQ`aC1e!)$F+^-jC_8TQs?7phg>RCLT0a(na4z{k1N8332csM+ht81Y3ZA zJsM5F&12|yG%>-HS9lP-<(Ues8yw95_i8vjJB3jnAJ@pN>OD})tX{`8dOp<%nH9&U zm1OD(UXHGGPLZDJKo*O__(Mf8pv+G5J%J!6j8G^O7l06 z_rCYHO`AggDw5TfFSBH-VD0;^E0SYc&-Ll^gqvJ<+N~%*Qf!t=zj2mz?yJ>qeHfV5 z$CbO&IVazQ>*MZs)IFc1r2N1T_qzf9+3vl)HP~r6gst&L>NkgiR~%DHX{<%4 zI)OuY7bruKXNIFGe)-qd+i4%!MWNvHJS*6uId|EInDKFbZ33U&+VWnc(TVa4GjPog zF5lqbIc|T(yVp9m2j`y*l&Xtl&quCa;VsrXnt9&a8bCAV?;|M2cZ=ryX@U#Q`8E35 z%=y{FA`iNkN97F59`WQS-a&#+bBrqaisYZsuIlWOfvIa`Dy7OqmhQ-~>~^CK%fWvO zhNaaC4wt$1u!3Rnm-$UJ5&hTT!d;*B#D!+A5qC9GF42U8@nT8*?{f&$By~6}$1EK@g2k7fflS;QtX8MsG^v9p~>Fa{N zT~M$eYp|}q!EduaEG55nE^hY%C<2h<;+1F#anE~9P0kVVGOXOrh{HbvR&HWS&tWjl zY_&4{E&1=FX=pOV(k)>){AoYEWE9c^PVbR#T#W^>=~vd|8HRWHDtfo}xTT}o|=^ltcjx+1`0!ZJYma@~1hF=d?lk&{*L}nKqzf;==@e!ZKZvIwZRI zlI^35kIhdUHK?PpkRT5r)I~Aa%tc%raCoBpn32NDVHL?k*xwtjfIe%y=Xzh-lw1*O z-PEub2N2OG^I=$pLpvHvTaL1*qs8B8xm-awRS8X;+r(eDO9@&$vJ;E;j9-El zlDre;f7(?eZf=RLSUc9Hl7nMyW8Lo}TvO#)I@?vBj$Epeey%$TKxl;_g~TAI*^lnv zN1sVPoRjm9f<}+ zbyST%b8O>|Q=^Ob<^O4edWUi@Vd}Uyrm&8tPia59{Z*OT3susZk*K`hwaU`rt zyF`py&(E!VetA{I-IX-jt|tsY2Pp$E*Rn{lmZIb^DrS_xn+D52~7Ea=L1?SQDVP`Aatt3+{G4)D|XtpOl z=2Az8<^8qMvRq5W-TJZ_np0)HjCM`I_Iz*_ERS#4RMV%j4>Rt; z%U6N=!IdV6((H|u$NwYSKM%j_(|K?9Q?mkj?LTspSZkwvgKg(9iS?FUmJ`cYqv*ig z**i@}oj>^9O363*`96J*^1aqlggiZ$kY{;>JW`GR2FnN7s_O+b_8<6|Ri?LKR*aNJ z#VxzcwxVQvtg(-0+wPt)q>JHJBLpstSn21h{rp<;c82IKerOoGlp2x`)&8D4_=pDa zL)%F<6>a3O#Tvk7Ad$aUN87fyN)Lq}G!oH)Kn$>h;JxC*z9v9%hA&4&r#Jv`DE2`o zpDcaTQREu&HSqLO@N~rtCIF$G9Yj`GsKKxas|!Z82|JY3$l||*H6RV5h~Y0WlpX%Y z{t5ie?8IiFB9;R0D;}L;dox|ox`QuYoOZ6LbRV~)^7K5OdKEkw2*)!1m7fZD_yE(y~E@MhN*G*lQ35NX};zWjuIDwHCx8fDDkHb%e#|m;!mCA zZ3_DPFU~+a zHKNLet!i<=e&XI!EpFi!=`CF-CS{G3S{7e;OBcDd!N(4ag~oHO5rJ!ss5Qz9UU}E3 z416d3$%YsC%!U{Fl%s)JNCcd*kd(_wqijpV7Hs;5`{gpD)X@ScT|EhIFfW=J#hp8Z zkl9*1Y}UO6EJ8dx7C^*=)MX-K*uGnB2EBRpZcM}@H6|NK8IwGfj9n$)Qn&voV&=dg z{XAEn1fD%6g3pYJBSZSm#*B%oR(VX6#!M4cYx!`ZjF`o}{hM8*M2*y_)vi$@Mru^I zrT$qk3U^@W6l#%R)q-ZFPPvpHH)@QhQXSjviZ; zI;{*Xx?wcNo+p>@$Y5f7I+6Dop+KSQe#?$ynJHin_6?H)3E&yP(1ex=rheg*YLzCEwPqMkb$~l6-Ya@)hso>5NBu%<x z;IsMtkx0_Z24V6Uh2QNXlB_CqSAjzNa0_u_t~2=zNuY6WZ%vECgU#6BLs0ICRn7I5f^nLn=+P}j4 z*~>3&@@DuOFhSM9NCtVY4-X!P2KfI5eVvu*YuKo)AF_{oj=4RdCDpQiuC1&EPSAw8 zi7tr7Xz5ELT1YB>w#4#_OyChe6OmC2-h4#HhT;5T>!~U__37TP*^*)^Wvx$N(HGj@ z%)g3J@6)LFd4GRRZTS@34w7a-(8 zIS48Fs);8K1?PwdqyHNzMaNMJ3My^)T^*TDtQ&KD!5#JAU{U``W9_K_q(a9sOC2Mw zNSzon(o7r>WV42n7zS^&ePU0>)5i~TC!(vRE7jQcg?LDu@3EhlU)b~fHd{_Sb>yR_ z5uI&MbRst$Ib|3g;Un;@O_Zm%)5_hFNBE)_=)XIYsup`w>Kq5xYSQY`YC^2&vMidu zrD*y};ouG|6V^cBQJ8kOQkb~lmG2`p9m&#d8^X1CYNV#BtKPG|($=moX;23#4bnmj z_m6zv3^mAsv16&)1uJe>r%b1xX)^pXiQ;kf0oJ~q+-rW8_{KcH{m@)IF;+vPc5STDZ zw^8Y=n}5%7sm!4OS?5cB?vxKtgPC05ggh2UH+d-^ZXsYx(Clq6pxHJCBGwufskeos zS{+5CrZ8yg?1v`We$3~GoG;J3b4Tp!-h>~Ee#JSHurN=^9lBu34$b>@+OJPO7^>U(W^i>3V9fa8Ew-7O7snK{HWHO z{|aUvI$N{FQ~TfBM6(+Eo!YOL9P_dF6LWqb#)8*s!#Syx$zbWYQ~TA-O63P!Wp-P; z=44FQEi4o}vp>?xw38Gy@tl(sHQuR|lqmn;Gu3Jk)j)(B4alor84#7JeG=tQ8c=>^ zvRFGWxJ7VxG8ewR=Iy4|Fv;)OCcN#x{93Tt`!5jI@HoXIg7f!Z;@;Zl$g%%YnL4|q zt}6AVk}7@_R<*s+umkqP_0hJCCV#)(^8x8Luu>b4!dFS#LRZ@y_OeXg)X^|Oq-NFl;2EgQHdI9CKA zt^=Fx=r5#K;Nk)r9FgMHeqMu=8N7ex42jz-xcYhd5pHl6n%6dLFZ!_b)B)-q@81I! zz;cj%w&F-=TL(Qmgt~_a;r}B2yVcRZwvhg9)Dqf^{;hUP<5{KubM)`V{|)+Q3|Ay@ z8g6dRJ{;1&fcV|{;A1KI-l8>RL@{@#63Ej03Xlfj0Y&)LLpm7qf6 zx9%x&TO@u3(trLp=-+9M{vEt!`ZsQ?^zXv|e)@NolZyXOrGHOn)4vZK{X1!(^lyQX z=bxv4HwXk9;<9hGf09A!{+FckF<7BmuCCL=8Lzegk9y4N^K z-CNy`S70F$)vN1=mWWp7wb`Em4e%n#9{}+(Ed;cutt~F;8Z^#q>&mwol zZ39B?p74IqCC+%Y3@sDlEczn-yh|y>*;1Cj=#1!4H>pUnTfe?$mma)oN}qdgp`WtxfhQ1){>;1zAVL(fsIk%lgnYF%*ED(6v& znJx0ncyhGK7NCyI`N1^{M&v6Binbg42PZ#7q+ zZ(IjHE41PfB5qKFTFs@}}HMVwj0TG`mR85yOh@`67F-jq$OTcS4SgbQ(Kvr!!oex~vh~ypvNy;=l$b z8pkYh;H~%$nsm<;TJCsh>>+rx^`bW27LZ9_}uYi>6;**e$duuKc2@m4* zY~il!TLEW~WjyC@q@4S9IKK4v3n!~<+Kc(k3TUx+gged*QtPIj4LyFt!h3cOur~39 z6&PHDb^f5>nw>=X^5B~hkM%~pQC;eT1}`(WQQ!Wd`Mtu;ul!h%1ivSbBRrPU1%G@K z+VYEIG=P21f$2AT($13(jVVNZTbq;4zxv+?MscnSD9+~cH6ASf{@QjsGL9|l3yn`N zaF+%^f8+@$`V+V3&Wqvu5pKK6eynDq>_@lF*vPgA zGJ?wqcQEl`$SPzCSUCF!O`3bZuEea;yav3RcU=Oyf`G)g7B6RF8~(xKxchvEi?y2( zx-V|$6S@^KHJUF9e*EE1qJ3;_M*f4)=iUW;oG9=8tB?VfYua*tM;NrJ*4tUm5&jk( zWq1$Bsf1ptEgFq3QV85i%VLbR6wyg3#KeIi-;o!A6SxSP=jR2l{07o&crnRrcnzWQ z0erW*1HluV2Fl*!7`oQ-zOxS=L!!eOMyDx-(P^gH_j+v#5**v|m7H|iOIvLm0K}bU z%;jmh)8Mc3V!rw7oKWAp6OX^kW4r`4{!?3@X<*-l15u8o5xV5H#=G$F?Y$kqqX3+Q zgKI0BG-vt!Dy2#hY(o~>WynJNg)Ca+LNZ*=3e~4B+U&i6Z$D?@|npLc=lupK6^3)_+T;v z_+T;vc(wUIH<{X+TcJ}8zdlbySQ~Sr-V{!UfCbU%y1##_ z1OYK;30{7Dw_tbS6B7$6hp64*4G+^&L3}rh&pBIe`%qw5iF1OcjSp>*g&O(!2U@d^ z=WMoY8#dV*Rq$_rk2`fr%<-diq@`O1$``!xUsZ&*R^Q7yfV;Si6Y;=`bADZrtmv5c z#8VoS$Rk8B_gbi#_;;^sa0*mGvj(3yZH3y{^7GzkjSsY)qN?>jo+w{opV*nE`SwY5 znH}DtMm*nm;tjQrf~#CkWDc&gZ?Xfny=EQ{Cl)5ke-yqev_R;E-Xpw=EIu*w#bgD(E1I)6_sj| zwQ851@uY4iwl1UjO+fQ|i9baC(379Qw+9UozM=gj?p2UyL!Cq)Bpum zKhQu~?PJ-b?eNdX=_P9Y^u+=)WpJ=xf2ac!`s*>mg7Nmj?3nx;jT6J5(4VHjwT!@5V_&se%_rin#d)KO|_Ez9O_mcAVzl zKfv{ECoR&%Bc%rhlgft8r0ny5=%j2lP=1EEIObkrr<>hP%68OxOM>=vr$eM8Q_B91 z@968?h_V8=xm`W)!_T#Emxc28gZcElWxYfo>Hj7YA%9yM&~{cpjlG|3SK>(SuCx3i z3ra1yyNSFlL`|jr5Y-BoCiwN{8ch%L;LZAu!!PlzMEUxcG&k(!%<(I+gKo8y7wqNK zyWg4n+pIC^$aR$H-Sr5Cr6PC#E+f@1`4fn?JB5eAbGHA1@XYaR;@9|6wDAo3CZ56S zHkKj(dB1BCRE>n&QgYXdiQWrbtJ~;3dBH0$V!5Ufis_YfmIYp@vuyW@lb@FIeWLuU z>ojlXSO}5Hgqp4KPLo?jmWgf0$&Q+?v;lzqL4s4DMu~1*&)-uDQ6N9%ERM_=d%OE9zM6W}>>5&Pa4LQf0= zVtnS+MpSzB5OJ>6 z-t|Uj3f^DMvnO~qAn|F)kJSO0IJYT2b@Z(Jy!iSzmux`%c3Z5sa&J8HQ@d7ha)GH;Ox7VY)39me=guvs{ybtn-pu>+*+E%)b5%cp`P2+mhX$$7m8 z$s+E3MZn25<393+@T)RC*>G*c?V6uU3VHlCKPxs>lxDVIM!tA4m^J?SXd8Dv(`$dn z0|lr{y~6^aUV9^saAdaIF#iVQ?+}4L%Pw<9M}(O?eFG72V1y|pFCyRpr$sL@O!*Cd zzPKNJAAQM&-{9v1_~tTRH>reg`~;hCG9gyh9uvsOg>VXhNes%x2h`nsCVc@=a8^O-#`VsNEv{Y zmfgCwHW&bbXAi(?KOYQ$D|WUq5e+~9FJ_{A03Ro>0T#2#)=~|Q0bcD7nBY`jH+jJu zwGDUYE+RlcFIWeqv~qlV0rhnH-wAP5uTWd%2!8`crXjTV$Xg5Txieyj33ids$Xm@S zy=8ej307i7K5yVe2&XXYZ0wkC{Ya>XEW87<@YLwem&6j~cdQor?@+N~av4SCS@5bd z$i%p3yuMq7-4A9RIv+~>$_F7GUiAzFJj)hmlS;Kv}}KaGQx&EpA#-PfotA^1vlT%JABK)7wI|k z9KaX*`2c<_c@3!GbVElcZ56!1QGS3Yf>V9}44%l9J{v=97*&D&P|5aVOGO5Dvp{yq zF2-#&H=O8b+$F_u&yN~}XjoFN9pZ-Grlg-gitUARLZs(s)@R#gm3^iG$@%@p+mXX> z@f9JXh=a#FidbhOGhmx&KoIKv0ShLm+0VNPy1^-~AdS5TX^OOzKpMRl(v(`hAJTk9 zN0~sHnBS&2DM(Xo*{vHxYbZ;TDsW9=t)H*)^YvC2egaBCe9e*I4K51_1oxjs0x@;O zmDM6z&D0~w3wh%+`N%ZcT`=syBf3pvk7;^whu!}&pL(^wI9Kp!LDdLv-emkt6d#}S zGiBCpbY$?U2^ur)aicLT^D@53vrxZf5SXiftqlmXoW+AC&W{IVWh{U>4lPVCVdERb6pCeAdq)pF-_C2*v zkzj4D1K}*mwHZtDkyw&{`j{Gw)p%moEh)`{Ha{Y7@r@8I7?~bs)bCPrQpMFHydW!I>{neXcZF?|t2>M|OGpQMEHi znw+I~NRzvEs);5|t}v+3a9m4qg}of_N0fZ~S3voqWUa~f8}*%UJg&}CXT$w*oJUq7 zz+pdrfMh^4#O<<#G^GFWo@Py`<63rp)kU}57Eu~_fv~|Y3^9>MLi_9il7jnq_TIw? zz>h1NE_jpQQRm;_zqhC*PYUFAo(x1rcHghNT;u+^f^yFXTedUmd`!C&j^7aNY+1j- zuw;R=bRit~SssFANbDSNBpf@A0m0(AgyT}uZO%?)$&DGa-{Ifz?aQIrZ9g;@Hc!7pe(w7V{nPhP9cs3e@cyY=&kOb^jsDzk zihYCZ^KK1VKW#bbBB~Z!M)w|QGu!)-!VP46v5aPMGu5*@WhEqYJFQYwysYstav@psCRN9WS?e zf7PL3dBKM0l`4;Zqn2;u{;G`+tBd{i_(bW0`>RGk^7}909Xt<$wlAwILT?aW9b4c;>c zJ9)`OF9h1v3=*=*S|cBBCr{>ZPkE-=fn{V3flIcSuN2v%+s`i{{pS^vK7G})T(r!m z$QO2j!qfK|7-{v|F4m}hE>-3Jou!|Df0fvmBe7l1{vZiL_6JE6a`86F0-Dih&wXEq5xoa(tVnHgB>yd7Ya!) z7DS}RXA}!av1BR@Llw_8?M7OE^fiZCWA!cLQbr1D#VotbcRO2DQms7SJ21CHB~%i) zP)ltvG1$-7_k)*Ioegi|vczT|UgEN8p(5m}sE-tFRq+ffQj^EBxSuHYgJ-YGm&UvJ zticLmIFVmpoYH=7$x#;MP{9q$iDKkJ8}2Z!OA*!btW1CF_Nqf&hx7H24i}Qr;Udf8 z%W5gUtV&r+4$S#wr~?95hfN0|FL>ppgRtqRsz*v!`z*V4!;@N~CJS6m4CZ!&pLcVcF;q!f$%ZfX z^8x%=@;0|xB!NPVDWjBd9SS$Oj;q~LdsN|OHcn55DE_2v{DomBF8GdgP>da2@@5L| zVm+Z)_p6RMiI;Ypv_(iPw+M+7`3p*zE))#RGE?m;5?A16z5Ud2n>u`=q92`4WarAzMCQO`0ozQ7soK1UcnrQBgZY2xQf?g zc&F^^Fl33n9qFJ%f^t^e%@h-zgf;=FbqQ7t5cUy_w-)sUX$g63ChCUR}XRR z>hRk&mlVwHv}}J1PR1p$k3I<#1+I2&@bmNid_JjR;;kl=QZWFK$5NDI@NSdv?ua-6 z{Ev|S`-Z8$0yl#!kCAE5QoEud8VAR-GpfPs}&xnS*==p z-1&wp%?yG4=m>svYEar%>Ee;R`zbw-AU==&K{=-S;pY%Lqf`HG+pmv#yYD5rr{IJS zoM5cN;&7vOr77PFDmA&KkDogC8p&(li6AVrOcmRdwIc9bukor}8?Snw z+VEUQ3df;l%~Ekx=edr%3U>OT*EsPZj6>gc3oLRJ!;^7Z->33jMAn%lN8urRy4ao; z1TpbcE;nLaSf41r+zK8QX#N$+SwsjX!m5}@Z)HV#R-No9ZnC_4sWW_=WLMIuD!nB< zoT*Qqv66%5L5=Q{hHq7+_NlPfm_GQS!B(JuE@y@~RB zAeISl+IbHD5#hGw{KWe0S+`}oL~sg0=bviA^G}clnJ7vjk&>Uq#3eslD!I^}BN&oO zUXEKH!H`t)at*1?)oO;&eyk0Cc>HjI(IGG<$_*YhoclmFV^mYxIj_{=#6&jm~Hy7Z*Rl(W)~4DV(lgQHL)#+YLK`z#Jzy zAtw%g66OBKxHE(7d!`&X@PCeJHngiz{~uaxp(VtRpEPf_u=FYKI;Ein?GGI_IYB248PkP$AJ&t)vHAJkVRH}qTxl1^>y zinfm6M@8b&lH$C^eeA(@Jn*4wfUcdAe1s3szhb;#4(cEoZVn!usyT47122~DfYP#f zqLAGABy@Bv%`4O>yujN}-^tJOiiSEDtcCQ9XWzS>FIx4*idd0>;$Wo|`{(a81!hb& zU@6ern@4?_;~Y1?q-h|&)D@$sp&Dv+zxzaz#7Y~vnC}c8Jn>Gk8Jtp5+Yx8$vl^hh z@9?9>c0f>pfYqUvcR8Qpu#mWqE@d_pD;qV61R~-XW@QYKT-N zKkYqO{BbCMc+;@+q}CxsjGEe1mHLg!>fIT-%@$_w_PljJ6){rb-Fnn+uV=at2<#}o zy=GM2AD|g@iN0Ve@}97Ffrc(`+jM02l^DckmS^mBawWl>lPLegZ$otHuu?GD?Fzau zWzKyF`noZx^(!eOW4F8Q$t=5_o91I<&a=wwcDLOPF+Ov<0P=^$q@Q*(SWGLCJ)7vz4fK!I6d!+CRsFcYgRu4M$AUO*Ov#obR-> z=WBp{OCF@XsYn|wP6W#AwH(!f{lm)XXVL58>s}<6kGhr=##8wHRob# za2{3&NAitkY%j)m9Snj%`Qext`Zax4}Qv?$s0^(Q+-RhS4L{CTDadM}R>ch=h^1oW7Zi4Q58E-CkjS22Xz3!ip8-BQFn>26 zJx$OXlUwuu?v}L{IB*|BjnNG>V z=QM_O1~J<#Mv}CeEWgMsMv}DJ$upZoaj?I-*hJgA>Bwv`*8|E#f;#WgLb13&t~iSe zRL_@zA+p*1F6!M^6tc!9)wf!uBaRmS!%^QFAtHP0)_V>Ig`F{9Z+en^DUQW2cN1J~i_1+VWqNkg@o z`s_XSg}L^8k-e7;FyHc0yCJ&q%Jj(hUfCIhS?BG2mGel-qahmed{X*TXxZHTH_>4S zmI?7HaJ8eG^3~2FKQDX~yzo^#rB*KuD2Tu+2#b^;>Agb)}H_*!uR|k=2hCJ$hAQ^@zu%kG_`uGxB+%LvAif2k?CkO!EKgzf&MBhY}@yylr?GefWn~Mg+8@2jF1O6-Lt?^U6~7|ZM(huc)BMd(}*F%^>jay`Zc1ptMT#v4bSe>7W$mkuQ|2Z{py(-^h*1~U2gN@K~x-wLzgfB z;vl>iaZt)7f!ZVU&u#gFHhnrcXpj%yvRq#yOG!jZ>q=Yy6V`#&4IPYgh>=cmtL^U8 z*AY!jRJExipR7zz8pLhh(W~~-1LhS%WKm*fKFQqJIiE2nCuGC%Oqw2<4Y)!S#X%U!g&ATrxN)wd2kH z`IU@iCw_!Gz~XvzI%4-lCE6=9Z}XA&Ua2^^8Z!yfkq^Jo^h^}y>{d~E$V{~?4~0}r~@aNuWvx~3@99AugLmR zFyj^1mrhNDhWJL7Cj{br#Sogt$Q;U)Qy~Z7ExbOP2Yoftuxc_lm|0aIXZ(?{- zZpy^Xns|&gk@lE>Qscg|OikpBd)sz$Wa$dxZ`ca*mxNZT?=%2m&3&^a_^j2O3+^4% z;=HhvPdoXLtjr5Ix)<^@OO){Ci_>!!{_uXGq#gZAXv%Wv7bKP&dDwy-#X&e^eaU7_cW6LEGFlt03C5 z-i^uU{ZJ(VUCyFcZ=9CX?2`g|)t>~r_Ma*QPOOiKhm?tjl%)zCekVQ|9Bus)uesS>qi@fx1G8DZr5ZzaDkJy3iDi6m&1;&cfme!m z?p`vBXKuuB)p&oC<6&5fw|`DHYg(#K&7Kz7_h!+){*#iGck^S>WfJRIzvqfE=nu=e z*2s-66RellUsEMiyqOkbr`!DSX)%++u3MtK;$|(`NJVnzUX-P$ykA^`OZ=9OtNvA; z*B7ILFLu!vYrHzXkh@{K)io%UKYoWsB#CFeyIH=9G%?)qRaE2U)pm=7V+r27iQozY z^*}G(eAr*Mh*7t7wdN^>USz1v%2CA4$eNW@up7dGLY>4owGjJC#2`obkY$dIq$5W@ z!~E@~F4+7*1u5w>Z^4+{`E$)6s?4s?Et26R9hnJJvw89(vBZdO}D76%c-Lb&X=<2swL1-?=nPIf_;AX0nO-sG&xrbR2nU|<8&r<6W zLWgw;xk6nEv_jw(>UoyzqPPIuIIJz16Qh* za;o*3ti74bdHvgGYoG$;=S3Z#@Vg2*BcaGN$%EJ29;Z9zYtGf zOaLhCA4>&k<_ZSf`;BtY)=iU2dtJPjtjSw(yf<%sCSXe1&VOQ z2-h(15GaL(t{Vhz11EV(8m|3g=U%ijluTwz;kA~X9X4F z`NPU#ZpR7FuK1`*?aMuB*yPq}|MB%`8>eD1$-U9h!?`VIllw1S2oLnUs{@o~ml}UP zcBv5?pC1t4@Qyn{z5RSMlx&H}0kS_8BfL2k^KVk^TGrPZJ}j{PI;og7hF|#qTk11O zUlD6eqF}0*uZnq%MY@X&;^YdO;DH`O}e= zSA&rI(hLlJM@|li?ltq&BKDU2%5tv!R?oeKv?)>kJ%cmS+muUso4lW>)ksI>Qw%7F z^j@oXpyT)J1!JW53kKzrUQ9h0u!9S~rwGc>k>}n;`gYUNrSariNdWZJj>}5p!dn3j zU|Sw~L9fZ`1u>G+&ZUgKWp7c$QNV63PNvKwg#z|j7B??TgA;qc5fx!zEd3V66Syc| znV%QD@^SLU^2JK+hj^*|Fo7^#ApKBkq2smiCuIbrKG0tO=o8&w%A7a5UggqQ(F5!o>xQWRhzu)YLyGk(9r12}uibxFdiHTeJ~Gl3%O zy|aEOG?7`wf=k&1V^!k`Q>!Rfug>LDpMElq#JJL~OqmUa<^;K%t=aLugXU8Nz^vvU&U6#Jl|EJ{BwT}2qa>Qr81}V9qq|*k=rE|Yu&Z{6OTwQS_wKXm3J*=9Ck74mlTTh`paW#I1yHErYwzi9>`%gmW- zn%iFt?Q>V3;~E#*X3pBYad+;o#?5ilxFxml5L?U07Dmw>rHZFUCni|9BiYAJ!-mGK z%7YDXw5C;}^aX#VBUN~#CCVT9sfG>9v{6J9IU_qr$zKpv)Kl*bHP!JNTV>t{)^`7l z+lonX$QE1wlWgZdQQlxBG7*zviimV^%)9CPDj>4w^`OogywVco)doYPI$z{vIfH!E z=kne)R)br}(CwMvphDJZrMMLxwE|2af)!*h=sIsE9|sG%Q%!4GKA)sRS6D8=+lS;H zl8yl{lju-s^CX+v)9=9S58TW@FgvBTUI#Kpxy zo@vN|V}`CA!~gdP*!=icqHR@r4r)O}30HyRm3RLav_K?BfJjV7!8PZ)b&DY+^72a{ z)rLK_ZgJnxPyqp~xBPFmVn4;tTr9ZO464(w6W+Pyx}zKsW#6uI;~Wo6s$c(iG~v;7 zF=Md)`M%Di+JxZ<{H~#nrs{b5d`wy98@fvvBUgx?tVeuV{`!jyhAhAqv+KEQ{hB8m zeiE^3JFD0Dhpb6zHH3&Fll64$$j8|K3%(hla9tnx@L;B$%+cd3W@(q&tbjX;O{3^Y85T>cSsjG53_dM(G7C8A8C7zlTbMYHk+Y4aI{wIudiXm zpkKECY4StT_CLiHgZRPw)(^6A%d%Y2OFCmYLmGfveS$cGMujE8nRU{%<1D zZ^(!Y3S(T*E?tx>Hz)tf$i;_idE&eOOM~=Zomz~rZy09?(6U^3;Y@m9sY3^8yfGeo zhrVwM^4v$9MUVBZ9qV-DCfVusR2RrfMf(B5>g+o73^@|>W&bze z`t2!jz4h$?*F`o8&5kEcqgZsMbP78nV|Cd{nOx~(?q11zrff!WCFvGxj!MnvZ>-&* zW+d0NPT6nQZI$%eA`<=WboAF;uUpo4tFJ5`n@|>yQpruiC!wXAQRinNxyhmHBEvt) zO@+WAz_Ybye|^`1iqwok!U$KTN=hon@AtEPxq)G4%`ce;_M4a&ZF|s)moXkwkJW); zO;|(EoD+wHaUr<`cU4lEIyHYOo{O{!uer!YUASt#t*8ubs~Ub}b+dodFa)O}L^tNn z6gdFD`2sV#kG{*9(L?g>daHiz7LBZRVZvpkaIP>fAOy?1O~w{~pjwu9Q{qD%aYjIm z)JUn3LR%X-ypPpz*E2VIG9lXN(Notkolal~xXuta8@IkD40cpup>@=Wt*oyu%jQb0 zs>^}7rIK0Tnf2w?c(BnIsN(cdz#SC2`8}>`63c!ot^~RLXL#RQ!;R#T-JohKV)^H* zndySqw+k7O{LRtAiC8MzY(V2a;*R(4;k8$xrM1#smS~9RkM97)6E8Vwvvsm1i+9f; zaTejffB*H5G+kS}U)euS!#dCi3-6cM4CLN_Z5@o+-?;s)VY7Ab;)$Ta;7zOXNc>Z4 zH17|JmgpV*^OsF1fc>1#u1-2~?XM7Qo*3aog|Q4?p*DaSyzBlUZ^C%~ioAS1fb^D< z#XWJal$f?z5-25JWC|Q45whV;IfFq+M}Gek3T>j$MEQF^7POf_$7Y*A$9hGA6>oAD zNpIzQpIXyQqN#7Ml#sBjq*;}tVH**q4&I6h6r!36XW~L2!6-wwZL=JON$w|5TWlyM z=VZ*7LN=s;xg-N}KDl?|z^3&eq>NnoKzFVNRr) z;ttC%^6geE8uCo5^WCu@#le%Y0)=u}5v*qwVU)|tU}4VXfe3)gsA3B#pj;IMI7~-g zxDVnr_V1F997tvAX8Qy&s&V-J!kEhRem}o5iXCi)GpF!Ke7#TUmY(_h|7bdGtpb5C zX{=3ntxTRR;T3k?LFG+{VpcnG7cdWnCQ-h!U5FBz)(T}>``b5!B2Rg5D-F$RY>%kh zTlG?3t@>Ep)#6L_y%%nC?1Jr+8{BaK#zA8$ga68kZHo_4KLgh=qc=3XwFv=a9i`&=K2oq-tIP z_e-b_D(}`OZe4r)^r{sRhigp63d!_RyRf^{OL*=HPAA@pk%CtByltQ2U(@rtex(YQ zeM?G>liR2#vN|8}jJA8D{mQxwPCfN)SKh0hNmP6M-WeqfKt_qWtJG(Ba#sA}pPD;> z+e8c$ojVUM%=_b^6q`|W?%EASCms3jFX-j3qoKz(w32p1D@T6$M(24Q3^7#l<2F^7 z9YCeXoS&Im=fv%m$%O)OuSrid_Y6r))Ge+EgXzeI76i86{t1PNK{c`;!sSF-kiz%4 zV2|Od34X_tG;`xlBEAjQ2qV4_(`v_Mx%f9&0EJ_c^rtizk9T+XhKAFL%EscmAxEH#JPG0z=@gm3=Y z2U_XbXE?IrE2?!~9YrR}2MNyi&z`R~YG@RHJzvwTC$>L10pQBi4vF%o6NZ+R*zB_X zv#ot>8h>E>=(Y=Vn?Y{PKl@PuX8UKqa0(A>BWQL>C)HM^cCJcQuotw-{Ij2qwtW?; zRcFY*B8+yIw{tE>X>CSIi$#rYZ9?ujtd)T;&pEx5W0Gh$}Tw z{7^_?q}$xab7kdh>g|&zu@LX1w?T zwKw^>6r1*@eIlp5LBBU1&g>%%fpy!mll7bk^UsJa;V;=Y)*{h3`Q@&B`q8p}zM7xJ zw5=5R#ZnZGCH5TUfYeOdmdB(`D%ET)Y3}@KAnb`oKoe(0Fd{0#E9f`b91l3!GY z$uBg8Mm*r;m;YFc{8ImplV1cP`9+`P$S-Ryj`9G3+oKQmX`B5|9d*e>|v%G&A#|inZ zpPLCT?Z8P^ffFEE*#3hB^ri`&yfTT&hAWQ_*pEW>1Pp7|Yd)&+-g?y*rQHd|&BU|p@@yncM$-t{*qUr657t(3>@1n= z!;%8-!e(Q93C}eM^Xa%`G4YLDS?v5#(x(o)fJCy`9!n6l2w2cIe>;8YPVCSF)t@$_pI54^Qk#nR?0?pag7 z^Qu8Fs!e_TjJMoupon7=L&8fp^|?rm!N_DFwWr#fnREi-O1(xPtOLzExtz^ghbLK} z*}2|wT8Oa6c7~@i8H0a+?K0v0&`SB~INm;VrjXtjFDV~gtR7KkCj*2vF7kJ?>O)b- zJ@L{f%EljxH|#%LygluC%zN%}C*E{f^Ib!beao^=qe;AZy9w%7rz~vTUGq>z0@BPla3UZ{JGxUk^=fIkQm?Qp7o$iV8=UMip6Yb>{!u=Ok z7hJm9zyAVZr_rD!?CfA~vxS{gc(+YqXU!}dUkVI_o&8lD<15q%4yDPr#TW5IX-Bun zTyJ0ZlXgU~oEz8D8KVC#sHk_BGW~>|g{mVRx$uVwJ5LVL$d38z-hr@lq!n($jZy4D>0=-`KU^-D%tS1xp~*z8ae5_l9zs8lJEQLUdBKhU@rTk43qJR`LxWD zY-c9yM@R6ZlOJ@y`2v>g=s_%51it!2`PDzt%CZe1SGa8msr+C=NM&1Ou08#|AcIRs z4p&Jt&Y&cQq24>D$IZDWPjg;F%AD6)cA0OkTI4pRm~#i_d+cRNzxk?-e4SEopokQU zQ6Y()gv;ZHSeNL7;0zu((G}$dukVa!QI9>xX5FRk`#eT6hSsiFp32cO^7zi(@TZ;5 zOL|>rO0Bj5AM0C7VQR!!zY*PjKIZ59l;2DHLo#9b+Ds_WVR1YmzxUW}%^wZd%&OrX zmb#cq5|U(Rny==zEMG|ChsKV!{uPbLPV2ky*s(n!)7o_^m*kO}mamift>#yjf{9I! z#ZwoRaqMYRr4HfPbsv&>D<0?`GCehX=&`BFq4}w=B|aO{5KVkGxN&?XeE3`<%*l)W zG0umpP|3)2h3*t;M|FGRX-C`6Md*N%ntWQzZ@OuM#xcNstI(@kV`TEiJ4GhVdfQsk ztS+V_m%W2bd7%B~MYx-F_`5zm+X}8T`PpNn@fKv(v0!8fXRXg3H)%t)1m18_h?*Em zHzC1~xf<+Q^MtfsfxJwS65=~3|FEx1K>^prz68Ty}y)L`~045 zyd@<2SMTX!4#gzFQCz{Tm6@&n_m{ENU+^i-u$@D60U)q~doQ@A?V|Q0tJT<6|5+D` zR=BNx7jx*^xTAvcr8W}jf}1bjY@`3K?X=O)p1vPqMw1YPn9&6B+d|BAs`dR4T-1H8 zJ$Hz%6+EAOhPvlW-Tz1}1l#qFsFWa4aNT*ZjPq6xkY(I*z<^i=_RDq7Pc>Ai`~49A z*bwrMMKT2Af?_DPz@ZrY!%z)6><|TA(BAt;A44n~IrrE}d4H6ekO>R3IxuE#_!I^C z-9gTGNm$7YPO?)l71&=Z6!SqoNe5aamffUeXl^S~Ct!obOTz#Vm$W!Q(MP5a&tum) z`2zCy19IdDqKRNOR@?lo%5}_b??GmKuSi#LTGN5qb=lSg^Z)puLh+KGTNuj=+Zj?p=AB z*l_?eIi^-u+eJg)V}ZsY;c>ABjB9`zhJe%TZ_W@N1+(Kf z*ay}K1i0fD_)`kx{9PA*6~~AWUQE3ptgQRp*J-ysJ#x{v)zFg*u^G-RIfgK)FS610 ztHQ(bj!*CT68j(S;Cv%!*(Alg%;Tt+x9A`5 zSb(@=h_**SJ>&`zxw?QD^o){H$qKE-M-4)!SL6SF0UIukSo9Xt@s0|DyE4|Dl<7UR z3{sH3aIlQx?z<5yE7L<(R;6RC-{t41vtJN~36tVUE}Y``T>Cw9Wq!|XgpFe}1Eo2j zRNndYgsYav+@au_Q@yj(3UwqrrEWl?lML89CdyO zuJ^I9I%O`q%&5X2Eh=eNHK|Krf0x?s>9fc9EYCae{uehPrE`j-H!5CHZMTZyx0&4N z6DlMkGnSkud2HK{+X@>Atowl1gTM@jY>5*1~GC$#2ZaCC~5#}Q^%-iBPKQi zV(^0I_Ifp~SZT3}bF^4NsYS7EM3ksiaYB@~QipnC9B?QGvGRVtYoBw6Bn)r+`#t~n z`TJn@-RG>m&mPuVdrf<9=6___>dhR9!A-6+M8vf&z_h;YU4$By3%fW_y@Vk83M=Z{ zhtivC$B7!wV&m1)$Bh&S?KD!L#K6{Q$y3!JsM+TfLka=3-J~iF=T)x8(eDt2Wq{>V z{qG?XjAzm&g5uYx2FbWd1pi%$LvX_>4l|^a3P3&z%ISi`%ZGNw;gh=rg9?A=IsCo7 z55v8s{i*-;epLA-PT2*&#DSj+M-(V=$A#)&(jSqlK#9K`W5eOCP?~f@%ysdPN%fR~ zW2R9dGN5QZ_nRn^%rrH3-TL=T_e(|}znLvXlj!5$>N&W~0N47c+h9mGuEP7G)o{1{ zc89z690qSFnFzf!wHw?OjQ2#2Q)-yFvutO1zv-Bz#}bPhn5D~fT8jdXes_U7oD48e z1{_U5&HvImPHZT>4!rU4Sz9#LgqhjJ1;qjsG{lHCM&&z zsViEtG6hkgQLwnOEX`qsH^9EjRWf%8i1BBfzz+XvLY0>t`PmU_o!OD6S!KyBlVChi z2z%-zGsi#X3)Jk$uxRh0qsd`J79)e3ajM~!*gZDXx|<8$AeNPz3tl4eoyQ%*;JlZe zg~_d4|D!vy#AqGc_ARo=jtgv{-F{?ANMdFwC3>CSCO0H2w*B!RfxvU0+D^^(g***i z#?sww^kQ!W9&}lE{(>2xqAMD7{z82up+BtDYIwAxPtNtT?MKhrW1}6t*a6w1)w4|} zEML&1_jAtBVwngn`U8=hCw;tn^Rw6o6*m;x=`^B@;;JtCaf2Qt&c#q!2#D4-8<;uI zIoUX;jP*3@f|cQ{9zCB8@90-hl2JjlgR_)=ZjH&W8%b#7cSqxbgP&o~2z|qE>69oi z*&FOP(F>pC;E&3Q%2$dCb^|1*y(%cyW z9x|Edzr8>_4ltK{S= z7dZ9!rkjBk262?XL4hcJDL2T@{JFo$N5ZTp>gWtE*M?^8G#i`;q6j zxt{VyJ?)=rR24mKYR~q&TICI=P0xlEh%8LrbV~aC(<~Sn0UF*(gZ{cXNq*Rm=5ITG zzQM^K9Yt)k?3>bOkygkon=6bE0> zjH0&8f8U^LXjs_m2P=WCjJXlKg8kSF#nt8hNR#YLirLydWb)(4!yP}V2$ZY2r=wiu zQQPRHP?9NEXMXmn`h1MUy0G_v`RC+Lqs3KCO^^4;<&U;T&OweKH44B97aR0gWo zcp+A87%geAB1UwPbonIW z-A{q0NW%9fC$3p1zP(<2d%d^8mQJ`7B*zQ{Hd_;0{Iw^M{p^8i*9~UB74j@%Eb#1T z0qhBC^z~n_(GVrF7fl{((Cd`-H3x6sTeN6G2`*&Ddu<%sno~@@7Sju|M4Vumt8&X^ zy&JLWr{@SGpmlHqoxJpbj zT5>!y)>*TdS|luE|G%ZaKJIH6%jlO#w3Yp`UhJa}0CZMK-?e3|02{1>YLwzIY= zvGHPFoT(Sgz4gD-uE@Zkbwfb|#Tfc2?fBdLT&;TKAYxxeVorJ4T}E`BY0cJ2wsQ>b znawVrmF)2GqpS@p(eNFkT<<+D`-q~#ZUje!VW52wXBr$sGTyn6s)FIJ34S#21IL)T zkb;XW-WDA&97lY6xmoL;_0D+GSmsSlPB&6D`bM=SjOU7_vSTdaIQ1=Hks+l@$Y75?BoBf-UUhbno zH9HSRiL}`A-?|r=g!2^m)v0Ad%Ji1e7+b&Q-(wA`#g;D2pbuhp?LP?cP9lPy7{7Gq ze}D18W|sYQaC$d|lj7>I7db1Z4o4n{pViMszsaf%MZd|d+a1o8cKG=^D)xRweVJ&P z2z_vge?N;iMB#o+xNy!_n3D={_U&lhl1qGME*<*fGez1K(PPclHGqoL$9dh3Q)KqrBT{l-BTMkxG*!{PV-7t4;=Ey}A=S zPN7;^P@@ag%C+XX0BNtcGAlBu?X&YFtT8Yw_OPOC+&I8im2icPGG8qitG{vP}oEqiy8tt@t;KP`izKdplLbRlV% zh|ngzWS`-^qV=%6qXMvj&Gr8v{qvlNlScg&9!lS;m6A+;&b3V!4UKQwNgu#L!j0kZ3UW zwPlEA`oVbytHz5vuuKMy{mMMfFY|e`d*=P1kcl&e;4VQs|4l`qh2<7{pAnVtYlOUO^H5(*aVE$g~OOS5a za!2zg!;31xEJNPv;77f1Z42Q=gVtSWvf*;?=tpbY@NtIIY#jPvIhQDxx z9>3nf=_`V($%IRn4UK~Wk`K3JR(+RYsi%A z9lLBY6dHQf@3?8pq)6F<&1#B2<-)fS5TaNpsi;TY_tne=f`=(pdJn!we|e&ps@C2h zELEzv_Rx+spm7aIq z#OC1^PHY}~T9cg3!-Y|uw66%jNr{2Uqc5ZMXN^+IlBKEY%izeg?;p9 zSHg2>1eP>naq=Vt%yS)h?^Sod(-5^E{!#%UK_BsQjS<3C;4JQRh|gctJOo54Np0su zJgqW~DKT{6_e7mfsRu29G;LljgNfcU96o8npfsqPSIhpV%Yc55DOX?AQ^gbk>f~q&-ud81X)Nxn2L zXD7NY+FSj0hvj*9E7M87T%#Hjq3Tg^`=?(Q#t;4L=Yf1V+$uNu(%OGm`ErWhAz${f2m+HYml{-3zO-(qaEGEgyT;|(S^YBOZS9xrinChW(7IXjHxNrC4eU*;+$FL>o$6KDI| zx^8ptkuUR9pWjq*szUN9`7*tszI-_nh5*YxTztWfLi*Y95Y_qj8^4>W-xK-Wv^`Q~ z(|5XRahp{IH{>94pB)pSwe*Pi2dXk|DbHVS9;08+RTGKF`qJ#g0eO7AF_W7%LxyaSZuS4Cvy7@cfDo5oZq zjg~w#P9KLyjtRH#hz~c6|6+*t6@dz+oIOS;U$`_ldu+tlS4bQmTmUya{Z^T?h!b$f zjh&xX56d>kjm@PR`>56BPOw+xN@?=AvEf#RXp4a_w0%h&h&O9b>?Ca-KNU08q=qJs z6Y0Pbo#Wyo#h={$39I<&Y}C*4%aN2fd6Q2xZJ&2%NluH8y4v}7jHku65FeEYy)cnU z-9a&QOe*Nqi9W8a%Ak)HTJ6=(arB`~B;E~ubfoA*3n=D@up|-dGV$y}>s{Wg)lDvkv|N+QuxiY{nk?0 zC*u#WoBL$^)|nI@=of|uIFdOtE)R=KF`WHVjd@AUc#5#j`3-Ek>)=c z9ww*KAkn(5f!>2(`vhzB-8Q*9stv3oI-mNy;Qpf>m^#+C7DKLueki@4A{eZ)=Pry^ z#*uZFce;j*BkRdSG(?u#Ul%yoz(Z-tM|_NyoNLj8(gNm;*2rc?hCQ+ygMyCypwcuQ z*}mIJM;@!tC3Fh(D`a+eBIV5{#3y6Ip8jxv=+E@xJwZ9dtmvqobzE9-0u+BuIA<@l z&Cbue?o%r|N-JK`*m&R3gn{JD)}0-?zqzAN?V%LPibSu;-GQhI7{usV#e464S)Jr3 z?tACK1*2!x_n9&!XZE>d+O9SpvflC6WjeG7Ru^efI8tFsAXWs^)nSc8rwFEsc4Wzo z-d!38id1;>Y(&yct#b4yLRE)@Y|EY#Ya06cKLa`V0ISo2(BORO@klj5sl24$9S8!5IP2;Yf#AZiB>JYsFRdL2sPES< z^gdBR3BNLGNGXK!irRi)(#Lx5VO_hjrLh`sAL@RruC(@OtfuH!hT5QWU=yLk4`Zxu zvJk+b%^w6~_3vZV`0mGQ3^hed)}|neZLD;^sf|^!o8KY!X$EYuL1y{JXp|gxf8|KM zXUJaLmDCN{^#<8#$c8B7%X>&r!DyL$zD(oSdBprPL`}bC(_3W37ddmjg3vic^b-;z zz{*IR#lpXjrEY;OV85%?0%pN5iYQEkPI`%@OZQJj5MbNeZ~djEL;&AH{}pAz>h;T%@;3=XAUKQPvttcd)t-AAvG4VE%S0 z6UTkAeaggq)VLJ8?ea_fcfE^`8S3PxCiMyV$t0PCpPJy{OA*|cd=fA{o*i3oivE-n z(h&M;6pQS`&$#8iiu-Sm5oVhcOCy)=#8TcHyNeJlR3fWHJ;jo1x-Z0MKT+l{;3K#CQbe zhp~Ikl}7Cf?&SQvQ}}+ziuCXM0>nK|y3b1!_-lgim+AWx`2K)`#tHU)&M{53V07$x zG{$}SyzD!CzfB_$ui*RN^sM`_TkSJf6f+;`05k|;XyZS$bj+p@#YX%+XU-LBalBV4 zSAUi2>aP)R=gg_FXWv8JhOGTrLdB+tJ3-Yy*AqtP)!$~sxA-DQeAQxc&<{F|{5$UD zT>mA)j*r%f(0Sjn8TD8-0^+Pro^JBM5=oQw3sJM($AJ%vWj4Gv8@- z_C*jL_aC=Us{-f09swQBzE!Bap6suctt0E? z8}l4_&wQFreQl3zQOI%epLPdebVWmY{HL!0Btj#~!NJ<)j&!=pr|qZt!mZQTMV8(_ z>zzhoG@7B2T<$dXJqju^{y*Jeb})e%1x&zv{~T_hFUU5hrN-5D=yP~m*x z2v>V5rtA&HoGAw6ZoPp3;qE6!%Hm^yn1)Kho*vZ66NOozm(wzy8Z-c})zjX_MkkI| zI&rjLu{eX%QJqvXd177N?j7^QOWv{g~ad>MaaV2uwi$|$!ZfUF!XAYj# zihaB7aQ0Vw8wRL`uf2nJLQ3VRep4ff-`toAj&+Bt2cfd2W*YuYCThu-T-SdbsG8&O z*f~}y{^;Ld@N35(n{8|s7A#N-f3%dv#MnDtlNO#!K5f-|!f3SeNIqRdY6PHrm1Y!F zI$~&o3C;Tl!s!()q5}!1-jV8Lrf@pQI{31etu#$IwU1`95~iR~a~DZ&TVO}i^LD0> zt{-O3U^5(?m>8P>w*fs$N4%9YXA#f2m3p)+KZDETT#QwuYxxDYk`(8P7 zekIhBq{`-C_{R|G1Y&Z>*>eIQ-6caNX>z`Ah*_{phIY1Yb&{VVPS!k9-2x#a-Z1N6 zrmQLX>8k^fpHBI+#%O5uUjzB+k4I>zOnwR@9VJ6t6{_BgnxZB1QxL`7%1>+iOQq8N z-v-J4SbCR!|F;^1{B-k}DbghI<> zv?dixD7O5Pf-tFALWGq0c4rmaj~4oBKg2cchX?K1kM+Ti9;zko*DjMdc^y@4wIg*} z?HHI;JLfm9mrjHHN^#lOr9U!X+Fc;~x=3GKN*g(4F}PP58yk<>nxDTVtDue6^3{1GTB)+4bNb9_+eIhg?&XtW(|eED3iwV^dT4I zw!`pOP5+MDR;~K>2{uf^Q2Wsm{LoO!;AXs%anlP)>3S}-mjI&~1jjV72sEH}QvT9e zXaloUVp6_&`4T1Go9Xh|cd$gg$KdCPfH+lsA;FsXe`> zbh8Q{qoLyS44*1ge4acxz91a?ye#%?Sps7N+^jtIyzGx7f76q0gN^DR-LD{}`<0e` zvY^UR&PP&8_Z?WO`vOnzzTnflAHcWhIo%E5Tm5_hzlOZ(7hDj>D|mwgp9BAq;8ef- zN0JY~*_=5qhPFwJSvD$u+!Ms;{7mk?D~(d2y`O6=g5@_?!@CGH@iyK4Z+IC@PzTq|W{ z-bt-IK&@mD7icgOw;3hzZfYSC#H9&I5Q8q@x4eG_qT7yYe_-v_na7G1nwjO@-3z`$ zyQ+hhPiyKNq~Po$fBe);vK59Y6U0Xnp$p=~^W6EE+Trxf-~WM+H|aq@ zC1DE*-%ZpPTKnePIAtFb(ky5NPlOuln1#E4?`C11)#FE`B)`4NJNHJ-MD}gxpx4m{ z1Jf>4L?G{oC&3+`<7%kX`W*8w&HsgCza1JJ_)ibU z0+Pzokg)#cTDqhl&xVM7zy_8gDS@Yxl;Bgy=OY(GyI#+klMbtAiLH;ClPn>GPwNWi z7U_8Rf9clbReqb+kkY1gmVMGc295A3Fz0|3ho&c2yIcIp8nFo#oo} zHF>-0>$!qkEH72bpD1K)|r z@=3FkVQ{MIlSf&{S|4^J)xyiB;cFikkL2CXKVlSzUFjmz7V%E66cNh)zq5I@Gp{)R z)jnJ-2~y=bjtTTkhR3cjUa#GC{=qJwwt>ZdDGYBvPBUc7SR!<%mkpdFdT)ZR$AGR} zosSDRsKe{95CXqk?4`)c>x4IIb+lyqei{diE!U}5$t-`;5AU9D7=@MBX|B}=;-qI* z<7}JRM}@{&A=bb_*=OwxBAro9m~CPv63C!$C-2^ zbm7n-x=`!0g-SkUi%_pNyEHGhs;zA6^rM0E_@WMc5@BhsL|4v6&{8Vf?kX-o5<3*> zqBx17-TBmR4?R>{x>C7j zTW{3bj8-PY&r%Md^j3n7E02OidOeh8^$)_M636<+R-aN3ktXgd3}No%F4QePe$a!= z8j7#j=*XoC$?m9c8E}N4dcF~zq5xX%Ut8#iWq~!-OdQ&`IWddgH>oL3cJH_Z>f6qnSHra$5eD8kp3ea1w?kpC2&5u|U4)B{G z!MsjQX!@-iil(3mW8=Gwy}s4lvGt<)fT`ZB-e&t4e2gRo*gH>5N-icDzdz3oeKVta~W8LxNTE{zVEF67l9nS(TwT`FbEiR>p#gr1E z>N6Rr#L&fScf-CjB&2hFA;-1Q*r$84#6LH4`<8eoA8&fY;S@NjEiqtu_cpP^I=Wrw zwZ1nc_qV*|*7x=5Y;2(uWLe)m@><`eZ)!|!!5}XoTdB&cwTKV8UWfjPIY*Nph$ENnmdF<5Q?U6$cpj2`Rth3e1c8DBd4oCkw z43>x@#*t=#Na7=O!tjF(AM!(H9hbt6VpHIB!kow0g)_UQZh)4VN?!2K*rv@x(t7{~ z?4ocMx5r~NHV=z=cW3E-wL;^-S-NlAbBkqR`{*eV#j@BU^Mt(^rSrh5gLsutQ_h?Q z79R^(xuO;d*a?dkbpOjepsVqhrbL?*T$iBxiv{~ZmIdAaJ)ecL0mXq!5p9O4g@+X+qQ(=Hoorlhy& z^R?ptDLAW7gOuFVsVClRz}cqGiwqPtQiLDK-#@iMFL46hxL!c!1R5hS*5_p0z4bj6 zcYm%x%@gG8!roNXfg?y^n(F^w7Q z`Y%VW+02L@`pIV+9;;(C)HX4n`JL{{FR}80#qDI!v8O7q{m0|X_B1okJH*P*E@+@F zc90(*uH6sy$z7)m1F+*zA`gD*>=dm$5K+@+?X8`Z>t);52949#;4KCKrmhlTB6QGK z$eJ_kx6`1LvgR8%`?98nw(E+cp086mB;oa>cF_)LN+PxsAWb697j?t85q{g zdAt_h2u#+@W=ola(%ACR%lI~LnHF#Lr#?sJP;0XMUaa%;d467` zrrron%1o7j4M?tIWdtEVa=qG7B@vc;v9+rh`#I12)0fawE2t7~D9mCD(zX%#{pYs} zk(=5^;vDYQ^5q^X{^!b(9M6UwY6_H-;18Rk^FhTQ->@U{%kxQ3p~8 zIJzS5X@Il5GiZ&ZxUBYvJAF&>DNW9}Hl>fc_^}Nd#ACD%@hCOno3874XQ7Y@;g-6c zR3?O59!t2v`5v&xPR){l3xZGnB!%FMc7rGD=Bp%v|Nb5!xbNoT><;7{_a$w5@V_Zf z>M6bXxNc#17)p2c3Eed%vX2)R$URF$f`S#>mpde&d#S0F?aR(-p%)LIj7$hxBpYL*~Hl^&ov^< zd#Bybdl0MI3I2?Q1{(h0Kd;jBFbnZ6ABP!#rxzT1F>3Kuiog>$68h42>hO-QGpv|d zs#VuE4zc9Eyo-31TW~Q{>4Zk)n-3kLR+-Jx8{i5aZv|^54{NQxB`BF(YFDUOV$g5; zYoR$Jk?sb1L+}*PU-We6%0Q%svWP6yg2)o`K1!k7 zbKmii-P2KS4BrT_QvNZW;f#z`A@+s{ERkj_PBMZjjYGKL zzbfR8i~54%eSYasJRB{lACN?GSEq@Fg!~8(bo^mufnCgCY3H4^jyJ z2)Cu1gFcDix7_9sJnZ$K=@2~En!gSEs=u`ysig%Rl)#r~P4NX-@>+y*5M(7H`koUL zfCX>%Zxw1)VM&R~n9xayMnRyg*2`_*U>Ub#LxOIT<=NArCBL3;xR@P=-aFB!P){Jt zgH|gf_zuhZhFnxQ$+Rl$z?>N)C9yimTlpS-2NqG@LP+jVMHHN;RK~fPobkviHU@cw z^EMJgFIo&^NyewiCU>V5!E5MX+6O!#p8#k3Jzu&Lh|^-BqU;kO81&=WelTbzR=|3R z=9Y62!MUotV9;XqC*|nrj8>FIbWz}UP(f$!5W3_kJD^J*SiPOP96_(XAR@0*3VkURedUY%oD9c#^ag|u&O_0cjMehRNmwmI*HOfX zQC2;F9R}GCL!CsZcOTpT=gt3xBea@mNlw2cp}ES9&{TgwXsX+E&4ADhj{W7mA+%S% zFhYCvA1Olna!&}Y4|AO)v|+z;gjVC-HO&#)QtJn9Qd01=)v^Q*SW4i4QqawTxtpSe zmjcg$O!AeI7rgRCq!60u&Im1!AJXL(&^~9d$#aV8F`X3s&j+B`uivQ_Dz7t}1DMH9p*!yjB#-NAV!nFA) z1dQL>FS+#2=KquPH@_;yA*@*HV(rh1uCf6|iDpa1tI?8ccK{jXUt}}ItL-80(X~(; zw=WlnfZ+w)L~%{7_AhPLrFI+-IuR=kwxhQ3q}%APzgHS#nTVlFzL`u34fT1mA1Csa@#Ke}9jj64sOkNBpJ+pspbb9)dr0=%;{ z#hYB?FfXjxg55_*!MqB~K5473Ft18^(A$A&RRPTeE3|9iOUhUJd1Ddjs3BWjBS5m% zxtA^?E@i7r8#7cR|CSdqY;W*y6*?kx*!+}PWBfs(lbwd3jJ+O-9hp8Kdj{hI#^Nw7 zS8>hS7g8QCdlBBYPBHf9Ugi2-Z5_SMOk(uA-mvYTIbE9b}{Pl0NrtRjiU(D?izcLf!h~?OS2Y|FLN)Wf{nAC?{=?BLAkA zmEs}(Lq*v6)Y2}+5uQ#p# z%k(=*PD@-fqcaOJGz{P1;_HtTJ;8D~-=LjcFRO%L_^`fn_L~hkvtNd_MB+2^%Vac3 z3~g;r#mARQKC!6SSgqnGW*|}}LgRMBFE%Tl?zyYM?@)=)pbEzh9=!K@s@d{p1%auD zu2G}eUzFyz`#b9&AoAOBR1F3e@$I&M%ck*`cjtKd>tvA;mw=TPgXcg&KaRn-0O*bU zL?abCJVc8=`!!!M)$ zF&+Jr{R$4nnq&ZS(0$e;=yR?GPvfAYeZ1bPf9~;QslY#%r5fpYRr+~YF!hvY?#QNS z$t;y?>b&{Cz8&tl(YtrGdWuQGo3CFPE;*T_h_Cp{ov*gcg5!q1eqZ2{JHXmwzSk<| zCT&kvm3JAHvHw2>fqg1)S8A3jy)yf-_Wy4_&eo@_^wU*UUVgY8ENH>}a8C#>wf`S9 z?X>^@b&8lDPQg~6sGvFFgpHj&aQSFzc;NORF-6CPYj~9xJ670i6ia9)DXeg*W&JQV z2)R{xU&0AIZDNH27wZ!_E8pVh9aX#4A<(R~5V!>()A*iR2*gm48rG25VeEM&+^Wf zCH__z@V5mNG`6Pkv>!H-@leO=6n|Sf9sV`|fFyrA^+w0vE^dau9e;hm-=6rl=0B6a zefX-OiSf6!`klt#teM^LH+YkC)DkNo7Uwc>IU+%FW*^p@&ZRiqKkqgb3<5I#_JrQT z-@xY1ia`8?YOmvLH8y*=f5fECF9Txpp9sC4)y?TWf^qy~*}ZA!Ook!69e0LP9ZyVM zD(WHZq8=XpRzqQw2YXJBdZ_olvLW%KI?;ldxCP&BR1M>@8BC1$gj4mA=mrYE8F0rS0pP8xae|<_{&G? z)an^n!!<54flUbBA+?YYJRkv{@;6!7J~0hring!PwrzMHlg23XoysPSK?(cg37YQz%|j5Preq$_bZF_S<`lvDJq+|_Sn1i zB}O~;PTK|c$U?v*&VVHg^wGpbA|PA5#h7`lu4H%NS*FV(G;&b$Dcp%7EkWbZHbhlX z!8}zEo5;{zRS_+@)V>c};YLKx&$}v2eDz;6)15|Zb4xiPmt4ObY?dz@vFhptInnE= ztvpfDvphcFDQ;!HqTDWFmT9TMz9R!$BGmkPf4=!8C%}}&R(o%spaD9~4UlYb=&J$z zvpPzHM-|qulM{PB8!dTmgT`pU$*}>?GCyrK!7#n!H7WRlVfrDDP~qJAF&$cM5+8#B z;C=D>FHFbWrnc!@vrY&1mwgKXicqP!T<0NEcm+unOyLHe4R{L!9D<4K#Q~|0tMs#QU!lD0PJECPojAW z$+3pS2Rmy(9~lEm{EqI$(c6eRegHy7I@^I#_iDlScH^4_et z!3%H7bE?$#w%eR|^Ywt5A#vA1r=%|Nk@-|O6SIwxac{Tc&XA#p`mBU3f!I(T0dBMd zR&{ZZZ{HaRCw9u(8Jy7W?QAXm*%#`m31x_@DWR;=TWo#A6bWZ$z`W6Cx&_+_^0%2~ zx6uzqX2CA<2f0`&9Ls?@3z(2IpXWI&&=IBN1+RRi!QbZZUUiYma=}#C^Ck9Pt3#FL zotP|+DE#(byuh_-y$v!(dQ#fdL$I_-f`-}Xt*o=PNGE9pOl=Uj+OW#c3tstk)H5mk{=I&i$soXQW0y3h z#(UgY!q6}FSF4}mQo!cE*~~brs9~Y^_-@QeV(6i2i#<&Yx(*23PuD0Ju{>wa(KL@O zRLAzHI|R!^-=HxVmafbav3>2$eO8Sjeg|S})bEw!3h9OoB%+I6_={p9HS`# zqa%CPahb^K()ek_zfBHHKG*r&W9|JAZQfW75Qj9i_tr<9x2+6Tv%rSSA90weMqEtS zFySlh(r(gORD7yKyXhlaXHY5WYT=D1xp4f&4+ z$75rC0?W7O?qv5!!bK3s3NZBNd~5itw$`?Ntj@p(+_*TaN0^R1^r4vC3*Px7W%clF zG)cG&!-v3U0`6^GEu;#4@hNNUL$%_z`?m|ZY>ll*Ut=r0@~1>|k{Od0K8{hun zB*~=t<5*bvF;=pZ`9o;V0duj9;!l%R6Xc+W-pR^j*gt$$oCxjucbNKRS7<1QUf&d$ zK>ph14^ALgrSI=h%iQ8xA$ zpiYD&(xcb8{+5O>}mW*bj5`|8NkoJ8iS4tV-{QY5kt z%XSWjxgqHVYvH{lGJ#71QxlZ$L9dioQxx6VVyW|Y$~eBt@~){8eb^csJ`Nsh_T zJI;o?#Fi@pM#0DZ%_5~`n)_`wiNS`6pRMVJi_Pej;$lc2y6R?XE|SmhzLW6BiBF3q z`~^!wOMCCKIJ_6ty{&=vn+#V@jIxf~FOOGLlKzyp{+^61g^jf-H@#A!H^_M_MlHT8g2a)=o4!-|ME}u zo8WE6Kc7w<{&atL)}ipUjJYXeZpz|S{@i?Z#T8O8)jXMOYB+SC9kn)3A9}?{x+$u5 zQxviGAR3MdJNq(|RQH5U(pa^~pQLNKc~H$FKEYMYzWGu)ADJu~bT`+4mnVKq)JIk1 zltck@w*Gw^3r@9tp?zRk?8EZdE3CiE+{7JDZE2?m?i|E_mCJIGg#xYf1AE98l*snh zu_`@1W;J?!E7`Y{T|zc_639wDxyzn(0I*cqo5|X#m|iK2t&D4(64`g?#WY?t3AyR< zR`>oa{*~r#lG@>Fo)G(yR1&GYPm&jM0*RzN;oAeOl1L zN^e)iDIlEow^TTk)YM$dy~Pt8CvG${z0Is3aN>EEMFg}IWmG95paZ+XgmZD;CZ3D) zhLw^Ryz&*K1bjtEuu(dAiIyTH!5KVo#>vSGUgdg_3f`V0YTAkb$JTQ#I$8GKkBfjr z7HQJbPe%L48LmH70%W$UN$F3GWu1I2<+{P@xxrT+oc~en61dtS`B3?KKVL{{y8erF zz_4QtPa+9i5SCuEDk+>xzD}J@^3flK-FOLs41!a%Y_({HYg8pLm(_`%Q5bfT>aO|XRLCH>4Q64`xe0+S!=;$Uc zJt$T8qnrA06L9Rjg8JdGwY6=3<8uVZ4PWbh%7#r*>O7_nqYOLEQ{FgTAp6ieBAia* zXfwd>0@;^;uNfpc67t^KDD)duqTdSIl!#&I4rlv zpTioF+$Y{~s-8$iT1rKP)#bLQw16!DfFlo{(|#G|0u||;KW%v~j$tnLR-3i|B{nJ& zyM`WehMgOFHyLBBd;Vk`p-iXA&|-|h^vx?w#_1Q@WL!2on2e|Yrg5_&7BZN;kvSE; zsFL%4Q*c(F46;eZKu^54HGnet)EHV01+qQDM;uhc*Pw`|0-Idgu7V2TjirXAqhMa0`s4brJuevfMJmJ=K=U8I?X zmo6oRm$q1zv#KrStZJq3YzO8J$q?@pxOizR1E##-mH*GA^t9$RJspXzG_QO_M;%I=97>$JF$!CSxzjd!Fa7C_&9hr- zk56$gA+fQr#L(f_f;{46VjReSFisu3X!6+tzNuKzdbg|9c^ZAr>nOpmTCa#5vs>d{pS`_R?zQt`VW3YieU#}$FimsZ40Q? zX##3meCIG$WsIAK^RfSp_|A^SDVee1I%Gzjaha4EPrb;Ge~KbA9)FJdFGJ=NYlJjO zSrK--();isI_k%FuGR0PsJP|$&ai}tdYKSi#8XTXK`P?utC>109wl(M-lCKfh)ryu zbuN~7v|yze`nnVAGOP0`R9R*bnP%$?I>bmu69`Nw=ugc$?He$QVaUaC*x928<$Vr{oZmsncJIE$jWo2j}aGBbs5L z>4vly3_ymos^q)CkoGX|wi=81gJh9P#She1vcFsP(Py|$dKghSCAb{HV)@l-^{><6 z_>q2GLJ|y>Wiw^HBVuRYvhAT^&&T0;{uohsXy+0Ypn?rXVUZ>*vPVsElP zUO&?KleMv%_)N&&IZ%`FnVR^3TkS92oZ?pFre(xuo<>*!J6bHVV{j1Jfrt_4C&PG8 ze1}+Ay<7`It>fctuMeY)aNYav{Kct~FV;ukM>XJWzXV3?u1cQP)!g51aaZ23eVwhy zMOtlWYCA?PlcuJXzkx!4pYS2Bf@_J`?czS^{V5usxlbgx#3E3ILO5cPifGBIS2c{L ze^@=S3fZ3|%!UI^!^^f|m307_-6$j;I5#Y$^Tn6I&c=PjhEvWB2iL{9aVN0&&;DfG zc;IT9{PJY+;)u1wcyV<)FRu1}(kxug@NNt-;H`N#j-EW2k*AZm2XWJ3EUh1ykFSY$-TjnrQHb`{*AM&XeS*;h?n$lOjlJ% zWqRmcrc4HdP8v!Ndj=kT<0RwJ_y08D(ci98S4}Ew5^l(Bnp9)-g!9eBsb5dQH9EM? zYRsuUwZ{;wpvhQN~S`aZ$=?7GHVdLKDo zg{eM6US2ii;RXwpTb5?d(YBdwlOFy zCx**LJe8C99V@{VmzO1uQ<&j%D3DhiCqWD0D~OEZeAchIiNVET9=#C6tJ_OKhR0cu zVU_LE4MJ)n#A`ybkx1eg0x+k%Bz)YlEH+?G+jN!{_%o>B2N|{!vFIHHwIPoekjSr+ z$e#8*EamiJ+qd9(H$;Vj+g|Pp{Owlm{;YenP(?omMW?{ph(Cn!j8#Z043e&c=>)Ka zDs;~AZ-+V=)6_m7TmV%V%f-M*Vrowe`_c!)Y#Vd@Uzbw+9g(Io1}0b)9?}9C_RHVX7?*q()S$%{i(O{$OHs1<%4J zMzhqgGI?|EQj0VX(G@k|=qhhlm_(Dg3B2Z6{v5*}+D2mBPl+pCex>a%xqxLA;Y9=} z;l&6N;Uyr#R)b4H~UNG-IEetW=9cTGS2AwVzLuncDxed<%0>De(6_} zUeLT`>Q~n{DR=Z7GLP3{b(eax_SQ5=e@F6V@H6h)Wb@MM9SEsI_UCRCW%#?50%0N%+F^AU`fxDb7gIZJWEuVU0mv8A zPfOAVm=$)!@WFFQVyI_XN+X7P??4;;%$+RD-xm)1=Xa|2?Bk{?(+b5IRzCxe`uQG? zGt>mqQa1|dLjo++)fMdjeo^gPOY~c`WP&xwWFF`v6*U?0rr#lC&(J@=AG99h68%Zj zKWn@)1NTGOOa+Su=BU%yFl0(#=ETwI}av{1j5e7+l8$r6P8xfo@#eN zn{8zA?`M_X9ru(m{3jKFwa>A=Lk;ZGX%yQ?AurDLoylg;OzO9_7JDu;V@)B*n zyiM&h(dK@GOA0nn9)gXt&%P)qU$CjL^?&Vec;X8;m1)9_Z=W^!<|HTIj5V8-i4UT3 zTR*&!hdTMe7JB3dE%e9_w$4L}>&VJWcHGWElaAvWl3#TN`9T6UrH+ZVS%N$ zx%dB9+gfyh6YI}($i*$xuPg_*7Zz;iLjB%!jpw!(>XBOr4D>mD8h`&^-#@tY_7s1g zz{w|>`v-S9!}0e6YvAvpQv&`z?HOTSCV#*G*Yw@z@ALKhzvl0U_11JIcSzrNNd|x4 z+WtYpRcAGV1l}Y28{cjJvRl4;@ zOtyQ{J6mVFKWYKv1`pge+dWc%iyt<&``}8NcYe9J?%$tQd%EMgA+;ux>n=866IZ%$ z-PIPFkj{0Z2A$4zUo{wU-3#rV^v_(Uf986>=jB$}?qSLL0=9dt>e~X_b+=;beB@2b z)y3|(u75uA5NnptcXv{z8@{{xG5GHAGUK}^UKH@%JFMK41#H*$5B^i{L?G~&TLtFqe+Jlz@4Eeirwc0JyWWK=-VM*?B5}0IE$knB zb=d!-jMj12EB*)ypS;(0a@RRmYSgyLUAMh|(CJ67XqAY5jL0)Z26z1d^CFs`WkclD z-JCOLzF>HoFBOHjuFzQ9=^1M@TQI}^F6nT+f@+;O6+{jyu4iSD@ zu}7QG%A{4eCu$W~r%h{T)TIxX=`?BU%K{fX^mcDLIP2qe*3X4*1x9}eR^lGM{^0Zr z7pN#3kXB~JOnQrV_ub!@n>z#j5dgLr{=2@m-5Ir1QIwR&TcjGTLQNIPGpa}NjJy%yAv5)xUsL> z1J?=|N*#>Ai4Xc6EqUZm8hE1m{FnpWzTrrW(J$sW1O*-T;@En* zZoR%Y3xU3IA&}8}f?~4dK7X6fpa!+QY7NCunmjV?$n)r+yjRV7rBD)Q7&6?LwPGDl z5$i&S&?@hvajro%Jh=T89=yea6fIz3XPUDYeBfvyS~4QlM%Ep_jWyo6zpyrL;bUMs zQ8($I@A`zVeD86X%ErN~lTnT88kRMp8YB70*k_;X_e%^w=OA$@cX@nLxYS+Bje!W3 z`t=n*lA)SVp)&TCDpZJ`75rLZsB4j*vqispXz{0)JgE_9T^tj{pZ@yi2#}C6`+g~3 z8Y6<<#W8A55<}OXLzp9RjODR&bXhlXjD=Q3R(Wi|3)rVa-bO|uEp(A+XhIeb0%-|Z zY_i+Bw=hTyz|f@(K*t_kxvISX`QmRQFHdI;#+8I5`EBo-!$kg()?|EPv-6KEHCC|D zg*m_?7Lk|rY`s1A4dcl23Ud(Uts<4lVU6XN_~*sBurJe%TNr-(A= zq>r47NDB9GE?xR;`%|W$)BsuSo=Pf5#ps_hS*-%{E;hL zg4jjV=$yxfCMsdD*iVExGFnCKCHiQnIDcO7BIvzzK1GMrl&2#d4~i zbvfItQk`$)JHE}rWuQC@r;f|BVY}bB88=b#YL#%2^}9fJ9MB8`f>}|q_x1PO(p_ca zx80F^jetuhs#c1Q)a2*u{rmz_J2=Hs%nW)?q~Scv69!5uHq~r-4sf%)yL)vWy>j}| z!LDt^0%Fd?r08!E%RXr?G3jrW%ERg$*!D#~s(y3AqBpn9nf#}GCy}%sbUY5T zv)<1iEsPwx_nYTw)ooF0oI!x z0A?uRM0?uZ{wn*iNL_+kGCM55^6$dDU}Q@^=}T7w1HIGtH9-*qBx?x@o0z50ix&ci zwi!o6?m1O z^uO{c8@Cp|V?R1^(99hmLOgL+T4dLDXSCQkc3Nq@cONG?NzBSMT;Ikav(BWf$x$Q3 zaPlZ7hNHG9U+Cu@Q_pPDwl}3@G%}HW;$oJx{dSd*vEE(GS*$0!>PaGdn11)=cT-CI z72EH2&%LdG7Yoa`sY$ebx#j!2Qv2^)#bUbOe=p2zu;JYLK6@sSP!*fX28PdmXsI&6 zROK^P8Lhg;o+Y5P!`n>GaL+hwUgu9DKRzabJhjqPPfDFHXDiNkdJiW=vV^bk5%1o? z4gti?)pD_OxO#tiu8`)uRd&CiCzINppY5|u#Bx;$KxC@eNO#>NEzX!%~mx4NDT zE5t|;(B)nHo9{MjsoY0A63-||b1D}azp7(OU(K2GIN?H^1KPHjbj!GC&O;E|KIK-( zfTvVz$o$>d|8)gPtf#YfBxs{Q(E73_VxFIGvX-PZOMImHO{EAFpjW{-`J^UlWcg{!wA{xUe9i6!}`IDBbO+N$uaMGPoNGs!1hZ zTVOE4mbM|3NlPX*1|qbyA1%R;Rs3iI1<#s<)O*wj@lHv-3m+E#Wy-v7&8COQyss!t zlX>my8Qe%XS|c(MStMm%WdfNuWLr0ocg2koC4WENmwBJlbC&A{gY|J5W~6U;c{(70 z?yM4KLECFcq3v~+ebU{MNUzr`53M>dwosB6iU?e^*@L>2_xyY=`E+=r`84=qzkC26 zA)mp#Y((`H`=RRXhw2UZn$;QbHLLKkB`$1?l~@&uuT_w4fv;g78R8gQGeGM6B2qfP z)Ut%@S-Qk2Aave=r8+P0^v(-j`JnRwe7-+80eqpK58#W*Yp?{T8D7UkX)q0r`aC}` zIMr_qGLYX}(R8*lSYl$TPxV_pFtPQPcQUq7; zq``*dHrt@ZNHtm3*J?nM1%6Eq%-vY8o;312eWd33c{fs^rqwgomV|WpT)|O3fX^3P ze9$Fx!VHwcbQ7UJ{Hrhaog>8OgC1~ZvXs?bxG!eoL4BcCPT)9Xp@?sXGWqYgE~Y+9 z*Tqb~cJ1ciVys;h)NE30?Ag)609_WNHNV=cJ;tfQS$-=!{8m}((vV-RQ!ibw20b&| zwNfUHoz===Y9)gxRvAeU&ZGLcfA&5M|bkFQhe{1bdyXE%22FDbu zf|g&s6D{X(i?oY&myi6^>>?GmUQQHVB|?|><2%iVs|_qzJb3a5mdIQ6AfDZ0jF!lL z_O)!5NEuWrOJhByt*!J9wWtZgPrO3DUaIXf{-K(nl??-Em8b5o5@;BNR)v;#9MvoO zBUcc~0yo2+x=lMMlU=XI*|oQ-!Gr3oj*)m){M0_N@qL_U*u}u%|KNVcb~!1|cu)hx zPWe%tcJlC^wr}*VwDIz{CS0UUhDPWD9~g~;Z)bR7hiMvy-c=E3gkL|P>bDjIcO+Hf z|1~%}zok*r3!bH&-=arewlxI3@NR>}Vp1fVT&@OqxZa@`J~va7YkJ|;evL7Aeha)m zsTbZYsALG-@2??edf}3S27TM9hLTS=)H=7tOGGRY1hh9|mQ~$SR&}M|vI9%8c!8%gF2ScrJO!@-5Tgp<)m`NScnxD}c-?SFifXmzZdgP+ zYsjahsPu8holzz#3>33F?naoJ7TP{x%3FMv@M_zd*mE1wBBIjvm;6xU^Iz{Tfq{U2 zGyIDWYf9rgvkkBa8M#=3e3-s#DZ`3hme_9;U(`O!aG4AlPJ@E!XbsauX$_M=-eLL7 zox5cT8J=X{xx`=J1*G+zl*!j*NpWehl=WR{+>c521tm?Mz%|*TUgcZ-{5(<2_lPx`K1JD;UbaPLlu<`4QpEYM_L{xws-8$A{m75REX=bw64OPl z7V9`Zw>=Cqv-f#k>ooPzx1TS&icI1ZYVSZu7JRX{QUJ#Lh{*DOrJRn=Y?W`W5N}-( z5r0YF+~A3-EkOIW_RM%c;kWOf``Y36I-AkX{yC|4h-J3Efki?+iD^PTX$C!17U4(Y zfiwfHhiPbDZNKXgTb9g78Qd>BpG7-)q@**rd;Jeb(0~$7p=QD$5xndNsHtz84`oad zcS01iL~XtkNkML-VZ1t?+rNp3W6?y-*S^CubtB^`+Ui#!#2cUU*o=ZxWs5zH{eNQ% zCh)hc;B@{@C^*BLKn+^Ztz*!ZIwsn(j=_|yV=U`^c z04*hj%vvnV22M-az^RnJI54;FidY0LGHX&wUhv8pa@X+0}$%RE2Q?$^8s+5`Wmh_v{l z`!$)Ly&KC4_6ax6DA-r`vlooz@qS}@w*OcxFyGe)dN&@wyNGqRp+ScT<@+k6fy!`2t)b_7q|$K z62g!Hh9TL8Av+m{1x17~PGc zb`-(p-gGg3B=_IkL67i{!CMcLs=twwbG@AumLV?4RiK?q{>hari%k)$q7O99NTw`y zkF88n;Lzfrn`lXaYFFJy;Q(D~(F@so)Q2e`kt`89-|HLj|3Wv;^Hd##@5X}zW!bwg z!xr)CICYNbX$X4R8+Z}m76u&KDO&R6?fMSx+HrP%&de;Y{R&4$^?~ZL<2gPT9KDq3 zwd*9g;Jj=!!d8I}i3du!yfT86IYj9E+NPkgaj$!~(t^TaW7v6Ja?n zG9vxo-r%7%wdBlMWZyHNS-?O~B%)>FZ#2XfS5}RWJWu;`IJ*uW!3`g*-_}h+6wcDd zfr(Z4zpVi33=QUcJgiiit130Udg7gsDpM7S{YuZGC7<7>?^rR(ITWk6VvvEe1bVqv z%#oz`^iKbgi^HR8vGqJUs|8@apD*bNi=8M2o&_jO^0YTw^>zYAyuTDuB)NbD{0L;2Ejn1-L7BxB+qE*e zgECLbjE8md;d(W#)BcqJJIv-w-x)J#F>EJE!zB>e4?_|0M&`MDg^MLo77Fc(A_Vo% zU{M14f>}rJy*FOt4egl2P220~^|KPo3DYoqm;6vH^h9#o7^=H0e)O!(d+RKalN+Y> zsjV9miEawj9XYGmo)tFKb3Dinf^0ujCBZ(|Q14W8_fJ8qrY{z ze%)EByLKP+n1i#+o87ZH2KHv>pS^h-@(4VC(ruU z9ieBG`N0LV>Q!dHhI-2EmC>fy=bR5<6CE_msW$c(ao>ijRsMig za>dH^3IbFll?)`ixXb{Pa=n!fu!j!_U88frVpm#B$?0WYKPrh-UHrS1`+Wgu448t4;wcOy(kz87JA3oZ4;qmIQ`uFdT&MB z*31(FvS2Hqa|yQ6xz!+<_lL{Wev^lE+dxGmT5_BLTWl%gSdrZ0Kv0m^=!4U`so3Q6 z43sshCOG5megl|FsO`76>YI8OY;cJ4F6XhSmxmi`E~k72ub88$2nA!R%3@*oYpa!k zT52k>Kk4?5O7C>l$f(fOsf=PxbtGQ2k{yQ(YaF?;*YWXipRuuVeR42gYcv%tG0eRp zlq!qM#97_O(V$CQgUVtjXSE*_NwATw2?jRTa z3h&6mb6s zjshxEKoWq2xAa7xWkps1GbDGYt~7s8RGmy=knmEM;Z(r$d9@^pTv z-*l-yaCc(nn8fFLT)>aB5!kSb_M}><^hbI$sV5er?5i#b^IIS~T(bqY8+y)>heMSE2wCEziR{p3r2GA?Pno_QC;xjl?;|-sd!YZ3YCclMN4)8N z{SqXpe?UtBDwb49 zl(J7QwbWe?ByO?5@~KFWX7ZA6CBLQ{Qr3}&6HH3Vxqp~YaJE!414Q7JK%6e!B4iLD1{z61!qU)T5e;h(@C2oXFG&A0YoJtJuF6MIq` zKb{!iOY@nBNk_>CjgjgcMv!M=0Nc6I^nKnP%e&EkfWakT=O)7aA z(z_ON^NBTIj&9a4)!xB_z{72a8_y_U>*$Pv+`e^tjGi@W@4YWQzb^NJ(X+1UGxfr{ zzM~ti+2Q=!Dp@Hsal!Ip4Qni4<)ZW58@iEreKa0+D+D$-#e#WDkgWe{LjK2a*(En^*5 zfrSd#79Wg3NB{x`9l|nhvBw|aw&t`@3)z2kysO*dum>(kSWG=5XXm3TO)NCKjaW(x z`7##FRrcOFwZ(c`Ee}mt3X+qG)ihgvi68%rVo9Ee;u9~=dCaL_ShGgXeig?3q&fZV zM+HFkqe`XcJSPFX$KxmmJt8^Bzx5~O5RCS|55Xws_^+kH)UUT;Tf9Q7;|3Q#07XVr z9t5%0#m7{5t3ETh=bmwJ`j9BMG7}ETWfH5v)CdHG{Ikqee)uJ>kTr@z)hd(-tz&ch zGWl))40EQo?;;7;0Pox*CA1qI%J%{3Yt*#PZne9wKA{f&$?xv!pu30Oo9wR4HP^YG z{MnYau06K-p~vD+Yd^J4zwQrCW~cpNkoagi%>}3N@pSqXuhrE)`r>Z8{K-GJ)a9BZ zT$gKvvDB7*{rO>=kwqGtM5yQ;_;LFn30O`+7qT)m43f9RHS?3@e3Lm_rxLLpk$-N` zQlv#VkQXlgu|xG5l@5E;UBM+*aEV{=WF(EADrxKYI9tDG=6Q!$QRfs2SpI$ghUI^s z&y8M+kZ9(s$evnC<~lUjsTf%6u^G}*{70I1HW*y*VJekdt6G#i;nJF5p!b*Zx0Xb_kcagMtQ;8Z@nV z4_HdHyCp`SLtOvo*9dXGfnJuoUJ1I7{SnlqYq2kHFQD8K1#*7QM34$`*KeK%`VFh3SxI72!3Ocf_X&y4L$ zm+vY5K0Wi^e9s8)G5v;p%*wY+EJ6RZ!mR$rmC6VX1LzzaO@13S4;$&r-p${UI%>b8 zYt(@nHxd{M%i|~as-GB340`EnYQ;gW6|t86JIxiO*18uOaB+Hz=J^xCJsv-vrl-Q( zU2(uac698o^?+Y*c*kE6v)lZCz@SX+k&|5F!2}ZeydJ}yZV3vBJXP<)-Ht(b5Kz{R0np=6W<5OgC zoWC;s$aBckE02=SGY~SU%zON33P-aXS)7&;jNI&^Fypguu!uF7$k=s<4)8y|Kp)=+ z@t}{Nt&d;jKAxBP@x0W>KRhzy<41P$aa9<6e9nGh)Sn3VBkc73+b?vTmsm}G|AlAy z{s#lB^YfZq=Rr$+TS0jKitr;(qMBW8-|wHLkmVFGen)iE7FBNFUs$OAhYsYULEFYw zQfLeSsX@O6piXudLZ4Qr!PsEy@pwfh*hJNp4AtzzTJ2P|6+YDn0E2$K(fx0}FS=)8 zn-@?IBQ?D9AkBg2F3=pP91aZ!FOC25v#bJfhzIp#PVpS~a7%HsdzfE5mj@{-H@P3C zV3%;Zg17>U75Ia9{N-+cu3gQ+zWCg+!fD)rKP+FTU; z-TCBM1)9%)I8S(S{$Hle(o65s_np?f#p>DPs7Qsv6jtG_6bqv@7y0=-rQ}OU^$o$P z#rA$zDj-Pqs7Ll+b;o=5i!T+)K$q2F*sWC+M64!R<(&g(Y28z0Oj4oB+iR3~t<*OL zv1s=iSqzY>j;k~MHi9*v)_?6zIeS@5t7)@CJ%`GKI+Qa@;Wb7XNQZU&F6C>z-m}iz zM5=Y3`iklicy6S&v_o%Pke(BVpM^9S2xMyNj2h&^8caS0k~kX2UuYa7!_Vi4EK*BE zMtY66PCNCCc)QY+BdqV6VIgZ|NZyO>F`*KEkJ|;S4FXB&3gmBtXcDV9ZbKTL$HyADS)HG!%3mVCIoog7W>uO1-4(O?1aN_{>%{ z5BVruqysH^CyFJ5HnL;gNX zplhJvXxa%@hQ&SKxKH~*8JTkUhbsIVaesP);{VOsi+)6wVa*`W>0Xxs2q{7e^<-?hu5V3K!G*-Vy$eZbA*kihJuIA-?6FwMr6^Y z%Y6GpbmY4FE2I9|$l=k%zM@)uH$rdy!06K(g43sedY2|KDhjsM+~kvw458c}XXFDX zAnW}~eh6z);jw1jgJv%i2a8Ki%B`-JH{NVWlLqof0w5VGNM;yYqk+-N{dOyuxqQ-o;({OZ}^FsBhhhpwnt7H z_j(flTHyHCp=iwTFYzHQE;lKKe_0A4ZnfXtVQ=v-@pSR80#flW@pM}{i3;sOG;0rw zRWuPQJU7kAik9d1cwE->6eF8n;27D>hr`G&?GrGvS8fziQjE-OUA@0W2mSag+t0S) z8ctPw!#P|>yNSOAMLBmE->={IN%f;0hxStGRD71)Z)C-1`KR8((yD{tS`1^{ZfGOE zLZ0M1M$4UId7kv6V2lFmFH1OxKwRy<^ZQZb2G+0JpLVwD2JUY;##&J)I{+0{aGMYR zD&u7@-5?y~RwNmgJ_O^tS7y;Hv{ z42Mo3D7yD~Z`=Q|ub>`l3p^vnRi*bs;aHOcs-z3Dd!K5+FktPmWyQE^@M;V^=(J4U zgIot7^I!|;5`&S!d)xKaIo<^Z?+Wc)c`+}YtZurat=`X-SyS%QmD`+^(ejF`kw;JDnml^_kU$?k3Eziix5T@}&_Q5E1S#P&xlZYjwtn*39@;o$g%g+jg$iM3E-D(_hbf*J*+h43bA} zq{yRo%liBJaDny8`$2q>7~(;<0Ii)AM;P=Mxra;z|xw7N5%Pj=XrPHmn~|I2<1_( z%AIkLa}rIS@-+AV&hm*c=jqO0c=xm6-}w_cJYsD*8D`@`ytH1+yt!h-9?HX?m1w}e zS{`1P?J$tdp8w+Z$376RjjwK$e8hc7e|*(IOQ3n6gLoFn(8MZnm8ZP>*KXLsakl41 zY;5h^N4$i{3{g(t5np9pwB;i)A=sg*PBvv8vf+aNMWQ3mjD~L=rq7xFl{gS*DE9^L zflu)`iErI;Ba7HNt$Suu3&^bPyho#;R=|;>nC7UaJsdyYYO$T_{!eiAf$D7cI=`eA z2*rV8(9+&CRYhXSaa<<9GCcP~gLHdA|H`w1-osW(j463_FZbnfoO6@FK&M`e=fZjUyCJk*2a?D+n%g|E!{9vqrR^&L|}{@R<>i;=5;(} z8rim(?geD2fi=jxYoci28SmCJ8B=apUknKB*GK(EZ@*OYV2&yRdKE--sC~e=By1rw zgl4TbhB~EGG@$r2n#u*S{gv73wezP{ee&gb)zO)h)X|Z-BjxDhFfBd4nm&#>$I-|4 z+q=+5qziqR#w?tfeuGribWYQUb{a$<4BSBI!|if=BmTw6>iEfD0S@jb6TyUUU1-Hq zgC0q3Zxi359D8(;R%MXd6o=~n3dr`QWNNj-nTz| zgSMpi*Bwb@64=Ar0+jd!R_O?A`8DdC$sGo(GGcOvmeG2z=LCG6EYM9rWZso9whYRW z{bTzPS;Vy@lekPjytjA(C~zubT`mKUifH4HYN#~nQtdw!i3|gqj8sO0LuKT5QyJ|& zDkEu3DkEu1L9_?4dwXazln#35%(Tk*+RdnpGQ6A02rIMrDWh^_U-G}jIO}tnaZ~TLz zCnO5N?oU|^u6t^S=@L`&!d!`r+O8VQOtc!%1UWb2-iZy!uW_Zu%uJOD<6?pc5a2=34`*J7uma~UMY{Zec|Uc1;0Nv-5rseMA~hdoF!75zob12a)kU^>!M-m2$~ zg@1X!Sa@J(3G`Ldny5?yng!#A%8W~siJavHq2^NrniHt?n0 zxw9_3eLEYCE{a)3f9bB%-=RpSzc1YA*xOb$2=>;4H?X%nBiZG)deE4Hg8jCW&(PoX6@T)NXybZS;wu{~+NwzR z$^4_Ip<(xV+Ax1G&!XSI?xDVY?AJx0U#)K+?njn)injLGqpAJ%W(kR=&5q|UaWVk; zCRrf)R;%VSwM&IabNqb1^Ea@oI>CiE(r@7=L4z2NlooEW>~f!?-04BJ z(1F36)EvRuAwFe9dum%FDebB|p*!^1dO}7NIAv8JR5U=)mBtM&tWDqK92+3!=X!@f zBTQP?M&-1wokZ50b(VHrzrqgGAi=72QDp?F3`{I&gS;8h7j0PUimTIfp4p!NUMHY3 z81ZfmuH^^s8Nm}Et1Wg>9*3h%D8di+l5NAf(7%RW^slb93@o;yIbJzmLjJeamG9hL zNnc{qnE9XE&_t)HYe{09J7EKB5tTu+LbtJO_i-rO^Imk~3YF-d;zr&>uk%PmudSB) zCxD#V1PzKl8+l{&sf@ssVbS9IQ&x#st3|B*h7yz})ph1`y)V`L7!PTPYus&N4R|sn8X@r?F+ILks20 zK#w`l^xpRV4uyJH?%br%Q0tFFIlam%V^WTma%wjm!9TxAeM#9rU-oX(GsolBj2li( zG-Dz^JBQJ;F=%`L^`V+Lw0-YDH63a-nrce_GtHt^-bGYK{Oilq0U#hryqUE=F|#OH zr@zbsjNP+%*|P?TBMI2bH%Ro?)AJ;~Bu=T?Htg`{ zUn@XUQQa$Vuxi+GI%iBdCXmNfUj^YguTiEV-Vp5(p7T79_@G=Wfli%W7;xR4#yAM3J@Od@a@isMm6RF_<6xAA0aPQLU4j#s^5V(INpofDK9v|x05$r zME9yC=DVY*bV=o4(6?CURiPDxH@ERZqpO1I<2uq5Zx&{1s9E|s&XjT%9RXn;(;vbN zC<5kO!;lBgqHN2q3^#8A8qV0UUZr5tm1=&|YB404=zQOU%wI>e>478uF;-BkM_L(_(YVPKxYIVyJ=iiA4Urb&i+_T^P#R+5GW_gq$Qt{JumPZ*P6+hiX zifnUU()J*%+k?=}5z^Dj()OA4FJhnR$M0G8nT4OcPp^o5syc~)z%}6$5<^l3z}U#4 z!?u<6;1039^nMCqg@$x_-^bqH(+dJgjAuss?S>ZAZpmqDH{)vUX6V&!k-#Dv;egs4tblhTPA%P#l%P!M8ezP}c6s{u7y;OazyQu4KazKGOj zou(OHRM(7(P`&&glcANr?ydQ=u~X8>ZQzJ7OGTnl@7~oWjb2?KX_Rpw`G||e&oiAG zr}%yWHG%ur$%>^^zz5R;>6(wyM4|~PSMN>Mq)7!87NQN$_vdu$JzSkLQyrUW_--lF zaTvq1)#Eh%V7;)I;!NwMB>&yuI-2u4RkPT>r3k~Ef8l?u*XQPW4NQI*!2@D~oq;jsCSjoRqj3B>rin}flcd*^sUUF`(BYA)oM+1w{rT624K z-`rn*jSKrmsh?e%>)rm!|C5$VmDZX5@SNeW2x4OwRX8>6!d(1cqa)GJuIGg`CeG!b z&E`-0drr%0RV!h)5h(kf(uh&Ev@CBiTGn12j;`m~kQtB@z}}N9T>tNKq-_AwwJN`p zCT-6C-H_+>kK-NJPU%}ia&{u`AAW$o#fSf^4-251JuQItvdXd-KqacmKf+V2XS!4w ztb$P2$;DS5MRgF@*&*p%QKGQ@@;}tf?scwzP;0#G`v$?jsP7@r!mhk7 zorDhDFWwW@DNKUr8z|o`No`2KXDxf#yXiP}+zf&z8dS<4SZM}9H0kT|h%YZN-y&G) zeNTn42I3XwY)?Jv^Sx!J@H+0K87nRYwtl+N9n*_y(NgN&L7dS!xKKWMf%<31RQXW) zm};e0V6Ap)m&8J$>VY|l%SlBTZh5Dj1>(VCWO>&-=h$nBAYiYhq_EeBWtaP=o`;+^ z0FE43n!O4;j;0j z0ivI;w$~j%Jo7A*MOG%`{N3Rp2Cw_`cN$ZN4M!bPc8ofFrCiF+aIj(gbrIdP2XXV1 zkkS18AjJG#`?e;Wc2-88CrV7sVN|;{-Zbs{vr~MDQs01)8jGERjY7cee026p?}50` z`s4Nz<+=?J^ww*8GPy^-9&SF#7Mj5Z$T(((HbC0Ka|has(YC!2A5Bz@7i{cp#{&x_ zZGWEY*u1^fcDPD(CugOb>+{7wU;(m5U3`p&m(%0&2hjbcXw?T>w=kZ2U;mLaakx#A%Ir;& zch6O2-EWfgH?In9lJqhR@4QK}b^KQx&JN= zQ4K^!xcO@D5$g>6FlIn`nf&k-y<>4a-FE4XAAZB2y6{8iE*cY5zz((lcAkoV#s0{v z@CEiqULw(U#^T#R9)nPe+>Vd5I5oZ>1yXYEQjL59?(Te+(ATu5f$O7@a$`W#5{~-* zM&>JXci?SEyFj`y8=P2_shfcw?mg_F{&A~=a+1|o3X`ETI#FScqC)8ejikXY2m0fz z=h)juR}ZG&B3@@QBTceQW+c`pc)@An*n8HrOD*q~B4XxklEJ2J9HZQ)WweBWM|NptGPo75WMA19iVk6taNlbv4J^DX^ zYb)M>lbJzNq7{d&nvlGBM{ML9*Bo?4@|0J&WoT=>?9p>HTY67yiM_J5v&~B!h40d% zv6f9<6V+*xWrcUGD#jf-ng7>Gu;|4P?HP+U{bpl7%I*Q1p0U%?)cCa4r(09&)At;U zo@dNyiL>9aK5Zng^=X^^?h_y5v%vDu0;yQ`V#`Adq+;32NR6sRkM^)2co5mJKE3bg z^!oJY`6y;ONtLxe-Tsc#&Gzj9Z~w<@nhf%vzxZ3iYBq0gJzQvf*_)>{#oJl@s98Jt z&%;EVHkEQXZB(0lhts!M&PEgeQG`>Cwzz+=o$GkC#r?1txi+cAd85&!TX1?0Kl*Pd zD1r0BEw&ESlY4Xj2NPNB5WNWbZ?nqqVJTZ^nFuzAV z=~|`A(%IRRTW#ydb z5EzIX^!uUFFZ%W9IDj%PoNaYlx_lEWXUk-bY!@fcMm}!_Pw&@F{f{{7hBOwzotO#-qC{rfPh-y{vfG1KN5^{%9{cv1XkQkNz>rP?DI&P zHz(0d?AKYcM&(6;xx>{+lQn-3T>2LGYAP(~JW#r~TR(0*6i{E_RD18Mpf7C@AF17V z7sB>zCub%EYUr+}m0Ku@a5Ucncgf#QW+@4BZX47 zShnjvVX)tn_9PX!C_|qV!p6&cBPUeV@rK-qebJ?I7mgXt%mFgGpl0$ipKBQ3Z80|0sx`u<#X= zug8y<cXykZ=m#N@@>eed9?aUdPptuPo-C0M)$nLi ze{8kSctmAftrR20CV(R&y*{OwKeLPT>@Vh3sirLhi^Bz|!`dp#(^Hk6c$rfyy@%n7 z$s9XdKh+f%1>~bI#fgGSE42Pt=Jrp2EDCAb+%CFnSz-!`_D|c$OSttg0@Btow7=ef z9Fa@1iMX|mugM_ECgQe+I=2D0l?rbQ_5TfGYTSC^Tgn;nD>tC-o~R!Z`9FE5j0N)I zGsO|u=0cg*Sr~kIEWr4)#lp0f(rXUkN%!ZuR+Z1`884e|r8r|itXR$%%q;L$7`)$B zKsV7QEvv1qOekwB!a;4-2u8dQ^hE0ySbC35L1y@3%Pw~+9GzTd1?Kx;tc*3C7xANz zZ?|MIrmBhzcsjUS0YvNp}Z^p8Z5bKZVL^91`hMy9sf>h$%#dNo=E zE@H6->I^ABXh<4rDc_As<U@j~R45(5!Qo;~WuBF}jxw{0 zYdJsjHCqKk4O*)H%$O2e>!F6y{d#zJ-u)^#3jKxK)V$s=YW_I#>beph)HqcuVcZb> zk0qw(wA8W~#_5-)L5aFh{+;1L{N_<=AM*@p>PM<-nGED)7R3jhp~1*p6rWin>cTZZ z_tk`DgVH3T^#pD0GeP_Ax9B+d% zSsG00TCxB9Cd^}-d9V%L=fgmQxy&jz`=FWtGBR#x(=XmHs1o}}8qTJ)RGES38iqRk zBK>KWH3fxcfI;W^OXt-7?Lxgrr8&;L2u!7Uw?du6(ywrQK~!6`8n=S(D?n3d+$(Re zYA~H9SS6;^n!ebFxsmWhCMfIYVzYmDV0g z0P`09T5~V|g&QT`Z*g0^kk)Xk!r#P?di4(Kw?33giU3QMCPV%Hma%>=;)#P`zeipw%gBwl~XmI+x zH_=>M-MULstc^P6VJB48OyPBwx@|Z$VVUJ!Q`AI(XEs^z=_b3qV9g@y5*l1)lcm9_ z$$<#=nXBJO;x4j&ZiT_cl4CdruqBwhD(1KZ9D=2AbmX>ha)UN^najwFflrGEwHhJ# zl8pIHU6;f)2hB0Zx_gobN zFL>n_lUJ7oCzRQHWb7i#<9SD_(OPPGw#6BSU;&oLZ}^vR-btjiNf0#5Bc)+mEQ?lc zDc*N}!yMRr+c{Lj1g?hEDkU#?TPm)ajB&@ZprYnA7Nf|-?LG&acBGu z97?foAXjP(SsdGzkf~LMw84H1JRu17$go@ei5m*^9N~TVksAnHxxDzN273c?2*Ku_ z31E48wes`GOSreX-)r>S0zI?VS3|r$>)iI$di5BEwnhY%i6E(cIrJAiG5+(v5y2S@_Ep_;@`hEN? z<9&di!H_YQ55vz^D|bT*KRra^;3v<)7=8-$41UxQuj6TlpLITdsHIfmW|me&qhnIV3w8g|4Mf1izU!A?L@RUK1FN^UHflRF_9!AAA?7&RA*tr@&ivugSG98=PFT zcObJ+Fv-x>cO$V5(TA}3>RqsD?Io7`yTB2CwQ8fmLzT+XBK@F-y8L_-RT=(~khSw` z&lE#e)2^z_79By=fjuI#nrOU@$@(FVVnmRS5J5f~8~NmnZ*XySJN|FwHvAPW$G3Ne zyj~i(BnQw&esp7d$9D++ft4ATb?>ktoY5=h4~*~nGNx74PhRv5t$XWNGqhg93$ve& z;$`cetURWFri-|>LV;FUbnYsC!p$FN?uYp`uh&|%yZ_wzz=t(bS$8C;ToLpc9l1R` z_h!9b@h)UGkU&~vOY>sM{-v?xz|sjxt}Ge(@iiAlSNxr~{Yz+D32zT9i6x6mCb0H} z3`-+I8wy>2_`&(5FvfxMXetr?vFw<#pGfaz?+!~}_r7cCyWUFDXkr>&jdQVrWHw6s zU!hAOkjIrgc14^N{UWXEiC_HbPUzC|uSm_c!wy{#Lx4EkpR_@543fT^fcp|o>56-qmoP};82JXdMmm{g_p zBZ4{)4(e3I?%d8pTp)DonX8ubFJ0@sYHWgYOR>_Eg1xHy-a_iZ*{Q6r-`l#~7FOR`avwr=8#Wn~A1a@iB9r ztn1ZHV-o)X9h_NE*V{&}b02SN5k4GS?3$fw5nR=rw)(@_77s12NEt#O{p6q*cg$(4 z%NfzuN!)5%SJ(!iAR+sx_uzr>>*luW`$X5YLHs*9LypYQ-|lJaN^ELkr}?kA#y+L? zB}!fJ_Hgt4esk-lwuYN^DM~DHj*&;G{)TeJawmHHRpkot-ddMybM!iPEFIyS z?q))L*Fn`E>tcCN4IjNC{KK8P+bxf%g9k_Qyx|9}hjT`p|IrXK`dz09;hP_OeeG>3 zyZvhbgL(8QoSaOIHqv8zF#R`kK)k=+V^Tl&YA5vtDHUp-QUD{mtvo8HHZ3(=aolL7 zd70Lc44rU2ioq~}C$qPLz3C6JkQH{U50_Z8o@(uU|1G zJcW&B_Z#Dj*C}Ncs!Rg+(a*6qHa=Nu+sXc(34EHa0Q*{d_ zWO;oxk#;v~a{faVgni6*Cy2zwjTD+zi$XZ*7Pz8eQBaPDGedm06E6(yShnZi={E}l)ru)r@14$X&&M#lnFWc_i zLk+s5bEnDI?G0k{@T~}RW%Ex++3$PGGSReop3yUVT}qjMmNLIul}`}i7)fha8`0O)_cu?(|EG4c$P(7?_S`c4g-;DYVkor}F*Wl{EMTH?L*Gp&a zE|vF|v@fU#rz@R8z>%x-Fl`4CG^E^Ou{20DK;OLcH(y*OreCp=P3DRezr$#fbcag3 zF$55mKj};>Z2qLx@+Z}~cTMJM(=WWo`e>Ol9tO$zF!m1~a8)#dEL-1gCkm&kIo7Jl zSIJ7M>3D@%?blT4T|*@u?fk-c*fuHan_hQ`(6v8NHH`g<2d{sX?_^_NADmUdykj5a z`I{VpvCqM_3|}dU?!fPfiSn#+if9y0zN#Ul(fb*Lm6 z>gjhy#40bL5sGAH6}P+;efG^*0&0k{pwb9Ep^AAI(ZJWTTpqyk@I;n}JvAN??*BU0 zhG0TV&H&cVf6vo|4*g_l8d<7K-)HI8PPj3=7hLU7O(Z&U#WfeHrL`D1o`{$IeS|8* z`DWk~9RpxP-ig%L(c2i3S`?tEMMOHDotB5K06Q&X%>D4Xi1&7`hRvV4I3qwltGuh^ z%LHq>jFcYR_?>6Z>%7UN-kJPih**SsZ~fh8CLJ;t2kc^})UB_FYPxp0zvq0Z?@kAj ztTq)2S*;l-SuK6ZxW3{M%=Qn7!=^(Y^+~%dl^%kjs1V3hl)Tsq*@*&ClX1S0S(z*6 zG2`BK$HKMY+$=MaLr1>ckE5}#)L&82aw;wYDJNtU=m<_n&(*i^P;0KrwVi1Ji>s)4-Tc!N3%d*T6^?8dFuT?ZF=^7nDq! zuJ3MO({<%Csmj`PJ?R*qT&b4`D>$yM@h-^`sXc@LyB^j=hEo|cXufNP24Q-Me{}iW zraq`q9Ao%~I)J55Eet=h&z$FWb}ED3QAp;UU3?5tKIH5u^#q@iV*DM@CY6y9AixaGa&&I7-SB+`TXzKtk1Y2EZjV7 zFJf@AoYI1J5YJlAvOes~BRH8chRuQB{yw!iK+B*Md{DW03l|s6qXkC`P532Lnj6e9 z#1$`yvRmj?fg$0PLaMBFzK;XW&~!@wM>wh+~U9BdI3zbK*O4?m(q9Y@=DEP^6+rf&|4c;DJf>`06`6+yA5fLnD?!xm>; z9i)hW;Eb&IbswJQDSqOMN25yUUt9X^*+g_%+i}DA`}Wg2Wg` zqs?`j0RGi;^+|O*|F;)*vvf^{`o6=ubfgL;oxljJ>GH3<&$p*{&yKWE(HpTA@hKU< zwN^>n)7#T=V)QA#cI5UAGpQZGQDSA)JDp>sNJ&u@edf}dgb|?14}#R2|UbF zXn|6s#X3K)W@zWcHP879ezjxXCYACVX(3{~M^#KCMtJ|hid|P$(Lo8-r}5{xqspiX2mtXQ=gcA-2XLP^MP3SK@EAr>0%0n2VnBySrzbH zh?l1Z(T7WhZdXl9bcFy?y4w4h9kH0>FY>?Q$Y@{-@V&hFO0|6@eeSi^&u?XXxFB>3 z3HDD1FQnI~X&%2yQ814#L5eOKNyXJ_wHRxVfYUG9ikfF{{2fjqkF`1i0|a_+-{WYq zgkMFIrKHeg#IkrwS^ALgB9L}?7Hz5_0@t_O{Jh|m7i~_^mi8yAAmKa0B&H81#5tiN zb|~E0$ueJ#a6fS7G&}y<=D)(YBv4?m0{Cl|6CHA`*bML=i*@?wSBo^t)@8Mb> zv+D?4$NlLQh4@QN%KrCfw?*Z~V2KTh_=|9@A+oW6wP;dEbrqFsj5I66TB4*TfZD*j zJ+uc8>v^befeJAU}e) zV}aX#|J#^#H`aeIN&__bQjni`8U^{MzYz+hAn#W!a?UU){%bYHoZt;<*;Y&zG42XTW&bX$NaSQ>W=t@$=aW@NV9!fz@JhO%OzX z(1~U8530;-H8x}&bXs?*GohXMHKy5zS36G@F^x1_mhLT2mcD{*whJLbH+&u4dn7H4 zm;G*-nq;~+JT$F)S9%*h*Q^vzPU+sw28>BSby+lbr+BWq~ zNq_So(1LvlLcBuc9|(sOY-?&-N#zn4_Ox66ohk)kG+Q zDdFqqFE$yw-}@Y=pBsR5H323=A8$iHpKZ@>yC6e9UwF5#pSSV8JMMv|r;^=pqptB8 zvU!O49*P@!>sy?p_EZmIU<)addaGrfldl*@9i_W(|LF~zRT zP5Svd``y2w25oH<`M|!D&FI|e!ofD-w<0;OI)JG;e)i7NQl~MB%x@z@S~fk;upt!D z_;%~?vVqX7DSJ=X2ibpGopOFc9{p+BtnNxVH#8tT9Xk97mk3Wo6Ic`)G|PlWT@NRr zDm#%-E@4_^@0a^RICSR-Sk2SFNHN1Tks^dO)RBMN*fGnV$x7k&?}X~D0bk+WDz_yu(yNC@n^4)j?}&RV(jZ$mrsR(+@`M;TvA2DTyQ zgtL|T@(IIG@^^e%V*NImI@aR;<_iRHfJ_n&_Bp}fK;84va>H2riP1HOeizBRN|C&+ zW1_~+DC-=*g}zO-hAUOR>c4^B6j zt~uRGm%uby6~^0a=CxE7;ys^iC=}lHi(CJLr^KMpBu4fN8`qeh?;xh2#-YW#$sr-%<)KpW9O{(i9VV1_iHxi=^5MiJX6@rw*0?tD=q|Buns z3@vfv=jJE<(>T^KPrtZ&^5^v#^ECg`;~gOjgUO?4MElPi1{ZXP!3WO>F!=1m-aT4< zcCb7A4fgBL!k@_0(cg83zfZ<>i@zThr!F3Hcnk38#aB4|AvQ7B)AZ+#r0MxIJ<#UN zo+|uZTj=9Y#!k%wAAe-=FUF%GF{qi(`}AMp)Bo@c`Uh`cbj91CqmB#afnxwTe)#jC ze;^In|1}oS>ZswiPt!BOTUle%ASa0G9~hFT4DwIi;=n!>w>c0pDtRF3c~}$|@2~D0 zr4@~6JVxMuJuk9nE_hHzLx(6@TL6izE$kc%Q?&aYh|KAqDp~dZD_EVFdCsZWd(iTB zb)X7+Keznr-mJ}9xsm5$P-Qc<;QN6^@901 z)rOhV00E~rFx8bg%*1~jq{eeuhf|C-tQx$$&O@^XPZ;%b=>~%*`MB}DV0^SJQ;hj- zTCaI(OVjEtBwf!1+S0y@vSPcO-ZN{dD_di+^}QBR8S8t+eT{TnWN~YxpR9BG$tAt? z$<0gk<(4Hzn_Aq9M&*7YbV$2fWa%xYu1#&l=kKCu%X%%7X!x2nm=3 zmo~OgG(>@&SR!=M=FwsmBJI#`g@h;Nh8B>sv*c+2po?1XsB3ta%>Tt3xqQkQI?bRr z&|1kNFJ;g>)pN9z3X8Xu8?ztZn`Wg9ddC0H`?)(9Q0p5F?Neq)t@G~*6FD0Z5zvm} zt8jA76aL_B*ussPy+Q3-g=Xp6M!BsW=i&U)RjJO%%RZI%PviKSNZ6^yOPnqR2|Jx? zxo@4l#Tk^qP$gK7CMK7N5iX)>_}jCwXmT4J^mFSU;pt^Rsw<7g8}fS84b$_Hng@;y z+=jX4#}+EU_W}Q1|AQ$nsIK`yXCFuBH^^+%NKuWLsd)+T5?F?+3{ln5L@htc$t4;3 zwM+_s|B)Cd^Ofdf@xq6?XZWUTWt^iHQ(>TRH@{eEJNGs$t<+Yh9Yy@LqC1|6e*SuN z#g5VOcMGCDzfcvN_}qcv5&_0y^a5FPxPMKbyVgEu+&>YGL=#ofXri)G1mq^#a@PY~ z?dJ9Y3Q>1sEOD=4WMX34-|{9V4*c7M=J&&M-`LAFv5l5bNbJRd1#=JanTs4Ou%lv! z_5S>koV%QVQM6@BRBjZktRq6S)*tb*iwc-mtiPdIoGL=zo$Ss_d?ku$@Dq2Z1Pp6{ zJmD#sf5t_D*n0W&wES?(q1{NYL4%J_Id|Yz4aY`>$z0bw>7MuNbotMWGlckM_MOn> z?{ftH-fF}~ssr)?c_1uC;F^nwbNxWRye<9@8Q|a$R6*S>)A`0JxNjZLziY5jPPgLw zMq6^865?%;Tk4+5>m1}Quqr+ee)c>=1s^Xp`gWEqsaRL_bNk1Keuu`AgPYC*ia=28=!0vWKk*z4ljq zS@tZo!h1n|;I(VA_LQ4c#>O|bsr-xq$(D7ARVbrWu&MkY?{;g)8j&heWjoniKR1>S z&obl%7RR${sM3sC%N=)6?CFy*Wqq8lPGc1sZLz1>+WNwkAEoliDNL=`y<@Ddm$Tzf z`vwp0+USV|>&PD(13v8`S+Eoi@kds%={&|Hvn*Kp#oO?fELhXiaGvNa%Yvm}ya#|| zXC+=X&Om7q{Kdbe?_s^efc3pM1!D%RVS?iPM{tbUn4$3LjxnDqNdFkKUU`#Lg;}xg zDQ;8?c0jSjHrFHGA-5G{knafdM^={(@8|MQlE?Rl-U4$~@;zJPs~{GZ^=PD$60o|h zsv*HGH@>TDLdcX~X)^SuBB*ZL4>Xzgi2HEKb@$vS2G47lm@FQxGeNy3jC?0N_gG+I zOm9s{Ue+^~m_`I#{pxN9cI&@b%e|(ESFCtDC&q+bL_;Sg`X4$marU7!vEAog5^CmT zG@)g^*Z&`mac$C%KI4M^`-yto+{Zsc{$HEW0GaTb#}zoaR3xe*6^RCzoKAFoK7-jG zD(ZldoOixsByPfskG=bw8jwu^W9hsMhByRH&Oe#ZBU6M_O5MJ@Bbc z^RMz|y`hqUAz3SW{ON9)z?QPncgI$?n~Bz?AzcS~`;UJ%O1IJd1CPtVWe=}be5V`f zp4L^pquRQc^JxvW2 zoWCJ_gMw4HiaxqZgbPAWA`Cj$Nd&X)rQmjw2uB0%{qhr&2tOlOIsPB#-65IqLY@d5 z#X8tGJlW)seG9$c{o?EkRx(pC)Y!K`VkPHaeRrdW z4N8(>yuHno40rQxw~}H1RFPnZW2&k{K#KpegI?2(P&g5x@LF&6Iwcf_AQZeKRMg1> zYyS|dYF9GhkK38zg}0kb81dUcCd{>ZcPA76{HkQaf2843GQq!}V7{#&bv_tKlL{jY z7_>olz0&s+*n1?yP3efQ zK?=0na`#!V##QHNQg}<3!-~sTeN|_w=i#LV- zCI;PmO3J`=sBddHNaNd$y`iHhtuJm;ozfQrT@h|f2#AQfvXyt>=kpog5~-~dWHNN* zTM)!$=Qy5krOko3F65dC&le6=ls!EE$@?Mu`W2G3fg0&5Lz4JvB>vA<0n;MqDU{`@ z<_HjYX8D#6;k-;XfaHOE#6QrTnEe_H=mTHVupmJD_u*#JUa^tSgy;4K6ofye6N*VL zX`nC3P(HW5c~LxScQP8a4t3ghh6Vo1Bkd>Z_qj%bFrj9TK9>f}tQ3BQpR&T~Tyaj!@)eEaT~rMEtG|P$xd@O}S!{U>)1>lO*<^V_ zMv!WTZc#oNTK^>oo{@k_^V>X-9xr>lr-mLcI4r1Es6acHsweP*Qyu07caZM|XK<`f zRoO2(sSNE;m8lMEnB6O|4+oWEBL_WvS6Pp`yb({fb}XPC-Af@0U$u0GL=?xV2IPG$ zj#H5$=P>2^{7kvvkuHz3e{}zq}9L(&n+j`C)AH+Hb*{RntkBcBSr@Wd4`^{1WDQRk3D;86&^Q zQ)!iPMzZ{u12B`%vs5|SltNyGf4p+u*~Q?d-8*j{{`=g2 z@bYMS_IhxR#CZ|QmH>4?~=6W=Ah&2F{Dii)Pc9XoD%#YVjvTK71LaXx5tTs*U`^WdDHV!VC z?R5P=$2h^0vYqz!JqKz7XUN5D!FO?nJcKS8`BsU_BEHX>7i*G{nf398@FV9#T^JLW zsqIax+elW8XtSR=9AtYx*)MH_t`)@EtnhyN9c%0>$I)1rpS^&AEf7F5)c7JkBj2-U z_b#>N1vzk`IN@16ySe($A48JIX-sZZ07n)TS52(Q>?vf z^?V=Ct(vfTn!4zUvF^R5v7bGFJY#UsA_NE#7j}E7^7$;c>68Uo`yWf){zpVJzG?G1 z;iP4WuW@83W>%hlV{~C`_f5XD(WK zW`xRnN6|{otJYtvzDMUl0a8Ks{{`-fAI;H1>x%6nwti9FG8WPLM}g|RyVik(q!yMh zdpGNOO=LKqfe@TYz@7U|Up0sKTj!)*H`a*$p5jKo22qZ@6Wc3Vw&CW=?mYz2u9r=# zg)P)7DvY(PwR5?rid@t27ti~trXcYbpVjX$OO&TNNium5V!s_|K^2L`NVmgt@3X=% z)!Et!+KT?M@mhDjr+$iaAgrGx=fV1zcy`3x75SD6kLv^jTuiR4mEIfgYQez=W19Gr z3TRy&C!5!D9vs1dp;`Q=Bf_&`0x=?X5O`c&e7;fRJtdkwT7xqn;tk&rR zG{@JOo7FBxUyB%qqEW@rOap{=b+F39seI?>7}a^#;u#i^SMq_~(Aro7a$|AT|! z8aEo|Mp~{_^HihXKrI2pE7Go2na$%=^or-CNy@Kk|4*5+ADy#jQ`S4|w|h2YFGRt# z__hCs=4bNL?&jyUKVyDQ!bLA$_SEOy&Ck#NlAfRM>G}W8{Cw=k|Fiiys_wr#KZkAp zpUlryRW?7rJhIFDocm0-^K*Xf|HJwDa`pek`8n*FV18cvA@g(6;IGK`QY`U7kT>+|3p)ip)!KpI^gsrhmRvc!|-{w0}N$^)7BhQDtfL1C#zW-p9|W4IJ!3sh!QLiH)w^p4OBP2NitLT@RyOpap+t$^5bT=?(3F zH|)v|W?rZ|?R+W=FbuRswyRg9rdE6RQB}O`oAy~d27uPVHe$x9%(#6PfA7Htgz8ih z*hRhj^{(Y*Tc3uJ7vo9`h8LddP6c*jQuu28(3qS8FqPTSH3sSayZ);=QYx69{&9;7J00 z5h(8N2xc}lng*gN;C*_Y<8V&pa28fHkT%|FOWrgCbm4W%qvJX-_gO6im+`ySrL9WI z3tss}q-i^dn<>&m7TE8unbJcRlTYg*8I5dZMZ~JYJ3*dLri&yt!|SG=xo5mi_VN2P zzF)n5*f)J9Dz$jvLH4JmDf`oWw?DN`Q>FzSSt%?~sq9aAz4W{9D5xcc!LcMDwIzk+ zSrQmLO9J4H#|WSHAVk`OVLTZsdylEHz5$A%T460-R`G$T)J#*Zeltz!6M<<;)thN* zf8R7^aLLdX?Kk$@KxK(g|MtAR4N71{6McGpE_SruK!wt_8%gQUJjSQ%YX&$`_KF3FKL8kShRJ-{Yg51Lph2i~~dZ@-B@T5_#|Zun*=H`8Paf9$%7s zCGU$cQgRRGy9W9{Z>46=Gu~vS8In)Lgh{U=-Y~p}Z{Z{Mf;c=+j-gU z$P_{m0ZW35e#L)8zCrxcb`YbLBnh%4sM0^AHqQz;+cU={g}^x%A?^qaQ8Xb@S;%Ri zZFgAwkZ|*-_WJ;f{zT-6DHi={0y1juI(wtIP+UEC6SGRQv5~6fI9JV`o$S4He^p|9 zrFVq17=Dc+$AT4G)>*K_Js8Y8qqJXYtET`cYqPYJG3W^(`wuURormf^!1?2tdMyza zcWN9MK65lnp9G6~&#VwHk}yb}1e;~RDc|u@yMG*E!HUw2??Nl%`;gf|u&5P5pk?fj z{=lHLKYF;m&D9RJdQx=R4w zz!yNYpkKTfl<6Y-Yrxw*ufdZ(pCKF$Ex0|9{g+zJCfHGyGDUx__bY0Omz|o1VCkMI z`fI#-KtS5@vacBsrgcW#ca-^y+JO~i?Bi;jiT$k|>V8V>L;iu2jP36T(3kv`=HDR6 zFAGHVghU>(OA4Ubx;_(#Gu8Yxd>OGjbnHiJ6J`-zhx+oMz5?&VGt|rc!;2*NgX5X- zM_@q2t9K&%kGE&{E+zgSz1SE3yO0v_!pvzWvKC}o{IA1%*F`kWnuS^4 z%~H5w6)D`X+Oo@iOZG!%!4}tbU`_)N_Y=6dpIV@Njh}B!S``#&#RT;Jkxzwh{TuIMiGl6# zE+UIv1cUo-9@k3~^>%Q1)Ac^Lwm#JobKCh^8|Juk!~c0Ee*TbCB@MS6?-u!7j^FebIYp@0(zPgsrWsSW|i$z)|x$`03!i75xyF^-%c_gvFIRxb{Q{n6K zEd6hBO83{2Oax8IMgXn(}ZIUOlXKTA8K)865f__uzQ_xIaPq z-=EU@-%+d3|MsKuwEkD`^gn&k+i;HK5R0w#M6V--LoBoGa;Nt(0os*^_c$3e@ z;NlRaO3AnR`6wy+UxdW;zY-p#|83%%f-`u^d468-s%I;CaU%PD7j|~hzUonXG$?`o zr%CGdIoI_^ikznLJW~48YFWb9Tl$cH1qRaJ^5~JIYL~#(jsia~c;$;oP5*ns|F8=D zTl(M4zW#T~9_W9`l>RqO4AJzzw?r5_>3?jwoBpRXL;qW3tvq(;5MR~7W>V+)-O(nz zT|8fyZnM-mc?U}0I(5Ej^?DL!=)V-kVb1etX&JG>hPCwT(Q3iLEsy$iW*80VpYJ~zVUf$OGS{dnhK?JXh3`Q#B=bQBLOqKC;-tAUpT%9TssEqrn zIunM8%!mP;T?hq8@y|&iTH162n2bi%2?}t%RY>?sPlE<0$rjcr83UcJ5$a1zqi6C~R*nho-&8yGqocZW! zwnZ=>ts$}bw^&0A0YIL<1!-})`kw#BAg4$g0JOJMfL#4}CW_>t_Us%3Qi^2lxxON) ziEDMY1rH`}Xr6x10JyvhPt=_vnLWKtk^EhSW2;q~`LNY$QrK#ZWtTez5;4)BJYRBP zPIVPq6}Z@_TA+NbpLZ?EW;RkJ+p}8g4osvK$;|dik$lqo82WTkyeeK{5*D9gI4sk1 zAR;S~eAIq+nv{|)iu)Xab)Req#m~6*}+A_6Ni$1cplfP zd3Q~f;?+yvNvl%(Z`I}GQl*^VE}x24#>+bXrWs)RSQWoS%%~bMp6KoUpb((u$5%Hn z>Zp$EI$?};SZL!<6qvuKv8wa=A;Do5X?ckmOs6_R4<x-m?> zXp!T2bQFDC2ks|Xv%>0Wr3}PT&R=%!$4o2K=PSMEe@D|eqj81&1$L}3rwjB)>D{-T zhiTW15L`P0_O2h*R66bQx=ZVi65#X;>kn#d z$hDg=sQr*-8kU`F@9b+I=Ryn`#+RmEHSH4jrAsg2O9kB(%Bdd$;Iyl*1)ykW0O&mi z4^lkd^=>W>7$ANYBQ`L&6Sb_kk;CPxJDTLz6dU{H+45hJhoi2_2yiC_NqV7>{WM` zW^ZuG(0;0E#42h^gpU1PTC;y;1)BZ-d@ZHf-*UM$d%PN{iCAb{q7ms)*PFX}PvHk! z1$rIh9V0K$FLbn!6h>ZT+2!tvIr>>*1%gG-EzUIz#w~C$@=7sq^27bS7(DvE_&)l+ zgO{qgnC1!2;3>D%&u0n*LtiNs*+V3FsN_KksH#wvR+J@yQ%o5Oe%HQXyS)!OJ-$Hw zto3?MaQ*aXk@~rXlzwitESrz2oPOrnN1PE~?Nu|>UV*EhYK`)Ow|;kl-^#}`;d`iD z27Cc|TQ_{94>L3>fJdlXzY?rY*4d5nzdS&;&N(f-)~_jVpR_yNGuQhoh>1E%A`7y+ z=fpdQ%?(Ky`2;O5Zls282ogl;jhY}zl^U>sRN{Yqg(BWPuleQAil)^I=%>v#i95U#cdC|GTcrc)`|KsjcKc&Jsnig?zLvV|?$d8Vy$Xku$Hhk5_|0 zd#DW_8hOB7>oI!S<57u`X!x`ZnpAMDL2EW6sl%tO^oE^eD%6yIP7PHxQTSesQj^<> zF_qZIPc*2y{timt5L8136y|PuzH=g$!-QA3THk&k7dXt`KKwkT$x!Rjhy<8)kH_gJ z0RM_6u~qWU+xL1GZ-h#uFeUO2|BXCOv1n23nxUw9w_o5mZMEqJqPeK{M_l{n_oaQN z$F%GnFMH?tF>Xbaa`_ziOD97r1DDUIf9-FYl`n%vT>Q&RcIK`1eT-o2{vnH6zX9X6S-E;y{kJPtZYeoElvV(lUnAolyP+ z7$|On3jete#)UaFgO-haCEWZtYb|(e$M1tRS0it1N{A8KgE*n=*^QR|8ywO~tJLo5 z`)W3!8P$NmR-`c17A_c*C+w<$JQwOYyN#|+EtOh<3Anj-+ZT~fFO^zF3_d$&Re8i; znJT%*XsT=_d!VwPA8m8EK+l~#w@P7g%9UnVVYiE=gXd;yT~g<}cig>>f$L&)&B)4s z*N?A1R%Ws80@~!5GGLpsr0czQX2!IBQ>V>uvkSCp{N#b1bMC;- z=$1R;GxUF4+)orbS!+3}V!b6(flp$->FmyI)7jtagZQ0hKRdvfyB1*>#~Q6O;Y3A_ z?DO$$y{;XB!*O55U1;mLm6segWw$Gte_w7su|CigdURe#_PT%d53*Opx8+@XR9O4V z@ohNW zhpDI-x$S6(ia4wl`t6&n4?Dh{-X(A=Q+5d^KP@zyc?S;9K`goYu=K-h=PfXFkA>5x z7Po`Oc4$56NBnH$J6)`HW7lc}DT4kz^s9Gz_XpU!<53NHDDf;!Je?-8|M^$7sXL?H z-+wOJk7*f5JPiwxaEAfgvbup^GNSD_c)vIB%st*q3_8Ouxzk|9otL z_XFPU)?l}9s=~lvcabWD@M^R7c&pL|yD|)R8~>s{b}`tA=@1FCWt;3<*t1nCxz}x@}BZQDvI!YQ5Fe6fe6V4N;@fOgnhhct5ib zW3nqXAn;KllO0BfHQp0?rwPdUlb@=6X0;0&V9IL8jKgZ@0(zbxDBo&V<&9Hu+3ZXq z=xU(5z!~V+72zA^LM7JY{q963K9`Bu;74twh|hM*`W7|V(R$?(pAO71XNgaN2TWXf z6RR+F$D437v2q;w5*$o@k>!{B@7-D1G*jQCw|*3RXZ4!A1{yy4usvknmo^G(Uuo%L z|Li<&@6F)XT_2r&DtDy4~js15Qsp+$e34aU!^3MB- zMs_0Pv6XEQE96}!5F2f7#PCKcCsS6ttO4ps=fdf9YOL;#Xcn=H>^L{iD8Eu=^zb{*_*)c#h9R8&H0+$K`V zZ!3W=q7qvEs^(a7&;#4U+;0Jg7Z#Z=oOPO~g9(95fcWNF3E9*THmzjB1u%e2vTM|j zDYEk&3NhnFM3Y8)gx8NMBf?ayeVQn9qb!g*G>5$pharFF_`T7V9p^#gC=kduZU9lh@WpKk8!4r#5QA>@(?H_f-`u^Iht`671gsyaFC!QET5Y} zs-l!Y)zpeZ#G(#x{}Uqsu?~b-QMp^aAzX$U1>;iN)S*05I#giU<)*c1V2YHdLk=wM zB`9z;WD_4yL#5>@zr{Z2;Oq#eUK$W2Yj;HmLiF2UOEQrzlF+<$Ap_p2xz$>&SL)ME zt3_0MM8b#7+A|U^SL8FtAK%p{;;S3QAE7e+0Tn{FP$T4GdP#;p_?ZsJKjn=Zq&#1grw^-aadXf%B5!&XyF3Zf<_tfA7F1OlVng41<;0>o)tKio#) zUEnAvq?a5$d+z2o1GkP~|XuT2!O^Ah1467&!(sZHK9V zgz%i-^AJnyhmVf=7{*4vF=LeNCy#}rj;l!ItUV)f;40G}XN~=5a4~XR$JEAk%(N{A zJYhJ1M*Jzc9my}|4X>8RR^c6Cgk9Rnr|k`y)Y7q8M3M2I{3hmRGry=Y^30ccMKB(oYCRzpOc-aH0(M890&v&@F z0;1Bb##h#do6C6C&BpBAH;>R<&^babPK*Q#gC7tXNR&TeAE&J|Rb2!WP6(D_Isy>i zQn!e>99ZvdyZj;a>Yq_07T|anFB@RZL|Zo_m_p>cdlsv_ss$PXIRLa&QW0K`WpA$# zB2ubpN?Ru?k9U}X2cMtL8t@T=Mq959HrG!xnCWQiKT5p|BAKat_>t*XN9NUDP1Bi) zwb0~r+_A<~$66xQ@v^C@GJ&%G=?~S!NyzQW8b|O;98dLQE;0qDbJd#noAFLELGf+? zxc-bT$s(2vRsK;(+~DO6NFgx*nh6rGHY6rPhY1W^MvT4}E}_O`X#Q$ypGfWTvi3IN z#t>Pp3o8ReR(oMLMh+JsE8HiN;8a@Uh9sO^-OFeVgYr7E3&)pcCV zmuE3>djBQZ7NY4+0kP!*BmM<&x-?VjoP%m{P-DZ7Ou2gOysE1KNAOo6dZvKmi@G9#GIKYr3svDC zdY(=!BLx?$tWRyAA}2iO8c@;7V_vxV+lCd_1@GpLB}+%L}B@wz49m=OB9}# zxG?9mmWwgR`Rs~R>`LnyV^^#r*Xuj5>rGZTkAn4&#Dz3GiI1%Y=WpJj4T(Td42?cm(rmKVZZTAW zU;G3v7eZdcHZGCb_qzq$&s$vDTEVQH-EV5s$-{=RW7gJr0zRtVWh4J-!TB_ab?3M~ z6@v%ar*Vp9&Qq3%&=oBkm(d*B!|Fytsh03}CsxG&*=u$moXt)t9yY9w8rOM)sL`03 zl-=&DrG|=@)fFwTN=rC#LSiQFYcmV_)qexkpkg@{UH-jGXVgs?d1(FqRDEOKh2N{+ zyS(wnzP07y`Kvo&Q*Yo6Y@HGxXrxsdANt4nzK6)Ei@F-~r#v@am%e}JX7Y+|=)`en zjJdptpC&Z#sLwBde6ZdokGkNYe5%?pxURQFChojq?7T~gPl~m87;MUU7vmt`hd+K{ zM|=y4RbZ$B9a5-DciU&!Fg3M2VZH9$H`dZgT#x=P30V@E^I6>uu>||@*3zJPZ_~Wx ze)InHAkFjdQ6?nvZIjF35ht{g(8O5FTiywua7$wI4x!3E^lvuuv^j6rjZaG<=R9ii ziA}Zo{(o@I7LOjp-FiDVP4UNNG#>ugMzYEc${SFQ8@7m&j*11gxH z4~}#&io?=4GpDYuk80=`L$-q5V6NaQ^76i^v!QeNJSCfVgqz(|lg|z^2{CAkB0rRC zu!a1585AyH(V9>tDkt!qc(t29rz7QXWNVpGAbwF5J*+)mcF!{D3J~w9rWwu3^UlB- zBPAv!e-1EKe74seYxP%W)zPGrd?_E0uU{y91p#BQzUyArW8BB=n$`Z%zAEE=X==Mc2*GHiDf6HeP-0Z;t-f4{$?J-$&@LJC6GKxp%nv17V)|Hx>Q$ zEuN<~U6*s!g>HPF*GOEK%glU|CyiA7-fooYb8Uo<RL4)Oj+v^X`A(Ie zsq!s61%vo#1oW$a3!7hKT-aVakGCKBwTIR%+MUM{GoiJeSwW)+!#4=Yrvn!qgY(%qqTSOo8?W z;$=UyBAES$Hf@nreoCGkx30@$Gr5)@y!E#P6{HCx8or_32aV?<-oBy`{Cg7;j3YL7Aq-X%*>k#UKBeK=!(y7i&~VV_ z+yXDpHMxAVYw`j$FHiz}DTAH|PNx(Q|73sb-#{N&6$yB$^(pj|`(YG?_UyEY$E~x- z`=1}PGsj4;Em@`(rcXj>=~`k}1iE_!zW?1!nXa)fG+#Ga?d)iiyC=}e^pmsB!(=Q? z?NRc5i!;6*ph?!Wxz&2G#F>PWeoBuF4T*D#Vu{nSv3}8WcHi>G(xc$mD?0bm?TQFB z*LgpT6-J+BRu$Xhmbxlrq&O^P-e^@#;hS!Uq=}YVK^(v!U~11;&y}4AN0YKmCWqep zc>f+|=&)NhUh*y-y@8`F_>d8SY8}P~@9cyArtRbKoV)E?W}L=wz~B;0-TpRcYFLYW zmT3Ih8?v9{U+-zKrH_Ma#3F`eUw%A^=U(F6JU04thr;=?H*tbp#JFFyWGYUuVgkW zl%eTgO>@GCam5IT&Pr#BINcW)rc&(zoU~wq!R(k|J#;~-^=pxd(EQ6*y6$k zdP0JFN~PRj-!-YAPcE?pL&{VBk`_y|kA@o;*ra4OgV#JzafY-Njig{ z8|}kP)SF}oU%wG8oU7mdr5FJfRILfz5^!cPo@OX~XY{)LXLQMWy&ZOiaP*4^OnfX6 z*vvEBue3nuo4u-;hrf*VKQ9K4mHev&<*n_d3X?&3MN>MR@8b8Q+pJJ4CwVxE$q>D2 znq{4<3tt-5-tC3x6+Yub^vwU9YxC36cf2y9k|eHb^pqD4O{BuTwu=F+eb)o276H|# z0Ws~Qg7lvCg`RMuhquN6-z4}%q=UecElmbM$HbLP(VL3)*Bdl}D_ z+jNw~=~(%-3<6lU%(w27x2X*cg(;R0y)lc&c>i76oi>-v_A^Ok7^L^R8ieQW409?- zFMeEC>4`%;G4$5SJ0nh#^fXPx7D!UHrN%v&=Os+Det{(x@q{IoShDju7%b4+_mqSY zcsffg3(}Q_svS)aj z#k^plGgwoG@dU0`wSgotqTrR@tTgte$udb^arp+GirniW%SLQRj2(Y!5Up3DX6Qz3 zNw6^m+T%NPAN?ra4X|#+XbTOU*C)1E{ir2lFhI)gALC8R$=MQwoGKn$=Werj1vm)r zBO=ny0?bkS%N5^uMG)V2aTwqCpEI}6QE%w5kUSL_hU7`Sgdus&yo-wTdnkJ3?Ob4K zFM_0nEh3$Y-bfclIPHoXAnQcVE%&glF|CjIV++aaNy>iKheS@TemsTu&WcvIv3WoJ zeixOiyF)dRAMJO1V|bpO-xr(@_B(k({y&}%7O9+_Qj0c^gtK*9RZ=Z_sMyEnJwKWF zyn99nD~it>v`FNV8J{;nK?dRZPkK*_&lBNy7oS%VYV67Qym~(i@^JYu_v;0*lt(PdyKBF6oSx(cvARHi3YHM(30K*j4bO~* z)45r;n4k;wO71gWV7bLq^tyaE&$=cFyE@!6Kd=}h84%rmO%Q3PK)6wNK{%g%w!x$> zvw=Zmtf>_vn+FQ2iK`%ZkKNBw&{&$)Q1ZunRX=`p3#&+NTaCJRXNkfxBH)?~nB@?y zv}Z)X)wqWPa9XF`s^=SMdidK?15o%|S@O4VL2UuQePi(39?2}>dfNFa&QCMxyH#2G z3wNvPe(S&9qwaMIe$%jbaO+lZzx7sI?O#!-&+a27R*x>?9d`F8oK=CcM{Y;C-&H}i z#J`mz_UweS>#TTN8)HsOkAJInt0;;1w-iK`MlcosR^{%riWUE6K-n4bZ~85Wf19C! z@bPa3n2djeqEqp2f(qi_D%=ER58~e{yKGSX%E!NbmWqE9&$x$j{Y11xeP?=<=Fddb zV#yVzy(^HTRcWR<59XaVns@}RiKj_V(rbcrGtd9I1l^!q!Kr&l(9hrs9|l+63?YBF z=Z?uq=}%M768^q*{iFTU?&IL(A8GUcku!U$O`EJkF^p0*QN}4xGftHTZy{oY5VK3| zdtm;cWC?-jg0l*JgqT$QS@;v;k&&}f;_=Kl;xS|6*Uygd;_-Kr5RX4SMBKaWPLX#~ zG!mb*+8t6SLa>vD&HiwM^&u%A1J8qwK)URn`(Bflw8B~(#A z(JAuA!E-jG=(=f2fyxP*phbv8PW^vD%Tu?#vSV}pt!L~QAy3S3xQKq2dHVgruix1? zK))?&5A>_2=r@b;kl$pBz6W$Fdfq@9w6xi0zYHa`Y$mPK8SXfkbp^mR+_DNlMb2f{ z$SMdnE+it$+A$2)6S^ump2f-;h6q+&-s)u_MK|S&DLH?AU+_|&q5IS^z5y=6@2=h<(!|jR&~8uTfqC+mv+kPsJNhs-|b@L zYC!U!7{_JKVgTse}zn zWkeffxA~Yn9yrE+_A3oWKR#sZgA4!`0Aj7&1^GrTqoTFebs_GgTnqUfL&7f|m<}GV z#25u{)Ek|r%;#gPc(kwaPBBACML3#i;2rew&u>g4&1SBIq zDd_AJ$%T`oq?hMDQd>BQpT`!SEMgX--1L!ZeZZ8nSBXbi!H67iRcf%Fx{5{(Z7*RZClU>+`ix*-6Zufj0W{%*C{Yd z;H`kWlN!aXk+IEze!F#lO+~c}J$ab=nHE!2=aw6OWtJyniY6E^cHaELX8OYq#UaJ; zo-MDxLX7;cZiWg_3{gN-?jn6aJ0>gaJ(<{`3SxsMS296W5%5#hQ1ad#Hq!i%9vQUG z9j2T*EXxOCsl-+_fT7&LQ?pf@r2{dCG}=sBF)V02;$0}-{T5B3^H@Q$MAZBpVBYd- zg{_|B`)YpKSSb8Vu@)t#YTIQryG9-JmjX=JdoW9f5hE>XN{SW+)uw1+Q5OMId+>)A z5+Q0Ti|5hBV)Wl%3J-(><|(powL9!`YJuc-q|;%K-Qz(3QD$>;;#YdUY_tj$?d19L z1sqlGz5P5>E>IVkJFB8Ew-ZF^4*j>W=7rCBQExxX8FZ92G+osH=rZ3_6(6$Ys$akX zTFOtdCHS3rP=;j9m;1B^QYZ)ySR2H(ZSHg$6y6VI@q;?K?8)1Oo@8uW+Mc8u*V_+B zUPL`e419R0H^DlIfY3dBHX>j$cGl28ecVqf(e#Vq@3WKae@-D+QWl=17>ON0eQZGC z*v4}T3A6Ijfg|4V6LYhp+hvgOnJFf`E^*{-@MiAkuP8`p4P;(!cl3NmU%&V)L&MnK z(xMx2vQQps%G+I4Z2xWQbQFKSZY9ySUd1Q^U8u-KJ$b|y`y&TXF$zda#V{8bx)yfy zLce0c$5MWjo-Dta6bt#yq=(3_W{RF)zN_KgTWRptd$(eb%~rr1rNQw3`o$PV(wxl2 zR*Ws%sN`_jMy1-a4L8H0{t~I^^-32rjnOY5s3TeY z+87=lydpS6ZmD01k<2o&F+X|!n80%}l=Ap49WpOS7mzk@-OWgAYmLoMgZp~3tksG^ zQ1PU;HcKL>?1`Mx6Cvfn<|R+-6}W0E)|1)hv}bAF6DEGkD;{qDl*1`TR5+ z`ry4IOy16B@k!ta6WuPcbP{z4B!=CcytD7jB1$t`i6@;|W=U3x?1`zQC!O(Ne$`fu zSi*NTqJ_eh7QE78Dns2~;1U)+nY3o<$&?Z{VNhAa%;8zJC-L)X!Ov&%^KQ5^L*~uf zM0mcgz?woaW8;HzADP^HEGq43jZ+HGgn>_ksn01q69IFw_;a!fUq)G(YZ?@ok2EMi z8f+UCxKBT~4xs~$DTR)rnzbm;rvGeyvT`YIp(hHap?u4*BG@*u)b@ddV!?U#LS+#U z1lY(EEH+tk`v>5)(Ntkg;KG^<(hGw07Sdp`c2xIV#{gEFBVEQ^J+R@@O99woo>HsO zS$ynOihieV+iJQ+rL}J1jvXt-I=Wg~Wi7)tQ=%qlrm9x)zA+M0=rn<3fB-dNq>Qfg zw*3d)`VX?Ai7vPqDSYK8HucTZ`-QwWNpzt>vyouCQJm6m?}(;LWlg5tZ^OQF`~HhH zUN~QEVO5nyToe0g`_D*NF3FAZ^nrGo%g2+ol<*8EXnZ+D4G z!liL&;L@mY%a8Fcjmp5Kk#cC1d56ZB(4momKw}^|G$3<)&RrZD8a0?sgBdzB)MB@3 zt7o@H{f=yC;)!fnV97vCGs!Me8svE}6f|*|VCBs)-fIpLFqch?9D5;NtFh)t($@o! zVzl)3ps7Ihch0l*jhP<>v<{h{Q<#tTQ6MjRk&F>yn(+E4u&GpPThu);&J#P+1+c2G zK=l=A*^rnf0mA^uP=MR_k)tCme(4yme5e;vKCEldx1LfyT7zf3J%hzCFw|!0kj?`m zi0?uXn6r)%fFMjuJ!#=71zYMaETB=6&d|lT%@YSfZYSC&l-f z6rWaz=VMl39+8j!fZ~fTo!)13{Z9yf%v;@47QW1JpFy+s8or3P+IWtQ?+bs(oS8nu zn-e$Rr1qFOk%KvrYxd{HA8~)GKmT29)2y6gn}xh+HV_)cHik#!wBZr*Y2ka4ZH`8R zlwPZ`f~qxyPy6#j%@;6dOHVVbFtKj;Z#{D7DrU?qowPkoMW#C8&xDs*ohg-Ml`Xc% zjeQur7u-vK@#`cIH8BjTEOYyjU_Xc_2}IZA+2-DE85TOUN=!Fpx-}xA;Xfne^wH^ zg}!NqsF4~XnV<JNJe?`?i%G6VxpGL_cMN` z_4HtnKhQh1RwhUKx%U57ZHdTQ?qYNOD95`JPt86VpCI?x7l>E(=GvZHtpCxEBkL%-)#db4In$6T z+AJF=8I|sg!@QCawUaZ|_CUUIfBEydH+^ZjwZ_Zm7A4|Co)4V$N3Hy!__fyLNAxJTSSvgwy1fZt;>@h3}qEM;ym z*3j-Ksf+&ym;6tu{lN4E80jZXUjKg4ufJ>-{?SjIp6Dm`gxX~YiqN;%@7}pw+K3;4 z?_(S16z*lud4+@QIlpkQJr@=Z;Teq&-1>tPvYyN*Z>Ui)V4?gQ!9kpE@}9x@MTbVX^>zik`8wHI0SLg4+MHLmb@l>hZ9uMjVz@Fppf)u|YPe6IT6DMp|L zVD>n~z97H)kKUqB?j=LU=px?1x#9x?%_kB0*)=$lKJt-neGbtq7tL=dImb$8nhQJy ziW1N?R}g-2cTi+Q$&o2Ii3oFp2h*Xi!Ch(XAY7oYfihsjqp_Y%9ndoO%j(D2>+aCA z)mRG_czX{0Vt=fnu9#G1NDwa2{(v+smTp`xfm*}>!{z>^Rr1)%_M1%+<4fp-HtL+c zN<@osU(0N~4FtD_f+VB}$@%0sa|~cIz`tzdi@7)LujvO>tV-FkZ1g3678cg4ukoW! z_?{O*b;#H_%Qo)b9EqUNi{$lF@SPMy7rbYJ=+}>XKeD8!$)XP%G?-o%u|MS6Y|f_$ z*8l55Qaj^8gwc1%k@O$NJ)a2V67`9gh}hQ|3|aFX>0<_<}P9 zWOO{pN=yd57!`NyEfV(j$0&g&>3En@YzjeUv`<0~%ca?94M7iKzV=}V_Od~r1KS4` z(`d`(ylaFto@3RNb&X{W7ffVJ5RQ<(9mFpjiL8As{`w2ZxScyWf=wa5nB=~Y`?t2y ztnm2bK>i0D);-r<4q=F{q}c}=&&bWW^B$mo#7BHKz0c|~GUcS947&{trMe%ZhgyO> z=3CBDzx8TKu>P^Sv_R1O@L#vv5A@vZ`ctWf!v^BlU_kGCoj?z6VK7Iat2p zL)`i!MbhEwiuv(08x?3ZxCqrpS>*6Ih`-7tSMwp9&$T>#wWZVM8IsyRlMkl6it$8$ z26pzQYMTxhoBvcQhWx0~ix=@!lO~jFTn%VW5K)XQCfx|P*yqf^<0f}HO0S3^K;Quf zqC@n^mO?$_S`k2|{&3%E;z_@)q6k4>$a&J@>-dL z^8SU~x%+3^H}#v{xO`0e;zVh5L!-zQ^SmCR*HMUf#!Y|2cl((D|-5P{TUTv#3@oV7V#rB-+wky1~B5= ze-a}GpN$tko~5B+_8U`bk<}pye7ASgF&;RT%X0t%{a9Jd(8@r4Y5f( znz#=9+&EK6<{pC;zGbmlJ7stLShk!R>J9-h9p|LV_gBrR@>{R=ZJijjHM3t`+Ik+~ z=6~R}1>Z!PV|lFaG5J3dkw0FGyszsmM*L)k8kVE6Hn!jv8tH~%+U>?bNpM#%DKnQ4 zDqHe|Wf>fZbML0|VnMtc&Fd&)W-Yd#-KP~~5ByZdRB!tadG0a2bbAiY_pN*gvL=k% z{ZOzBs#F0Om)Sg8{cP#wJxnqThlcE>G<>PxWx1cNBDuG+)%cP>o8Z59iI?ljq2h}5 zWK4arY>0Vgqrp89oIF%S8o4?fcut*Vv9)~yne*VnUASq4gY^hz}0 z7fs#S`v$kNY|;3?=qru{4b(T4lBLoTkqv*M6eLVmxDj5ZSiS+2;%>IgL)X}}_Ea=c z^2FZKHG>$$K&rXeuTcb{w*@LY;B0kXqYfuZNFvBi_MG_csVPpZ-V;vD<=2oCMPH-( zcE^knYstXl)eDlGdcct%ThHstj!|RB_vFv_ z?D&Z0@ow31>($+`q?N4!11(>8tnx;tXaA zTuR~i!nb)HhkLFBjQ)*ML4n`Y`0^nC0VT|ngd1s9ohrVsz=*2kq^K%b5=ZhAR|OMB z^5W1O!7|Q`HqJh@KKGHRKWM&t{$y5M4s`0E`Nxz(l7IguX1v^S7s{+Z+$KQ=qqH@@=5X$47%2DXJ)}%!6P0ELWb^E#L0l8t`q%uOa`sJHPWc>^nEu zvJahNEfdd89O8M-+7$BKz=d0xve2&!P<*m2z))AV{bafjm{fiwZ{7V9g~GM&PCWy~ zM`N*BSV=Bv_967Z>lf>4YqhtK*noT{o77TL#0hyJuxH7!vWxfepUHSLBm}yMMR9 z*qtxp4~C(kq<=+U-0m7K*`>cV&`kfz(Ke>9yO(S+-t5xr1%`hmuuNH_ zjmGNo(30d_xmR$3QCjB~D8)>?Z9MUb z7MR8Qhvn2{9c)tx>}vyOOx0ARPeVzg0Wvl<`N8?s`EH;=frR!~uu4NSHiLc=IZc-$ zL4Vx(O0bn8Ozq!rr%AY1tBlUd4O0f)>sGIX$^+K@UxKfN!przv1{*ieq zW6F+_{ZyB6Gx5&ph(gf5BF7prF|H?T(wd|eg8szw(i<<^FUyU&V*4CHkQJiShE4#$5GA z1Vf)FlLIa|1~w77@M(N-`+fJm>PP5|9q}x#WD$KrGC2n$v}${dc#1=YSu6)$$q|l!g%vD$ZY)?eC1H zG^jm3!cC1anbe@rU$$-1LWT{!7BDo%v0#BBHE`j8g|1AlVKQ3a8YZ4*?n-RC9F#+| zR8PUouUQf13IhYP#*B znksOpV%i<36BxWMd9hl8E@=g3n0CLvM3if$owd$PyXtV6&Ye0o)FgfR-n3KYk6z?8 z-^>2!+nU+8E^TcD-1V}ys(rM@S7)0ry(anh8o3w7LJ@Zmz1vVSz?x?2q~SMBomAQ# zb)v)}q7D&_NRe^(w`ugIX}Vc=)qFx}3NXXu$NZUQ-Br7R${$#F>YeNDKjgWMV^nf? zr<~TS0x^2hy3182Qztr`cC9qhl$f^gWiv0KX?NrtOuJiOGI{dCoeU3RN;y&%hwW-b zKm71d2K3%t9!RAL$mvP<>mWS(nKbI4zm2}wDP=x~s#T6HdL|-S&vs+hscP3SATaA% zl=_#i_t2nm`leFW=!qrK(v4Xs80jCB;~uf>LqGnF8X+a~@4HILtW|@9T~L3xWvf_D zQw6eTjAyw6#-_ORe)&-{tvAuf%&pzqYfEuHJsfYCvFzj*9h zxlZ7_0qzo~dv6LvlH$5z*>6>VTy_ce+d-d-;qJOf?J|a|ry;u2SDLEitkQ1P31W+k z{n0g+#q77L(0;Qv2liW&m6LA2RnfnhDk!kujPow`AIyGJ7I%$R)t&wJb#=gjN&9V* zVBx?TtRpc!F?$u>coR`~|D(le*x{(>zeQMjG~Q3xGn-6i_;6x)WcpLRXCQ@S6kpfG?|cE*x4*hPy=-yN*2g z=>n^4=&ygJ%;KlpcJcf~H32`JchlC?l-YilZkHmkCJXk$qLG5fsjB|exb$ys-e@$@ z8~DSipsZsuKK9l}Ud8!}+Uh^7|jze*V7#g*7d{@!#U7?$2ja-6u$a6VrrIiduSrZYwgEkt>^`!T8pHs$~=Gi=HrAb z?ITXkVuKCX_UKe<5;OY_LLv&!&yQ0r53UY+s(8$X5_i7JXTwuf=K0fayTb&l^QX^6 z&wNT?c7AkK`uWpuyS^TZkvNz0r>i)By1O8}>y_P~KV6l+%j|9U+$gIBfP*=BxY*wLA@oDK0dKMJ)hY5UWRUdAEcCW4F_B0N zlQNJ}809IE+M7uvIU+Z28m2f;lG`}1*j=$#_l#z-!`7DK_6G=AOxb>VON-CZ0i5ucmqeZ8b9_9G zno!#4V|BD=sV`Y%`1Ru{!*6GM&MWM%qT)Fh9_K?LHU0bn2a|hg6XU`ZVj?GgYMu@j zjK=U}9C;qpBwY%>1g@F7Y}YXI&26EvvvnV){@sMy*t5x~1r0zk^6Aq}xJ(Fr;b#f> zSqkLRB@v11TJi7dMvBeR1b>`OEb&WdSh#J?A4jIpYbaHLH3?fDK#kNwoP?wit$NAJ zJl{HwfT-}aXP{I$aX@bd|x|l^knMP<}i8$+|gNu2lE%m_HjgA*g(pDPwhX;^6Q^|gUsUX>_1E0RZ`qj zD4q9hThKUt&M-jqfQ&SoMKx6ubv5_cl!EpL&O%MuLYqSV1;B2q5x@k{~vj^Vu3uZp}%@gY$4JDse z1q77bEWhv3LT0AbJoR;&xHFX}smP78_66JVAk9+RsR+fWa6=6hJY@n^T6%ukUO10O zH{(?wm$F3|VG7CuP%I*NW}rNKcHItF54biR2t1eFNR2^S@JcUGdT+n2s}=1;T~QwQ ze0vuh=6qc&90ta9A~NB(;PBjbk3*xu3>+4%6b^HK_;Zg#1JEwi-~V8YXF_nu$yC}P zPW-Q}+k5dD^5a(odYZwULgPO_P8;U$c5ULosn$f9D2d2@i)i0U=iApNTF7W$<5M=q zPu=F*X8|3RQ!ZrMzYi^KYIM{&L>@nIC2Y5E&MIuPgpeKiuOl8PY!E z&Mx@7{6p|Z^M=zeSJ<_A12-JyhqsF66#x28+`dRY4g9vigJ05rah=X7n~ z!y|nAs>1PonK+0}Eb{UuwJ-9)PB^Qd`MWg1eGToKs&u#{ z;7@KbG03L@1*I9jvrQn>(#LziC ze0+*68~j=FlPRW2-C)_krXRF4A%mrv6SAfs$bO)ld?{?qHUqZPkrfO zu=?WWQ*=YguoT=Ps~~-uMqk`CHAhz+^%N-jHw{B6?Abxw@oL)!v(80*GrfH<_%KnX zE!nI+OC3yx63U(k?~nY~p`tpjppjwW`ltX4JN7uE!f>UgZ~4e|xpQwo{UGKX{%)UT z5wl*3L`QO{AUGvX)E4?gI&$c+*4KW7JtI>NPbmzajzFzTKheWI(C%4S1LJ=9Y!?YL za3I+wq0zS@Kg1b@{`a<*FD=4X#xyc|xkh2&jGMiDF#z%Jn#!*H`>$cb5_(+7zqfIl zY~Wv~Ew*K5S2Zp^-$z71P2vHulCco1BZ^mAEF@Mc;3?TGILUSU9W657(w;M#8HFxfZDv=f~&|-oMUhD_%i^>=f*R;;_u-@JpPhf z9^T=;TvG;9v+&FB3xDZccQ{;ktd*AJI^D|ZF4Slw6kh(io2vIro{L7~p68m?=0qg_ zBzW%1Hnn!>yss3dS&2#Uw=-yFlV2SbLZJ47j)4$4X!N^iy?>qZ8%mZ6IAbL>ZGBYL zxKHV!F<#6-`+Bx(Qj~nicdbGK+W(@1g$!f4a|}4ia?v!FyIxQM%SGLM^Q|| z=f>}>7RnxB#9{it&;T=nogTZ_ftcVKa6nv5AK*^j~bnQfxN?VX<~6A6`Mvkiog z`H=ycWt8h}Ev?~;N6d(;vcKWU^@+%oKQL?FtPnYRA$#(!x5NbafAuY%^KQp+tl@q* zMZ?I2UUbZSlRY|!|6lF)uo0O>&-))_*LTcfr2wO`lIHmOQc235K-q3zU+~VGRPcN& zI3hPFxLxg@p%}FUQk+6_kVutcaqAvNgy>C1gmn)Vmk5v%q3)TODNo=FF#6kS7zy|f z3@szgJly; zu|Y)yXA!E;-$q>R**ipB?N33-7Qb78c=PeQd-(O|;XT#p#r}|Y)}Lk1YU#Gxz6ViQ z;7Ycd=3d!qq9)mDn%^sVikhl;nw}AmmA{VDzDVd|zdmztYC1Z4Z>FOGbk@SdLi=^_ zJ6c~L{^F}_>{pAC)3%|8$z!~-K!v5=H|~~bO&*c8NY6lJ)2OSNWes)cQW33k_u`mT z;SsNtKYuBCB5Ny^Pl~OPvOVWIRzSGOvS3oYLNb5p79Fg^S-|gP>-(;w?Lx!wv@1pC z{&c1NvKzl}&)cg33N++$a8wC@B90~(3pCyqQgrO>f77v}h<9r!dEnHHPT5|ljR(*f zuaCO5dJj5gSlp~4pm!^Z3M?H=K;l5?NB-7e^A9dpiKGewJZwod5xMq!yrPf2`3f5f zX)njECHE2@JI%)tt8{Ub*F}4eSf>l;ca>DE)nSaBCL-*7wpvj`Z{*IMZ_CCwDykS? zYhrcyVhSQnspmskydry29Mx%_0jh<9<1=?~m7<5ww^>{?WZ4oP&Z35Hq%K|e!6qTe z$Egt-hhEM&3%xGh6zJt7n&jzb6JB^G>j}(v6Dx${PTN#8@TPFOX+klRq`r9l-*7&< zh%~77Tdtb*o`@8TMNG|n!{)vDpM~>Y`zflxbj?MA%ZPx{7gt1)_Eog`3ru7udv&40`f>k{&5 zB3s5&V%n03X?qecttTYw!TdGACZ_o=v8?J%Ob2N-L!_gIYXY&~(Gd$Qof##O(h)Nn z$&^iarnUwuj+>#=l#twirj^LVt-_n1t@;zTrrj>YpK^S;^uO1|`Aa833|f=0vyD>+ zA=kK#`)PcGXj^Z88bZ!{$Rk9ID}-e81R;5rM9|ukpgTQ5hzIlAD}(@n3n5KH1Zlx5 z-5emI(VqTLAI+o-EKSq`PmSXuOT)J0LkOV51OezB!G6aL0-#-OJZYD+kU{TF_@F>%!3^CjhM!6yi2WA}t zbW-O?MAkpW!W42!VD5tVr4(^PZ`PcRwfm&C?N2KsK9X(*c$?Fc{WUA3PJ+C8)rK}$ z>iRyQ%)yx{+x{z=M9k0#33_i|ZoM2jNDQr|;Px8I`o{S-lh7sSifC@= z9!Mwaq3o4%Y9`-2l-xuB8*lK>rHb;&x^vRjGStZ^^SDJNU8eiJU{Io4s6R zgnyzR;piGVOp5hh*VGYld+no=PGznltj!w*P# zvUY(t-=hVp(C1>3%r1}jE7zG5Ys;*Y+|g_P-8%E{&IH(EZ_Qr5=IavP+&bO`;75)D^ z-#X{4eZ284>*bzXy@9v6-rkdcz$Rb~M}BUZ&WUjqdXM4RQBhD|@_F z_7ukW)(HXOCf7X<8miI9ND5sULziKSqgbacdW_%TT^YVU1k>3?QMg)U=I(z$f?bQ7 z*pS;l5L#YxBv@HQHwgm}EHK(lLcG(L3N-WqJy1R3mQ zc%a<+wSJtLqRkh>h;V0tNl!ms_RVRVF#`^zkqssHjZ^JO zx3rl7uMCm^Ft@Z@qxYmsdZj3*g@&*{&Rw#^YX$X|_5robzD<^77Pn^*dkDSPTbf-U znrbDe?J#jA1gS)gNEzFj1GBaAS*;%MjmWW-IwYkQolOIa&i3tu6#a6C2+8=feYvdE z?f=vIt4rFi|Lm=nY%*m95|eVH_-Q?5YqTm&1FNK%m8X4`8kET z2Zvdt%8h#8KPVM^Q?&c}!+uyx$*;CYc`~dOmh>Jy+1*u2Q@aQA_NJO3a4A({DWxle zbQ@_7;gl3YeGT?kfRbiD2+rWirvX;FO;6Ixcp5IMDac-G!k2np!~@NM7$TGf{ZYgr zXRESGe{8X|Ujz$}Hm!0GJnH+IuTtn|0Z;l_WXUl8-N(7Ba1VxGg5T9XfvbILjncz| zv>Me=QZYuubC70cWe{f3KJ27c%dl%{wlWFW#^`YQ>MG^6D}_HlJ&rjSHbCX@6}lc= zf?$QnVOJ`LU8QNLIs{aev{I0Epx|yWqiR>~YtHUJeMs436UI&X!5O0`mzjOlZ+brh z!m~$@DIZsRJ{2AH3D(uopeMAhzF2P76_#u_gop}NCw$f$KG`RO~t!?oG05V=!dm2kYV zRHGOknoNv8mbR@J6X^f@ffCXxA@-UtB>w$uP`c+6s4=^J=hba5u9RLs*0@T%T3qoln_f4PHOwVQTC>aP3e4oThi`!f#9l6~H95jt_ir&y-Ja{swfXWYDqq z3A*gHUVExmNvO>n2gJEQeLL#!X1-W$)wM7$rO$PRj zdNhz;orc+*ld}J;e&kh)-KV<-Ee7wNJV9w~5my#-yjt#@J^5OOtzX6wInl&XL*GFv zv;AnUrz%^R^qP!2_bxwbOVlJrO*0Rp)?&%dj{V?#Nant9)C8_k3P){CkPgX5aFTNN zJLHpRX@6Xn1ag6;As<`Gaj&45Y4FevXk@Uug#1sfFXZT#P+qpH!&nPRugoGdcAU~t5{AGBBxjEW>VuqV{L#ysq8V136sj(t(EBW(!HB=%f ziHT;O8ZCi~;1&hxwjeD+G`-?FUf{EXR-qq86owbix#=Y>j$J)cQ(|gyY*DV}F&`2D zrA>;TT|6m1nWe{y;rPD|m<_v?#jMTgcm*BT_@?`rGATCMx2TIOfyp~2Zy#0PFnifR z&0eK(L-jCgA_#iI|7=Ws0~%8qaU*5%8Cp$<+S1}2;OX$lw{qvM<##)v*Kc%ZOThUv zwr;ce&yK$Oicydl!toUO-OusSyr&4ZKymwWCHQ((AL2PLtrfl|6boN09A`^eK!8Py zymc1q(XpRa7cbleTqO9)x;N}v;jYpL7^T#e=jf-%IBN0p@64boc@=I}RTulJ&a

  • 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

    _8+a~Vl)E7s|4l0L-HTI09HL8|-i`mK z8=Q2lGdwG&cizamvq#kLo;^A{cWm~co>_Nx$eu86WbPnE6}=M+Z5N|{-gV^Yp?O0` zj;M`)^pq%~Yn{-RDMRzJhmY<*C@U|E_H&t#HGEio`O$yG$U)it<#+w_n$q?z6NY75 z;V(yLj~bIbVqkXv;1~V#Xw#G)VZ?|{Sn6ku$s3tBJg0v{E4bs!pb?{oXOAA8b!T?{ zo)dDiYd5t*zqr~mzQj%}$PuvJGw)eegxO!G^Dve1opWkFsF)r7oa^oJoC7ZGwmpSz z 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 z�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%0D`iVU3phz+ixks|(Y*SH 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�-yl+*`jK0|8?|n?bs`TrwcyQG&~6{s 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 z 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

    PNd5ivWhUH|GK6Wp-(*+laFxp5WWwcDMW|@t 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 z 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