From 6ab5b2ebf9cccad5582cfa4e5b1a94c17895ebb5 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Mon, 22 Sep 2025 15:27:45 +0200 Subject: [PATCH 1/8] example with Entra as backend --- examples/deploy_nifi.yaml | 123 ++++++++++++++++ examples/entra_nifi.yaml | 296 ++++++++++++++++++++++++++++++++++++++ nix/sources.json | 6 +- 3 files changed, 422 insertions(+), 3 deletions(-) create mode 100644 examples/deploy_nifi.yaml create mode 100644 examples/entra_nifi.yaml diff --git a/examples/deploy_nifi.yaml b/examples/deploy_nifi.yaml new file mode 100644 index 00000000..a077b079 --- /dev/null +++ b/examples/deploy_nifi.yaml @@ -0,0 +1,123 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nifi-auth-config +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: custom-authorizer +data: + authorizers.xml: | + + + + file-user-group-provider + org.apache.nifi.authorization.FileUserGroupProvider + ./custom-authorizer/users.xml + admin + CN=generated certificate for pod + + + file-access-policy-provider + org.apache.nifi.authorization.FileAccessPolicyProvider + file-user-group-provider + ./custom-authorizer/authorizations.xml + admin + CN=generated certificate for pod + + + managed-authorizer + org.apache.nifi.authorization.StandardManagedAuthorizer + file-access-policy-provider + + +--- +apiVersion: authentication.stackable.tech/v1alpha1 +kind: AuthenticationClass +metadata: + name: simple-nifi-users +spec: + provider: + static: + userCredentialsSecret: + name: simple-nifi-admin-credentials +--- +apiVersion: v1 +kind: Secret +metadata: + name: simple-nifi-admin-credentials +stringData: + admin: adminadmin +--- +apiVersion: nifi.stackable.tech/v1alpha1 +kind: NifiCluster +metadata: + name: test-nifi +spec: + image: + custom: null + productVersion: "2.4.0" + pullPolicy: IfNotPresent + clusterConfig: + zookeeperConfigMapName: null + authentication: + - authenticationClass: simple-nifi-users + hostHeaderCheck: + allowAll: false + sensitiveProperties: + keySecret: nifi-sensitive-property-key + autoGenerate: true + extraVolumes: + - name: nifi-auth-config + persistentVolumeClaim: + claimName: nifi-auth-config + nodes: + roleConfig: + listenerClass: external-unstable + roleGroups: + default: + replicas: 2 + configOverrides: + nifi.properties: + nifi.web.https.sni.required: "false" + nifi.web.https.sni.host.check: "true" + nifi.authorizer.configuration.file: "/stackable/nifi/custom-authorizer/authorizers.xml" + nifi.security.user.authorizer: "managed-authorizer" + podOverrides: + spec: + initContainers: + - name: prep-custom-authorizers + image: oci.stackable.tech/sdp/nifi:2.4.0-stackable0.0.0-dev + args: + - | + echo Copying custom files... + cp /tmp/custom-authorizer/authorizers.xml /stackable/nifi/custom-authorizer/ + echo Templating custom authorizer file... + config-utils template /stackable/nifi/custom-authorizer/authorizers.xml + command: + - /bin/bash + - -c + - -euo + - pipefail + volumeMounts: + - name: custom-authorizer + mountPath: /tmp/custom-authorizer + - name: nifi-auth-config + mountPath: /stackable/nifi/custom-authorizer + containers: + - name: nifi + volumeMounts: + - name: nifi-auth-config + mountPath: /stackable/nifi/custom-authorizer + volumes: + - name: custom-authorizer + configMap: + name: custom-authorizer diff --git a/examples/entra_nifi.yaml b/examples/entra_nifi.yaml new file mode 100644 index 00000000..1d64956c --- /dev/null +++ b/examples/entra_nifi.yaml @@ -0,0 +1,296 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: custom-authorizer +data: + users.xml: | + + + + + + + + + authorizers.xml: | + + + + + file-user-group-provider + org.apache.nifi.authorization.FileUserGroupProvider + ./custom-authorizer/users.xml + CN=generated certificate for pod + + + + aad-user-group-provider + org.apache.nifi.authorization.azure.AzureGraphUserGroupProvider + 5 mins + ${env:OIDC_AUTHORITY_ENDPOINT} + ${env:OIDC_DIRECTORY_ID} + ${env:OIDC_CLIENT_ID} + ${env:OIDC_CLIENT_SECRET} + ${env:OIDC_GROUP_FILTER_PREFIX} + 100 + + + + composite-configurable-user-group-provider + org.apache.nifi.authorization.CompositeConfigurableUserGroupProvider + file-user-group-provider + aad-user-group-provider + + + + file-access-policy-provider + org.apache.nifi.authorization.FileAccessPolicyProvider + composite-configurable-user-group-provider + ./custom-authorizer/authorizations.xml + ${env:INITIAL_ADMIN} + CN=generated certificate for pod + + + + managed-authorizer + org.apache.nifi.authorization.StandardManagedAuthorizer + file-access-policy-provider + + + + + authorizations.xml: | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +--- +apiVersion: authentication.stackable.tech/v1alpha1 +kind: AuthenticationClass +metadata: + name: simple-nifi-users +spec: + provider: + static: + userCredentialsSecret: + name: simple-nifi-admin-credentials +--- +apiVersion: v1 +kind: Secret +metadata: + name: simple-nifi-admin-credentials +stringData: + admin: adminadmin + +# needs to be provided separately... +# --- +# apiVersion: v1 +# kind: Secret +# metadata: +# name: oidc-secret +# stringData: +# auth.endpoint: +# directory.id: +# client.id: +# client.secret: +# filter.prefix: +# initial.admin: +# discovery.url: + +--- +apiVersion: nifi.stackable.tech/v1alpha1 +kind: NifiCluster +metadata: + name: test-nifi +spec: + image: + custom: null + productVersion: 2.4.0 + pullPolicy: IfNotPresent + clusterConfig: + zookeeperConfigMapName: null + authentication: + - authenticationClass: simple-nifi-users + hostHeaderCheck: + allowAll: false + sensitiveProperties: + keySecret: nifi-sensitive-property-key + autoGenerate: true + nodes: + roleConfig: + listenerClass: external-unstable + roleGroups: + default: + replicas: 1 + configOverrides: + nifi.properties: + nifi.web.https.sni.required: "false" + nifi.web.https.sni.host.check: "false" + nifi.authorizer.configuration.file: "/stackable/nifi/custom-authorizer/authorizers.xml" + nifi.security.user.authorizer: "managed-authorizer" + nifi.security.user.oidc.discovery.url: "${env:OIDC_DISCOVERY_URL}" + nifi.security.user.oidc.connect.timeout: "5 secs" + nifi.security.user.oidc.read.timeout: "5 secs" + nifi.security.user.oidc.client.id: "${env:OIDC_CLIENT_ID}" + nifi.security.user.oidc.client.secret: "${env:OIDC_CLIENT_SECRET}" + nifi.security.user.oidc.additional.scopes: "profile" + nifi.security.user.oidc.claim.identifying.user: "upn" + # bootstrap.conf: + # java.arg.debug: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000 + podOverrides: + spec: + initContainers: + - name: prepare + env: + - name: OIDC_CLIENT_ID + valueFrom: + secretKeyRef: + name: oidc-secret + key: client.id + - name: OIDC_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: oidc-secret + key: client.secret + - name: OIDC_DISCOVERY_URL + valueFrom: + secretKeyRef: + name: oidc-secret + key: discovery.url + - name: prep-custom-authorizers + image: oci.stackable.tech/sdp/nifi:2.4.0-stackable0.0.0-dev + env: + - name: OIDC_AUTHORITY_ENDPOINT + valueFrom: + secretKeyRef: + name: oidc-secret + key: auth.endpoint + - name: OIDC_DIRECTORY_ID + valueFrom: + secretKeyRef: + name: oidc-secret + key: directory.id + - name: OIDC_CLIENT_ID + valueFrom: + secretKeyRef: + name: oidc-secret + key: client.id + - name: OIDC_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: oidc-secret + key: client.secret + - name: OIDC_GROUP_FILTER_PREFIX + valueFrom: + secretKeyRef: + name: oidc-secret + key: filter.prefix + - name: INITIAL_ADMIN + valueFrom: + secretKeyRef: + name: oidc-secret + key: initial.admin + - name: OIDC_DISCOVERY_URL + valueFrom: + secretKeyRef: + name: oidc-secret + key: discovery.url + args: + - | + echo Copying custom files... + cp /tmp/custom-authorizer/authorizers.xml /stackable/nifi/custom-authorizer/ + echo Templating custom authorizer file... + config-utils template /stackable/nifi/custom-authorizer/authorizers.xml + cp /tmp/custom-authorizer/authorizations.xml /stackable/nifi/custom-authorizer/ + cp /tmp/custom-authorizer/users.xml /stackable/nifi/custom-authorizer/ + command: + - /bin/bash + - -c + - -euo + - pipefail + volumeMounts: + - name: custom-authorizer + mountPath: /tmp/custom-authorizer + - name: nifi-auth-config + mountPath: /stackable/nifi/custom-authorizer + containers: + - name: nifi + volumeMounts: + - name: nifi-auth-config + mountPath: /stackable/nifi/custom-authorizer + volumes: + - name: custom-authorizer + configMap: + name: custom-authorizer + - name: nifi-auth-config + emptyDir: {} diff --git a/nix/sources.json b/nix/sources.json index 1b5af204..ef1fb4b1 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -29,10 +29,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b008d60392981ad674e04016d25619281550a9d", - "sha256": "1pxnwzrwcgasascapd6f0l8ricv6dgads3rgz2m45hyny80720cs", + "rev": "f720de59066162ee879adcc8c79e15c51fe6bfb4", + "sha256": "1w22rngzlclcqjz4zvibm654vah0ij8iv3rw2ssm51a16lbwbxls", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/9b008d60392981ad674e04016d25619281550a9d.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/f720de59066162ee879adcc8c79e15c51fe6bfb4.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } From f6b5d1820a8680636736cecc360ffee1c3772efe Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 4 Dec 2025 08:44:16 +0100 Subject: [PATCH 2/8] removed file-based example --- examples/deploy_nifi.yaml | 123 -------------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 examples/deploy_nifi.yaml diff --git a/examples/deploy_nifi.yaml b/examples/deploy_nifi.yaml deleted file mode 100644 index a077b079..00000000 --- a/examples/deploy_nifi.yaml +++ /dev/null @@ -1,123 +0,0 @@ ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nifi-auth-config -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 100Mi ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: custom-authorizer -data: - authorizers.xml: | - - - - file-user-group-provider - org.apache.nifi.authorization.FileUserGroupProvider - ./custom-authorizer/users.xml - admin - CN=generated certificate for pod - - - file-access-policy-provider - org.apache.nifi.authorization.FileAccessPolicyProvider - file-user-group-provider - ./custom-authorizer/authorizations.xml - admin - CN=generated certificate for pod - - - managed-authorizer - org.apache.nifi.authorization.StandardManagedAuthorizer - file-access-policy-provider - - ---- -apiVersion: authentication.stackable.tech/v1alpha1 -kind: AuthenticationClass -metadata: - name: simple-nifi-users -spec: - provider: - static: - userCredentialsSecret: - name: simple-nifi-admin-credentials ---- -apiVersion: v1 -kind: Secret -metadata: - name: simple-nifi-admin-credentials -stringData: - admin: adminadmin ---- -apiVersion: nifi.stackable.tech/v1alpha1 -kind: NifiCluster -metadata: - name: test-nifi -spec: - image: - custom: null - productVersion: "2.4.0" - pullPolicy: IfNotPresent - clusterConfig: - zookeeperConfigMapName: null - authentication: - - authenticationClass: simple-nifi-users - hostHeaderCheck: - allowAll: false - sensitiveProperties: - keySecret: nifi-sensitive-property-key - autoGenerate: true - extraVolumes: - - name: nifi-auth-config - persistentVolumeClaim: - claimName: nifi-auth-config - nodes: - roleConfig: - listenerClass: external-unstable - roleGroups: - default: - replicas: 2 - configOverrides: - nifi.properties: - nifi.web.https.sni.required: "false" - nifi.web.https.sni.host.check: "true" - nifi.authorizer.configuration.file: "/stackable/nifi/custom-authorizer/authorizers.xml" - nifi.security.user.authorizer: "managed-authorizer" - podOverrides: - spec: - initContainers: - - name: prep-custom-authorizers - image: oci.stackable.tech/sdp/nifi:2.4.0-stackable0.0.0-dev - args: - - | - echo Copying custom files... - cp /tmp/custom-authorizer/authorizers.xml /stackable/nifi/custom-authorizer/ - echo Templating custom authorizer file... - config-utils template /stackable/nifi/custom-authorizer/authorizers.xml - command: - - /bin/bash - - -c - - -euo - - pipefail - volumeMounts: - - name: custom-authorizer - mountPath: /tmp/custom-authorizer - - name: nifi-auth-config - mountPath: /stackable/nifi/custom-authorizer - containers: - - name: nifi - volumeMounts: - - name: nifi-auth-config - mountPath: /stackable/nifi/custom-authorizer - volumes: - - name: custom-authorizer - configMap: - name: custom-authorizer From 000c234751d17fd41f99cfef45c5fd50b93dab7d Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 4 Dec 2025 17:27:50 +0100 Subject: [PATCH 3/8] added readme --- examples/README-entra-example.md | 101 +++++++++++++++++++++++++++++++ examples/canvas.png | Bin 0 -> 43487 bytes examples/entra-redirect-uri.png | Bin 0 -> 96524 bytes examples/entra_nifi.yaml | 3 +- 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 examples/README-entra-example.md create mode 100644 examples/canvas.png create mode 100644 examples/entra-redirect-uri.png diff --git a/examples/README-entra-example.md b/examples/README-entra-example.md new file mode 100644 index 00000000..6d54f9e9 --- /dev/null +++ b/examples/README-entra-example.md @@ -0,0 +1,101 @@ +# Examples + +## Overview + +This note provides some explanatory information when running the EntraID example. + +## Cluster + +Create a new local cluster (e.g. with [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/) and the [stackablectl tool](https://github.com/stackabletech/stackablectl)). +This creates a cluster named `stackable-data-platform`. +Install the operators required by the example. + +```text +kind create cluster --name stackable-data-platform +stackablectl operator install commons secret listener nifi +``` + +## Prerequisites + +This example assumes that an EntraID backend is available and that an Application (in this example, Nifi-Entra-Test) has been configured with a web redirect URI. + +Create a dedicated namespace in which to run the example: + +```text +kubectl create namespace nifi +``` + +Apply a secret containing the following fields necessary for EntraID connectivity: + +```yaml +--- +apiVersion: v1 +kind: Secret +metadata: + name: oidc-secret +stringData: + auth.endpoint: https://login.microsoftonline.com + directory.id: + client.id: + client.secret: + filter.prefix: # e.g. Nifi-Entra + initial.admin: # an existing EntraID user + discovery.url: https://login.microsoftonline.com//v2.0/.well-known/openid-configuration +``` + +Apply the Nifi cluster resource: + +```text +kubectl apply -f examples/entra_nifi.yaml -n nifi +``` + +## Usage + +Once the cluster is running, you will need to make a note of the listener endpoint. +This can be found by inspecting the listener class: + +```text +kubectl get listeners/test-nifi-node -n nifi -o yaml | yq '[.status][0] | ("https://" + .ingressAddresses[0].address + ":" + .nodePorts.https)' +``` + +which yields e.g. + +```text +https://172.19.0.3:31131 +``` + +The web endpoint for app running against Entra needs to be updated with this endpoint as the prefix i.e. + +![EntraID Web URI](entra-redirect-uri.png) + +Paste this endpoint into the browser and you will be directed to the Azure portal login portal (to enter the credentials for the user designated as the intiial admin) and then redirected back to the Nifi UI. +The UI opens up on a writable canvas, in this case with the UUID `ea060c65-019a-1000-766b-0854b414d37e`: + +![Nifi canvas](canvas.png) + +The initial admin has immediate access as the static `authorizations.xml` file provided via the ConfigMap defined this: + +```xml + + + +``` + +and the `root` part of this has been updated with the actual root process group: + +```xml + + + +``` + +This requires that the following be set: + +```yaml +configOverrides: + nifi.properties: + ... + nifi.process.group.root.placeholder: "root" +``` + +so that it is clear which placeholder - if any - should be patched. diff --git a/examples/canvas.png b/examples/canvas.png new file mode 100644 index 0000000000000000000000000000000000000000..a008f3631ef2bcd388bb844807df22fd12874ac9 GIT binary patch literal 43487 zcmb5VWpEo?5G8EK%rP@l%*@Qp7&AMzV`h$-nVBuKV`gS%W@cvo^mg~Xt#7OL$EsAN zl63FP+@9{!r~94>Qc;j_yO)HETsw! ze0f2egaW@~JBevJso0u1xf(i{f|%RbTAR{28atSp+Bp8Qb-DuU;s*|*`e%@cgQ=mD zg{=*ds)e;Fh^Q?QBP)@psRt1=BQqNj69+dF8#gltk%*Y;${>e02nZ2~l&FxZTju$O zyPJyIYxj-qVzEUl#|GvPQ)dteC1h1QL3})WJPk;VdBbi9WMmyXnu6L0xNz886>L0F zab$e7A$;VO!XIcq5-(+DDJTCFBqPP^ z%-=S_p#6#d*IU>%-o+IZT$wM9kP0^y!$yMpUL$wQUZa^IWKvLAyncd~KY)HS3-DbB{Ax??QjS{6#AWa!l zq&C@(+jeTPYt?Diq1UnDpp1~lZD$a|T{&%pb27E2m$1T z4~S{`St2&gFwH_!tDgB79W4ntdvJIeH9UHfT-BZ(_b?T$kzLn3J-zPI-*fFTxQMNz z(8*vx!V|fg*iDFbw(+EOpOWisCwLw?R|bLUOl#J0*#oH_)hg886O%aBx>%@9F7aeiuP3Ts+#bHhs_Nn>lTi9*Z(pOHM{Raa#V(9&gmJ zkA~jVY$Np(+mM*J-=cuKl6OPsY2sV9*N)YwE=pqDhh#WHe%)#pzB>K@WyJ7vmwWq+ zD=O04Iap>|rmlWM+>+C(>ktGo|GmQ?;{C$jB_Hiu^3D4xeqtM_$uL;Ag`@K(A~|fL z1Eos{n98A9GT%~8in^@$n!D$3C0l{dMa{>rj4v}vhbhktENy{U{@QRZg|4Zu+u(#o zQ#i4Y!)x`|e#j(iu4)Bh?>>Mm0ndPWOf?@Z6vy>we8V}--)+d);aHl3ZQjti1JK2~ zn+1bc-KIYPv&fs6@S%2u!l|DVwx)>dmDL-p79gt;1iLFvTOR~KA7wpk0xbi_a!RHP za!9KfIKU`xkn1_ASx;86oeCcLeJE-}pb>-H2iSUFE`BmOIw*iqMy+^^(6&2+U;Fts zyOh}WC-!FiXU1fxd~}x6)y5>)S?vh7CcN<+x2rk6A%FKX=VJG9UfwA46nWC3wrcCjzj&JiGj%ZXpzG{TT^AJ9JY7S;(7V`g0=3jA z$*`(#TRwM*&KftoZxMOnI|HY8U9(Yf0R-%Exx*8(f`p0AzT$diUi#+PH#b^UiXw{} zXz;2ALK1`NsM|KldxRVST%UIf!Q97xP{_8&9vd*&wAaS!f4;$_3DB8ce$%Wi!L{0y zX{>wqJ6iq;S(fTUChA^&ux>a`3fQ(s2-rAty$spjf@wHgnW{LLnLDL}wce1l&Yd$lS6YJWBz}a>(GwS1(lQn2K zuGy4Y^PpVpxY?2gXnN1+^Y!uX;m2Fn?DUEj`{Movc4an_Z&Apqrfy10dZ{%YS~~FF z{O+T-))`D`4pnP6fR=-(yr4n5e-obcdo?bmBOr!US`Me+Ds}TDsTF9p&G|~uvc8l4 z%fEXr?uw<~6o$KCIb1p zZbxnqS(6e?YOcD8Y4fPy@fh(c8J;MupdJRESlpK#_vQ44H}*Qd_U)Cfi3z;;63WI2 z+ZqmapANKqs2oWbK9hpZ4&7c1Yf}}j-f*uD%`PIB96;%Id)zGuOz1rK%_;@I=Jy>BphTM-&erK}AJ$RR!u0 zCla5jd9|RS0(_7$;+E4O`Fj3fT(x5xg-Hs!-}5hZd>%sZ;eU>!h{Dxq zk0>g{iqH*MT|-ipE>b|ap;Ll%=~ZV7gc^-?dJNUp+v(M_ws?+bPVUi=HT;X&=+k^j zNC5SCIw_4SfC~)vjABIipi@#jhCj$)3SBlM+<`ra)DYm1f(s)Z$LD=#YS*b;4yrLK z$db8V@MgY{V+vQ-bxOj!^E|6esY$`eEM|^9lkVrN=`eD9Id}QgT=Djik#cu#&&LI{ z`ukwIxFC#7+JuHL_sn2S=lK;hIqgL6NYKrLqxa^61ktKAXybZ2K>?BgE6G&OV7LOHX+~LZ&~- zKRo%7%W?!p;BOQX-__&Vq7q(!EpMNcBQ9n&UR<| zyeW;NG!3^wz;2ZhUwf)oV*90tMO(rC?1EN2ysp#i2A<}rTGsr$VqyH^4K9vOS$jV1@HMdK)!(wD5&24w#eKX?@!2ch$NF z%?DtTCxY>@kG)}0uZu&>@3X9ET?B{AaYk6HA5Rbu*X7u*^6dJAi^c-waq*T?-=O92 z`*P@i@pI}jzOgY+5ESMaHy=URx|Rc({jUsq7{v(ZR~HC?vqMDqw7BSZym>gSFH6%S zOcZ?N!61>4>xC)Lk_yY+u(~X#U=#-(s|4V#pngko{Ky@;IiW|_LCMtLBj5a^264hd%n5t#Y3$0_La@>^(< zGjZMvs?~Sn@y7N|XU~FhRuM+X8tGg59N#0P-TrXou(PtJ$-Nvq(riGb_xZhfvOTXi z-Z^2l+{}fWL7uVT%CQG(<$~!n{Bt#0uqT5yWw&1i({V358X(|p@wIH2w4H>;14s+@ydcA?l z33#;<0;ZslC0U`Tmv7m6FKn%?Jz~5`=iYB@k5Tfr5`+|6CIXGYlt(?i=$!)I{tR|0 z3vkM9ZABFY(G^BBtMGU;#?2omfac z2Yr?Z=dB8(i*TNo=?aRQUfkx7#gW4G8#Lb)o`4ukI^%s@N37q=y<^o^LR^Lru2BmH zT+M#2i#CQ|FkqvJGS74GbnVBKBJGQ6gUbO>_6zMp&2O-_@_xn?wyx}mF%i8;mj$Tsd81i&+v>>?_>u=tUIa&pjGUEiIh@O7_17i&iFDqISTt()Rkr z&=CQh;VZ@1Fx3yEUNKS_7}(vtYTxdY`%P93mym#jATfBGBK_*C8OG;QnA}NZ$xUYb_|d)>5iAbNjQVjPuMO~`xXS`_C$=?Oeo_h7h zcj(Sm?ib{5A97DP($9(&%q#St_ypv5d?@Y)r@;F_J3Zb^XKlS<%zwe3T0%XBPw+Zl z9ImpF|LF1!U(wHCbl>H?dVO;@jAMvWUxSobto71`d@PX~_k0VJPh}VD3k5XQAWwfZ zho_|28m#qp*`M!cw7Y3MjYC-d1FAZQS^Oo~ZJh_0ALSLKEF zCzTboq!n}H;erwK^2@@(BQ$wLidWAbWFXR`_C2T3~-nJB@(k65<8$T?> zJO_;Q6dCpoI68@^u=~j8zJ#O~^&H^)u+IUNC9}unEmsWg?H_|SWz0+0`=oxfI;U%n z@6I%0)Eat(JxE`ha%w9}?G8BzXRrcZjE>wO*rUm>)6{Gw-wL-c-QXhihu3;<&DC#Y zuLe|NZ3DQuh#p({rPApv|-A?g-_$I{2r>Nq_A zY8+ER#bPPm6JF}~P{rOo93^rtyc@1o$mh(d@VHQ%97XSZ{H%N4*GH-;nSvTW3p{Dp zDj@J81`~daSK0|eED6U7jH{aRETaW_>Jkt8C$4_*Rn7gDQg9{!1*2T!B z80?Q#x0RP~k(F20p_NZ5Ur_pE?Q-SB$fVBRZXIIbpZ>G%<;e-MX-%$1Z))q46|_{e zcM_~?@5X6z9dp3+;1e^KeMoOSFTpZ+W8)J_?qZp%FeXdoEhVjwlB0%WZG7AA%kpPU zW_kx-Y~ct)jp)mFNBvE?g{$hDdtNt}IA~>DJJm(m1tO*I-U~9cVWoWf!T9ZLXT+K> z@m~<7bkq3jlYXQ_oT`_-##6>ezU+$Mp-U35**)N?e6)xiAw4k&iy6$1q@W}VC3P@h zSzMNA6Ut@~J4557*rPADrovF*h6GXvzP+r`o)srERa37_TG<}hzci>c8(iT$nw`{e zxW2_gq558$3|hF}uI>#rzuWs_f3&3ou*pY1F%ea=#B9d76Scbw6RzfD%+Hp%ghPti4nD;5#o!|`o)_|DMO-J-_QAQB zzW5^mt1g($%ahkI*%z>Y(Xdd%%&wCa-(; zIkUxX^*85P$LzLOn#1iM+;)?fc*u{S@Z310&lwmhq|eNjfVv~N4B(YRhqQPgAZH_Vb@4!7wzL)=TRUM zdFwCou}!QAy1J!1J7Fe)&!esLXF5Vh=Lu?QIW%vERzI3*9K@~)Q|niwXmZ|B-Ot;M zrhuMP@qB3Ujb!Aei-GgE(+moU2660xzcLh!l@1gZyr{380~wS+xBo`<>7!d>%2k_u zM4;DaZ*|vmG87chY$e74egLf7oRt3HU|~(4GZ!ff{ZSTbsC>C+0nDwO*JkI6R-2y| z!hpQ{klSc4q_z>KWR_p)UEn2VK02I98eKDc!r`)Il*V%`ynpvF z3A~HUY*aS<2#4v*3oE7U5&Y-Fv%eRnuRKjkKPHb!by^C|6=)Hzch{P0#N8agvMUhG zNzFAnF?%uzRJq3?HJK~^u3hljM1f*&gS=3?YcYO8J;#5T^5~%wq(!~#h@N<=me6nx z&61di{3Y=Ol2aIYFbFVH;(mhI%zWXpg$hQ^iy~&G&*l$!L)oUyXBEi#z|Gk$Um7c^ zm4QAL2y(xpd{r0-MCn!AwpTT>=)1VN9zAJqmQ!#<7%9X5>!G9_tuG=Ph*B$?+FFp! zYYTSbsD7uNR)Da?LN(fKKki<10QyA>wNz{HiQ`a7gn;jCX2<>J!;blQU_18yg7X8~ zzYEAX)HX(kYe1zXlW+DlcP{(7t-kHP)Wa!~#b9V~KH9ZEe=9be->VEH!zaR10N|9_b zrLXoakXW>(R$#~(F^Ed@rnxj7S)BTLGnGfHuVp)$nmqY)_&a^s(#Lxw(Zgp*iQWy$ zQlZN$v3t(O_>Hj{88K>$x%k}2(7XuXI!3#5w`ZZna>J7X)ObP(ZaI!2j zvd-U=-}XEL#xC+D0R^^3!hox@bBpO{Ea{T^FtJgrUNujua_+G>DPUakeY;6{xfW?9 z37g@Nx6pvBeGE=3aNtLGgDts}9{5apYmioi#KxC2zIAci6dJ}MYhxzhj%#XzS8>X`eb@OX@5U*ZM zyd2MMO;fUX0etb)fv>r=W6w#a8m-%{lilmnYfothJLiPd;j1aX&jc!Xp2qcyg_#F) z%2-g(uiZ=^ZxBu|5?ohGgy?xqF|{M4&-s(Yn)@p#_h2JLTiwYu{Y*hVFK#6ExY=ct zjV9aM1o9-$$ySE)E2)+p^6bj?td}dop?WJShEGrEF`K(3Kg01<>J7=h5SEJ1?X^)& zaYUG%Iol|#vPpV5Z5|6I8Cuu7>9e%u3GDW-dFJ5Cti8IAzx7AD((xn#duK;~bDy>7 zk8z>p!B)(W2ngxwIF6$U`}ZLe!Jg;l=RiZbsiG1WH!C7d`>hoicMmh%eP3DmM=JNP zpP>Fm5^k>Y1YM%>2ZwCwjfG6{_7{tBT+g-o!Q-;W&m$XSaZI)qplHkgHt(aUzEuk* zFz+U^@vTqudC!vX+s4f{=s_@VLLci?<9+P+fW4Ri2h^Eg&x~+>zVAxgRHR&1^Tdly zce8#?(tiiz%a$AjHEOxdK4w%Y#TYHgRF`gToeaSCo;+hgp@+|pk zD+-GI5e^^v&1=j*RSQcgiB^JU{z9CNbUol3qrzg-?7tj`>eV*DWdZ9*z}ers)J5vJ zhQoYD7cc6fUCOPiXut^DeaUKQX-SmXsAvhTCIgBYJsNEzdaRtzYNOMdWZ$-UyUCNW z^0DCY_*;K!Q0xy`rhSCKb|>=1@@AZ=Y?m#|f!rb-4fKUT7*CFye~nKHig&u{7BhjT zk>gxXDOUs%VOmddJ7<-Y{y?S3Syhf1Vi#M4*jL0+Pt%;|VTTfsSW|qPw=pSWMOCvM zO?jt>S3G;XLQP*w)WJ1L*)tvwU^sW^f%wb~qz~Hje){Vwe4u&C-|J_`hiS%?9UBPQ~QGY_x zh?3*?Piuxd&_!Ox2tk7v!h$7Q%6c> zP7^3k>hR~QT?lYlJpZyRR~D-o`c6(QmYCo3-JSejTyOvjhRne}OnI=jv_76rit-BB z#1VMhT+ngVCN^t6L+UxgNI>q4EjgnL8m4}1@M;PTV70eBfCJ+*M7S+-`tH(X5_L{~ z>OmJX^H9`&KtRLZs^bUiQPxk|cOulbVyGnt82{}#(LbwE=kib^HA-w>E}S#Ca=L9_ z@&t6tJmdSSNJgsfQ(oHBPBf?6T^o~xo%*ukV!CY2xN}uv;~h3&q_!dZnT-=D8spXGwX8@Oj< z$ogEz1qXoMx0yl!3yZfNi)wWKI4FYm?3F2BxtEdZmFLAJ{LMt#ORY~Pa)j#+rS>2U ztj0R8MdrtpoKA+{UZ~g2cAC}`(c5qaU*1e}6dnHgH_MP^CRJV@_Z@BSw;!_Sl0YVrOy-L;3n6qZLn3$~ z&K?r5y?U=F)6g*XbafqZ;>il1%^FrgcO~qYP}whQ)-(3^*CWa!mV8saM@7r|&!-=r zo0a$@GZ)=vj+s7oN)#-YVd5M%`lvX;k?ZP!H2VyMOlf6S!V&~|e6}8o0;um@82oV| zTTzE|Vhp!4RZ}a6-xBR3eXi9Asy^@HOLp7X;`7<7w+5cob~S4d|KxV ztI7(S$LfACc5j)&&6XA)qK##Yf~HPYGt#`IRlXKo*(zcG*!(fSdmZ1h^Y z)>lupR@dUKbmQ83$Mo0$NUG~+hN}@B*!f2NuL1;F63@&gOaiMlMjI%+NR|}d|9qS= zTRdK_Ji{E#ZxQIQ%M_fI!Cx#}yf=h^0}LpR-e^roFORAqpPG$2wHN~w>H=DvKDjT; zIZBlOX(2i2QmB)GXSou}WIyc*J%9^cTm55Hl>N|Z&j;_;7$$ME2BYXX0PIP&6Wr$Fw1HD8h8iE`xiN>$wv3lE zW(6c2?JqB>dHB{N=ULmEy=}BVn!!=wBCkC{pSG6;`?9<-$KAnJnsuE=5w_uWP-GJ8 za{p=pqK!;^zr2YwVp0eFT>;LnOkV!n+-ZM$w?=3!TDiwcdE|=`Rr~14OL4^uFW{+~ zDtGM9HrP%|B*U8TsnmHl-rtLUe(3r>^wfbX{D~J{PKX?_`o=?+-K%Ol$a=}UAXK3 zQOi?QETJi?uW0W%GwkWPmy#sfJ65V#0BGaUWAV>hy%2{~(H`?-o&O??A;#atrH5UCu8UO2Bad&3Hc`B0@KRJK?;&nZS*jTwX zv(L>eCosszy7e@-7Ssqs*yl|{(8FuYJd|bz-8;l=!YTN);YsV zadQLN(%gJ0Y73h;Nt26FoLBV655n=4;cOD9VN3tHIyqgNwf$?|zP*cHPPpf*xtKhb z7D1fJm%1&pO|mTnd6g>P$gZb}BCV`(G4Hi&NI9G(-mcOW^+U7G{!ktQ<5w|{GLc}X zvG$k=i>Djc&?^Gpi~(7*%~@&;-e>Bx1q95IT?!`i8Chiy!3`Y|97us{497~>S~qRv z){7Hf|JID6r~EBeV*RrRiH!d7gqF1)~=F9XHBDeVG_`TW*D_X};Mx028u*E0m} z^uRb1_$SW%sL>(Fxj}k`{o|y`blH(C@xxSSi{8#c`?d)C$pI_$CEuFITQ?TqH+L^;*n~5O8>YyLdRhh~9m~#x0~~>?M(@PVJmvRI z1ZZ3VYBybd_o!nnhHkcRDY15nh^UVOuz9=q;bc0-rUp}piEg+t+Ij2N4*f1JhPG^i z!Mu{V0-2esr-rbZVH z4!(W6Nq{F@j@e&crbklj6Y=(iR&b7oRJ(8jA?U-T&4AL-i(kETM_LD3;Jql?R!wryYm#Tl{kZ$k@!b_+9$n>;wj%WliD8gW6AW*6l0wkqkZDh_+DiSWgkZjv-eK) zp@hVR5pWN3ZNRi3zdzFD7PZ1{Z)zVL!Q3t~tq*t1z9pcw%_)mExdv`?uytF0b6q9O zM%!BEv|?w!qUr>23cf$$doXgq$F$KBe7XI!|MU0qQ}s@oXL#z zP}7^dfdh3|&NG_AWOa%z3AFz<7!W}xNc#F#(r$43pdR<~cSM$5pCvQ4GEfK=9K7(D zE%rv%yH6bQRDa;KW1wj!5MX1YNSjFh071^nGgo@O-0n?$;lgF%@l_}jYGT=|=3j4B zmmz^W%9l{Tv$IYwbD1?-WMc`h+yVk#ltRpoID_@1GBhahN3+RiSu#}YEtB3=z#0xi zH1#C{&;~rxS={X!2>y_Nn1O|OwKAVA6jGp~nn|~moc?;t*b(bS*)nM= z*RAtnsYT;@t96ABRgyr+<G6y6AQu+_ZK?nOWW(H=9s{eeA*! zqQ2imdk;L#1)sfv7PM=JSzLlh)o$n@Z&wkiFHNl)rv1@fjoLI8K-)BBkbLK&hiw`+ zoV2|uIfJxtRZ~hd?JklOIZzmKWKXnMZ~jHq7-D`mVvjp}&9vUd++hv{01;v;EEcuz z#hU7t`5b-VkR>Yu5Y`bv^F>1|djDZ3$z(2wWAIrW$Qjh>{~R~Y9A-Ga|IjL{6b%f1 zcCv#tbCBL`zDY|11gHp_!yfJav~{%ln9(SghHl;`&h9XF=m?Q!!B`+)uf2Dv!gk|k zuE7H1x|%F{e+c$SNX?jFyhl8gOPdXt>jLjWVTt3SDRVz6a$U(W?p4o_B$}f@*%=TN z!N*i+UUjfU(@vv^?$MAx@@t!IZ%T+h24(_1DHXTt9@O^FPb9Q`6E;n>?=0cvm+4c> zn`jlkf*sFpIl?~dIFJ*H8GEPVL%2oL2BR2!NvP?89&LqEFmt}r`PBW>dVfvdrK$OS zy(a(~4$;Qtr8ld4&?0n%#u9+RL zmZ;NShZ6kScSEU(Of`~$dLuXEM46(hz*v0Zyg)W^vGRTxgAd$rwEq+qk%Bb`4#xOTp}Bl%{qA_wU# zzGh4ccl8&_Z*=~r?eq*q(dp>Q5?R-v)GA>`D^Jhk{}VvEg=l=6Plgmc z9k>29f4Zn)8B{atwYUaSQr75U%JTqG_U$+)URGF^)gvH|IRH7K<)x<(hlV44xEga^ zJSYU25dY%A;eQ`3Ktucny)}C1qUXe6*N)4cQztPka-uOe8CMQ?`Qg+=e;j9Dk@3*x z<%%%=)u;Z-lDv6fK`8|fQuPzg13?GQ=pPa-P^N}~RYk?Au$ZQN$gKDIMM~0I)Bm3$ z)0*^~sz6G5>hgJQ=-+92+OU63-MfN(_kT!b|C{8m@Ex@5-+}(ysQ*8OE%^Vbu>HSI zBNH!JDNv_rYs33*h%f`CmLkNzcMUv;=$q<)UwSA*LDc?L^$K0XkO-pxyY%l~{?Px= z(*kWs;v{1w$u@N1feh&Ol3ozZ28zO)N&;4zikV00SFe;@Xpur9WD;~yThiD?as7H= z-mI*_pZNaNA7p}3Eif5h_IWYnvut z_@tsxUMC(%sp{yo&&Y-jNgmrj0jyM>w4nn}S)A|ncy!E|N5RA&-Kiu^`-)Nj&2@W#5lyB$urH8_t)oWp85^WP zyOZ(mX5)3hcc_Q89*6RhwaW}vObtg>GlQ0b9Xn#;wr&HTqy|{Tj>S{(>&y%_Kqv!& zXc_Rx?-L1wo~gIepX|+gx9xj7pBN5lzH7M-Zfib&7bPs0JJAs{6$gr5MI{136}4=B z&%Nc7_J&5lTX_$Zp`O1T<9B}WgVj+d5o^dEj0$8a*wF|unvW1X64=FhocyXUqeyN# zs$;n{RCz7utkUjDtl6>V;_VruRp;SWfml$-MFhYF=>&5NN~vo8uvFu@g2R88e;}i8 z3NdyM0*5G*4393X$d4!K@VhoZ@B@`5LxI64M@U!^wo@d6S%ogd|ILQHB*mGnA4x4J z^;`4@bJ{q~8rl)MJjMxQTDg`!vfwwc1QbPx`cDzeqeofir9fkMF*jZUVOC4!J!24V zw8C&lojo@p7^#`KALzHMT@g&$6(HbHrBYEbkG*>5SV&&uz8pT2HSg4{A{305$=cX) zDEmRyaGf*s7A$t00C$MFGqGZsR{4v-=u$EY}J1}V;pYq zWIVj828%cD_>HCZgk1Ub#)S`_tx~-^z_?CnO1Yf>*j>0_h!Ch-#tXFcSENE04FunF zYWd5RiLh9+g1_wtbk5U1Ai``yoS9WF7ehZg6Jk>6%&VD_;A}G{gSjT9+wmmB8K+MbYY#kQS1G5G<-`emJ! zGs;mzaNo&q?;>sjyJjtY{meC%g`#_mBy4$z0(3JtwZ-U->3%MLI$F(%8-JtohAq?b z346<*&4WBh*GW)IbvsE&GeffbF-;qiW!{v83_mBUgxfS4x8|BR*p|*3)!UzCi^A6~ z2J@$Ov=ge7;4C57)6l4<JTVC}H4HT4F&(>Fu-3 zs<05I#jvlG0}aLuF5#Uk!^A^k@1~1*!D66$68Q~NdwU83lvkOhWDoJ-rOm^^ba~d6 z=+*_JA~`jCO+@1Sj5*~YP@t$--_s|xwfXnEO#_-4Ytq8;Lj3Yc$-w~#r0vDz7T%5oX`&dP_=+K9c!6#~{qM#x#URGq` z?6$iQ*xTTi!^zXosZ*Di;nLDfV`Iglg@}?^NYIpV4n2qk&-3=>{P>ZlFH9@Nq?AcZ zEk+Xe9Ye>Fq{0PCIc#5*#;T3;cI4TMC-~FV{wh-H7kc+gX>4aGzP=gbd*hvwJ7sBs z#I+l5<`3GuvQ=r*hNMpW$|i$1**_lPeZoGI_P37vf#O4qZogoal)>73t+d09jc+t~ zNAm@!@@^$@7aLWcwIP#6mYDzA^AbgvjE{>&D*5wK7KoVMm?IP86e`0ku=CU)?*It2 z&>gT50TI`+MElIx!00}XL~mZFS4K60R;(xOn$nWK%tK)%EoRQGf=i(d?o7#yIh=rZ zK;Vc+o97{L;$awQg5BGJudv5t`E9VVAsyy2FB&hPJywGXNiQ2|@miTg$*Gi2^ckMY z!hmOfv$7)Hxwm&DK)Dy{*S#MH-*!tukDCP>qJFnno(7-R7AsJ^ki6jGf2HRY-x20( zp6QHF`1Kn^{`!@Vka_!3qs7zL6{b-9M~|A=W{U0K zi-?Z>lk!*z1fykr!tJS)$11cE;SN9k8m-7fYWO5G;A19=<=_5lTJI+v+k37T_KU`; ze@J9%S=tXfo|G|#^vpP#6bIlC>bPNP*odYIGxo0F_86MpX=wpUB z&T9dx_R&+{u~8ybNe)B}VM=e9fQhhJQGYV5SGmmE1-Pm6fnv;qk(-W~kOe5bnxA0< zZhtQui0ffZ9O4Ugp0;aLIl_M*+#edUZ za6_qLEhCo1o`h}dJ6ySE9IIh=-KC*# zsNs%6YMaxCuoNTibBxdLc1GibXlLd-z6i`dC2h@51L*5+VZp|@8g(>XPlfxcsz0F> zhvP;Hf!7hJ4WTpDA;@14kJDoYsq;?R>q3?1e0V-etI*OokdUO@{p9W-ZMMN&wUW8hfxPTm{#cSt)bFqEB2wJrO4lW(Nu@T%pn zOlI$`*|$LtRz|vrtm{S5-yH6tvrog4r!O|`820Xm#KvKmvs&2jU_qELY>B z&U(Ld?F4l>EnbagC^QTOKQ&%jeGs?1y&g{tXOsE0nVI!of zDY>SlG{9w}-mnlncR)hZm0I7g`AXhzm;X0$IW$^8gX;n@bAEmAG@%r2yK&nt$29LF zaz;l?z6LQi77t&_Efg|lsBgqbHvsK%`0qCR)a48xXxW_XVGpSZmx$!qT+SHj0^8hh zGk)r*G*_msWZ1-b93B_g+v7oPPgHUaueiD)Ehds2QE!BVVp@`rOSd2eqxT%ai_fVJC`t(Mh;iBnC|mi@t#&0q4R%*4Q&&pw zibsmSO}OHXc7+x8qeOpd2|tI<^mC+f8xOhNf)BoXZFc#37ML<&At0(+Bs4P~aCJ&{ z<#>B5hsofM#Li%{?dJYEmTZy0j?`n+}^Y16j5td2DV} zH!xaV!*vOe;s-J3l0(l-+N8))w5+3n{OK;#(NlV(p<(`4uO0)iHV zk|s6oyb?{?Cjgp)#nL z5RfAOP(=h&bYSP@{)Y)LZKxHJ4>o#JjzZ`6?noLk$;&^%R4iuY#zXh^dYqsyW|#>5 zsu$w)ndm#;b~4b+Qcx<2zh1tkV1SjMgK>}vknHF@IWT`%Y58R*QmH`T$|SNYV7~Ra zr!y=RjbntxOr4Y*FQR&b+G06c^y}1GF*<&Go(NjnbbOryJGmnz@`~SlX;EY4X{-8q z?;X%gTj}bAr3CR~8oMkE9)_Z=#2=UuM`@^QR`E){B?dx4<*}qr2SXT_{2(oE&^ko) z0eF;w6n)F+3lpXnp^j5lG9~7x&ivNlw_BSYUYr`r_$>+6{~OppEE#<@T3QL1QR}ve z*lv_|N>-VVD*k6Gg#_Lx@+j)8m?O-bn(Vog!g&KScINg6bzmmVAWIlI*0|!TA2s`@ zI4OlO=b-oJ<-~}Z7c8xUojv`wK}`)OV^<=9x>z%A*p-A=aL`^9T`=i41K=amAiZ7`j}W#V%&{3x%U*I+bgIH zCy>lBGI9Y$xQdYEl-~*PM1f_o(8vv$xCAp16#+1HeDz}iS5}BZ^?_ov#(~{IlKxz8 zH~!YS_iMv-O-=X_h=L(VBwY1R_5J-~!A$MGIVz={eQ!?|bH0^;Z!|N-2*PUjsBh8p z6OQH*O`be0(PZ%`8HlrG3TBFhSfa|ZEJ8ZK;QNOGQ!UT$;R(w;Pf#(!} zIqS)K@3cZXOr3!bwYv1otvLDGsYOm@jsz94`jnAV-c_}LgtQMA~2oiOqMhjTN5+GfiL6HM9C#)j1 zluS4&8-J^H4^`;hYFd8_gnUyrMhdQd8_waMN14cjcE8dRHH2!2B1o0B;xp8vX1TIT zAT8pcgp;war|he)*;Z9XJvaGkM%C4&DZ63xbUi3IOUSx(=l@3Z7d1(1MXkqWZ zzK@ZzW5-=u)))auym|)M{Ogi9f|eapdjLrVSjH%LPceR0tRA)j~7gl!p2M&9C5TVM26(jnp#irsYl z>4t!uEY&blM^f!3POP-D!S}V0_bU#p>lnkp5z9tg{&(fw#?C$ko}^#ZZCKVFZ%xvb zextmRuPEO{jG=k1DCnO*xf(lb(!*g$VN!578z1l=xhWjZ-rGW-FAz4hT>bm4E{%Fi zpzj4fQj8CzQTqJ7j*ON^fNcR7CFFgyGs&nJA^H>t+UnzZRu1-n;etNy%}#ny`PAiHB4(9?|d#q_;S&+f>R1oNFzlgWhS2 z(~$oM=4uaJ+U2vTXWw|}?)}=6@mssdD;XDbke$cAvXIQ&Tjb27KSzYRS%n5tWfRQA zX$GdogU*u)B{F7{S<%OiSAIfURl5~JRy6M?MC?XG9WF!7>P#bX>ZEA~;^aMu0nIY2 z;@rq6cuESAdXcq+iJY%z7FaRN9I2+P*?0%)Qw=>yu+XR&qGeq%Jv}CObQhd?1~x4{ zMLJ4;_WX;=tViZYuSaZmDhF0<$mpx+t+WVTy z8u0|zJQ!)dJ*6Y5IHtVRU6w$r$BmaVt(<}}t9I^c|qyLz%+0Y@<%R_2bv%tjmYggtH5#1x26+d>4cYxLYLuN{u#iQe| zCv$VU{b{5S=$E|(@JszMOzp1x?wOD~8=pTk^wRnCQo=YTJ?`gl%ue3T&&5(?Ij=Kg z(4p}C?QbHD-uGNDLPsoKzokNTo7KiAE zs;=g^-=4Da1{AkJizpK~RPy4^=!r$xw_KdOdf+$m25hvUN}*ru#MBLD0E@i%Y%J5O`Y>Ts}z@pHQ;)|f89SMFpBr#)iRt>H|Cn7^BL_pFLltPJ_pr{Tq`XxmXCo`&L-ka3yD{v`6J`$) zAM1~6E@elFdWCBV`vcR8vL(0R?M|YfMK|Bkifl|pV9q9XTBo-6H(r?JmA7)qikCk@ zcnei*ecl{A4piQcx0|M7K%KOux%m>8KY|pugrU01EkZ*>Ga5SU2iKBz6{L6uZwiZg z4JTxnu+Ifa1?P4zM?~bMo8D*vrc!;eta>TD8FsC{d@2C@|utQQX0Yg<*R+J-!~>bcj1# z%H7fQpl6Ut5WdzE1LO4XwVt-;&eQOb9LsJCZ4)C%Vf425+SrF@b#L%-)+i<+?cB-b zI$7`pkF{$}?$6mto?OE*Mus%*rn^NPy$`_$mMy_~g3Hx_UHb$l`6@02_V@yyTpN3Q z&8DGo1zRYPlE%dz|JM`VDr;$KY8I|xzs0F>Ux;1y=nC~E#{MNGN)>o6=sGf({oPuJ z!EO2Hr-$;m)QzG)e3 zi0f`w5TNL=zxdjV>-@xd@pFcBSYNT&e-tR%IC8mzd1JEDQp9UZf0zI(tg-USV@l=W zHK238uB>zt7gGnlU_1;|U|4QAnBeI!@J_t0)QG8VXU#x;t- ze(5vNz}H8t#v-TJtd?S@;u%S=1-}Nmfb{S)P`Sf=<5K>(MP)j&WFJkggFO|JlMTDX zfxlv{Ws{^k!vvmUF0!e9*EpDAs`9;~L+z9sXvY-9MN!0!>0bMMP%jr4%;f4 z!_mBMyf&Djex9l9k8KfzOnqNfNeO?24ri+J^XCWjz?gMLgO}WTxqy+9Lf@f8T)~kl z4ocR#cUx$)468bJjKJWj1iN8J6c{Z~b~-SGuS4*GL4^PxebLtSjY&wPJow0jb04Iw zod=%3L;dc4+ALSvfY)NKZFCSF5pWt;&;pgjbsWPi4tA|~=0E2&G&qVK$f>poo3ayi ze6R)IfPd&w&X8+3HxB3*(iFJ#Un(lq@kb`-O4!Azx-VwQX-ca`JwM{3=!QuCJfHSb zJFnEvPs&tMsr6I#n)}BTszH7w_yKD|KNu=LdCx#jbG4vda|L5Sr~G<4yhT4gwHU*P z`GofD9_2U0>;|xJ-!6GcU#xSoTV~kcQGP=V8KFy+wF#L#cw|UU+@f}fp!Jd+Kzq`9)V`G3Khk*)cb5iyy#kkCA>TyS(p|PXhZVrhZ zrplN;&^@Ki-@TTYD+Qt##-h}<>(HUxIOSGIy;d)p&z;DDu2>nM*-bB1Lp52)%Mq(3 z_W8O(klXVG(B0ArE_KYrV7Wbwt6tNYht2fOq=#8vyN`8M<_V+PSQgXeyNr1iKxcA= zFV-ZWbqgMV6b)j0x!GshCkyzTkC8=2m*_*-xDj;7I%#=qr>x{q|46QD<}`WrI7VZ; zUC(|ltn1rlHrPY&%p{=3VZ|-L&?nlm*ZYz89HzISsN#(Hrv}W~`zP5)|E^v3&1l8m z3*?Dffx6j>ir$Ym9ES-IwPu0G69`UbBz@2>cO)Ms)5v3tlREXnt#0)LI*0NlDm^F) z=gXN*L%f~0><~4_R$2SJtG&r+aN1Adn9As+M;I0pAM^c z58Yu*%io%B$p*es6bx9~IdjKD2V7O@#;Q9Gj>|2Awrm)=!*;i9aV@KTulSqs0aG&- zh=iEwgm|lV>@F+>e#8ieSmFZGbxFND69N{^8b0BC}TztQ5Owt1esn8X#u$`c$;SrSI zwU#W77gy#xNQ&a(oXe_kN?<$d8A@`P%W&NV=?O*8wT885ij&0fw=v!dcIKK`? zbUGiC#=n$6=Tt6&dLlnTPPD@g-I>od8EAx6ScZ%Si76eCRMq-I)IA|B8}WYqVi=3T z=lLeqNn07@)TZSoeqyow(nT^eNXNdh^6#d`?Fs%8M&`=>a~%MV-OrG2jgrx3nmjp^SZsX z?V!0G&8KZA&&|9UKaUT36}b)&oh*xMu&zNfmK_@yp$u@HTRd`cFd=TU6k=^!1i81H zEtJ7MUxXfBa4qv4=9f$JhovYuILZ9DXh-4W{Jrb}+2YH$X6t)z-CK9Z67xBx-0lI= z8q0;uOM7;5G{)s&aHot-&Fa9dr>SU_#DWW6&FX@A$fu0_DdbfrIES!^Sw2JbK^Af* z9g)CeTIA+Bhw*dnC5Ax>jrv#B)lag)S;n$;+we&zLy zAcTG4(3Z+zJK_WXGTd7#b17-|j2Q76Qf}{%9wV-n@c`kGy|o-&Sb=n)zuEpwQ;p&C zbwEBGTe5RvaM<(w`Semq(y{|Q)k$gSOOYQ^iikl(X-R8o(_7~ng&{hOf9h8?N5HU@ z=cdaYvLA;dlRUJ1o^yr?`XKcd$NDpmY&ET~xfK^x#wFgb#+Q!X36^o?6RM4TPD*kp zYi(wkdsP>p4vBr~(RVx#Hxw6>C962z7~^+H2-0BnQXFc2H_I00oYcZEu~8El2IY~q zpWn!tsdr28UeeC@d^9p82+cS#nH*Fo}Qj-qfe0^hh^!1vXyg* z*e;sS-Km!>?j~t3mOY*;D5Xg{n~_kg?uPVOLk$?tt|w=h%=)q@F)o)3r>RD#O3IN5 z@$uy24{Ey@H!5w-#uqIVkMvP$9};9F5-6!0>ebzt=8E%U04)qp8fGqA@k!<7G|I4f zJRE;Xb}q=!Q2I}va|l)O_~=zs%aX(ZV?r^P^f{E9on1szjh1TsWYP|w{ok-(w6SO} zKl;96bY~j>WhfI7`XKA@tb4j9zfb||o7r^6UeXlr&r`d&=|S`SMcw)R_Vt=Jy2<#T ztiF~wb*e*N?eTr^$qhgK8$-#r6ke2pO(7m&p}(#mK4&hL`~(!0$6&*|W|+^Ze-1NE z-Wcg--7xH zu_c@`0K;I9{{xWv7v|w$V`Cey#<7D$L_{o?9rU@}t(qo+I|}@UXQ4e7l|L;i-}*iW zDya$H(;&gYi3Q?^c=NkYKb(aaYMSIW*x3%_)|U4EE^NmAJBB6*i2e=N{ws9;FHzCo z#`pUFq$CIfoEngaijca(({x) z_fnzCqLkIFgmW%$LXfhsWR2ZVHDdivRLZhai<4QF z!QK@ko${0pPEq7>PYu#+i1Y*x0;aK0;jPpr<+zNj;VGJqbE-krsF&7h6K)CJy(Auu zZ+^-*ML%8q&{)fzKS5m4Kr-N$m2d)+!`mA%r$wfmesUl|y_yTcz;-Zgppns%o|9B8 z%0KwV6*Ej_EO^tObr4$tPMH@8*lC1D^`yr`^_AaP5wk|DKgCp)PXf!iV-w4HPNAxD zguxp4sb6eWRpxl_tXvaViG z5aQkW)$OBqF2C=YqW>AX=Xg&){fxP;rEh9Ed#Q!z*#wjS4k*;G+>9h1`7bJGAFjqH$jePGKr zpZe9gPfTHXy+JR>r&`NquG0=Bc+{^(zf9ibbCQ?{6?#BUM)6!&yj&BQjuibdm+d&L z?&Fl)aS9B2GX2sVTTN0;VvvFsioxl!scpRRGB>G-ey+Hy#JlitSiW-vhF8|4?Sh+dIV1$pBp-EH5)_RWHI!cV=U#h7-vO5_1K&nQJdG2^^PuCeAx6~-+ zL+DoAC-1)b<=Z25vGKlqK`c6Am>0{kVt$* zca^EuMus|gWB8S#mi=7h6#d6M1<&ws$9>H~LA}F5YIYj8BbjLrE^IHo&Vx1J)ylM- zu|nrL8qs4qzL=oFeI{e)VACL5cMP$OcI*u^`jN$4V^VjMXz-E!HlyzPhM-%`**uFM z=~L`ajDb(-wH->&h?El0xyL&CplnE1kO5DOL}Aao0xUkvwopLAR75+wi+cz<7K%z5 zI=VP=A#$rdVNy-&n=O3(&Z3;4kTcLseT}^2QaptQ&i~WT{2Fu$8J2IT>sOsgoA5bV zpoyx+ZGuJ|GsPajRivy)h4Ncot(N$RZ&&(Xp@tQE7~y|F4W}XOMSVoMhvQ$kJ%^es z>@QhVFAdrf^YhlX| ziH?vrhG)xfXfh@{V`&Oui8Ho`7z*5CPgX>Z=u~-jrilDaSSNE21qIvpCsuc{7MK0M z42f%d*Rp$o=oPePhl$aGs>W)U4IKz>pgeasQ3Fv*FJ#Q8T74>?ni}SIj4>8Xo34T* zS{dy-c)1;{UC9`x$gv_co?S#-)v3F%vV9-En}0ZNg=%JzeF%zs2KsA;B|(Ty0>H{pz;p4czw?z z!P|2!`jRKAwq;rIQ;6o5HW`~CM{N~;Hj2&?0rM%xc{hq{SGI2_fv`VhR{)!qb}BBk zvKE(+sV=YJHbO@nm-G@IbEbN76}9C_G;7nc)3mRH7E+TuhG^q|UzAj!J1^}NTS#s# zj*2+Lv?^4#-Y7KsNK)d&&yvisnwsOw&if1(VrDUOU$YXjy(+TkXOE;0FBV_XX>Kx3 znp&(DEmzX~A?OXR7SzJD!w=Ca^ck`IrRr7SBc)k1Gl#^u=qOe?mG5-8I^pJsrlT%kqORLcK%CH&*1x1h1TGGN3t9sfhxMP)J z89o6)T$jbCE{j{J_rOovU0Xe+)5h6O{X@k(K@fmtJ)^MH8P#|ddknTvq5kh|9@n8T z*Z#j?2>+7dUs8zIF~Wraswm^Zd)=pj6;K|i|0^@odI-DXrR~&VV&=84)-P;U?}{J2 z8HqjVehhqly}|(KLgGtvPvyZYzeolAx|~rnMjU_48JFw-LM^5S08~*;9#Y1Xnz((- zGw=`oO3?B7gIq#H^b8Up2D~5tfv%jQvFw$x=BKBGG5{B4Q(g4ANe)Y95`Ya7^2@*h%z<%Acyoz1D+UDLr z#G0bRrFhNO@cDuD-FJlFKMvS{{!b0!|8|uBI^i}0mOPB@CGoKqI331AI66k18JmQ+7 z_K@Z*L1GJsXaD5pvzAEBu#NZ|xsd&H|FCWjUZ45P(r$)^mu78RNBvQT*$aS*Y@8rDeCr)?{Ti)z#ODE1J-%y3MzzM{4A#hNSSpb9PN_yg6y#g?Fil~*t zlXCFVJaEb{B;`4gHO?@8G=q4t)IFD8V)kZi#(J9o3$pkwUUBrYVbi0}u|^F-h0UPX zNMgOdlrYe{uk))${YqZDo|=r0!^g7&@p zIKyXuu;^Wf>T^WTYsmvtIp;RBL#F z)M%c}so^2|Dyq%9ZFN&UHTHnjsm;9VhJ5X?2TuQYy&R&(3cIsuBb{~8Zk~T)c8>%y zuqpne;7E?b+AtlO_j?o1iTdzSbjplO!Vubu%_8zT%48OEnl#i#c6S)AC)+um27XrG{2QNw*kD|Bb? z6I(KJamoC8(1UTl>uWyjBsG%_s#$iI0%d`=tzJHeb}uj0vG>iRPzdh|`F5y!vo|G2 zf%7}LtXyFEoPPc{eEH6A@x6AI+=770u9v|@3u{-p*dL3(LWXI`+vbxrsnOO|jD9#y zD%PrOT1dOb=X+A7q%L+$Qe!*WYzpVVk4OF@6?gS}hH)@~tf!QZ21(Q@G;Xk^x@E)* z?n)+<-B+4Jm+S5pf?}@Z@~yC1CctWQ_!4(Db}Fh9&}-^Cq;R8$tmn@`FTMNh6O`uq zMuW=tdYrg5=H|!;`ZFQsW+HPnXE?gFrQMkB&G z=)kT!>%gkrJy`ehLPyo3Y=Ypx4Fxq<3??l@pB@-Gs7`DN>T#@Xd=vR%Q9yZ7d%i5v zW!86!!8L64&3xyXAa>e#wmnanFIlU!+bV2i@0aK>lGPqto>s`*o?2)+5jA{%JU2!* zFVd=eb_gwALv4x3JX~E}Z{3nlsIm>Wxu_a>xqIR7RH8DX9@u7lu=4?QvFldj8Kg0f z&1~Z|Y~i-QG5l0vP1{N%=#XN=>{n~<{;A1J40Er!$wX2r&a!ptiJ+MoeWI_o-PA?^ zKLgZrJx>i{Chp)_45~2+6Z2$+tzWdVr3y7Pr^mjtiiS>w%|pYwa``HkbORcAr5~Ez zW%0IE%oy|3YxhQVBwqDtOJGrSGnLe`3~O8g>vyM!$R2>0dmzY+=5e+kkQNi`VvslW z8tutn$x@ZEFAgTL#x(r*O&BGrbx&99mE!W&t%%SUPa4UXk4?PUoW8qJ>>S%E*dA%P z7VU!%M$!D|+l$q0(|+SB;uAl}0Gsm*dB{*G#WZ_}vcm7uj=fWgq;x%SE zFa=p)3FxfZjrax8Y#E3oGvBX~D;4URJZkj26E1wT48qdOH*eeR-xLu@}MJF5v zf3~HLt&*+>Y-eT%idO$Z^GTck$vH*Doq~#YCPFq6Pxn zJbJ}rpPWQ~+5Zfiwx%;1{F6BS8LCc{te$tKeiBNoE;NCba58B6%!vn>u&>rkCm}Q` zrS>u6rO6X|cIV?dG-3;i1B|JUx~cI1yO)JqyzW~P`=$XG>Z21e6YLnEwXQk!H7fqS>PTq+}!kAF0 zM%X1nXXV)US&5lyTpwaA+DvWqAd`jAF$M&AFS3&4llQJ!DImdYQ|g2w!fh(QARX`- zfcI<(V-hxIOFegqkh}CtU}@X?%us!yJwzm2mIvFKc(;w``F+?FVL`OGT&^8;u3N{D zDkyWr7&Y=USbP~?sVmIkR@*186XQ`|(gsYkK<>M(1SWoFW7C@JU19&AJ~95h*(#51 zHlt)q5XQFh%^YDG2LT>b9u1yevtQl5WorU^nIINMyYmv$4dyhfSI!LXp7-com}Yj4 zQXjRSVDMJanDX|0bX;b1`A z%X>7AWS}(FuMz}i_Fj+D25l`Yh)7O!Kz z0rdX+vmt3Bg;x3y zF#~Iyk)|1r^>9rS6160KB7~(j&R7?B9a~SDBTb*me zMREJ+6$*kkH{VDc-Lu1iVienEeAQ{I)xXGGH7i9bnLmV`cFZ1w+P~6=A z=CF4e{i3m|_}U$K(%#o=pT;}PXj)QYMg)R4e6&?blP(O(vNk=@08YskPTdzSgt&U> zx=oCk%|IsRFBC#Qg(DaM$_%T_ue~-Fy)|-U`5hL(1K?ou)P98aRM5(M0&6TW{0r&2 zFN#G(0Pw-i0t2@HLFoTy&Yq!RX)j2LP@h5F-K*lY)|xJ89H30$%auQO+s+*uKJ9wfF~3I~p2O&N=#ns_HQ5Sr$`s`mIW2(iX_6 zgkt<=7t`blXVLH-#f1s=;Z_pc!jfFs#49gI|3+rkMYJ$1vKBJQ3XkQp`$0DwtDVzg zyF1Y|8+(pUX#b^&dFg4Bb=HNq2asX| z)IM=L7c0c4Og?p7qj|g5cB_8OvHtAF0*V3XBk{h9=319#d1S)+Z1+=->43*=%0+5iytLXZ@Zb zR=ex5%_ZuhiJZgD7|KTnP1SnZev41Uk>_9DRnQ#qiZcBSkV!rBkTB{fGF<{@t>D50 zEt)xM%@~>Y99gm2BvkPW9}G$3KbjD%AAQ6c%4)Mdmru><{b6Gro4sL$gcpVTql5 zTZGp($SK=?b3Cw3pZf!S5o@>V#1E5!7G>UFaUu}={=FTfQ;?42WvkEb@gYUUSbCT( zxJ=L>mm#$bP7|WGfAD$ zrN$XrcrY`$KS}KOHl~YyFXfK{@+8|%K3|x+Wxh%8q2aTB_i}@NdbBSq1DY=pX9Kpl z(6;7AH@cw*^a?gRc;+uWd(Y;YK&I}2o3}8lr+1X>Mms!_jy}@Vf~_vSC9MqoBPEhs z=9An+&cX`|CxbeL(@9(WLNp*Lq*Rxzi7dx{UQEKBD-Z_kQWd1llXvm8-Co6TBKNZpV1(4AQVMR<<=%dsgV%WwQHl6uV+j2r; zm$zI?Zjj8Ea=S(7=;qdO6vn0tS|LVwd{S#38%4s@KlS+rfAwLE9p~f3d}Q*g2j+IU zp*9lz8;>b^Cl02Sc19E@ek`+JMqU-JC;!=Sp_%XEgC(4SbawTQw76jVd2EMM-2sDj zE!>KrFueIAXHSu-B?Gi`6A@o8WaNXM_Qf20@rrHM3-P}^DDvVDbab^2mf$>O%Smbu zT!X<)uAv*XW9v;BDbJR7b`v=Ynr|GrfhQ8x@mxPO=IC)%bzvA{#7| zyAC{&i4Q#?0Xr|i&cav&G_$LE1$;d;Rk*DsgmibL8hZn5e2oE^vp|;cvUDOH9(lN9 zCaE)LHV^#_cdwaKnCM*CdDj<`p|mqC|D$~l+Jq60hn2)xd9oLoMI6=}uRt46+or0` zGL+b=`}4XOV?A_(@iCjn?x<#O0`2Mb70!wQSR$Dj9EuVp+0692@o4p&_6ya(>3|Bx zN+omWQq_Eui@bEuK2_jYb7NzTe+>eUMQ|$zE`}BIIzrHW}J};%~SV; zcj*V1>rwi9R8c~^uUq-H2int-v8~fj#AC%(V$!+Sl*Y(PE(=&`+F?HLZ7%nn*OY(T z(jq_{)DD}rY&R{cb$U=sjhXF%CR@GrdX|x?uC+mE^rO#FbzWDJW&b?TSX2P;Tjiy z+?z3Vgcy0PmQr&GA7x@C#N_AS?ZDyU<}}hMt8BW+4D(ceQHcz^j6l-1d&^oxa{bP& zHnh~7lw~gH<=G9Z2j)menUZX#!OH{ON$%X@I&*r;(5U%%k=6oaC4~*__BT$52rD7%G;r zjZ$s8)yRwUKW3}L)vGHpn#Zd_w7=95Gz-PQY*QMeYR{WmXH8gXd){ku$|8QW)i-tf z*ks_C>T;{w zLrHV$qz94o>WCf|3A?YmbMc-3<#(3W3%G=;*RsQ6H7!Lze$9Rsl;*VhG&QS5y`sHV zJ5qqs&P=;XZa%Z9)VwF6QVFSJ_dS)uH*kP;%9y^ye133P#(SnXu##vO!vnZ{`)UEk zXy~sTOVrGI+Dddh_}F>0MK2NTdLhBaVvyUd26LB*TP|dS^;&ap7NKyboTBv3hHs@x z+PrS^v=j5FtvhFvFWH`lrb!NHw<{<{Oe`0PuSA=aCR|QI482YIs>PQ;Itid6Il#KoM7zEvPpe{e9yXV+!{X`1 znk~-MhELkaLJYh2qX;p-+Hd@i0rSSox0x}=_}$Dy?X4_ zli`HzAR&+oZmnAh3g`V*mS~3dDgi&Y4{HP$KQk}~| zja?3|Jtwz(yC0J|hzU5CXPXYmY>gsGfN}OHEnXqPZ+08UP}2n$_0v3og3{i3+rDCY z3wdJn^3myWQC_x!pSt8)8^^LZX@9u?6sBI!!{i4Cky$r*IY1qpD*9}Svj-eUBjQOWjwcRBaFox`>NX|x<4ip%t8ZcWYS)!8>RlEzC}sijQvmB`FivrR8$-}2iXqm+uu-JdQuKi(1^r}> zR)xA7ocUDSGy7TXh+;(ed+ns3U?=WlC2+&_38S3R+&c)1NbRJC=TT`w@)bvteb!$z z1veWFP|dmdK}N-XrUsAYkA-{PSnX%7Rr9N9Iql2)ZowVJDL>`S+c0JNcYNX36$G9c z{TA)NePQ}}rrXa_wNhYf5>nnuI@BUK4%SPuYi1{=({{QCOoDW#xi zke@dry|vG;fb%pTlDPXRQlufbzG>de%M(#UZd0?K{_Xzen6BfAp50>E6Tp-)5$s#Vl>JX9vzO?0S?du^5Hp~6N+XXi-ImO)ncJ2L5; zx(A3}S$_^&DxE|omgt@COhM$N1{^t)HYC|GnSiSe)jL4&#<*N^$ZGQkbM{7$*?hAR zlChs7{lR52G$(Seii+nGWoeedeJ68;RUs`&pK!dap%v&Ne(#K^&&6r}`J&6yv8Qod zZq0O})ZSK$kA35G7*BJ0)E9nuIzE|K^D3rK;|(WYx^HS?CRNlev*4HJbNPJF_`D{K z-{&+QCi698$enTAb(+4&aE{{vb~7n==PfKSeU7>sP4y-BUgVYBTrS$vOUgr#>6gqm z-N9{YpPRt*=DBfxL3@wpX6UNg+e5(e>|<3_RsJehab$jQzVLaH1POZj#+i{I_Nm(q z?tX_xuIl->xaaK2ePfbo-|9Ku|3kuHWlM94A$k6)=L(gY}l$mx%w(m%j{?z!c&d#{CDxM;%HN)WYYX7?iSO^md1%fF&PIQ4#9SojcOcpFfAR>8h6Px<^S1 zuf&7Ye*f2)IUxJ0)zh}PnBAq(I4Q_8F6&yO^j@ZV77ZvfqZ6AxQkz;JO;sc&Z_z>qxX( z%zvnB$n&MdsGaTJIBPO>Qg?ZK(l4jxnVNcnu*UDe+m6WAvk;#vov6(Gu3memYH_Ha z00IQRbLSIx$sl)fE%TF;9UsEBW&*jf-uRC_;*n3AcW{1>_5)I{CPakV>D8)ytAive zUtjXyAG?*E`8S_Ly#Ku!TeBDb+sTyL8iRD6sejD{kOg|?`E#bnh1q{jRnT9Dsm5N- zahLxiz82u;?t@YHX(;)Y7(ZBOPwSmW)4?YB`L~c)*tCyC2UiyL{*R zd%ELm-=Eg&3n5pP1lmsI&mdyG8ZzB*Vv^>i`qJsGHIC{eUh$pV({66BI3~JYGe)r% zf0N0uW;zyYey@2;PwVcR@#Tuufy-c{%MG?s6IlzP(&PhGDo01uT+yra_5i@?$9tCz_-V2R~LpZ#U8{02X)77yPD?EJ6H?%tC0zU%TrLdU{<<7lDNh{f8{%=IwG^3?#DZ2qPXcE-%qOjoa|fUwZNkMo6;KZmO;+OKAWz z+2V3_+idT@hw&vKO#c41Dr*l0GnvU02PM^lFC@aeYWPLJ94P zJ{KlbufpLyd8x$0ugY27LZ4xYgD7F^HR#;ADwtQ}UoHm`=Jq)xmIPT2_!}}X?J(}# z=j;j(e=HYetZwQfj8av6Zu+h9c-y4AuGm8^h7I!5`@%hn)w^=P$a;(Y7O9}4n73+L z$1gA0`u#EgxgnC+qk+dWq4XK;x>p24eHclFz3|_7?TYN`2dfKIns19lC?i}5o5Q{l zt<43|ZG6b&4Y@;oD_Oy!v%$lwUH4nhz0R6T-0wXm0O)^>*uFeX!@ zhT50r12K=@6uTKDHB)3&q$5F^oq|+*Q%lu8ZWl5wNHyWQ&g+hHg~#;Yz1<{FhXz-B z4Cc+@AmJ@ZhL*$QIgM|XH&}ZFJF_rh{@O|+l{xree`z|Ir>>~hFMGzzo1y39@qTuM z+8XDBEMjb9uYNT```fzJ_NQta0k7;pZ+R;OzL!7$m>0gyVxgY;q#p= z$R1;i#9*Si+%Cu=dFHm%&4oW9Z>YfY}MU7`t#-2M_`GW z&Toi&!4dxW-e^~16&9q@U~B#RGG}^=udN`LE@PMVg4_H-+#MbhWMWn4Ngtx&Jw^^N z5Sg9doXoz_W>K>>er`p57DoV;Xi(X_@&KL#+tUwg<)X2|&WlscaYQ9B&Eo{zbC*-+ zpK2wGxr>%%)fJQ$Pg!`_ALgvw4aSc+h`ec%q?EpWUSW2+;2Yg(#e*mrBo2D_+bR2M zL0DD%8J)Z7Q@RdCwZbc<`^(}K(7XBZ42Mt7qg8ec;%`a)YDoK;{OGD*ZxKP%J#rjh z_%vq%9~r#ws;Oj-)Xl8=kZaCs=4r?$lIiw2$XT5hRN8G2rHywwN>8IDH@)+gyP|sK zH7+^vhIGDkA%wskA>Gb8!R;A-G#kqyo2~Z_*wm-1e``0olP+!Wz3aZvI~$%ybKk$U zmo8?cU$NpHsZ@m!^qX`*d(9(yNYV)HYZ~ za)80>zU^+_Xdm(;n>uaQZO4j+bMiqB8#xns@ilkJ2h+6-?%W)!1^1$IqN}5_O1EDS zO0yHpbvg|#UR2ceyS-D(%G-(Cb`0;gL8|M%-peD}_Se@B!aQ+2 zmSf?rQvLK}ciWcq$SL&VU?r(h%1K)KBU-7d;c>}ruUHDAC8$)rV%sIc7SIf9EAj_8 zUx-qA10EU$Ho9!MONKvB%R+K)3dM>gq)@9N2GbCZcX%JCO@}crJb8AO=e$2M<_t0x z4lmv0Jc)o+m5F5BI)+$s%%k9YxHKj8aap^p7<8P%mgmK003MP}&^A_FAmgrR=gdB* z9QoGLSD&maB(fX~i?tbn3U|K;NKyyqV%9p1o-g3BQtxf=GfjOxZl^ydWM#UCbu*(N z5d)1k*IS^kj+`vINZh8xU*7l8elORaX41$pS@r!5=lx*)w6NPnd;+zUVPMG|7DL;Q z&)!~@{sQMQ`f624CTPPD*PU;1&7v)HK;93gW$a3_L2sS5S$HtLvHd|rkgk~wPwEXt zE`M+hdX49dh4tgtLcb%;bI7*#ncPz$YeEAyr=07ftTB*vxIeLW^ux{QP%)wNnGdmz zNn~RiZjSGM`B>NRXvklqbX*(I&saJ^s8sEm{@5HEw5ENbOsg&@N1AEZ2PaC0VQSwO ztY5b{(=T+W8J;98xB~Y--q?SeY8c~OXJ)lZ^dz+se((0pQH9N0PWYrZfxjLnmuV)a zhKvhlM82h=xoNP-lOj5pdc%qrqqmgP$ZuDh#UU~Gz$-{&;B^myVohz-NCb~ahN!K& zxm^hE-R=zUE_WG*$WF*igj)gB$4efu={wyWJ-W%~F<&610h zby!v;*lVpcTj=GD>NT4?6UH6UGr&!z^^`=6?}j|ynnbj!Bb@5{I&O+kzchjinJNE6 zXlPJ`j9R^vU%|xWra!a)Np#wkdE*a#SAq$uslZ5=y|VfuT8Xfp2_vDP&=SStL?gcRTUjZJTQ9+z|!UvY7Y4`??=I5JA;~!Q8ck{~VsU40Ds^q)}Uq|t|McbJ5by|13oJSbw+GW=m^28td^eQsP4Y1TKXZxrQoa+TrKW)l_A z_CP>FPtBr=Orpo~JM4Dur4v!E)?*ic4sP+*BG1Q^j>H5>>#b|axquh=(%h0NXPD#* z({bsilD!lXWpQ{K{mx{3{Dv!>Q|h+!DNny^JsGrQ>9HI^baG^XnKam|O$K<=BiqJW z`5k_g>m7$_Tw^9n7cZA+BR-$veOxp-Qgee=#%d{l5Mv*`T+xkj<=Nya*?+quopm^5Qk`A(b=x;^)4!pFvI;|BLwXqNJ(w zapzLC@X;^lbs9hbvblPD5~Kfy3N#$YjVeMYYSlV#vZob_x>$J z#>UB9bZ!}KH=sOLgykR2cB#|*#oMF2=`@Wiroai;V4{zJcEcJ@Qen|1-%?&KQw`8(cJc_Qa zV;X&_THpp^z*D<%UwdFj^6{cK_il%+`zHah#D}}(YhQcrMa_}o&vRw-pae+iHN5wT zV3_VW$8$gas9k=<3<;~#dM#~7I#UuzXKO7Qk;ocy~}({$WO72)T>2LZE@m9 zMr#1!Yc})iGGx7M{tz5z93Y@x#gK>*-c3=9&tGyUy#EY}>wglQCIz~^JE#W_=$G}y zqdoRGY5ekoY`P@%bJVH!nVsoeWMLH}22R~gmTwr*S818t!|DNwXX zi(88vpvA37ad$5g+zJ$zVnKqnNN_E##U;f(xE7ZZTwX}ez31HV#=Y;2_wplS|Jd32 z)>_}1YkqUCy?2|K8Jkuc^sQ{t`AT=)Mid=|rApmC=0>yr{=A^eBLvZM=Px_NXTC6r z1z9|E{K?%61L+>~pDGU0b5P_Z-WNsE{Dm}Tzle@B`$Sv z@Q1G|-9LwE%_pWjwJ$3yf?q5$h!8(XJRGr~EWdpSxbMqz$+vna{XF!(gNv3=%mG8r zI_n;(i{0j4j&BeUzu-=3I4&9}U3bcMngry=+|DqA*6OjRbh6C{X@z?Iv-TfJ?CN%< zoLhfiGP3Bxe=}aQZp4+$-jF(}F4Vt2kFt{=;bZWO_M+x0YYqhZp_}#oXaaFR3f?Pe z$^`in@i;9r@13XSD-|T4pZ1yd$8ouBx)Dlt;oTg1CKorX4;Tb`qL&I)fc)A!hsvGK z_Jm$E^f+z@$O)83sHcPbs~OnoBhC9-6t)cB_lg}&QmvQ7wJaB#QyS3{I&BN)da+!` za-~&&%a=O~PH2Sx+Ak}|w&64TRg4~|#am9sp59=$(7hckZGN#~GZoPYE54PI@N(kNbp6&iF!o*G#Hfqod3Z;Kxx2@E^ccRV zr4!$JxBSF!Hcyl!B@OaduNy~)P?OO;X*CH^gkm1X)fBa3MoLs4|K-zT>D z;~=vyBqR`>SQU955jO7MC9i+TTyOr8`-Fr@i0UNj=Ipk}#WZZ+vy!kNSILm?1_&1A zkI3b8%CC1R?To6T2>9a-TIQc{X)P-XKiduscX6)IoEWt|v8G8EuR6WY)GQ!c5@dH)v`bK;ONw>?*ZqE{0qercYU=0TdG za1|{b`Qyl!7w`kg13}1aV_lt}P}TQ=HJZ32enY{mR9!AsWOceXQjA`;)07aQTlbJ{ z$o@FX>uiPNn9F4YOACz|$L*#w(ap;9Z9gm35Zepz?bR?I14EFCaa}xh&XYtA7a-C6 zgk+GHG4}osdB)r)l1p>R?KKl_N!Kf%pfZ;33ys7%HX;*yZwH)n0kS{4-syhK4954> z>0lGwWWBhdSf2yEkpp-Uu&ut(99&M7j|aZ8gk;;lVvEMDJk`AGkLm0?4m21F9ijxkotMW%?XNi!Aj7nqVuMd7CIBGKCI!^l&Qty1*AF;WTd8+ z+U=UI**#ysN7{W0VG!{QBS`aRd-gH3W_GA}?Gd%vlpJV&$$YbgZKbno(@B>n?)<>^sSVdUGlLH5t&&qgbsfuEfp$2^CT_*8HoTUY=Ah_oo@cEq;~? zShcPdOBRfY>L+No&#D`)H*WU&XgrkwtY3I$$aqXSteYp^D?c;cq443Yuw})TgUam2 zXdVsZG0$~e`KHOPk5t*@U7@7Q$s`6?2@0OBXKioXhDmYjvGz|@{K zYe&1b+sR4S-afphcw|kU9&(eQhmftZ88HoVv7{en5fZdKRl#KSMiZ9y; zjB}5^jm^jb8e`kA9m30n1Q`q14z>q1nolEEUo&rW z0ugXLrQQ=J?@;*W(@*18omN#wyx_zCj2R`?ptA|JgPRHYqCS}1%`}ab`Emq(?c`1J zHCw6it?_iktAcWuqqE5^jb zz0)+Nvf#ebJ$d^k%3-lSTQ0Xfy~$}gwP6pRdPgR}O;xt;dA)}XFD{{pZ|@Cg z8pa@!LzQsQJ1v~rQG`t^Ww{N3Fh95PO*5}ONUXeG%;7zD;M`3=#0zcg7}d@1RqT}v z)&eq2H)$2IEzh(f$^u-hTKCSppx?k2IZ%?sAYQ z2bnsUn_xewE-{&!7(WijQ&wBJ;UN};U*TW~AF@}*Zn?qFGuX`~LtaBf1~MR!;7(hq zdnn`d8+I#34zUhR5BIz6`cnMjS`YdjXJyN2w8%(Y(1V0?8g7 zB+a&wd@15F>diaK=KbK7lOYW@qSCPH!c-mazvPT-$h+2A&4o^Wj|;jU-xCGUn^K~5S95MiFFpovz1YN6Ri@RQp_4}9 zJs7y_t#tbtrlkPG*3(e9?{9Nfs#fIa+Aj1w(&Zwjw&z0{3*;V0Kt=EQxnM5*{+5iJ z0~j1{&ziefo-g+#UB;?~eRi&+G{xq+Fll<~0 zeO3dl?OnSQpR(j#?}}b`8-ml5gQ=GV&8ckxlpmrD^xmrv2)m}&*ob&;Ju{wdf`V_@ ztt*PJTr~L;RdLC(%nuUB3(xySHYtBwcS2vbahPA6c3u5Cmdlmbgx)0HLOmB0UY$Dk zsp9DAbuah|Cb&=Ix@|yI+LuY_s^bqE55m!*VVGKpm%{qw=?yg)jdmxLm7fucebLLt zV4IC|#Ph^DpCk+ftf+)?Xi1U1PUKm@8jPK>?{U*RgInQ{D4H4>k>1dV-Sze=`EXUk znO3S?YI#zqt?&LqG%51|%JqXd>5y+j_E0=f^ybJr=M;p)+wW`mi7{iXvyaB7!BV8s zj)IK$^?CJSefX5UtofmvdZG<0ylz~*($)7VQ`Uy#{&d@vFbH#BkIS8i>rAc00*+?5}-1L*$ z^_NnwMIF@rfC~7?$P{cQ3S{YG<2{@gw>e#C-I0FWY)_)x1vSMNU>$%B*gAC&(Sk3v zmXlAi)}UdEGz<~*^-0G9kFJ0UiU4tBes$~6o{C<3*&J>{Q)1^w+iPocsgIxb2Gj%@ zx>ql>9w+mC1`eNCJ~M?1>g^3{I^kZ&#=gAeMDowg_sn_vsuGN@KAsYa(aXyo4YjV$ ziU4F+zG=3gX`HX;Qd1+Y)hS7*3=h%CLb%94{AWeHEF|G~<@m5ghXFg`Z{u1K@a`_0 z`j2KxZ|PW%|6EgSneq^J^PS85PrI2)|L@lJAaKdn?Cyt%Pf6z~%Wz?z3JgueNACGY@YYX5h} z{S#!Z1m13PyN=|p@q`+LbqvFzG>Olhu-&5_e}3S>e}{NOFgs;K2?NP*N>ux@l;@_v z`^t9G&J^3^5`yRfg+%@>l&i&kWmAB6?U3QkFbh(ZxJAT4cLV5IG5-+bx z!lu?w?!R9SjxsrmEZ5rmiiEP#W~{*QJao zT<{Dz_>rlCxU))2=}AHObkhdbeblK---Kbl&KhVEuZMs}S-@6TiQvU~%2w1$If2=+ zynK9o(7~gY!D`y(DDfuDSQ6u}gG0k6Q-EJJ?UX1bQmmL=ZCx*r)4}G0mJQ>27qu;q~Whhu8eqE7WO^qH=?RiwObYbGarfqTfCk9 zlfV)&%99x$1!cXm2TJ9TtZSaan9HUr1>-IG^ z-^3Q%rP@!Bl4)#$NC4A=jDwj<_xt6I?F|i7WuM?bWiz|nnXSAlu0jH9 zUNYru>l$G$c->xUsS&8Fw94ySF}!r`TMd)1UhJdu=Jb<7(i? zj_hWQQVZTexgGVcgQ{9uRi0zBR-h2K=gbadD{F4&)lSo56X!$UfbixCN>Y{WT7t*T zgUu@&(N+td_Lckoi5?J z0fpRl^Pk0beABjgRTjKl5Y*p7`2i0~J-4PRfGm7t25bA!tCCf^ne(df>1b(V^tzma zLnETT%Wa#zeSPWxB^?BMTM768F+Z%43#v|Z#yDL5L1DY!wwbl_S}8zeK8ltCN3}8| zE0Gy8MaF)1!7}wTpM|VU;&o_svL6OJ|Ib8=Zhg(S>?f~MBfIkoqL=HNF`}r1L{TwV z2^cwCUcmnhqyB;`?~4Tc>z@xNPbLD9GR|o6vrE1liDIkakjuUF=?}31z6(FT_{DwGwm0)bjRL~H zvt`|o2D3!!_-;?u=2ZRqq(EV`@I{7#uk&=OEF}Pft+RveB$zKA`;DapnRQQE2g>Y`c+8&kwBvYJR<4E;u8cSJ5Q9U|knk+JVsK8p-NG){7H8VmnGfbdm18TS zGiV23#LVUJ8e0Sqh?lhPn!i=+3@mDCrG014;jB_oQhzQB2;yLl`N)K^(}kPP-pPKjzSNOckkbtJ zPzH?oCpDrF`2s%V!rv2jm#`)(p~Kkp1Y zqvPHDjRo;BgD%R^$Cu|!3O?T=ZTCR99^n9p!^Y1iC0jzuKce_Ozy&X-u=0gahs#gc z(}j49*sBOimPqL@wNA}k_S;eYGQ2Nmnq~}!;FZV)%<-L}1CNDk`LVR=>LP=TjJR9a zf;lXve}`_|liHGl;R5fee9$$!?`to3w@HZ1Y8M?JBZ2;v59AI0;syU@X9g}V1_i>M z6+Us8_O63^ONT`6M2Uvp^=8jwrBhdtbq@#) z*^sqHqK@`9?s0A_$TOrwr)PFF1&jG>U=Vb;R6%a>-Y=^JJE^qWov5YjEAL*9NGY~_ zY@R6ef)*lP&XoWy@;Q5188t~rCSPPX|67?$9Fj*L_cLzA>f-m}POXE=(#r9ts^9W5 zV_X99s2&DPYAa?j#cFgX>;}PX>XP4KN0QnM7f)up+;_r5mGp_+R`5Jbv&$w!&DA3? z^6(Zd5$g1-a%DA~&qBg99Td2LSMWV7D>`9dfoFr6b2@YrR<~9Wq{nf*JN|a1&aX}# zuYArKDOwT5e8_@>{u533OIajbf={I77ZkLvIl_-M5R7-tr6J!M%dkqbT%+i>9)S_? z@wbKM;Sq9o(GmQ5`^Wl3F$DjXmZdGQ>HG^VvkWc$o#y|OR{8I!n4#$DYa|%|i`4mm zWX4R1C+=bj8oAfr^D=H!=$c6CXlq<}5#?1H$=`JHkh!HhKeyhKDVZq3kiI{=^e*yS58W#Wn literal 0 HcmV?d00001 diff --git a/examples/entra-redirect-uri.png b/examples/entra-redirect-uri.png new file mode 100644 index 0000000000000000000000000000000000000000..5f7949b4216ca9f1cadadc21690d0e64fd7c162f GIT binary patch literal 96524 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 C;@7tT literal 0 HcmV?d00001 diff --git a/examples/entra_nifi.yaml b/examples/entra_nifi.yaml index 1d64956c..5955a2ee 100644 --- a/examples/entra_nifi.yaml +++ b/examples/entra_nifi.yaml @@ -205,8 +205,7 @@ spec: nifi.security.user.oidc.client.secret: "${env:OIDC_CLIENT_SECRET}" nifi.security.user.oidc.additional.scopes: "profile" nifi.security.user.oidc.claim.identifying.user: "upn" - # bootstrap.conf: - # java.arg.debug: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000 + nifi.process.group.root.placeholder: "root" podOverrides: spec: initContainers: From 2a54f6b0d763169b7f3c6d89851baa331f302d86 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Fri, 5 Dec 2025 12:56:40 +0100 Subject: [PATCH 4/8] bump example to 2.6.0 --- examples/entra_nifi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/entra_nifi.yaml b/examples/entra_nifi.yaml index 5955a2ee..03b508c2 100644 --- a/examples/entra_nifi.yaml +++ b/examples/entra_nifi.yaml @@ -175,7 +175,7 @@ metadata: spec: image: custom: null - productVersion: 2.4.0 + productVersion: 2.6.0 pullPolicy: IfNotPresent clusterConfig: zookeeperConfigMapName: null From e116d1a5533d47d209a74022e985c004e56e060c Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Fri, 5 Dec 2025 13:30:39 +0100 Subject: [PATCH 5/8] added purpose comment --- examples/README-entra-example.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/README-entra-example.md b/examples/README-entra-example.md index 6d54f9e9..cdc8508c 100644 --- a/examples/README-entra-example.md +++ b/examples/README-entra-example.md @@ -3,6 +3,9 @@ ## Overview This note provides some explanatory information when running the EntraID example. +This example demonstrates how to provide a static set of RBAC permissions for users that are fetched from an EntraID backend. +The user- and group-identifiers are those used by EntraID, but other UUIDs - such as for the policy identifiers - are automatically generated when required by Nifi or are honoured if UUIDs (which are unique, after all) are provided. +It is often helpful if the initial (or "root") process group is readable by the initial admin, and the Nifi code has been patched to make this possible. ## Cluster From 55a25ade18a93c9f597c635b17e128b4d38a165d Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Fri, 5 Dec 2025 13:33:11 +0100 Subject: [PATCH 6/8] revert changes to sources.json --- nix/sources.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nix/sources.json b/nix/sources.json index ef1fb4b1..1b5af204 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -29,10 +29,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f720de59066162ee879adcc8c79e15c51fe6bfb4", - "sha256": "1w22rngzlclcqjz4zvibm654vah0ij8iv3rw2ssm51a16lbwbxls", + "rev": "9b008d60392981ad674e04016d25619281550a9d", + "sha256": "1pxnwzrwcgasascapd6f0l8ricv6dgads3rgz2m45hyny80720cs", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/f720de59066162ee879adcc8c79e15c51fe6bfb4.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/9b008d60392981ad674e04016d25619281550a9d.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } From c4c5dc6a03bfa1e54975804c3e893cb72933fdd0 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Mon, 8 Dec 2025 16:01:00 +0100 Subject: [PATCH 7/8] use placeholders for initial admin and group UUIDs --- examples/README-entra-example.md | 6 ++- examples/entra_nifi.yaml | 64 ++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 29 deletions(-) diff --git a/examples/README-entra-example.md b/examples/README-entra-example.md index cdc8508c..10b55a22 100644 --- a/examples/README-entra-example.md +++ b/examples/README-entra-example.md @@ -43,6 +43,8 @@ stringData: client.secret: filter.prefix: # e.g. Nifi-Entra initial.admin: # an existing EntraID user + initial.admin.uuid: # the Entra Admin user UUID + initial.group.uuid: # the initial group UUID discovery.url: https://login.microsoftonline.com//v2.0/.well-known/openid-configuration ``` @@ -80,7 +82,7 @@ The initial admin has immediate access as the static `authorizations.xml` file p ```xml - + ``` @@ -88,7 +90,7 @@ and the `root` part of this has been updated with the actual root process group: ```xml - + ``` diff --git a/examples/entra_nifi.yaml b/examples/entra_nifi.yaml index 03b508c2..5087ff4f 100644 --- a/examples/entra_nifi.yaml +++ b/examples/entra_nifi.yaml @@ -65,70 +65,67 @@ data: - - - + + - + - + - + - + - + - + - + - + - - - + - + - + - + - + - + - + - + - + - + @@ -165,6 +162,8 @@ stringData: # client.secret: # filter.prefix: # initial.admin: +# initial.admin.uuid: +# initial.group.uuid: # discovery.url: --- @@ -174,7 +173,6 @@ metadata: name: test-nifi spec: image: - custom: null productVersion: 2.6.0 pullPolicy: IfNotPresent clusterConfig: @@ -206,6 +204,7 @@ spec: nifi.security.user.oidc.additional.scopes: "profile" nifi.security.user.oidc.claim.identifying.user: "upn" nifi.process.group.root.placeholder: "root" + nifi.cluster.flow.election.max.wait.time: "10 secs" podOverrides: spec: initContainers: @@ -227,7 +226,7 @@ spec: name: oidc-secret key: discovery.url - name: prep-custom-authorizers - image: oci.stackable.tech/sdp/nifi:2.4.0-stackable0.0.0-dev + image: oci.stackable.tech/sdp/nifi:2.6.0-stackable0.0.0-dev env: - name: OIDC_AUTHORITY_ENDPOINT valueFrom: @@ -259,6 +258,16 @@ spec: secretKeyRef: name: oidc-secret key: initial.admin + - name: INITIAL_ADMIN_UUID + valueFrom: + secretKeyRef: + name: oidc-secret + key: initial.admin.uuid + - name: INITIAL_GROUP_UUID + valueFrom: + secretKeyRef: + name: oidc-secret + key: initial.group.uuid - name: OIDC_DISCOVERY_URL valueFrom: secretKeyRef: @@ -268,10 +277,11 @@ spec: - | echo Copying custom files... cp /tmp/custom-authorizer/authorizers.xml /stackable/nifi/custom-authorizer/ - echo Templating custom authorizer file... - config-utils template /stackable/nifi/custom-authorizer/authorizers.xml cp /tmp/custom-authorizer/authorizations.xml /stackable/nifi/custom-authorizer/ cp /tmp/custom-authorizer/users.xml /stackable/nifi/custom-authorizer/ + echo Template files... + config-utils template /stackable/nifi/custom-authorizer/authorizers.xml + config-utils template /stackable/nifi/custom-authorizer/authorizations.xml command: - /bin/bash - -c From 80f54d4316073a124663133caca42fa8c47353dc Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Mon, 8 Dec 2025 17:29:35 +0100 Subject: [PATCH 8/8] reworked examples folder --- .../README-entra-example.md | 10 +++++----- .../{ => entra-static-nifi-policies}/canvas.png | Bin .../entra-redirect-uri.png | Bin .../entra_nifi.yaml | 0 .../{ => simple-cluster}/simple-nifi-cluster.yaml | 0 5 files changed, 5 insertions(+), 5 deletions(-) rename examples/{ => entra-static-nifi-policies}/README-entra-example.md (93%) rename examples/{ => entra-static-nifi-policies}/canvas.png (100%) rename examples/{ => entra-static-nifi-policies}/entra-redirect-uri.png (100%) rename examples/{ => entra-static-nifi-policies}/entra_nifi.yaml (100%) rename examples/{ => simple-cluster}/simple-nifi-cluster.yaml (100%) diff --git a/examples/README-entra-example.md b/examples/entra-static-nifi-policies/README-entra-example.md similarity index 93% rename from examples/README-entra-example.md rename to examples/entra-static-nifi-policies/README-entra-example.md index 10b55a22..2b8ef991 100644 --- a/examples/README-entra-example.md +++ b/examples/entra-static-nifi-policies/README-entra-example.md @@ -4,8 +4,8 @@ This note provides some explanatory information when running the EntraID example. This example demonstrates how to provide a static set of RBAC permissions for users that are fetched from an EntraID backend. -The user- and group-identifiers are those used by EntraID, but other UUIDs - such as for the policy identifiers - are automatically generated when required by Nifi or are honoured if UUIDs (which are unique, after all) are provided. -It is often helpful if the initial (or "root") process group is readable by the initial admin, and the Nifi code has been patched to make this possible. +The user- and group-identifiers are those used by EntraID, but other UUIDs - such as for the policy identifiers - are automatically generated when required by Apache NiFi or are honoured if UUIDs (which are unique, after all) are provided. +It is often helpful if the initial (or "root") process group is readable by the initial admin, and the NiFi code has been patched to make this possible. ## Cluster @@ -48,7 +48,7 @@ stringData: discovery.url: https://login.microsoftonline.com//v2.0/.well-known/openid-configuration ``` -Apply the Nifi cluster resource: +Apply the NiFi cluster resource: ```text kubectl apply -f examples/entra_nifi.yaml -n nifi @@ -73,10 +73,10 @@ The web endpoint for app running against Entra needs to be updated with this end ![EntraID Web URI](entra-redirect-uri.png) -Paste this endpoint into the browser and you will be directed to the Azure portal login portal (to enter the credentials for the user designated as the intiial admin) and then redirected back to the Nifi UI. +Paste this endpoint into the browser and you will be directed to the Azure portal login portal (to enter the credentials for the user designated as the intiial admin) and then redirected back to the NiFi UI. The UI opens up on a writable canvas, in this case with the UUID `ea060c65-019a-1000-766b-0854b414d37e`: -![Nifi canvas](canvas.png) +![NiFi canvas](canvas.png) The initial admin has immediate access as the static `authorizations.xml` file provided via the ConfigMap defined this: diff --git a/examples/canvas.png b/examples/entra-static-nifi-policies/canvas.png similarity index 100% rename from examples/canvas.png rename to examples/entra-static-nifi-policies/canvas.png diff --git a/examples/entra-redirect-uri.png b/examples/entra-static-nifi-policies/entra-redirect-uri.png similarity index 100% rename from examples/entra-redirect-uri.png rename to examples/entra-static-nifi-policies/entra-redirect-uri.png diff --git a/examples/entra_nifi.yaml b/examples/entra-static-nifi-policies/entra_nifi.yaml similarity index 100% rename from examples/entra_nifi.yaml rename to examples/entra-static-nifi-policies/entra_nifi.yaml diff --git a/examples/simple-nifi-cluster.yaml b/examples/simple-cluster/simple-nifi-cluster.yaml similarity index 100% rename from examples/simple-nifi-cluster.yaml rename to examples/simple-cluster/simple-nifi-cluster.yaml