All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.groupbyinc.flux.cluster.routing.allocation.AllocationService.class Maven / Gradle / Ivy

There is a newer version: 59
Show newest version
????3?@com/groupbyinc/flux/cluster/routing/allocation/AllocationService6com/groupbyinc/flux/common/component/AbstractComponentAllocationService.javaBcom/groupbyinc/flux/cluster/routing/allocation/AllocationService$2Bcom/groupbyinc/flux/cluster/routing/allocation/AllocationService$1Gcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result
@com/groupbyinc/flux/cluster/routing/allocation/RoutingAllocationResultRcom/groupbyinc/flux/cluster/routing/allocation/FailedRerouteAllocation$FailedShardFcom/groupbyinc/flux/cluster/routing/allocation/FailedRerouteAllocationFailedShardEcom/groupbyinc/flux/cluster/routing/RoutingNodes$RoutingNodesIterator0com/groupbyinc/flux/cluster/routing/RoutingNodesRoutingNodesIteratorDcom/groupbyinc/flux/cluster/routing/RoutingNodes$RoutingNodeIteratorRoutingNodeIterator8com/groupbyinc/flux/cluster/routing/RoutingTable$Builder0com/groupbyinc/flux/cluster/routing/RoutingTableBuilderAcom/groupbyinc/flux/cluster/routing/RoutingNodes$UnassignedShards!UnassignedShards9com/groupbyinc/flux/cluster/routing/UnassignedInfo$Reason$2com/groupbyinc/flux/cluster/routing/UnassignedInfo&ReasonTcom/groupbyinc/flux/cluster/routing/RoutingNodes$UnassignedShards$UnassignedIterator)UnassignedIteratorallocationDecidersKLcom/groupbyinc/flux/cluster/routing/allocation/decider/AllocationDeciders;clusterInfoService0Lcom/groupbyinc/flux/cluster/ClusterInfoService;shardsAllocatorsKLcom/groupbyinc/flux/cluster/routing/allocation/allocator/ShardsAllocators;$assertionsDisabledZ?(Lcom/groupbyinc/flux/common/settings/Settings;Lcom/groupbyinc/flux/cluster/routing/allocation/decider/AllocationDeciders;Lcom/groupbyinc/flux/cluster/routing/allocation/allocator/ShardsAllocators;Lcom/groupbyinc/flux/cluster/ClusterInfoService;)V*Lcom/groupbyinc/flux/common/inject/Inject;1(Lcom/groupbyinc/flux/common/settings/Settings;)V47
8,-	:01	<./	>thisBLcom/groupbyinc/flux/cluster/routing/allocation/AllocationService;settings.Lcom/groupbyinc/flux/common/settings/Settings;applyStartedShards?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/util/List;)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/util/List;Z)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;DF
GclusterState*Lcom/groupbyinc/flux/cluster/ClusterState;
startedShardsELjava/util/List<+Lcom/groupbyinc/flux/cluster/routing/ShardRouting;>;Ljava/util/List;getMutableRoutingNodes^(Lcom/groupbyinc/flux/cluster/ClusterState;)Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;NO
P
unassignedE()Lcom/groupbyinc/flux/cluster/routing/RoutingNodes$UnassignedShards;RS
Tshuffle()VVW
"XGcom/groupbyinc/flux/cluster/routing/allocation/StartedRerouteAllocationZ(com/groupbyinc/flux/cluster/ClusterState\nodes3()Lcom/groupbyinc/flux/cluster/node/DiscoveryNodes;^_
]`.com/groupbyinc/flux/cluster/ClusterInfoServicebgetClusterInfo+()Lcom/groupbyinc/flux/cluster/ClusterInfo;decf?(Lcom/groupbyinc/flux/cluster/routing/allocation/decider/AllocationDeciders;Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;Lcom/groupbyinc/flux/cluster/node/DiscoveryNodes;Ljava/util/List;Lcom/groupbyinc/flux/cluster/ClusterInfo;)V4h
[iI(Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;Ljava/lang/Iterable;)ZDk
lroutingTable4()Lcom/groupbyinc/flux/cluster/routing/RoutingTable;no
]p6(ZLcom/groupbyinc/flux/cluster/routing/RoutingTable;)V4r
sIcom/groupbyinc/flux/cluster/routing/allocation/allocator/ShardsAllocatorsuL(Lcom/groupbyinc/flux/cluster/routing/allocation/StartedRerouteAllocation;)VDw
vxrerouteE(Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation;)Zz{
|4W
~updateNodesn(Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;)Lcom/groupbyinc/flux/cluster/routing/RoutingTable$Builder;??
?build?o
?metaData1()Lcom/groupbyinc/flux/cluster/metadata/MetaData;??
]?validateRaiseExceptionc(Lcom/groupbyinc/flux/cluster/metadata/MetaData;)Lcom/groupbyinc/flux/cluster/routing/RoutingTable;??
?E(Lcom/groupbyinc/flux/cluster/routing/allocation/AllocationService;)V4?
	?'firstListElementsToCommaDelimitedString\(Ljava/util/List;Lcom/groupbyinc/flux/common/google/common/base/Function;)Ljava/lang/String;??
?5com/groupbyinc/flux/cluster/health/ClusterStateHealth?-(Lcom/groupbyinc/flux/cluster/ClusterState;)V4?
??d(Lcom/groupbyinc/flux/cluster/metadata/MetaData;Lcom/groupbyinc/flux/cluster/routing/RoutingTable;)V4?
??java/lang/StringBuilder?
?~shards started [?append-(Ljava/lang/String;)Ljava/lang/StringBuilder;??
??] ...?toString()Ljava/lang/String;??
??logClusterHealthStateChange?(Lcom/groupbyinc/flux/cluster/health/ClusterStateHealth;Lcom/groupbyinc/flux/cluster/health/ClusterStateHealth;Ljava/lang/String;)V??
?withRerouteroutingNodes2Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;
allocationILcom/groupbyinc/flux/cluster/routing/allocation/StartedRerouteAllocation;changed2Lcom/groupbyinc/flux/cluster/routing/RoutingTable;resultILcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;startedShardsAsStringLjava/lang/String;applyFailedShard?(Lcom/groupbyinc/flux/cluster/ClusterState;Lcom/groupbyinc/flux/cluster/routing/ShardRouting;)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;\(Lcom/groupbyinc/flux/cluster/routing/ShardRouting;Ljava/lang/String;Ljava/lang/Throwable;)V4?
?java/util/Collections?
singletonList$(Ljava/lang/Object;)Ljava/util/List;??
??applyFailedShards?E
?failedShard2Lcom/groupbyinc/flux/cluster/routing/ShardRouting;
ijava/util/List?iterator()Ljava/util/Iterator;????java/util/Iterator?hasNext()Z????next()Ljava/lang/Object;????shard??	?ALLOCATION_FAILED;Lcom/groupbyinc/flux/cluster/routing/UnassignedInfo$Reason;??	%?message??	?failureLjava/lang/Throwable;??	?java/lang/System?nanoTime()J??
??currentTimeMillis??
??g(Lcom/groupbyinc/flux/cluster/routing/UnassignedInfo$Reason;Ljava/lang/String;Ljava/lang/Throwable;JJ)V4?
'??(Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation;Lcom/groupbyinc/flux/cluster/routing/ShardRouting;ZLcom/groupbyinc/flux/cluster/routing/UnassignedInfo;)Z??
?K(Lcom/groupbyinc/flux/cluster/routing/allocation/FailedRerouteAllocation;)V??
v?
?getMetaData??
]?shards failed [TLcom/groupbyinc/flux/cluster/routing/allocation/FailedRerouteAllocation$FailedShard;failedShardsfLjava/util/List;HLcom/groupbyinc/flux/cluster/routing/allocation/FailedRerouteAllocation;failedShardsAsString6com/groupbyinc/flux/common/google/common/base/Function, 
java/lang/Objectapply&(Ljava/lang/Object;)Ljava/lang/Object;	java/lang/StringelementTT;Ljava/lang/Object;elementsLjava/util/List;	formatterPLcom/groupbyinc/flux/common/google/common/base/Function<-TT;Ljava/lang/String;>;8Lcom/groupbyinc/flux/common/google/common/base/Function;maxNumberOfElementsIcurrentIndexitLjava/util/Iterator;Ljava/util/Iterator;msgLjava/lang/StringBuilder;?(Lcom/groupbyinc/flux/cluster/ClusterState;Lcom/groupbyinc/flux/cluster/routing/allocation/command/AllocationCommands;)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;?(Lcom/groupbyinc/flux/cluster/ClusterState;Lcom/groupbyinc/flux/cluster/routing/allocation/command/AllocationCommands;Z)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;z%
&commandsKLcom/groupbyinc/flux/cluster/routing/allocation/command/AllocationCommands;currentNanoTime*?
+?(Lcom/groupbyinc/flux/cluster/routing/allocation/decider/AllocationDeciders;Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;Lcom/groupbyinc/flux/cluster/node/DiscoveryNodes;Lcom/groupbyinc/flux/cluster/ClusterInfo;J)V4-

.
debugDecision(Z)V01

2
ignoreDisable41

5Icom/groupbyinc/flux/cluster/routing/allocation/command/AllocationCommands7execute?(Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation;Z)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingExplanations;9:
8;z(ZLcom/groupbyinc/flux/cluster/routing/RoutingTable;Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingExplanations;)V4=
>reroute commands@explainBLcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation;explanationsDLcom/groupbyinc/flux/cluster/routing/allocation/RoutingExplanations;?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/lang/String;)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/lang/String;Z)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;zG
Hreasondebug	getStatus:()Lcom/groupbyinc/flux/cluster/health/ClusterHealthStatus;LM
?N6com/groupbyinc/flux/cluster/health/ClusterHealthStatusPequals(Ljava/lang/Object;)ZRS
QTlogger-Lcom/groupbyinc/flux/common/logging/ESLogger;VW	X?Cluster health status changed from [{}] to [{}] (reason: [{}]).Z+com/groupbyinc/flux/common/logging/ESLogger\info((Ljava/lang/String;[Ljava/lang/Object;)V^_]`previousStateHealth7Lcom/groupbyinc/flux/cluster/health/ClusterStateHealth;newStateHealthpreviousHealth8Lcom/groupbyinc/flux/cluster/health/ClusterHealthStatus;
currentHealthdeassociateDeadNodesh{
i
applyNewNodesE(Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation;)Vkl
m+electPrimariesAndUnassignedDanglingReplicaso{
p4()Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;?r

ssize()Iuv
"wBC	y!updateLeftDelayOfUnassignedShardss(Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation;Lcom/groupbyinc/flux/common/settings/Settings;)V{|
}allocateUnassigned{
v?
moveShards?{
v?	rebalance?{
v?23	?assertShardStats5(Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;)Z??
?java/lang/AssertionError?
?~X()Lcom/groupbyinc/flux/cluster/routing/RoutingNodes$UnassignedShards$UnassignedIterator;??
"?0com/groupbyinc/flux/cluster/routing/ShardRouting?

?index??
??-com/groupbyinc/flux/cluster/metadata/MetaData?H(Ljava/lang/String;)Lcom/groupbyinc/flux/cluster/metadata/IndexMetaData;??
??unassignedInfo6()Lcom/groupbyinc/flux/cluster/routing/UnassignedInfo;??
??getCurrentNanoTime??

?2com/groupbyinc/flux/cluster/metadata/IndexMetaData?getSettings0()Lcom/groupbyinc/flux/common/settings/Settings;??
??updateDelay`(JLcom/groupbyinc/flux/common/settings/Settings;Lcom/groupbyinc/flux/common/settings/Settings;)J??
'?/Lcom/groupbyinc/flux/cluster/metadata/MetaData;
indexMetaData4Lcom/groupbyinc/flux/cluster/metadata/IndexMetaData;shardRoutinggetNumPrimaries?v
"?java/util/ArrayList?
?~primary??
??assignedShardsH(Lcom/groupbyinc/flux/cluster/routing/ShardRouting;)Ljava/lang/Iterable;??
?java/lang/Iterable???initializing??
??add?S??)primary failed while replica initializing?
activeReplicaf(Lcom/groupbyinc/flux/cluster/routing/ShardRouting;)Lcom/groupbyinc/flux/cluster/routing/ShardRouting;??
?swapPrimaryFlag6([Lcom/groupbyinc/flux/cluster/routing/ShardRouting;)V??
?relocatingNodeId??
??nodeE(Ljava/lang/String;)Lcom/groupbyinc/flux/cluster/routing/RoutingNode;??
?/com/groupbyinc/flux/cluster/routing/RoutingNode?
??shardId+()Lcom/groupbyinc/flux/index/shard/ShardId;??
??'com/groupbyinc/flux/index/shard/ShardId?
?TisIndexUsingShadowReplicas1(Lcom/groupbyinc/flux/common/settings/Settings;)Z??
??reinitShadowPrimary5(Lcom/groupbyinc/flux/cluster/routing/ShardRouting;)V??
?routing
shardEntryshardToFail1Lcom/groupbyinc/flux/cluster/routing/RoutingNode;	candidateshardsToFailDLjava/util/List;

`/com/groupbyinc/flux/cluster/node/DiscoveryNodes?	dataNodes7()Lcom/groupbyinc/flux/common/collect/ImmutableOpenMap;??
??3com/groupbyinc/flux/common/collect/ImmutableOpenMap?values@()Lcom/groupbyinc/flux/common/carrotsearch/hppc/ObjectContainer;??
??;CLcom/groupbyinc/flux/common/carrotsearch/hppc/cursors/ObjectCursor;I()Lcom/groupbyinc/flux/cluster/routing/RoutingNodes$RoutingNodesIterator;^

?3()Lcom/groupbyinc/flux/cluster/routing/RoutingNode;?
nodeId?
?containsKey!S
?"
copyShards()Ljava/util/Collection;$%
?&java/util/Collection()?	NODE_LEFT+?	%,
node_left[.]0remove2W
34Lcom/groupbyinc/flux/cluster/routing/UnassignedInfo;GLcom/groupbyinc/flux/cluster/routing/RoutingNodes$RoutingNodesIterator;
pK(Ljava/lang/String;)Lcom/groupbyinc/flux/cluster/routing/IndexRoutingTable;?8
96{} ignoring shard started, unknown index (routing: {});K_]=
currentNodeId??
?@routingNodeIterZ(Ljava/lang/String;)Lcom/groupbyinc/flux/cluster/routing/RoutingNodes$RoutingNodeIterator;BC
DZ{} failed to find shard in order to start it [failed to find node], ignoring (routing: {})F
?isSameAllocation5(Lcom/groupbyinc/flux/cluster/routing/ShardRouting;)ZIJ
?KactiveM?
?N3{} shard is already started, ignoring (routing: {})PtraceR_]S4?
?UstartedW?
X({} marked shard as started (routing: {})Z
?4()Lcom/groupbyinc/flux/cluster/routing/ShardRouting;?]
^isRelocationSourceOf`J
?a
3currentRoutingNodeFLcom/groupbyinc/flux/cluster/routing/RoutingNodes$RoutingNodeIterator;sourceRoutingNodestartedShardstartedShardEntriesILjava/lang/Iterable<+Lcom/groupbyinc/flux/cluster/routing/ShardRouting;>;Ljava/lang/Iterable;dirty

p3{} ignoring shard failure, unknown index in {} ({})mshortSummaryo?
'p5com/groupbyinc/flux/cluster/routing/IndexRoutingTabler2{} ignoring shard failure, unknown node in {} ({})t9{} failed shard {} found in routingNodes, failing it ({})v;{} ignoring shard failure, unknown allocation id in {} ({})xcurrentz]
{addIgnoreShardForNode>(Lcom/groupbyinc/flux/index/shard/ShardId;Ljava/lang/String;)V}~

E{} is a relocation target, resolving source to cancel relocation ({})?:{}, resolved source to [{}]. canceling relocation ... ({})?cancelRelocation??
?
relocating??
??isRelocationTargetOf?J
??4{} is removed due to the failure of the source shard?moveToUnassigned7(Lcom/groupbyinc/flux/cluster/routing/UnassignedInfo;)V??
?	isRemoved??
?failedShard ?-(Ljava/lang/Object;)Ljava/lang/StringBuilder;??
?? was matched but wasn't removed?(Ljava/lang/Object;)V4?
??relocatingFromNodeinitializingNodeaddToIgnoreListindexRoutingTable7Lcom/groupbyinc/flux/cluster/routing/IndexRoutingTable;matchedNodematchedShard.(Lcom/groupbyinc/flux/cluster/ClusterState;Z)V4?
?java/lang/Class?desiredAssertionStatus??
??CodeLocalVariableTableLineNumberTableRuntimeVisibleAnnotationsLocalVariableTypeTable	Signature?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/util/List<+Lcom/groupbyinc/flux/cluster/routing/ShardRouting;>;)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;
StackMapTable?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/util/List<+Lcom/groupbyinc/flux/cluster/routing/ShardRouting;>;Z)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;?(Lcom/groupbyinc/flux/cluster/ClusterState;Ljava/util/List;)Lcom/groupbyinc/flux/cluster/routing/allocation/RoutingAllocation$Result;?(Ljava/util/List;Lcom/groupbyinc/flux/common/google/common/base/Function<-TT;Ljava/lang/String;>;)Ljava/lang/String;~(Lcom/groupbyinc/flux/cluster/routing/RoutingNodes;Ljava/lang/Iterable<+Lcom/groupbyinc/flux/cluster/routing/ShardRouting;>;)Z
SourceFileInnerClasses!,-./012345?x*+?9*,?;*-?=*????4@ABC,-01./?<=
>?@?6DE?X*+,?H?? @AIJKM?KL?H??DF??
?*+?Q:?U?Y?[Y*?;+?a,*???g?j:*,?m6??Y+?q?t?*?=?y?
*?}W?Y?????+????:?Y?t:*,?	Y*????:	*??Y+????Y+??????Y?????	???????????f
?@A?IJ?KM??3???,???5??3sPn?D???5??	??KL?BLNO,P5Q:RGTPUTV[XsY[?a?c?a?f?
?G[?????Q*+?Y,???ƶɰ? @AIJ???j?E?
	*+?QN-?U?Y?Y*?;-+?a,*???g??:6,??:???=???:*???'Y????????????6?????Y+?q?t?*?=??*?}W?Y?-????+????:?Y?t:*,?Y*????:*??Y+????Y+?????Y???????????????f
J+?@AIJM???)??,??3?Qn??E???6???Rsu
v)w,xJyfzoyu{x|}}?????????????????? ?4]???C?????Q\
>6+??:??Y??:???8
?1??:???W,????W????????R1"\@A\M\YVN!E"#?*1"\\N ?2?????(?1?6???P?S?V??#??	???'
???z$?F*+,?'?? @AIJ()??z%?8	?*+?Q:?
Y*?;+?a*???g*?,?/:?3?6,?<:?6*?}W?Y?????+????:?Y??:*??Y+????Y+???A????\	?@A?IJ?()?B3???'g?C<RDEa-n?o???6
??'?-?3?<?B?I?a?o?}?????zF?F*+,?I?? @AIJJ???zG?9?*+?Q:?U?Y?
Y*?;+?a*???g*?,?/:?3*?}??Y+?q?t??Y?????+????:?Y?t:*??Y+????Y+???,????R?@A?IJ?J??K3???/]?Cc)n?o???2???/?5?>?K?c?o?}???????K
????5+?O:,?O:?U?!*?Y[?
YSYSY-S?a??>5@A5bc5dc5J?/ef)gf?????4???4QQz{??g=*+?j?=*+?n*+?q?=+?t?U?x?+*?z?~*?=+???=*?=+???=*?=+???=???+?t?????Y????? g@Ag?Ce?3?.??
???$,7B	M
e??7-	{|??E*?t?U??M,???3,????N*??:-????:-??*??+????X??ʱ?4$??/??#??E?CEBC?$/AD????8o{?D?=+?tN-?U??????Y??:-?U??:???Z????:???C-????:???,????:????ƙ
??W??Ч????:???2????:*+?'Y???+????????=???-?U??:????????:????+?t??:??+??????:-??YSYS?????]=-?ֶ?:		?K	??:

???:
????:????????-??YS?ӧ???????-??=??=???
f??;H??? ??V(??4M??	
????????????@A??C??3???}?M?}????% !;"C#f$v%?'?*?+?,?.?,?/?4?5?6?7?8
9:';)=4>9?V@nA{B~D?G?H?I?M?O?a?????*??/?????8???n
???????=???kl??F+?tM+??????N-???*-???:??
:,??	,???ӱ?43?)F@AF?CA???)?WX)Y3Z<[B]E^???,?h{?T	?=+?t?N-???-?:+????? ?#????=?'?*:???O????:?'Y?-??Y??/??? ??1????+?????:*+??W???-?4??v??H??5P=??}??
?6?@A??C??3?:abcd)f,h.jPkwl?m?n?q?r?s??
?!??
??U?Dk??	`>,??:???M????:????ƚ??Y???+?7???:?#*?Y<?
Y??SYS?>???+?A?E:?#*?YG?
Y??SYS?>??x?H:???w????:?L?^?O?#*?YQ?
Y??SYS?T?9>??Y?V:+?Y*?Y[?
Y??SYS?T??????????+?ֶE:?)?\?!?_:?b?
>?c???ݧ????\	?e??D??p?de0+fe ;g?`@A`??`hj^k3?`hi??!wy z6}E~be?p?u??????????????????????"?%?0?5?=?D?N?P?U?X?[?^??6
?
??+?.?/???G??2?
?"????????H+?l,???::?(*?Yn?
Y,??SY,SY?qS?>?+?t:,?A?E:?(*?Yu?
Y,??SY,SY?qS?>?6?\???_:		,?L?,6*?Yw?
Y,??SY,SY?qS?>?????(*?Yy?
Y,??SY,SY?qS?>???Y?|?VM?c?+,??,?A??,????,?ƙ?*?Y??
Y,SY?qS?T,?ֶ?:		?Z	??:

???I
????:,?b?1*?Y??
Y,??SYSY?qS?T????????,???r???,?ƙ??Y??????,?????Y???,?ֶE:		?8	?\?0	?_:

,???*?Y??
Y
S?T	?c????????-???%??Y??Y?????,??????????????2??	\7??:\??	?#??
?:?e	H@AH?CH??H?3H?5
;??=??H?eu??3??1?
??5?7?=?H?M?p?r?u?}???????????????????????????/?:???\?e?????????????????????????????F?9?7s?:??@)!?@???L??1?/NO?N?Y+??M,?? @AIJ
???

*??.???@A?
?W?4????????4?@??R
	
		 	"#%'(@*"+




© 2015 - 2025 Weber Informatics LLC | Privacy Policy