From e60c284c4ad7f955d4e300a439e10aff7cb6f4a2 Mon Sep 17 00:00:00 2001 From: AlexanderTUO <1599961496@qq.com> Date: Wed, 1 Jan 2020 23:10:17 +0800 Subject: [PATCH 1/2] CopyOnWriteArrayList,ConcurrentHashMap --- week_04/08/ConcurrentHashMap-008.md | 104 +++++++++ week_04/08/ConcurrentHashMap-008.xmind | Bin 0 -> 41264 bytes week_04/08/CopyOnWriteArrayList-008.md | 197 ++++++++++++++++++ week_04/08/CopyOnWriteArrayList-008.xmind | Bin 0 -> 35868 bytes ...riteArrayList\347\261\273\345\233\276.png" | Bin 0 -> 15724 bytes 5 files changed, 301 insertions(+) create mode 100644 week_04/08/ConcurrentHashMap-008.md create mode 100644 week_04/08/ConcurrentHashMap-008.xmind create mode 100644 week_04/08/CopyOnWriteArrayList-008.md create mode 100644 week_04/08/CopyOnWriteArrayList-008.xmind create mode 100644 "week_04/08/attachment/CopyOnWriteArrayList\347\261\273\345\233\276.png" diff --git a/week_04/08/ConcurrentHashMap-008.md b/week_04/08/ConcurrentHashMap-008.md new file mode 100644 index 0000000..92b2a4e --- /dev/null +++ b/week_04/08/ConcurrentHashMap-008.md @@ -0,0 +1,104 @@ +# 读源码-ConcurrentHashMap + +## 源码分析 + +putVal(K key, V value, boolean onlyIfAbsent)方法:插入元素 + +```java + final V putVal(K key, V value, boolean onlyIfAbsent) { + if (key == null || value == null) throw new NullPointerException(); + int hash = spread(key.hashCode()); + int binCount = 0; + for (Node[] tab = table;;) { + Node f; int n, i, fh; + // 如果桶未初始化或桶个数为0,初始化桶 + if (tab == null || (n = tab.length) == 0) + tab = initTable(); + // 如果要插入元素所在桶中没有元素,则将该元素插入 + else if ((f = tabAt(tab, i = (n - 1) & hash)) == null) { + // cas插入,成功则break;否则继续自旋(未成功可能是其他线程抢在之前插入了) + if (casTabAt(tab, i, null, + new Node(hash, key, value, null))) + break; // no lock when adding to empty bin + } + // 若fh为moved,当前线程则帮助迁移元素 + else if ((fh = f.hash) == MOVED) + tab = helpTransfer(tab, f); + // 桶既不为空,也没迁移,则锁住这个桶(只锁住这个桶,分段锁) + else { + V oldVal = null; + synchronized (f) { + if (tabAt(tab, i) == f) { + // 若第一个元素的hash值>=0,说明不是树,也没迁移 + if (fh >= 0) { + binCount = 1; + for (Node e = f;; ++binCount) { + K ek; + // 若找到相同key,则更新(onlyIfAbsent为false情况下) + if (e.hash == hash && + ((ek = e.key) == key || + (ek != null && key.equals(ek)))) { + oldVal = e.val; + if (!onlyIfAbsent) + e.val = value; + break; + } + Node pred = e; + // 若没有找到相同key,则插入链表尾部 + if ((e = e.next) == null) { + pred.next = new Node(hash, key, + value, null); + break; + } + } + } + // 若为树节点,则putTreeVal + else if (f instanceof TreeBin) { + Node p; + binCount = 2; + // 若找到该元素,则更新值并返回旧值 + if ((p = ((TreeBin)f).putTreeVal(hash, key, + value)) != null) { + oldVal = p.val; + if (!onlyIfAbsent) + p.val = value; + } + } + } + } + // bincount不为0,表示成功插入或找到了元素 + if (binCount != 0) { + // 若binCount超过8,则树化 + if (binCount >= TREEIFY_THRESHOLD) + treeifyBin(tab, i); + // 若找到了元素,则返回该元素的旧值 + if (oldVal != null) + return oldVal; + break; + } + } + } + // 插入成功,元素个数+1 + addCount(1L, binCount); + return null; + } +``` + +过程总结 + +1)如果桶未初始化,则初始化桶 + +2)如果桶已初始化,待插入元素所在桶的元素个数为0,则尝试插入元素到第一个位置(cas更新) + +3)如果正在扩容,当前线程帮忙迁移元素 + +4)如果待插入元素所在桶既不为空,也没迁移,则锁住这个桶(只锁住这个桶,分段锁synchronized ) + +5)若为链表,则在链表方式插入或更新(自旋锁) + +6)若为树,则在树中插入或更新(自旋锁) + +7)如果元素存在,则返回旧值 + +8)如果元素不存在,则map元素个数+1,并检查扩容 + diff --git a/week_04/08/ConcurrentHashMap-008.xmind b/week_04/08/ConcurrentHashMap-008.xmind new file mode 100644 index 0000000000000000000000000000000000000000..ccffbe9b2cdd9012c6d7a5f423665d709caa0904 GIT binary patch literal 41264 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 oZpc4@|6H8^06!GGY5U(xrK*JR=Gp)Nh;NrQ3; c) { + Object[] elements; + // 若c为CopyOnWriteArrayList,强制转换后赋给array + if (c.getClass() == CopyOnWriteArrayList.class) + elements = ((CopyOnWriteArrayList)c).getArray(); + // 若c不是CopyOnWriteArrayList,则转为数组并赋给array + else { + elements = c.toArray(); + // 若c为null,可能报空指针异常 + // c.toArray might (incorrectly) not return Object[] (see 6260652) + if (elements.getClass() != Object[].class) + elements = Arrays.copyOf(elements, elements.length, Object[].class); + } + setArray(elements); + } + + // 参数为数组 + public CopyOnWriteArrayList(E[] toCopyIn) { + setArray(Arrays.copyOf(toCopyIn, toCopyIn.length, Object[].class)); + } + + +``` + +### 重点方法 + +add(E e):添加元素,并与ArrayList中的add做个对比 + +```java + // CopyOnWriteArrayList的add方法 + public boolean add(E e) { + final ReentrantLock lock = this.lock; + // 加锁 + lock.lock(); + try { + Object[] elements = getArray(); + int len = elements.length; + // 将旧数组的值复制到新数组 + Object[] newElements = Arrays.copyOf(elements, len + 1); + // 将新元素放到末尾 + newElements[len] = e; + setArray(newElements); + return true; + } finally { + // 解锁 + lock.unlock(); + } + } + + // ArrayList中的add方法 + public boolean add(E e) { + ensureCapacityInternal(size + 1); // Increments modCount!! + // 此行代码可分解为 + // 1、elementData[size] = e; + // 2、elementData[size++] = e; + // 非原子操作,没有加锁,会出现线程安全问题 + elementData[size++] = e; + return true; + } + + +``` + +add(int index, E element):指定索引处添加 + +```java + //在指定索引处添加元素,与add基本相同 + public void add(int index, E element) { + final ReentrantLock lock = this.lock; + lock.lock(); + try { + Object[] elements = getArray(); + int len = elements.length; + // 检查越界 + if (index > len || index < 0) + throw new IndexOutOfBoundsException("Index: "+index+ + ", Size: "+len); + Object[] newElements; + int numMoved = len - index; + // 在末尾添加 + if (numMoved == 0) + newElements = Arrays.copyOf(elements, len + 1); + else { + newElements = new Object[len + 1]; + System.arraycopy(elements, 0, newElements, 0, index); + System.arraycopy(elements, index, newElements, index + 1, + numMoved); + } + newElements[index] = element; + setArray(newElements); + } finally { + lock.unlock(); + } + } + + // 熟悉回顾arraycopy方法 + public static native void arraycopy(Object src, int srcPos, + Object dest, int destPos, + int length); +``` + +addIfAbsent(E e, Object[] snapshot):若不存在就添加 + +```java + private boolean addIfAbsent(E e, Object[] snapshot) { + final ReentrantLock lock = this.lock; + lock.lock(); + try { + Object[] current = getArray(); + int len = current.length; + if (snapshot != current) { + // Optimize for lost race to another addXXX operation + int common = Math.min(snapshot.length, len); + // 先判断共有长度下,是否存在 + for (int i = 0; i < common; i++) + if (current[i] != snapshot[i] && eq(e, current[i])) + return false; + // 判断非共有长度下是否存在 + if (indexOf(e, current, common, len) >= 0) + return false; + } + Object[] newElements = Arrays.copyOf(current, len + 1); + newElements[len] = e; + setArray(newElements); + return true; + } finally { + lock.unlock(); + } + } +``` + +其余的常用方法与ArrayList中相似,其实现与上述中的add方法类似,主要用了cow的方式 + +### COW + +cow即copyOnWrite,当我们向一个容器添加或删除要素时,可以先复制一个容器,然后再新容器中进行操作。最后将旧容器的引用指向新容器。 + +#### 优点: + +- 读效率高 +- 线程安全 + +#### 缺点 + +- 写效率低。因为要复制替换 +- 内存占用问题。每次修改的时候都进行复制,如果原数组比较大呢 + +- 数据延时问题。 + +### 适用场景 + +由以上优缺点,可以得到CopyOnWriteArrayList的适用场景 + +- 读多写少。比如黑白名单 +- 对数据实时性要求不高的场景 \ No newline at end of file diff --git a/week_04/08/CopyOnWriteArrayList-008.xmind b/week_04/08/CopyOnWriteArrayList-008.xmind new file mode 100644 index 0000000000000000000000000000000000000000..84fb2a85915c362457235861cd0585d635c39617 GIT binary patch literal 35868 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�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 literal 0 HcmV?d00001 diff --git "a/week_04/08/attachment/CopyOnWriteArrayList\347\261\273\345\233\276.png" "b/week_04/08/attachment/CopyOnWriteArrayList\347\261\273\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..83cd3bd0081434fd6fa9ef14635be64e51b3bb18 GIT binary patch literal 15724 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

f0J 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 a4=!=vW4GFL19k!eJ$bAyUn*-7^xpteJ;jy) literal 0 HcmV?d00001 -- Gitee From fe2b33bdf17bf43123d7e94453a3b60e39507034 Mon Sep 17 00:00:00 2001 From: AlexanderTUO <1599961496@qq.com> Date: Sun, 5 Jan 2020 17:19:59 +0800 Subject: [PATCH 2/2] ArrayBlockingQueue,ConcurrentLinkedQueue,DelayQueue --- week_04/08/ArrayBlockingQueue-008.md | 187 ++++++++++ week_04/08/ArrayBlockingQueue-008.xmind | Bin 0 -> 47041 bytes week_04/08/ConCurrentLinkedQueue-008.md | 110 ++++++ week_04/08/ConCurrentQueue-008.xmind | Bin 0 -> 31822 bytes week_04/08/ConcurrentHashMap-008.md | 352 +++++++++++++++++- week_04/08/ConcurrentHashMap-008.xmind | Bin 41264 -> 31738 bytes week_04/08/DelayQueue-008.md | 204 ++++++++++ week_04/08/DelayQueue-008.xmind | Bin 0 -> 47825 bytes ...e\347\273\247\346\211\277\345\233\276.png" | Bin 0 -> 19473 bytes ...e\347\273\247\346\211\277\345\233\276.png" | Bin 0 -> 18236 bytes ...e\347\273\247\346\211\277\345\233\276.png" | Bin 0 -> 18928 bytes 11 files changed, 852 insertions(+), 1 deletion(-) create mode 100644 week_04/08/ArrayBlockingQueue-008.md create mode 100644 week_04/08/ArrayBlockingQueue-008.xmind create mode 100644 week_04/08/ConCurrentLinkedQueue-008.md create mode 100644 week_04/08/ConCurrentQueue-008.xmind create mode 100644 week_04/08/DelayQueue-008.md create mode 100644 week_04/08/DelayQueue-008.xmind create mode 100644 "week_04/08/attachment/ArrayBlockingQueue\347\273\247\346\211\277\345\233\276.png" create mode 100644 "week_04/08/attachment/ConcurrentLinkedQueue\347\273\247\346\211\277\345\233\276.png" create mode 100644 "week_04/08/attachment/DelayQueue\347\273\247\346\211\277\345\233\276.png" diff --git a/week_04/08/ArrayBlockingQueue-008.md b/week_04/08/ArrayBlockingQueue-008.md new file mode 100644 index 0000000..cebce10 --- /dev/null +++ b/week_04/08/ArrayBlockingQueue-008.md @@ -0,0 +1,187 @@ +# 读源码-ArrayBlockingQueue + +## 继承体系 + +- 实现接口BlockingQueue,提供了3个增加方法add,offer,put和3个删方法poll,remove,take +- 实现Serializable接口 +- 继承AbstractQueue类,队列的抽象类,提供了基本的增删功能 + +![ArrayBlockingQueue继承图](E:\Project\JavaStudy\week_04\08\attachment\ArrayBlockingQueue继承图.png) + +## 主要属性 + +```java + // 队列数组 + final Object[] items; + + // 用于take,poll,peek和remove的索引 + int takeIndex; + + // 用于put,offer,add的索引 + int putIndex; + + /** Number of elements in the queue */ + int count; + + // 可重入锁 + final ReentrantLock lock; +``` + +## 主要方法 + +### 添加元素 + +add:添加成功返回true,否则抛出状态非法异常IllegalStateException + +```java + public boolean add(E e) { + return super.add(e); // 调用父类的add + } + // 父类的add,父类又调用Queue的offer + public boolean add(E e) { + if (offer(e)) + return true; + else + throw new IllegalStateException("Queue full"); + } +``` + +offer:元素不能为null,满了则返回false,否则加入队列,返回true + +```java + public boolean offer(E e) { + // 不能为null + checkNotNull(e); + final ReentrantLock lock = this.lock; + // 加锁 + lock.lock(); + try { + // 满了则返回false + if (count == items.length) + return false; + // 没满则加入队列,并返回true + else { + enqueue(e); + return true; + } + } finally { + lock.unlock(); + } + } + + private void enqueue(E x) { + // assert lock.getHoldCount() == 1; + // assert items[putIndex] == null; + final Object[] items = this.items; + items[putIndex] = x; + if (++putIndex == items.length) + putIndex = 0; + count++; + notEmpty.signal(); + } +``` + +put:满了则阻塞,直至有线程消费了队列中的数据才被唤醒 + +```java + public void put(E e) throws InterruptedException { + checkNotNull(e); + final ReentrantLock lock = this.lock; + lock.lockInterruptibly(); + try { + while (count == items.length) + notFull.await(); // 阻塞 + enqueue(e); + } finally { + lock.unlock(); + } + } +``` + +总结: + +- add和offer方法不会阻塞线程,put在队列满的情况下,会阻塞 +- 三个方法内部都会使用重入锁保证原子性,从而保证线程安全 + +### 删除元素 + +poll:队列长度为0,返回null;否则返回删除的元素 + +```java + public E poll() { + final ReentrantLock lock = this.lock; + lock.lock(); + try { + return (count == 0) ? null : dequeue(); + } finally { + lock.unlock(); + } + } + + private E dequeue() { + // assert lock.getHoldCount() == 1; + // assert items[takeIndex] != null; + final Object[] items = this.items; + @SuppressWarnings("unchecked") + // 获取删除的元素,以便返回 + E x = (E) items[takeIndex]; + items[takeIndex] = null; + if (++takeIndex == items.length) + takeIndex = 0; + count--; + if (itrs != null) + itrs.elementDequeued(); + notFull.signal(); // 使用notFull对象进行通知,例如put方法时队列已满,此时消费了,队列没满,就需要调用signal进行通知 + return x; + } +``` + +take:若队列为空,阻塞,直至队列不为空 + +```java + public E take() throws InterruptedException { + final ReentrantLock lock = this.lock; + lock.lockInterruptibly(); + try { + while (count == 0) + notEmpty.await(); //队列为空,阻塞当前线程,并加入到条件对象notEmpty的等待队列中,同时释放锁 + return dequeue(); + } finally { + lock.unlock(); + } + } +``` + +remove:若队列为空,则返回false;否则正常删除返回true + +```java + public boolean remove(Object o) { + if (o == null) return false; + final Object[] items = this.items; + final ReentrantLock lock = this.lock; + lock.lock(); + try { + if (count > 0) { + final int putIndex = this.putIndex; + int i = takeIndex; + do { + if (o.equals(items[i])) { + removeAt(i); + return true; + } + if (++i == items.length) + i = 0; + } while (i != putIndex); + } + return false; + } finally { + lock.unlock(); + } + } +``` + +总结: + +- poll和remove方法不会阻塞线程,take在队列为空的情况下,会阻塞 +- 三个方法都会调用notFull.signal方法通知正在等待队列满情况的阻塞线程,比如put的方法 + diff --git a/week_04/08/ArrayBlockingQueue-008.xmind b/week_04/08/ArrayBlockingQueue-008.xmind new file mode 100644 index 0000000000000000000000000000000000000000..5a589f81a3ffe43a2cf0963073c3e9e1f14820e8 GIT binary patch literal 47041 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 z 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 be}_s|0`zBU0{{T_^Oynx00=bw>+Amk7~^x% literal 0 HcmV?d00001 diff --git a/week_04/08/ConCurrentLinkedQueue-008.md b/week_04/08/ConCurrentLinkedQueue-008.md new file mode 100644 index 0000000..119669c --- /dev/null +++ b/week_04/08/ConCurrentLinkedQueue-008.md @@ -0,0 +1,110 @@ +# 读源码-ConCurrentLinkedQueue + +## 继承体系 + +​ 与ArrayBlockingQueue相比,没有阻塞 + +- 实现Serializable接口 +- 继承AbstractQueue类,队列的抽象类,提供了基本的增删功能 + +![ConcurrentLinkedQueue继承图](E:\Project\JavaStudy\week_04\08\attachment\ConcurrentLinkedQueue继承图.png) + +## 属性 + +内部类node前面都有,就不说了 + +```java + // 头节点 + private transient volatile Node head; + // 尾节点 + private transient volatile Node tail; +``` + +## 构造器 + +```java + public ConcurrentLinkedQueue() { + head = tail = new Node(null); + } +``` + +## 方法 + +offer + +```java + public boolean offer(E e) { + checkNotNull(e); + final Node newNode = new Node(e); + // 初始化p=t=tail,p被认为时真正的尾节点,tail会延迟更新 + for (Node t = tail, p = t;;) { + // q为p的下一个节点 + Node q = p.next; + // q为空,说明p是尾节点 + if (q == null) { + // 更新p.next尾新节点 + if (p.casNext(null, newNode)) { + // 其他线程对tail进行了更新,p取到的是t后面的值,如下面else中p=q + if (p != t) // hop two nodes at a time + // 说明t或tail后面还有节点,更新tail + casTail(t, newNode); + return true; + } + // Lost CAS race to another thread; re-read next + } + // p为p的next,说明p已经被删除,重新设置p的值 + else if (p == q) + p = (t != (t = tail)) ? t : head; + else + // 多线程下,尾节点有更新,p!=t,重新获取尾部 + p = (p != t && t != (t = tail)) ? t : q; + } + } +``` + +总结 + +- 定位到链表尾部,尝试添加节点 +- 尾节点有变化,则重新获取尾节点,重试 + +poll + +```java + public E poll() { + restartFromHead: + for (;;) { + for (Node h = head, p = h, q;;) { + E item = p.item; + // 如果数据项不为空,则cas更新其为null + if (item != null && p.casItem(item, null)) { + // 说明头节点有变化 + if (p != h) // hop two nodes at a time + updateHead(h, ((q = p.next) != null) ? q : p); + return item; + } + // 如果p.next为null,说明队列为空,更新h为p + else if ((q = p.next) == null) { + updateHead(h, p); + return null; + } + // 出队 + else if (p == q) + continue restartFromHead; + else + p = q; + } + } + } + + // 更新头节点 + final void updateHead(Node h, Node p) { + if (h != p && casHead(h, p)) + h.lazySetNext(h); + } +``` + +总结 + +- 定位到链表头部,尝试更新其为null,成功则出队 +- 失败或头节点有变化,则重新尝试 + diff --git a/week_04/08/ConCurrentQueue-008.xmind b/week_04/08/ConCurrentQueue-008.xmind new file mode 100644 index 0000000000000000000000000000000000000000..1c2345aca3e2656463eba91cbae80b182d94e2ab GIT binary patch literal 31822 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


g#{! zWAf0J@iN>Mqs4fq*b)O(n-b)2VbUS~Lv`^YZNhfS1$5T{4cHN1`9UbQO=KdOGyK-U3c<+g9pgY8Ls2LbbP&y*rQTnzl!ScuTsU zvhaZhk~?MEKG!h^hfnp!`$@R;GUE%u!o9T?o_$&{q)Mx*7YCe8bgxNTv}@yCmhps$ zF&t7qaVy$|8>C6^{)`Z*IKyK{VtU0r!U2;D0hR{Wfi-Q&g zqxtrtdmw022}VgZ7(5%}xV=6M){N{MR`P-z%5*e7r)rwp!@ZNPHv$KXV$?U3s%7eP z+TRyM6NcJWjk>KtMQ?qx1aI2mhmVZKZwIC7Ydnv#=1NYG90l~Hw{I*nUWBD*Mw;U! zj7=S|jP>k)F~$FFDfpw|XlX-V#F7~5g)ZLLZ8;Y=?O3Kjdg!C#--D`HZlk(V0y?JUPpLUK zext_>oi$>36S!29jjNG!qBlC>->Ovf7vG74`dxSX!&4G;5$t+q#^IFW)1_|v%{VK^ z*^VJVJ~Uk7yzB)%?}96+^G{%ytJ_hEEpqwk-f`B_yL!Jou6cwbXu$;gQYt=MMva<% zzOL-@7)YO%E|q%txAtArC~soIvXp*ae-L zr&%fXfbTk7wP|0lZhO@)FJomry*FPY^}hu~;8@VNcr`IcC0KHCyr>3=34N>-1S3B# znD3w-`%>j*fJ)DGo(4E(USInh10bAi)7b?LPU~SMn434DjpFOraM_V?b^XRAM1Fts zHzl9-`Uv&#EaWj2Ndu@gr6k6qh!G3*OMk3Due1BqpXYB%^fY}AMSgSN&Q*o>dKR_V zgh-GTj4r4V)9_FSpaGv4yj`kRhowX)-QnnIp_5z=ynrs%)zw>_^=Ku0^ljwq zMPu?R4sGSIck-$4l8mCo@f#1e$Vz_A7iz80Ub>o|#$thA$VMM|3dv!#-SkrW4vx>3 zl6~qg%UqPGw0S&S9KBC9A}sYGRUpV~0o<&Qu+o^1)H_PUEtI(qD+bnOw3MRcpZxBxIIqV&>FE}jgQ%S z{&bBYLZ#gd(l&HTNFK7gKMW3aUNmScRMTg_(*nYWCg)g0j)@dEDm_kB z{O(tl4v8#`G>@=JzI;u`Y5$11YZRN+i{cc`eybmT?Is-7fI}*f${g=Fp5jNJ&Ukrx zU1+yPm`7XWm38;bR10}qJ8YeTX~ds0ix;BRtx3-P=>BqTban9Sc}+cOb@e%E+akuO z*c%-ye#+p7pQwQ4+4@3wN>uK0U5lS&H7f7R?lO1VImdz$7~Sis@Oh9R6aQXF2DPf& z<+}4!ctt)w3ww~nZtrMa(Jx?@d~^rdmMkjJPN9(LU|*~t()HuoCO}|hnU5!!_yDyO zDIEJYI#p{vWdLSvUi@*>-TXep$*phJ@guH^0C1e`-@lTMU(MwHOFI7@w_z&gn8~QC zM%?dF#DzxXldjiq%dzFk0aokeUtsX%(Q}5!EcbXVzdA_mf8-rgWxv0<2Hl|#kJMVu>Fg}u_RVY)egck@{_1D*p>E(U z`OL>l8pk*>s^Rqv?zh(D`n(HMd~!&LLJar&!BkCYY^wcz)wW|*8*P`wW@6ShDikyO zTHJi&Nl4FH8pYFAH8=;MhuT*e7$bC?zTLQ?$7LuCP#-IP2NDgD!_Iq;gzs~ zA!w!H3E~jB=}_w-&Fv?@EDMH;0X36gtVRgO(fp=rrWFNI!|RrXeSthXd#;p%pr1+U zxKO}5FISCLA86@p|CprURpsnzw}h3fk;;|9qL)ilxjE;js5S&(g=}zwhaToTugGPw z++~kLcQOy*g`c+TW9d(kBTa^KbK#BnL@c)qX>Gez3p|=;5Ldtv+#1|Uo&`FaaPBJB8tpYsw06WeRh??X;a=j-!tZi2OTr_Ku}vJlBJw;$LBB?!McUK zC~hH(wAzdrM;H3va6tK{>KeTk0j9;)tJX`3LMCH~%7L5JCE%V07vHhRo`+l3hQrk| z)77#{i^I+}IUT?wU%y|f5FR|N&4sC)|@#+$GdkHV?T{-es+6k0AYpqTr!eXLK zMX285-@)3QzAnB}X;#+O^REk=S;4%aBpk@%fW@m}6DFmj103FVR6$C6SfsK4p{d^j8I8; z7HSR6Vqox$(L>;$c#Y_V(&V3l;%nYxqpxCo<$f~oYSb!GCYf=nr?dtKbp!DuDWl2B zDFX7|zJZK%eCrRiC?Ap-=!pW|%QJ`BOhe_F7eEd%*LAGEFVEBRu!1}iCOUC zw74g)9ZK!2yThuwF`h?laFzwHG>p+K26Cdiw2ss|ex(O$ySAZ$(X*514Hu;A1wP)7 zx$cnGYIy&`rh#HFvz(Wu2Pt(r=qA+)u> zo#FAT0IW$z#nK1Q**K|dw62Z@+z(W;J+-ZZf0gCauuT!`(lnbD@LOb_{>*{+>>VxN zp}g4%RZWs&H>evOMS1-_(VG*nND+O>E z8r1u}*&WzJ1ZVTZ!%E8vPDVOO_B2htTsu92Zc3;$=Ct-9YV6hze3SdWdXrn*hJG z6ayPm+6|`iOLIPt$K2FZ>!(%d=YqfcDK(k)3BC#w99`GPpD_Y~o(q|#`@&10jyeSA z{<_+~e*~;6f9nOUL;?NbvST6s;{Fiu*iYhl*r1{ImOYp2P=`S0b&I<^^R3AgMW`KE z9K#0I_Y%--SEj`>g(Bpo{*DD?8lf}88>109hI;lSf+&GFHtzBDy%Z!sJFBW16G8_-8YQe%t9!b-l;%N`}xD6DDk zKlvH0(z7=`8N50e=w2mGD)EkOtip8I>nl2aJv_bNj?sw5n-HSjnHnaDMrIBCrUkh> z$hfb51|lt#(NIYUi>UbS^pCK#jvUNO?{sb=GG&+ZOuZ!X)y!Brj z>G7%aeWCbtotz+$oQNM5(J79tm@5^2^SZ#U^OUv*=7U~P16?8C=3gPIdWV0F0cHAt zUeWR(8>8QbSdaNA{ah|~->exQ2}f#8g}@I-C4qZwF=Y+l1*a71DG>9{5cU7K3C37; zh@RYfu~#yiuSAD@s-~)^P^bA|-3NmF-%4rew7=(!|0$$d{WHXWW^e9hY-a3c%wXf{ z=zuxd1Q#lVB0eAJ-4e!`H5~gbY(w&O$%7J8+o)|f9GI}@5!pq$dfTcI%NrdCMrvSy zPtaPqV@^*A!w9TT6&8zC8<`())osn(M!n)L$T=FQ`u$B9g>31){o*Q(73Xy4I7PVfqa|9!SB$|zGTl1hfUAmwBQn?bhWlhDE9=8B z;ht+9FUyGFXo(6o-$t_MAi~GA9s4R)WG@>^(54)OUZBle7et`%d+%^L=H}XrOHEV# z!<>C~$jT9CUiSn$W;c&L-&Z2kW1xL^O=7sUz=hDckLCr-9nt*5*&qP&t{IXpNXh0l zr@RiUNPnrZFIR6lWot;=V025om)G@SOZ-fKZxWo~6wY(qYtU@2~ zixT+xeN`ivpC9mW*=eG&qd4F${sLcHwsHz{e9q;MdXNvZLbaX0}{JqIL*>6y`V`TIiQT@pwNa z3EhEzVje1fs}hH|ItPEgQrhb#5|GF}Im2P4tomW%H~EptG3w1-Xx@BxJ>fAbQT@%5 zfHrS9!?+5Xbrv(T5=nbhf43%8m!^Ve40FMBO{e?On~QD2abr_D(+&PPM`XEgR&`I< zQL^OR@~V4)x?5hvK@m-LeJAo7KgTga>hYc#--uDSOHe4-7@E1$B@Kz?qz068NSgHK@1$lxSbspC0Xq3bn9&DPDiS%Gwk zVdx3gw8^t#TS%1hCJV8Vtu@Ox8)%fHwC!op{e@IdRW1Gz;L*Sy>}ZRiN!ykxgzy4M zZ*tFv5=MtwGv+^_A^~#y`<(13t4tT`#LnZXwb7ont5Fppx*xqeLr)oM$&%w08{;W| z5@lAkfhC_ZP!in1!L+MQA4|8+rf{;$CnRlB@)5+u9fpdmwLzT?6?YD&U83aHA|{a? z-YiB@%|tjj4ylqP$zO0E&3wI(rDVUFhk%VkcbR98xt3TZhHp~Hr zEyrR)dx7t^V%%eGjr)V~QD#&Kx4Xh)cCT>$PoD3|M=x(SFCoxsv`IPcHMi65CwWB~ z#!op<#K}KVOBDrvd^&O@3{0$zS1c?^CJyH%6L&b!z9pSg5XNA^(4&+p!Ly?l_>-|s zUT$<}1iZ~SQ={=+`sSWL&0+WA%vlx}7thZ0)}N+hYpr#Tn=ksN{4U>-e(;+bur>f@ zWRg>ZoAUq0lH+$ZY?wW6E|u3V?648alR(2zshY&5TTrTy3(iTy!JeZS4c-M&s834U zD66ZfgX*0;j!;pKb%_5GTFR8dbdttKJMjsoCQQ>#tO!@xK8{$X3=_xS)vCr0<4RS) zA)5_})*y~fw8^ia5p0g0aNhG#Q{10qHw3r~1L~`O(M1NV*5V-1UucdUf#v_aov3s$ zMbZHyIuo066IyJwRpGxd8@zI_w-5ON?dqSV65N1fF*V5?@|rKX%Or7J%*cw|U&7tpxjB2hlI1nNVXEi5h10^e8 zx^YAXzgJpycIsN6`>Y8GS{wrB`SL%`yxtynKaLkJMlUMrd>L~X4cQDFIbK$a`n)|W zI$q5^OFyTk!ba1=IK_|8%vqlPtvda{BPL~BImbV6ZLlVtgU-3lo?AM z!3E4{-n$G`YwIX@gde9@R#yc$6C+H{QnkI*()Q=PMP{UZ+B z*RdWsTvJSL+1UI2qep#TM3YDCe_3g{9C<80mzdLQ^|V{dWx$JiWjdZ(7JKr5`rL*8 zS}Ju(KlE!*8BMQpnpNAiT21X{L<|$Y0wTr@G8W%bTg~}6VT42L9~Ix~YPnzx?g$n; z5h4^jac0At!oKuH4YpA6sWMwray*St=>2xjp96PgA5gbOao3mZra+Zj{t$qxd$V$C*gXqn)uhve$h*mPI_1(0TV zX{c8$2{#^oP!2hQqKaew*<~y1Bu^v)R#31^OvJck2^X=+`-L{Ly|ag_fack;hQ1=` zS2*>nfJIuZihFvX5CI5-J!T_Rxtu$uxVVaYQD?bxgforv@i(@No+sc5dAZ;@Qg2u0HQ=DK+ zM^9*@11ciSM#}(Ev7JuP{K1oS%q>%C&w5k^g`5lo9drlv@U7}@m@3Pdkg zU0Vr?l^IM8LWwO24`%a~(ie)|7_Agx%*f6paRK^{I#gu1_jWQW;ecieh8TKgiaxJ& zUI|cRK2gEWN~N6L;@lquo`c!0jAPY@^*;3t&AB@sbGIWD=E?_;9cwt)rRWcVSr!m} zEbK{abl8pYVCMu*cP2!Dqv5Z8pLyw$m190rjZGt`=R&Ydsu~(ZKj}Zvt7~v=N9f6M zqHJl~^5DJp7mgQi>?#tkviTX`{m1HF2g=JOLHuxoQTTc!tr7p~+xvXi^3%*UzReAT zNBT3bEMDHz6`Rk;m$L7L#^#Q8Pl}v>ypQpUa@TkF!?J-TdTv9cBk<`^r9ZqYuk7l1 ztLJ&a#Mk-*OVm8l%rc8Ht%iHwthtw=Q8P>B9#lC79Cf7+5=-iN9!eVy;tpc-eNh1Gdh03lI*hxI-E=bUb*2;Vd$joo% zojvq&vBozKR{i;XSjm^~-2e{ujKF##%+U5$h9Q5er&zyo57~WKk2pIeC?)s(ACsas zF>He9zsXSjpZ#w-Wb9yVVeb0>aF7}enW;b0%ktB-)RS`b8h~nze}ANDL0z5z(GL$n zpE?9(n@h>Vsl&-)WJQUw3!A0g!+&y3zR<8$8;BVR$aHn#|B)|HFbt6Ye?{wm&HgL@ zX5{}})c#wm`oHw8{~P%Kt#JMSBK|$7|JnZmbo=i*{!8!rKWq6<_V+)vsM`Mr7yM7? zf0DKTf$sc+{&z6(Uo7%Jk^dQZ{0~yz^?#86!jS(2{%7a>575NtpSS;KS1HLt{tInD SK%o9zR-hmtbN^ld0r_8*Swas0 literal 0 HcmV?d00001 diff --git a/week_04/08/ConcurrentHashMap-008.md b/week_04/08/ConcurrentHashMap-008.md index 92b2a4e..b97b38d 100644 --- a/week_04/08/ConcurrentHashMap-008.md +++ b/week_04/08/ConcurrentHashMap-008.md @@ -1,8 +1,40 @@ # 读源码-ConcurrentHashMap +## 锁 + +## synchronized + +优化后现有三种方式,分别是偏向锁,轻量级锁,重量级锁。 + +1)偏向锁,同一段代码一致被一个线程访问,让这个线程自动获取锁,降低代价 + +2)轻量级锁,当锁为偏向锁时,被另一个线程访问,锁升级为轻量级锁。这个线程通过自旋方式访问 + +3)重量级锁,当锁为轻量级锁时,自旋一定次数还没有获取到锁,则阻塞,转为重量级锁 + +### CAS乐观锁 + +对于同一数据的并发操作,不断尝试 + +### volatile(关键字) + +1)可见性 + +2)有序性 + +### 分段锁 + +分段锁,细化了锁的粒度。分段加锁,最终将所有分段数据汇总 + +### Reenactment + +可重入锁,可多次加锁。避免死锁 + ## 源码分析 -putVal(K key, V value, boolean onlyIfAbsent)方法:插入元素 +### 插入元素 + +putVal(K key, V value, boolean onlyIfAbsent)方法 ```java final V putVal(K key, V value, boolean onlyIfAbsent) { @@ -102,3 +134,321 @@ putVal(K key, V value, boolean onlyIfAbsent)方法:插入元素 8)如果元素不存在,则map元素个数+1,并检查扩容 +### 初始化数组 + +```java + private final Node[] initTable() { + Node[] tab; int sc; + while ((tab = table) == null || tab.length == 0) { + // 其他线程正在进行初始化,让出线程 + if ((sc = sizeCtl) < 0) + Thread.yield(); // lost initialization race; just spin + // 若成功将sizectl变为-1,表示该线程初始化 + else if (U.compareAndSwapInt(this, SIZECTL, sc, -1)) { + try { + // 防止ABA问题? + if ((tab = table) == null || tab.length == 0) { + int n = (sc > 0) ? sc : DEFAULT_CAPACITY; + @SuppressWarnings("unchecked") + Node[] nt = (Node[])new Node[n]; + table = tab = nt; + sc = n - (n >>> 2); + } + } finally { + // 初始化成功,将下次扩容阈值改为0.75倍容量 + // sizectl存储的是扩容门槛,为啥存它 + sizeCtl = sc; + } + break; + } + } + return tab; + } +``` + +1)cas保证只有一个线程能初始化 + +2)sizectl存储的是下一次的扩容门槛,为啥存它 + +3)扩容阈值为容量的0.75倍 + +### 判断是否需要扩容 + +```java + private final void addCount(long x, int check) { + CounterCell[] as; long b, s; + // 先更新baseCount,失败则分段更新 + // 1.计数器不为空 + // 2.更新baseCount失败 + if ((as = counterCells) != null || + !U.compareAndSwapLong(this, BASECOUNT, b = baseCount, s = b + x)) { + CounterCell a; long v; int m; + boolean uncontended = true; + if (as == null || (m = as.length - 1) < 0 || + (a = as[ThreadLocalRandom.getProbe() & m]) == null || + !(uncontended = + U.compareAndSwapLong(a, CELLVALUE, v = a.value, v + x))) { + // 强制增加数量 + fullAddCount(x, uncontended); + return; + } + if (check <= 1) + return; + s = sumCount(); + } + if (check >= 0) { + Node[] tab, nt; int n, sc; + // s达到扩容阈值,进行扩容 + while (s >= (long)(sc = sizeCtl) && (tab = table) != null && + (n = tab.length) < MAXIMUM_CAPACITY) { + // 扩容邮戳 + int rs = resizeStamp(n); + // sc小于0,说明正在扩容 + if (sc < 0) { + if ((sc >>> RESIZE_STAMP_SHIFT) != rs || sc == rs + 1 || + sc == rs + MAX_RESIZERS || (nt = nextTable) == null || + transferIndex <= 0) + // 扩容完成,推出循环 + break; + // 扩容未完成,当前元素加入迁移元素 + if (U.compareAndSwapInt(this, SIZECTL, sc, sc + 1)) + transfer(tab, nt); + } + else if (U.compareAndSwapInt(this, SIZECTL, sc, + (rs << RESIZE_STAMP_SHIFT) + 2)) + transfer(tab, null); + s = sumCount(); + } + } + } +``` + +### 协助迁移 + +线程添加元素时发现正在扩容且所在桶的元素已经迁移完毕后,协助迁移 + +```java + + final Node[] helpTransfer(Node[] tab, Node f) { + Node[] nextTab; int sc; + // 如果桶数组不为空,且首元素为ForwardingNode,nextTab不为空 + // 说明当前桶已迁移完毕 + if (tab != null && (f instanceof ForwardingNode) && + (nextTab = ((ForwardingNode)f).nextTable) != null) { + int rs = resizeStamp(tab.length); + while (nextTab == nextTable && table == tab && + (sc = sizeCtl) < 0) { + // sc小于0,说明正在迁移 + if ((sc >>> RESIZE_STAMP_SHIFT) != rs || sc == rs + 1 || + sc == rs + MAX_RESIZERS || transferIndex <= 0) + break; + if (U.compareAndSwapInt(this, SIZECTL, sc, sc + 1)) { + transfer(tab, nextTab); + break; + } + } + return nextTab; + } + return table; +``` + +### 迁移元素 + +扩容时容量变为两倍,并将部分元素迁移至其他桶 + +```java + private final void transfer(Node[] tab, Node[] nextTab) { + int n = tab.length, stride; + if ((stride = (NCPU > 1) ? (n >>> 3) / NCPU : n) < MIN_TRANSFER_STRIDE) + stride = MIN_TRANSFER_STRIDE; // subdivide range + if (nextTab == null) { // initiating + try { + @SuppressWarnings("unchecked") + Node[] nt = (Node[])new Node[n << 1];// n<<1,两倍 + nextTab = nt; + } catch (Throwable ex) { // try to cope with OOME + sizeCtl = Integer.MAX_VALUE; + return; + } + nextTable = nextTab; + transferIndex = n; + } + int nextn = nextTab.length; + // 新建ForwardingNode节点,并将心痛nextTab放入其中 + ForwardingNode fwd = new ForwardingNode(nextTab); + boolean advance = true; + boolean finishing = false; // to ensure sweep before committing nextTab + for (int i = 0, bound = 0;;) { + Node f; int fh; + while (advance) { + int nextIndex, nextBound; + if (--i >= bound || finishing) + advance = false; + else if ((nextIndex = transferIndex) <= 0) { + i = -1; + advance = false; + } + else if (U.compareAndSwapInt + (this, TRANSFERINDEX, nextIndex, + nextBound = (nextIndex > stride ? + nextIndex - stride : 0))) { + bound = nextBound; + i = nextIndex - 1; + advance = false; + } + } + if (i < 0 || i >= n || i + n >= nextn) { + int sc; + if (finishing) { + nextTable = null; + table = nextTab; + sizeCtl = (n << 1) - (n >>> 1); + return; + } + if (U.compareAndSwapInt(this, SIZECTL, sc = sizeCtl, sc - 1)) { + if ((sc - 2) != resizeStamp(n) << RESIZE_STAMP_SHIFT) + return; + finishing = advance = true; + i = n; // recheck before commit + } + } + else if ((f = tabAt(tab, i)) == null) + advance = casTabAt(tab, i, null, fwd); + else if ((fh = f.hash) == MOVED) + advance = true; // already processed + else { + synchronized (f) { + if (tabAt(tab, i) == f) { + Node ln, hn; + if (fh >= 0) { + int runBit = fh & n; + Node lastRun = f; + for (Node p = f.next; p != null; p = p.next) { + int b = p.hash & n; + if (b != runBit) { + runBit = b; + lastRun = p; + } + } + if (runBit == 0) { + ln = lastRun; + hn = null; + } + else { + hn = lastRun; + ln = null; + } + for (Node p = f; p != lastRun; p = p.next) { + int ph = p.hash; K pk = p.key; V pv = p.val; + if ((ph & n) == 0) + ln = new Node(ph, pk, pv, ln); + else + hn = new Node(ph, pk, pv, hn); + } + setTabAt(nextTab, i, ln); + setTabAt(nextTab, i + n, hn); + setTabAt(tab, i, fwd); + advance = true; + } + else if (f instanceof TreeBin) { + TreeBin t = (TreeBin)f; + TreeNode lo = null, loTail = null; + TreeNode hi = null, hiTail = null; + int lc = 0, hc = 0; + for (Node e = t.first; e != null; e = e.next) { + int h = e.hash; + TreeNode p = new TreeNode + (h, e.key, e.val, null, null); + if ((h & n) == 0) { + if ((p.prev = loTail) == null) + lo = p; + else + loTail.next = p; + loTail = p; + ++lc; + } + else { + if ((p.prev = hiTail) == null) + hi = p; + else + hiTail.next = p; + hiTail = p; + ++hc; + } + } + ln = (lc <= UNTREEIFY_THRESHOLD) ? untreeify(lo) : + (hc != 0) ? new TreeBin(lo) : t; + hn = (hc <= UNTREEIFY_THRESHOLD) ? untreeify(hi) : + (lc != 0) ? new TreeBin(hi) : t; + setTabAt(nextTab, i, ln); + setTabAt(nextTab, i + n, hn); + setTabAt(tab, i, fwd); + advance = true; + } + } + } + } + } + } +``` + +1)新桶数据时旧桶的2倍 + +2)迁移元素先从靠后的桶开始 + +3)迁移完成的桶里放一个ForwardingNode类型元素,标志该桶迁移完毕 + +4)迁移时根据hash&n是否等于0分为两个链表或树 + +5)低位链表存在原来的位置 + +6)高位链表存在原来位置+n的位置 + +7)迁移元素会锁住当前桶,分段锁 + +### 删除元素 + +与put类似 + +### 获取元素 + +```java + public V get(Object key) { + Node[] tab; Node e, p; int n, eh; K ek; + // 获取hash + int h = spread(key.hashCode()); + if ((tab = table) != null && (n = tab.length) > 0 && + (e = tabAt(tab, (n - 1) & h)) != null) { + // 第一个就是,则返回 + if ((eh = e.hash) == h) { + if ((ek = e.key) == key || (ek != null && key.equals(ek))) + return e.val; + } + // eh小于0,说明正在扩容 + // 使用find + else if (eh < 0) + return (p = e.find(h, key)) != null ? p.val : null; + // 遍历链表寻找 + while ((e = e.next) != null) { + if (e.hash == h && + ((ek = e.key) == key || (ek != null && key.equals(ek)))) + return e.val; + } + } + return null; + } +``` + +1)hash到元素所在的桶 + +2)如果桶中第一个元素就是该找的元素,直接返回; + +3)如果是树或者正在迁移元素,则调用各自Node子类的find()方法寻找元素; + +4)如果是链表,遍历整个链表寻找元素; + +5)获取元素没有加锁; + + + +ConcurrentHashMap设计知识点繁多,过程复杂,须理清流程,反复调试,消化吸收。 \ No newline at end of file diff --git a/week_04/08/ConcurrentHashMap-008.xmind b/week_04/08/ConcurrentHashMap-008.xmind index ccffbe9b2cdd9012c6d7a5f423665d709caa0904..ea9cbc8225a5e9e81221e82d5e3d258a09b68ead 100644 GIT binary patch delta 29675 zcmV(!K;^%%!UFpD0S!<~0|W{H00000@JS_+4JHooNhMG`7QJtwYybdLg^@uYf4uiM zoLl<`973W*Ne~Co+vq21biqVtM07?H-RL!pAtFfhE_z0eQ z=lh)JyzBi3-X9*zx|g-r+IwHuXJ6%W-TS(I1Zk^~kSX!FH#>@NRGaHa_Q@V{3gdSdbxgx**y zJo?udivnPoPT}9PR7feqAI)FBVEWe>0TEE<_P=NSw8K-3%T3SjWB<3X@DH~CUWwq5 zfC9kX^H|UK->S1vAKv@de@buP<`NPCqn!hIWBx7dd$z29uSDrudkfx!8q`_6|1V*2 zV2S(>tp9=aKd}A>*8jlzA6Wkb>wjSV53K)z_5X9QD4FnEOu2gJxlfZgr7?XPq{-)I z8{dk1-JKTqj)q3Xge9DysZ&}=*UEFOtjL;QOIB7wQUc$Ktq`?Ef1j&g;Gu zsB}Qgh2e+BvSp4eIB+|t{YdXZ8zt^zv3cC-PTva#yzn@{P21yN~8m5q<{L$z=&Ab?uFX zeYTKMbc^-2Oeh;>e|uIbj^=w;w%a?=s2GnBp)06+?wzCM%lsVcMh_4(Rj4Sz=Dy!X zwisaZG+M)%HMjK=ZpPr-h&jm0D_TfO9A zU^M2JIn4tsW67_W81Wi=YiYICD8O|v4Gr}y%DltX(l9}luXI=jhrVaKVKP#T3j}BU zw?YJI1%;lz<}3!wenglS&LxqAM{r(^+~>jlU}Q^ef7iNCG7-MOy>Cw~tOmPLV3zIS z#X={aQ^2Y7!~j8f-uo}^n30jZ^{vbNF1IRSr`2bM6p1w9)ubex`EJ3&vT~ClCjl2N z8SfNDcJ?B*d2HkoLIKze0Hh~FEU?I{onSiFSD{hDg*T+LbFH;li$M*u_VH-7aj@Xt zUIhxfe*wpgQcgC$x^kCwFhKqxXLzWj0Vr9McK}EKSA!}A&ll#B6|nFVRYx{8w^QXC zFzOI>A)4A|>65BgrjTQi(dw75DTZ=I+q2?BDI2X{3Z>S&2P2cu8h4(&=^&usQ~d#b zQHGSe>wcVPeD#J0z?(eH(2z_Dq%SC2f}SZlf24X6nSV@F?TUMJT;An&%6ktuxh?j{ z7_I{KuccMrZ+q=iFdh*tEUUQJ{&No6D>G6o{qSM$-p(T)enDQJ#dpgO&SjiRcb@onoXYZ1PD8!RK+8NtMsQWAZ5i;P ze_y@k(U+g^pm-->`aBya)s*8VFMx<)?-t<^^@kHF`jXeVIRnj1j7Q$DnA!J>hA2<8ObBzbFCeA5 z2MTBSvXIUIHu$NZkrsme?DD+xvOKv3mTqLKHM0C0l#-Bu;n--W zK_qkekC&lUzVuSI0xv)FeV>NDDhs(6FkPkMC#rMuh5t)kTBaaffd6bVf)iQ3`n82D zdra84{pSwA!1x4W0wyy(2Li1P%ElyBC*kX+9^po?p^EPQ3{Ak%Vx-}JrHAX8-xd<)55u@)K^A$ugq6UYHkQtCnXS! zJ(`^K5@oUPL1i(+$_rcKYf}o9#-3GsyCmmXGoC=Q+04OnS803g=-TGOLavn5MRade z7F%FeLG}8B@Dk^4zW+w%W}?->@%(ob7HPy4<#JVQj?(Fe(Y0Eb%*h zjIvR4hFD9_tEh$bZ1%ZLR?3$roF#5vvdu5{$hCdU%IV8yb+M)V|L7jcIBr2d5s{?p zK}#^uLjsg4v{Oibh!`}Of0yv73nR*0$<^>M4J(92oj?~tho_<8Co+&HSuM}c{?s=H zjDjX5i>o%8nFVaeem#j<(hfs2jT|9pYu`X|Z14C<FI+0gFA~1 zjvOqZv=fhfetY!ofA2yB#9Kwb7Q=Cj50m z_c^ilBqYnZxNNTif6!L?CwU%d;pU`M*@i^lf&)Bf-o^i8^7mO40O22OJYR6)XoQ0^ zZ^VDLA+UH0qV~7kqcpl||Bqg8aO7o$IjHhB3w4Njg6_+Ibg9LO44;=vL^R{L zOdMg(C)ite_bPfEeVMo=-0;tFXK>&s&U1*$Gjn2Ke;g`${GT~Qbhur6LJyrWB-F?6<4^$SBDtUmTb7B%n!2fLXPDlYj z()!qks0^omWtJJ)KfDMhY0qJd!Vf&k@b8FTz@PtMIfD~<#F<&$5R9WqdjEjWLJ7hN zrXYzlBE!*0e}`MCrvD(R{Q$?FitE^O5$|()>{J~7ne#ppx2sj!yLZ0;ILYsakNuaJ z`BM=Y02)hl4Cyk`_=NzQTDxQy&2pVLbmoClavJUZj)IQM_5T~@7N6qYk)s-jWR<(03c$Y`GlQlamjEEgsa z;-~2mf8>v2obIe~CH?&LZ&Pq2)OMy5xJo+$f1A29=bdNdZIjYdzw`Rs z-89Y$O@qA{6<#NlqPC|%;rN&4Mpg8{j@g)=hjGPF{9IAcxyNv_+FJAeXnoVWxR#gn zo`~I9b8_@rs*prC}XpAHM~#$hCAdm>L1d3X=^d4tG-lk;AH ze>9r6p1(4#TQr_i`8pkv7*BqHow7kt1x3tpg+)BHDu4Rkb-c@JWQPh3jB6YM(?Dl}!oEvn< ztov?IRohx$_!R*=bI}vR-#C9xCZt!6f4E%ycsTlJD261+E}YJk6diSX9rcLV05GZ$ zM@i-67xJ5bC(PD~2X!q3=Xrr^Bs9{dVp8r@J$^1U)ArJl%)Uku)m*zfDp~vy7xh)K zTv5C`)2N?T6bh66Ih@jG>J`aqtA0^CN>}(O1GC&M{8zN$T_?rd-4e(9O9&~7e~May zdS;$v?88-ccy=~5>xaKXn-*#0#(h2|6P2kGC-$=dASb8$@OQK6xLs`eEgg7~=@{3j zNO3Vo=Tt(+mnUkG5dyR})K#C0j26smo+jJw@L86~Dy)0$vK&6vU3&!G2U-8Z5vo^C zSwp9_uJ0yREKk`uxjN2e<_76`e+%)3cniH+PE)abW*{^449PFP5igVjwip>7P=n(`KH)344k7-|E*Sl@M!4SA~a$LzOk=i z*xQ*oqj8fwXa?*P;E$i5mV9pXJb+sLsautQ>tl28N4#;af_O9RT0ib(_u)1QRK>ZuJj>ze=e>Yy~rjhQb9P5J{Y!Fk%3 zLaMzg_rNNd3kYIZzfMute?}WY*E-3<^^ANKXP~v7)3II(XX~q2e*sxtsBtJ}hrexi z4)RcXB;;Q0dY6eXbREuagGXpC`gEOCEGmXiWMD8mi>+mGqT4$md(hT*wML^YC)k^L`2!jgGJ`c5cgh|1dHA^$M^zvx7S z-{2FG%LuVlA-dj)ViMsmMIFPlyK_cXk;qyXNSAQ5vp#QFl+P=I?|^x30LczT5a zrZOy@3g@vYO}1Tg>Ov5KB1+~J*$h*S;8~1H$;tN&$``o&1oCCyUdCl12OWoCoH;A! z;1bZA@+}vDf1f8P5OpfJm)*qjGNd{z$Mnuwd}0?_GuSj(Mf(+;qYEq1JuvfLzoI-s zXk#vC?0G^z{~Sm+WP^vq$YW|Fga|0s$G9NDP95Td)%E+$8;Nmw@@HLj8{BT^<5m8b zJY}X&hF9S9pA+GH>>yrT39oiwjLYC6G~9nh&hhx)f1(^*zt2e~K0NyQ)iS^6ixJah zfbIcFXVQJ5SX??LJ4#t)SUn2^$ARZ(dPyx^lDVR`p!tG=g2})(r`Rukk4G_|UQGEO z2O6_ma<#F;8XHm``j?+(hah_qe-kB<6X6zd@_$pfFRB1APDIo8Sd_}otW zgzy%Mo;I8LPaXLO@XWBvPv_%&PY(k^6lm7#WAPU z%<+32GQBK>1?g~*P6G$^c}IuZU(uxw#{x*0f8=m5)SDsC2p`dfkJj%c-(LZzm_sp! z#e`*Gj(I-plI=A+X>yqep4|XryLE4$D4p!4Q}0l3>B&q?^situ|FgrSELvV}%5cSe zPQcy2UIj@6xsn1)B^(oUb(%S27Ow8njaQUTh0ZtJ#L8Uk1g8bJNF&gy-U!HT;obRj^fvHlCa{fXDw_W7 zUfU|0n*A}B@(Gy|8AFH0e502&YV=fitG6M~__dPn!I=g+>ITNwhWLRVJEklHd2YBy zml>r9wlvm@tlk@c3Lr`3nEK1vh>{fme_=WC@ehpa0!o#E6G_gD3HjQYQq@kj1(E)j zTE~I)tR zoI}Khcq*Z6rB$Mj1k97TDw?r%=jQToNgr2vx|{FVHNB)#At_)%^EvX7RJ>(qf4{j0 zsyKd*7xkWXdqg4sIK0tEJ-OHg#+n_7jd(Ph8+_i;J?5V`H|OuWmz~|)aGau1sTe0F z#2YJ5RM+}G$Mwoq8~M9-Stok$4(J=~Pw6fUu%lmzyPuNIdP1ML@N3cW{AWbA)z&Y0 zwUlx3ReBAT>`3UftjPD@wv)J~e-_2(1X9$^SI&5=K!?{I!gjTkdmP%D)-XPRRa?wr zt*Sz~_b1t=QPw(K)uY_y3I5XyAWSM?Wy2U>2u`z6Okh&eV(5#dg7yM!?}_3SqXC8B zV|d}B*pzftpv301SpHmY0ld_-TU_|ClLDQ-AIMI97<2#c)NzaSy(wUHf2%@gmX*Eh zMo&-<@_Ej0!gzI!?WUf0(Eny=dnk!dNM`!vPknF7a9*lqEKwqjs}*2W#|j*<&X>}W zT6hvi?qvD~CVrBTx&N?C)O^mb)?q>U+0FU$)XTnZgs*-)d(1m#YSiNn z#TE}n+h56`Ov@*Pjm$yne++YTeU)D}{l#3$$4;OD>{W1nvN1@p)-y(7F63mwl?HLp z8LO>$*wd8lFVrM**6#+B>ixhllw#SKr+RVL;(kNr(!1sa?VGcJB0cRaTKuw_(6B3& zr#f*J&ojdQB5bDkLAY8n4V~X$+n2lxT|I*gB?rQusI;1XQKX-Yf01C$0eda+JfJmf z{3GF-S#ERH{%Al+;?qrg`N|?Qj5{L0)FrgJMSi8*z5V1=X*z|uX)sb71x!muXeZEi z&%b`?Tum+z7Oi|9aL7A_@!nbB9L0qaf)+!tMGT+INZp`(Y* z*#R}G!e@-}NK(U#e+h4TLHh9+5x$|#4pm6i9S9)fRB2;J51XdrfAY(|*Ti>y#g~h~ z7pH=d{Rz4uALj0XbojxuCdLdqPoVQCd+NCL-jqWuKi|0dY4DF`VCeuiP*$ogNs=_V zKSsVnY<|;Rsy2Cop&@kvv3_%&I)^EIHHw7ssX2~*y^K9ue@(~_{}UGwWqC6q|ALG3 zH(ZmT24-B4jbh;H8KHuvFCAXo>k)=-p+qlp~msM6om9r1;*z z_eD;WbTj)ee-|Q|(e zAPccWmRT|vQucF20jcNDgd$ti8hsoft@Y6TfEuq4b*o{gV1-2yO?p@+vGF$|U^eIcwl;*=e`)l^|5e!hBP9XNW;2rd+Uj#cr`s=_ z`pK|^Ww&yfKWNkW)NnLhz*N)8gW8T!Q|M^Oa2zhEim|{|_sjVPqM%DKk&Bf)ym_EJ z%LJH}k$Bn3y7ApRMalRC?us^v{xTUz3oX$zzzlc}c%*S@K2fiXVY@%LOEZ}LP$;EGF?_G~cwBWk5R#xz)DU zv<9c-uWYJze$)sR$pWu;^b+S-f1W-g-(UxJb{_r2M3l_jYbFn(r(&UoiFOM)y1+Lo ze8?s6xSh6{YD}UE+hM;lz@-oehU|6f!E<}0@esE6?zLU=RXzFDw^Ai+*~DrY2)%vB zr4`?ZR6z8@$GGF?vwfc@1qL-J)@gfE(i?i;Wj4WDsMlFR+xTR!Eji@4e@vEhatHTu z_1yzzMgg~r^<0ZmT7AO@(OHGe1RKaIT`$fOXY*py!sv4veU*W*`}u(>i*4YB6Kq>H z2AjRjcm?{#$l6w<8Xm5Z_od@nBd;jWC|pB1+-Z@I*F$^r{9@+&^6Oq6fN0xEJIS%_ zRZHawB;R6cQKKyxdIGt7e|!XK(E{AUZzb_`7&Q{yAAM@Vkr<%x#q9>~-1W+4Iw6xi z2yFKarX5#TF=EOLTTjzFXvpwpdYwtji@?SsP2@=imHG{{Ts-@V#jorQuV6|4XdF~je|^47fS((nlgTg- z^lWxAcEXur&ikVsrq;_y7I;CdoqOldz3(g2(Gsn^S~k<}>MzTtL}dM*-gp5}4~eOg zu%0hqM4YQ#w0n*xxTKQ3gc-xMQ?AFE-#3y(YnNm^#?qof9%fx{pW3`Gn7BeDh*dOs zR-SAw$N@@+>+C@mf1y6kLd8)GseXG>@lMxz>e8+wLVDWIzFGu5bE|qT&-HApd#hq& zbTQ^ymX%ALzN1V1U4U$X=&$jq1Iu?hwW1~KvmCDi`>A=>x5FN_-7Qq?ojfNwCv@j% z14UC)tDd12%`L|EX*Mt#!>E_tK?;=wXEq3X}{f9)-v{k0dwZZ^G+yYy45^`|2+LPQH%w6{mfO5C2&{k6+2XD zXJ@C4P7v+FCss8r`o4&j8>@#V2lYB}q4b$g>;-B+V|scA6YNE3`&2{%g&8`x*zV&( z&Xgy-!D)Wrv>CBbIk*EoIX;SVKYF_-ywu8KVt zMRkE`GVCGgMc8mW+$vyaBInT|^F%_go?;jnS{ppXx$^K>4X3FxD zpgEbbV8?ea0)niV$+Rx&lza)}<1+cM?(Uo-(uQY`hR9JSpfb>dB3c?w+gb>_ZLNlQ zXCEJLf8z9}w6(Y2ISlVMW4NbwoO3t)W@;A0Gg|(5Ip(^p(AuQcCStl2Bmr$WW0-5W zshobca)_-EXExb_W68FTrf)K@gEwxDr7l)Zp0@P4y3AE;Jk#+r#i9Pe>`j;3YTE1d zEST`Ag++jYZsbc16VF%^S=Gf8N%Y^~HpB=9XUmS;h~+Svd*-_bAYB z(pl~2Q!)c+e4crSCUffeXI@}`^@M4j?G!Z~6hp&>{t*+?W&+T;ylQuEkit=ZU#pJQ zH7YKhuz=?$1M+f7b?M%pbUvnuJA)>c@9cQd?CMdQHz4k5*|RG>H;K?L;|B=FOPZd_ zf0r@ZJfR3XCOAnQskFQr9ZB#My=BZ=WbdD$d|oNibbOMbxANdVin30qNt7eiLK10x zla<-t3|yCauqC%Xn(lrtk2fobk((Woi!VmKn(UHg44gf$ONHJxLK;V z_j^Dul3sb7bt|;T?hz-B7Np{;&YE+pf3<~l!B{S)cM)Q3-Pe9s${W|FVQSkC^XG5q zM?FQJ%>RMde_Z?=WCW-QG!v`|Ftd@nLh0m|G#xsyFj-oNyEr`;G7!{s;=VFTJ~Od* zL9M6P_f$ZIZ|f2u?z7>~cvzku7~yrx9{i~(piIxF7!Gg$W%f-Cni`GnY0Z!^fBeul zFccSz9Eb>yT@#;BwKuX5+>YnvA=8kjp7YzN^sklEs%I*B(&;=G{A;2)1^8V9kQq~hnBF><9Ij^T-PfWcT<=C3Yt^4=bC9AhbQ1Z+}1yfRq z^ri2rMN4SeY4hq6R!qbtY#Dp{Q-ntA`-Yn^7cYVpLf9Cq;H2E;i_K$Ve;k8__{s-r z?{kQp%}Ti5voYak6J8PnCxJS4^NK^;BL?(c$>daKUp!*Yhj(3{1`T6YJAM*v%w-sm zZQn3?JK_}quLwSl=8r$2{6L9!^->+0rl~5GA<#sze#w+YZrjhgrVy&Ek&Tiw9#XXz zIL%R)f0No`-83-M*j_;>e}hjGu87akL4qrktM0&`;L)&96DEpO3mGJV^4J=y7L0di z`ZjsW$zla5WcXm|{taHXR>2{vyPj`M-E;4Z*1O$SbADklBksV`8^!Qx$>kA_%kzGY zP;iuXHL7PGw@@()oV=Bvi}&Om-{;a^vh5#31JdJ4h6z~Dm5053e}l)^uJ>$hz5W3~ z^6(;{Vn!s>55sVc@YNvS9X+&&F!yBIEqKx7M*Du3J{izJ>r}o;L#i&tGG1LGZ8klD zeN3XDzht27pq;4d0i;4ZJ@i!T7wW4XeE@yhq8FV5IRRx++FSD8S>KHh#2WeV%@2+u z-!?1J`j#|fB}rUIf8dFdfOpd~Pce+6N)6th>R&}n`xKSjg%_2$C$$Y_gT|kT8+2v; zuuxV(@JQ38S94KtC1^f5Oq|L}CpC*BOhDg{YpS zBeRg*aBAcHC7V|IeE`HZu8GiEAlXDzuGaz8t{JV$d|2is;7OK6h zTla@$Pno)Fe^nFh`6QB?qT9I6Ae)f7NQb53h2)gzKTt}Bm|6z&iNex*`_pRV=(VO+ zxz+FA;{R^8;Wrd5KTgf`H(h{Dc9mPt^jy8BL2e^W>R-+4t=5RyPlz8+d;+0Msn^v$ zE5-qRO=c(Ey_>8Ib-J3Jq*qG?W{vy|l|98{?qrf{e=(>zjD@cGTutn3?Cr`#6R}V> z;!DZfdrUq(=5xAXJ;qMn4$CY0^yl^1cFg@9M9P8_s zS;%4|f7Dh8Z3?3z(`_Kzv0i{~KAW!)0JD0GsbjFCkW>3pY*vZ^-6c;h6uFBj9Z+m@ z5lWE%HkJZ0^wu^C$+<84+FBJ7imyLe^zGt$O{vo+=A8o5h5gcbF^~H)N{7@7FSG*x z#QqgaKivRivsF8PNhMgv{+7dH9=rp1Ty}RXe-pwEO2DW8Ao@pYW$jIDo;72l7MA?e zpi`#%1|_n;$ust$iu@dk)two!$PcY9T?~FH(cEHMmXRvI6 z-{m~;bwE9r{AumNW6^Jt39>p3*bqAztiOY|dxc_oi62yM+tCu%=~vVG*APq8B2!~sZ3g2+ITs${n zG(_AO7l=DsX-~PWUSwO(1O>M?%Qz09f3lcLrwWx4MsJNbzEV`(QKAw5KusM)^k9VM zP?Y70DVe-y2v>ZIlgGJl_>V?N*QaC+s;?*5SgrS+)CyD!vp+dj6Vm*coZj?i;Sbs8 znvh&3$q-KW`Q}H5UN*5b;YZ;lgAVVcVtx(MY+Lz=DOO%-9bxQe2SHL0yHE2Se=T=A zD%OI2N!&Mp+o^5?=uo*} zmaRdt5|%%mG=iFI9)HPpV47u9e+$j8PbhH9-)(kuDbQR@1n1LyC;@f8ZBeF`vzz+0 zQQ5#n#wk`+wRvT46mwH_J9Hp~@&gFZ{OhX-I&Yt^C%mbz-WcC)cYYP-r>pC3gSDbd z8||un;ruFYV4=~xRcrD7c(Qb>abo0VJ2XUr9V>0pK>|#bMCPRXc8{0ye-U( ze)|3xU>`%Vwnp=MWe-<78itnobYFK(x7<}`Q14p)vs+e!cqY}B6(bGYctg^ZE_((tEFKf9S-4P5X0$b_XpCkfG;<7t{3!S_62ITV&6oPGrgjYA5?a z+1;F+?d#KZGh^t;)bNKAu;LZRD^+y{oT4V4cE+!Cs|Kd)m0IT;$0}NQOThRy7Sjc~ zu(92;wnlNtYrnU=SmlnJrUMcJO4pLNXOA|we6~d}{TGo})q);ve~!IUfKJv%vtNhh zrakAovyE~@Cbf_Xe*|<~-{V)J&~7%R{skDW#=lSFe|U77ff*xF4m|fWg4?-xM_)oF zr05nn^`#gY$(~P(c}{c(R)D!ng)u3T6SAsCE@fVJ8FfbQ#H_R|?8vZ3<9cZOUl~{i z*V1lot`fxNW7Npce|=X8bC%w;21|3D8%C%}&)0MfAYLDD%|yT6ba;&c2z5{(Yi%OF z%QH$ydjjiEYcXC^nhSsU#8pTKxLT_Isrqhp_`{~69myjM7Uy}j?(MTG{dJkYYUdY2 z5qsxJam6lMtksQy_>^%oLb^-H%`OKv$e=mHPd+?7xHYb~l`3Su1 zCzVeikN&zgB|+2Dr249D3!n90XkN)`oZWdDQn57-|IM82*U95YD}#^&$-!Z(D`fW7 zrz3G&W|R9+Gr2!YjBxy1B*w zLA!l;TX|R4e-8(vvH4Sg2~v8jPS^~ymailtW@p6uYIlKu^V5$XWhLJIU%?2PiMe&^ zX{g>w-K2xF6k03z9n)may;kzoYQKUxs42fJAK;gi|4<4DUCiA%dmxFC)H9Hj8O$FQ zZlZu3b5l=e{~-_)s;tBJb5|yD7en&4RX(aUlg=9se<(oolyV;u$GQwMe5wgoKM8w< z7*623?J>1jk#o}v#+~qtXpzOrP48AASLOqT^abWIs`0Xqn+9vY-}@-){#0|MTE zc#?^L7)1!bF>N*Nwe{nGBm`W;ro@?dWZ^u<+h~d`ctgwjF z=Wsy`r_{FB$?y8SEPd$y)WOvL57QaFKQ@;BkQ&L+%DrQa4+`UoQeMC7_WL#765z8u z(&v%P4!wJ!(!OVOe83NyqLs2UCu>!82ue~JE;=V!1vW?KDAi`5xJ+_>JqG8mEu@h@fE z_-5L>$<3x2&PxUo4!!ro5v#?8J-o9yPEA@xwH0!O3}0uVZgcA@#$KKj>RF0$g@3Nv z2N7e<9_x?_yyz@Zr)Y8xbKjH}!N(+2f0g7HEpN|^SFm4E<>o`$rAEuu%9{ z3A;H1P_2~UL43p65Fc+G+1&{1%yWGt$|R@7wsjQ_-J`r*4AHW8n$ zG>=?aG5YY=IXTU(lT6MhW-biKM(7=OYF~!Nbr-7MYqzGSC9(7Shf9xg?yKyCd7XWd0+Sz z`=Fw6eBCyE6b4?_Pw8UvRkzq&ka;YF2N3(+oy3Bd8769d{oJ_DHe1Kgv+p5^+$-03 z!=N-GVAk2B8wIWieP0-*K95;-3%u=2At6OD%+$*3;AbJue_H=KqhZ^Rf5gP#$CE@u z7L?a^;+JuUE?t6%vh zO`sO{slqR5RxV>7Y>d`c-P_+;w0SGVy|H<${mSiqtb-a!@Gbm0frDQeok!czvfv1K zx>I&a8XLFdo0{Dj=Umsuf51wmI1{7N!cG4_u+_6k0xw_go1?bp#4A%u@AmqYd&xqE z`t6H*<%CEXBeU293S|$B0~-ubr9~25*KS8cHE`h3V;)D^l9kf8RmYuJ;y1owd7$eohsh zF?VqvjB)2z+P>t{NXs9qxX7gkHA@OmJEA7t%;BPh^zV zNFjF_Ys~lD9#s>RyWy8a+*Ca5WTxY{+&rOb#?WDwsPCTR<6Q~CzX=|mnClmvNQoDz)PYgF*x8m{W#tP zE4Ae3xZ>q~d^lzJ$>7Yp&bB@@EjZa}*2mz7e~j8ktyQ6hdBA$6ta46nj-C2l;>&|E zHl)u0f!+#Owy~Eqp<5%ND~gx;M~#Hu9-|0&(&>j)R*E6`jrzserZL2UerVxhIBe}& z!ps91`Q?hMt?#IRbk!XzYdHXs^0wn1mX$P^;YvY-8%)D*>YvGp>WVvQOBA+BS;ybo zf0%8mPLaIEzGv%}$H%*k!#XmabRzZ^yeRZDQp=8L+#4{ea59}zgYLC02oET6VPu@C zOUjaMRL>111In9QG`J<8*Kb;v$95&Ibe$Xb)Zgja$vm47?98!9?#qplXOChKOH`w} zc33!QV$Ke@u9G=y;92X(l@hfArq&&|e=V)2_GDS_6X4T@*DCtVxo6J#?&5V@WuX~g9Flj&oGCBQtEIqtKCf1Hr~ z;``;{wu{NRZJjA|>xCVv@V>EGX!uD}`UgIz|MUXv&T#cd1g3-RUE-iZajnT9^lYxy zUmdc%v@F#6&K-1cPF#2>Kl?2D^kLB;$n)nw;t{`Q@d%d&zfBshTJK zW~0ry9%Xu7-fCO7BuI_#H`Ha3e~{2&3iJyf$Pk+{`!-uC>=&*)rxZuS=F+lBU(r&K z<@b>Y*ed@UhVmyhuYdP2tA4=+q3`9L0GB!f2NCMQi@m#aB6~b~0hyO_r>WiOA7I%M zeP-~Z0DRn}*#SL(!$ft6Cd@A^9jopkxOf1@txYR_qP`?)W1 zGLp`>jT`bVb? z9@f+06V;Nibe`z?fB9*pyZr~R*3;ynQf1;dZ@M&%TWnfVY1hjKPfzze!kybTO=^02 z0_A>n7;SDh`RqDoi8Up8x#+-E+X|J)Wlta4Lt77rut&IaNYBdK*sw!gY%TFn>rcF1 zE8Dj^Iu_CxW-=dWgI^F6A9YH24Dd`wYXmof1|=W&>XlcvjoQiX9fR&s|NS{ zQX4k>vIP(Q-pxd3jbC*&av-|*(H1znF!svD1Cp-{%@ktvMi7^q2|00@p7xaMK1OJwL#uYr4=2()>uv0 zW@@#;{+Q0H5c1#=^0cee`gDd20m9Y7;b^P%p1l^j0-1|vS6{ASR^#)5;#8-L{#cmr z>7b9fL8i3#pR!hs?`tL^;1#}WA63waR53o8>pXKC=`Jv;01jyt98`04v7xX}=pl0` zf4bjgP1Rc)F%9i8;WgRzxOB_MQ#Q;Uy9)8#bb5r-w~=4H`Fq^e~vPV+mA6c<7L10PvCRhI6jDxxM9EX$I2dy zIZ4dl^qV}80X^IsE~&4&*l1(T#I8FRTl-p_$ht2{+WtBoZk`5T8|2vv28Jf8cklC04gSW&P?fge~G}U zB_)qQGdn*w&j~4*(%G+Eik?&@ZLvk4K&AC!i4ItZ4AgkuqQWDm>*`eQ*k+=!ja&tK zoQcWT%?))Q&UO*EsBnCR7pNEquCT=*aIX1&+eKz>59D_@ngqGapi3jp>nG}8L5vpF(QGn2x?cZ(fMx~uHSa%eu za6)eIjt69~ey}50y=SmBe)D&zgf-NayP}a(*1Hu+X9MQ2^G>E&Jtfqsf1!mSg-!-P z=|iE%EkGendfU*&%~v-P-WNQ<1C{j>i&xp*pcjm!I?Vib!xd+dCQ6)MAM%{(v8N5k zn$v!s+m2^Oqf5E)0LpO1mXPm-{_k@R?D^D9{_2f&O;q?2ma{AE(<__X9dY*1cdK)x z%acO;Y_)lQafD2AmqUbBeov}x2iV72SMrPg6JRoikx-L-g#~C}UCnL7A|=jlt|9H}!-!sq)YjF)(f{S-Y4R-oqoHB^!ma#~cN+?3y;U z@ugRKTrnx=$@0Fse?1C$fp}=Q=ARb(Gss-x`vPg)N!vW`H&)=`iVdx%tEk4SMjBag z>-$?c3nM2UM{1wGw(Osu+_NNG90QW>s90mFhw7##7EEmdbN89vlugYHyDeJw(NbVQ zFZ9wIX8N5dfYRQ3$#E1~o@9gLS9OTS%hxp{3c#hJMuRLxf7DXDiq)mwaIcR%zw7D4 ziBiMiI{WhZ*?>UYeizUhR~LC55A?}tBcQXRSLjox>PcmGVf(IJwxp?W%^CEvaID1o zcyuZL)FHq^Sn>Xi@f~$s@C2wK^z?95Ohyp;Q0>7lr7p`qa<%Zi+6hNqS zZ!81Q!f@o6f0N*afgnbIptk$#*sF?$1{V0S^B$ut*q{u&eJo;6LDZVanWz*uc@st$ zVZBE|YPDUzTkYE~9z&}2W4o+YQ22(b+dRY^u?!KLD?YCM2S>>VL zlwB9P?BqAgX#viR6_yTYrC;Z79*!fGC)w^Nh2YNmf5lmu2}M$xmhU-PO-U}(*;SF} z;azhr)a;U+KWhE1*e&h{;rMTRI3sVtKip-V`~5}R|$usw+VRMgtMif&=_qBnyvFq-p zefpgGf7WC%U(?x+mjKaN*%SxBaA2 z0FGIFp8~x=)#S)_Q^*{BnVMkmLXl@u3(=g zkEF@BxzDZu2>(=&$JRnh+q*%EbGyblp@JC|n#bohmQC-!fV7=)>&Py|dawSm<# z>rw5X0Rk)}VlyOs>|Z<81>4i~DsK*96NnLXsfds_;@kC|pTd7+qRRt?|bX3Tlf1jT{S&D^RH{B=kz%lY>)}U;OaubQ_<#< zr@??)DS6yS<#*4d1?wY7Q&CZ!uCRP>@qB|m^@=S);UAMK-AeC*FkMk}>+uxzlf0ZS zeSX``im*ya=sVX!z4B71IfRNM8ska!uuR{zYid*OZ@s*nMJedRt^Fv|3gr z{@b?1uf=sof^hGrPmRR29>6QZ6P|a46W_IC9wzHp1Zt$AGiwJ(hK^YOP_GrWj64B? z4V*dTsnGnsKX|r)i}Ut~z4Is_@ER!;b=hbn1|Q%M%5UwVe{6k)gTSt|ww5?C)I<|U zhSX%8gmY=2;17DgOf^}Ka680we7>1=@n1L;{4U;sNo#>-+3BzN+1{ypziuP1>LQ0} z>@}KM(~+cV=WkW7J`>ms33>=Sc*Y4}!*P~ZMeLbi3Yr$-rM`4;gqP&=y$rk!xNjIm z1x~*ZND|cC{8GfArW2arCactKM&En9y%Tq0-#t2hYCQx~8t1``K+PC#^R6Xfy*sa@=_lFb0G4!v!^cURkW)78!cVeYFe70F%p|3A+QJn&|v>V z^K}8u-LoEDyj^>oN1Lf{Qy+Je`a!9gD^DKTlTRO6+R_f`UzW~8MtrG-9IA8U&9rh4 z4i8RT)6A>mj`176@~6O`PZuR*F4Lq98n{Lm2PQ7?g0pqm)*e&#BP;<&FX*stmqvdH z`?MBBdplpFWP#jI+Wv2>%Hz?NQlI6L1aMM0-{>T{T3B4Hy-wHv%C^ehrm6QI$OrT$ zFIz}(G~(wETWwY}<2;kiG3suhR)UTpHJAB@wbgzqA!HgB6)y1nIS<8$L%3FYWFN^u zys_us=!2TFsrXi-$Py3eL?EYv9}M$i9Ut#a=!-&o_Gz^=*IQ(p=F3L^gUia^mC_Rn zid8GZ+O*~ZrEt$!>BDJ#M4*GiFN+4XvCdn!Q0OYR6`|f>MQC_&>?q3z4odoEt$*}7 z@&-%`;dsY4D2{D9RDK{Plz!!pPlp^gdrGK!$rS-P*}b#4Q|*fF@wplM zzE+^&v?ywl{IxuiAn|^le3$rggTGr*#SjrQv^l|n}Ws_PBg9uChi2WJ%z%uH$O6>y`7z&jT4nEmoFlrUFrFh z^D*o+&!st0*DnCehZ^h{TWkDBlARud>G_X+;xe9}^-{YZpnEkn(boraqw%aH-OmY~ z=M=v|V=v+34#x)258ET-(`H<<1iAU6o_Zaipr~u_LTHD~bj|PB5m{U;gY@14*FEu) z5s!}X#+%;cT-7puS@_XS=~<@)RTF^exTY0X(0ydn=7IuXWb^4peJ7-4=<)1~w~~?{ zJDk26@@PF0rE_$klBJTXDSf$740drHk5Gn?9|gbQI*1+hbtrzP_C-r2PoSbY3^~2! z!Y>t1Q1gj?y0N}r6OSVXzKXna*wEk&Q=6F`M>T}IOKa9^EN0u>dZ zWl=z*iO~WE7`iFxJ ze`Dy4_LJ-7et&YJya#^{YZ$5$p_)Nwg$n?G;I?X<4HtZer8=eHowCX?JrnXZ!%4#e z)W(|X^k;3#fU^XfEJY)I%!qhLA@P|&g=RpVfTme zKDA9X797a#wI6ZcswfWgXahdU;-9}xkC|gO-MmyQ*xXNOr z_&Se4Z5>mopoBd>i~*4!cJ2Pw>4pu|lWZd1k|k#Ss?7WQeL#6Fxp$_^!=vd6R6@#H zuIE?Yh>I#AsdE0rqPB2)w1(?~>F>WEq}gJ2+G?uumMITIvY1cV%;}kKICB7BffvvR42Wk^qd!sQU#1Z1Uc>1?ZcgWeJ304|_ z^cmB-4u#Rzzvswk0*teH`-QBZ_dTSOf6|S@D~B%BdVAac8#u9@3%gA!`(j92HM8hB z(IzX+CRBlWrEai3T1=;LG0@TJXwUF*-biP4tw|`kP5l@gm)PHR;d38KkMo1i>r0;s z&C00^$p$E!;^`jip^fA4jE&@GaeO)kh+BBEn7VFi+?Clv896W?1>=RLLz3|k0vson z62OU=_}Du$FLkOTJTVP&*ka;nimnY$v@_iFV%D)*tR{KyMvYWBfg30yg>@d(F0AO) zld2dpZ^!pws3AsY)1q}y~|foq}XUHIj>{OCnIyoVd99{A6Z@+QIo$~5%48My{;WSW>3wDLKL*`7s=akq=pv&)dhw&nH&bs^VzD3nqjzz|fd(BBU}W);9i(#YSBW z^|K;~$Y&BYK?%*DI^)70=A!v61Zvc4OQxJllKW?(h)D{(S zUxb`^fvrc8@Dmii?-$-7|5i=p_V~Y=}&(oAZRLm0ymU}+Tr$reEXmo-bsHBYp z2sJzwcAqciW^#>?&;!2Voju-Hs_}CVig^MD_1w6stfnWXw#LKLX6i33$q4 zN$l58V1L&eD;n|rhh69SF`6AG_sz5G!%20v>dNKswfG@AdXvWT2k}eb^^YQVME5l8 z8lxs9o!x4jWSNyr(rLw9A6uA%pR4FRcoB@6R&SrVMy9@8uGLz_{z%>*{zMSB0Y$5t z&cqgI+r$Rt66Hb^lsNl<(!bV0-Uf!j0Ec%R8xKA@#|bt7XM+jqMc4D8~>}K`r_R!<8<8?7|{* zDS!03Q zu#_1qS6@0*JzSsAEEK1;p&jE6VK=W+b`5RaD=|~k{=$W-;wkzUB>dJ~Uc|VT&d)h~ zcxQMWNZ}5sNa6{fW`=Q$C(=iN_>$ct>8?-giKI3qXP!N_t$~5*vwUx;hi;itCnF!X04Wd05{|dM;0_;vLgH1Gp6Qh4 ztq8vx-j!qZ^1MJr(O0*zSAI57eiJjq#%Ncwdz8s2hK_J|AepP%`GX)iwd{h)dMD2x zeoWvQ_w;o3Mo459Rd* z(rm>|*Zx{84tvZCSSmYULV|)KTP;Bc)w}B5y`1!%hFNZPyn*EutMXAI$X%;XFP=#> zzIRH3%}<(a2@1srWjDRFf=6$pf}{zft-Oldw=ZX6$IWrt_}f5WH$-;*_eYoQje-gY z>aGZ`*rNh&xuJMA4W3x%Gn#rR&V%X;fKP*x4s|zahr;7!@JBb09f-KCtf4?xk3u+B zhhyPID@jUJ;m(7L8!A}CY^D{AGuV30+<$M?Z31kuT8CNIiK7M&FWH#;43U6fO)~Wf z_MG^8SOF?_)Do9`@~a;G2ASRKL1eV+n{Yer!{HN8DZ+a;G1$-E-MaPgU1wme6^88) zoSp(iDo^=ZV`c#3gDr#u=R@cw;Yo1Y)kx?B1g?v6>T{wBkbl2|_Br0QY8?GcQXys} zJIy&w@}L-G1OMcD=rJFmnp)#+JC$Pba^Ar>qAg->q(N9uD+n?fpm0d3C;S9D2HcRL zUQcNJLLh*?=Oqd#66SA&dI_kMg8E~VCh1BJ<{T@;ngCp%-j=_V|8{ts&we@R8wRb; zjd+td80)#}Qw4-cQhKup6h8ZbClTKTgqZ%$G^!n|)TvliLV^UY23voEz;+}2##>Hj z8klDzuAldlVWUyUj%Szp?hZj{EA?}@^VHD0n4eY7@`(&hMUYRML>C55LCe2T44~^( zV1~FFZ~)War=#s=?u&sAh0{lc0{H9EV-S6lp_ac4*$z6_f0Q z#=(}ZP~}~&VXp1$x+3Scqmu=M3DFeD^YG2-X>qb7J#PI6ymKKGHy6;j-Pwo|^(+qg z53c4-rZx%Cs$e#qXyns6+eg3P(G>Q&M8gMbo&a$>%RhY9ijj|hV0jHCo1}tB;Q&E?wHq zr2+od)^;xHUd|34%=(6Mn?Zi?IGsA@xV0CuLV?5cg%!C>Fxb8QgyQ|h2^R>!Ism~EtaJ46Kxv zq>y`~?D#yfGHzfm-aRFq2WE2deM=-8KRNJwY(HtR(en=QcB0xneK0Xihxv@G&+xcB z93iKj1UKp#Hf#r(L(#}S|2xOD5HTi{uy+U3AcUgj)xL82YMJPDQH&XBm_-sdTzyF# z8qFA)z!Oi_NFQAPif9uzhNzIiw+qRGn#OAo`WRv5S7Mam*vql0jo9&o1Z{AsZ+urg~g znoHvf-|*-`Bs1-rCKvr#?Tj&O9TK`+lC1;l4e@+Go&2IvZd5(`ItXk*Hox%S&7<>N z(%sLyJwr{nwR4DWrB*uI2wxKW>i~DG)e&9$P4(TkV-vg*eH;8Jb~bV^UU?fWEUHHc z1xN_%nLFxH$!pyCCQ-llu49>1htE>yomPXJ4@1;)BJQtcfnrT5kf|(&?ZMygoHyrOe6bXlev^Odn(z=@O3wV>GJU&dr#&G45CDHbywPCz z=idh2nAaseZBO$K%!af5d4070j!`|sb#lcJhA&hz9$%&Ms@Aie^UikW=cDKE1eB!B zF%E33qV~Mqd5a!nymL5%gtF}jiR|c=;k;RQQa0HRV7s3Z#z%HZi2OXAS_)$4{4yyh zhuy}(>f@9542cMJNv1faz5uG_J4#w4+JkmebsKC0g=bzyM&*hr_sHU96kZ`F!rq`V zGpthsd+gYobii^#Gzs$RJe_ zITw#+F#`%uE&2vI*G!ES`O`p{O?jF`QweN8u9Aa+-R-t!(L!&Ciwf0&pQZ`{}PXGh`S+GRYtfm(OX6|#ZR@ZB|JWw)r@6Seak4aw9I2alfZ=dKm zS^+}UZa}c4>UA&ZM^5(JOP?jQK1qh(;tZv2;Ez+11J^6kNa=`b^%ThH<4mG5OjUlw zD|FLT!a!lWTZ+zFNr?pli}MAO3Z@NcH#9a96+4B|U^&Oha-gM%@_B@1w6Dh&oO?^M zbA^o%|Gp!C*gH?w3QVPhN%a?~J`@g`xdMv(HYy!S2jHQU@#RGTjrFyW$|>_xCak>u z0!LHTJ&duP#25LB&vSS|dXx6vr^INPgUrw?b586*3>kYKZP`KKwC_hbD5r_k7*6NG z=W$^D;t&RH1t2nW@3P$7yM-{auc8Wb4Dasb8y@7vQ(=jj2FF12;t9@44}o7c)m8$$ z2^+39a^TDCy3e@H!IgSnhJLO`*Jwz#D|Fy8B~$H~qp^AvU$R8oU7f5^_gtV)sj=;y zD!_!Gm_t5`^$)6uN)zBU@DnX7fpjA8SDXe|9=0l80w%fvPqKpwI`a&=)h;CSn2)ED z`i>!d{vOs-jOSjuiX=t`e+VS=VO7UwBQ>z_iZON=^DY>yAKRihyHljp3GP92bb&E< zlJ+WDsf*2Tc#HxW{wLdOIV6N!ddT>ndZvxi&JM3iB)P;?bxk;=d8QU;OZm@_aQK}! z6IL=&fMYDwzm^DOKYBUN&2uTF76Uobk^I5HeRpyfiiiDX>nyBd+ac^?&t0E7OOacY z!yfk?-sB8i^Ls}V^ZR+&ti+OZZ;*j(8&nK&C5grr2wR-S#<%A#PRm*c=M3be`}1){5Q~4VDsXOVwz;d=nUK#unXIy+6yEUZ_lWr6;M$vv)fb&mVM#s%O zfB>mgS6N^t$85@Yj-1Aw_3#oKb)%Qr0nHf8^6-)=p@W&ldq3aP^Hl!s=qQSBjy6W9 zX^&$-V)0Q>u5#iA!t=f?rjUlOnGNMBuSkm@%qT<*1zJ*jQk4AGhL)gGT~WD46P)ik zcq$1?TM-e7xw_fT@pOjY-KJkaPS%VM{Kn@Ew*|@H9YXwWGMoL|krNdq_9X<`Ln~7w zKOge!fGQ`z7Ta`@gh-)@kk@N;OM1^3RP^a<3R=bd*v(q_%{oBzIZo&}wLv8nb zN0K9VCORTdnEPX3Uue8(?PX+#-rl5Y)#H*AJzZ+KY&(Ld>$B>F-8oJE;sx)tVwb2#h2i3- zHSI6lTEbYynx_q&T5%Jn_IbqAWi8d`x4GojW4M2mB&~GXR#%Ryhnh&8mqt=S(UHtt|MMOwvk?$qkE`eui;Ra?{5V(o%`S{?9 z(tlI4E}6cKHvNT13`;N|=a`6DiIeitX*Y%ayPHKoinDHRC70zKdiukB14tLvssf%s zyZL_-BaFa*cY?4ga;LUUmc1ELv+S)R{=O-s)sm}s0be%-) z#OqX_z8g7V1D1VyE^>U|E+9LcWp7qbCa6Jtg(_!+MehRUq~PTZbfRG-+q(j@8sjd9yE>F{3o6M}xv>{5HM1|#nDXi7_VF_B?l)qC&M=G`fc zonEm53Q(?4wXM|*Hck6x4sQj=L2a-*WIBq~Sp9{cnvhb<>!^Djnt;Z|KukbK-zH(3 z=NU}E5j=7P;h&4%0sN(!Ufx|WJ9((AE06UF6>6y9&!TLbPDC+F?S~Q?F&Ay@T@8oF zI*tgYE{4`Aa%f5{Q12HWlnZ0`0Tk^1gJazN0&TqmAeKMk`r8qqM7~SRpOzx=EC2+hh|)2`<`N1qet)Fq{!m*6cC7Y&2E6 zE5%+&3x-^ynG#%*b3@rcmuA@DI@44T=xi|-voYK){eyG5rdV4Bq%hc+z}|~pi1e;C zvaz>TM~7^v&buHma0+!V6Q)~afl;T^GN>rEjGPp%Me^j3Ptt3sF>8-M_>1NplYAil zKDsPuay&(`0O;s&#IKtpN<`i0shEO|<-Dg7Ip~(hQr*NENEN@Z@#s#GU7?JBz{}T= zV5Eet?f-+O`(L__+V>lipIjmahUQUpVl7$QBT}_TKDUteaE5!xRV zUZEI!uwm3v?83f0g}LT#s=UCjE)p<2n%(;w@Qzr{4Un;r5YXX$C!+b~*qcDF%(lSs z9tCIJ97XTOhlGo8y~!%t#YHd@{de^ASn_ad&4a&+#~XJDDoY?*(~1{8u#v|Tr4V}z z>N3;O`zN}NlZPnv@~<1IW%oKcnFh5-i{Oyg<6LXYx}gETk@&nFl2*sLgravSW<)LA zH1f@=ML@be5KD|cwlF1AtAOt@VPTnP#j5vru62M9O&?El#4yOpr^$g{ zTbdY!chG|oTabKb!&k8@X`44Y29{cSRxFs>sfKIJ|54+iVO_6CyJT@1%=>jEp7MK#u z4rE%eVAD$D8MkE!za_-5M3V4lR()YJC_dPyW@VFt0gi}r$I;j%Pv#XB-b{Z}1YCT6cC zurD?6*VA11+{3=ffK@$*l{@t}$G1zlVZa#dk>|ygy|uPU`naY|CrjCWwVpU1QUagz zrhF&qPs|q16699Lq&17j&`ao9v`S8x5F<|1;qK)D<*U!X{K3d8K(35jEPJjOB(vx&g>csd*fE}Qu?0J_r0gW3%ajzllz=wR_}63@g_BQA+A z)fZgjO$4@9L6hgY#}6wzBOX*ySSN-;E{B}(&gdk{J{uL(DaLCpn(owEE#^nyi(NF- zvZSTQV+FM%aeU+A;@G{p;;$L^IwJ}y8pCLu(|@;!rq0`uZ%!j))7Em40|0X*J>6J6 zAvqqR0Ri||c-9`BP%;*B(8=6f&7S@_7_sNbFA4dQS}~){6S~J{-}SnoaTbe}a*s4n zPhk@Q)ply48^XtL)vD!zX5BAS9D%2G<{tiy#~^hwnR;Q4Rui-atdfz_yLjr_2wW0$ z5q?t1ige?|0#m>0C}81?O97ob(JX-{4e(l9hn7K##LK*b{S8TEOHq*+cf;b3&BtK> z)Kf~AKiZM;obLni2Pf)jVFLsrHJ()yTynkR=QFDf^=4V9Lrr@F(gt+EVG?Fq3$eYS z`1c9LRN=1FJNwNxJNr7(?=R( zUOSd~k4u$xXmpi-wBV5~Nzlcju*QZ#$rFXhf4z0Y5}ZFSF=Yv@GK%eP9GWZvyT2^@L4Qg4XG3Vw_JQY_XUhr5W3IJ7Q) zK{CPx$^qeo%D?C*Eg%EF|2{)|$O~`qjhaiEk4hoJ9bv|t2d<@f>~6V@P7Z|EeY2qn zzV*nH=gbe~6z@=Ji`n|_X&i!RC!|z|@}%$spE`zbd{`|2yGldf^?4Nd@M3fl>6+AD zpx2x^M_~Cjz*sAd>EW@RF}m0J*LuHAMQZQgQ+{ytR$TX12N+e^8<2n_Ol%o4RXek+ z=^%M1w)-sITWhl8qC4Of&1dLx5S_s586YQ((dI`RSXN~uP{w^63JH*lnj2cgjU=$l zjU^|pPvlb!7@oQxK-~7g%B3PF}^A_z>o*$|=?7SvB!!OACFbZ@epHE27sfVg3b;9?bL|DsyNm5pKn|G1a zqkp70N9X2R2bVS)%Plofo?wM)Z&7JF6j0==E8)k&F?FCLt-Ve=_Frx!&R(8eb`j`? zKU;I(GZgXF)Q33L#f*DkV{m(9!@9HZ=y6<{*UELo0(~Zf%lfkhsdb2|Uzjgb{)OTg z=g6v6hZ!n|mGO3lsb(E1JUOI@;rMH97!d2tqI zqSgby8_qsRHkji z4*kcC4;U<0XRm}qw%AGGWS!qPQ5R-_vvMQ^V`)~MxK0Elm28@nD2P{Az8?Q;r_^od=1;?Vb)e;}#hbdqn zxTijsN~Or2r*rC$kIgN2h+NzWpc{}y&Znq>0+aC$s;?q=?3D^1M2{NvwO;EY^sg}q?##y=T&H?9$g1*q@K6RK{|X!ZFR zFe1alLe07pEkr=}c)$zjm->jZnqNJ&MI=eTet0gKxfJn#q2Ig)M`u zWl}!n&cG{X!NA39O5wFf(65@OVK4K-1A-!|WLV0e2%FW8(c+qacvM$>Wne~|!#74VR1Oz|%iQ3QfpZRU4>sVIz~mNg zb8~*2v|#O~n!f7>n-KQ866kUp`B0#yL1!IO(nBUlYi0H{B=OXBjJd1(g^Tj2hh-0UgOUZ^QYB*1CQB$_QL zV25l--Y(?eNmyJ~dWH8oR4{)B5xu^Id@Vl~)iFZO49Zq1I$PhC6p)nXi}h=Z<`)qrN0mhAJo&K_aNIhoa$e^LP%sh01_E;Hy%4` z_pS^Ev==-TA#vhaot}d`@Yc6SyCV@Hryuv-rF1sKIz*#Jv)FM(CGlk1JBbz7lq*Ck zjyvW@ab59S);+xXRV%Fug(u&L2J~lEdRav4jV{E~%GP`M=67h$k(fFxnS3x~P^hH1 zAytObXg>XO&94ZfZ?Pl`0E%)W?=0JH@#{4~i0cSz0ZD-@3%3+!edg-DVmMs0yvefG z*H`VEgeYq8+7%YOiAFhAjz;IJqG2ST0@)`&ik?;GsZ8^+K5=60@f!cBAeaWLbkT9o zcRtA0kp}&dT6zfD>>bW5vP+j}!s_2iLR{HTvq}fJeF`dN=2=$D0N&$f8Jv>@23njQ z`u#0DL5g`N3;Lcn_1s_UUwBb;&+isGX>Wac!O==RwAp8CcS^zSx$5}4cS8#=AsPBW z2Wn|f-%Gu?Q&UELHcQ-r0rn=R+fUA;n>=!h9ZV(jMK0JKCru&QuC!ZeMzNpjMU|8G zWI3>y*R(cb&EKA?fa)Pt48<%*$c46_Y?PnVF+6kC&gTI0z7VVGFKbJ$;ZmGK?n{Q{ z*7L)zZOE?HFJ5384xU=2^;p5<{Qk^UL^A2l2~@qkv;FQQtw3mSkxuTrMVPnkTXiO` zIo*p$gJ#4a>wEi9b%@b1O56Zm#k5L+c*BNeYGLlo>K#ELP&p$uaPetxrMXBP%bx7H zA)1FcWxR$2#cks+w{$AZdHp3s!4YoYAjHggXj_p^t!N^OH}4fs%hE$EwP1Se8e?U9 zz?YV=wsOtV^WN@thhKzU0D(q{`PQkn!E- zZr+6Z%E}ra387Ym>9#c9)u!t;58)>t+c63A^d4~WpgzXPG3%% zndx?7L|%@OVArO4*`%#vhYDivAHv6NkV_aEJq=uA!h}b&hoEnEeV%In0jsU&4Qc&) zQb~NS(S(DN^V{zdlwzmm70Ffn6XdjD*{7!DQq&kQ*v0$(u7us1v_bi-&k6CB)28sD zVyj{JzE0Mg^Uqg~`2K#W z7!P6i@_|wuX4(N z^M&D&h#T;$`qwX+To4Sm@FFzIv&3&I<1KC{E%gL=)|L;q9TD3bPJ72&a8H5xW#1Hq zOs>ugt}8Qq7dIH&&t|DAOb+#1;!?iWPDG>eIa@i)>Gk{gzJn58qS>HTY97~F0B7a2 z00uNT$I~SLdxCyv6!Z=Zkn4eQMSune`|Ea)x9Y=UW$4L<^&5A~m|yjK2aPK(N>|78 z0w6@JzNPdd$~ReA>FfMcWe^`(@n;Igd$d}JN@^PjpJXv$`K*rfZ(|%{sn(qyxlc}5(x&Z=R0Q6y${#ynrZC6 zErh9H&Rs_?#mZtC0qPDAzOo7*KloT7DpC`!rkv&R?Uozpl<(W!x<74&Zve zU($606>oBL|JV1GqP(XN#AL z3qkykJX-^WL$5F-2uNuBb{qyUW{oR?{*h?9+*(mqRaQlH702+MMgRsSJ!GJANm`0` zBmXk1pR5i7tRNtG83YYp*p+e=N{tXglBCo4yk?Z%whb@3?c&D}Y#wG(oArZNhR5lA zCQg%BD#1lWbBIcT;^_REviaaQR5W?Ax|zk{1No)q(yXBAZI5_Xx9%q(pPqp3>-}1? zt&nQ$@WMW;WoA+-dJ%*q6#08Z<2uTEMHmx=iDfvHDIE=E@_&;aYgF5K!Zqcq1o6lT#%#f`f)c|{(S^n{O^}X zeQn4|UGGk>W@YV7lT3Mq%)&5*u<{^3SrN(Hk0K2|X!yPiUPk-@LvlI%4Y&6vXt5^( zI{we=<0p@Q6Bp}QmKSTX+XfjYB!1*5XmSBhVWxdNxr(OSjIOi;$J-nJo!JMO9$%h! zN*Klm6E(N_g^fB)Xg>;IJj_EC$cW+?NAjH+LHWd?sDbx0e|(Ay?pCYE8OPRKFTlBr{QD!)ZJbvXi~?&a(q?(H(M%Of!erb$#mbM zsZJt0b2L4sLpA)O^slr104zGJ9ta9-M{z75 z!p;$?=lN;XsBqdZMJ3k(?mK=ue(_y{}9cub@gu zcONsUHX<~>23c&vcMtg(@)8!X5vS3A>9Z?eZ2=q|uQA*i&$!%1|P-#i6>vf*mOni{^(=GW_|_ z{^;`M8H^ezr8K9FOi_QA<9!@VrCA0P3X9jsW98zT|Jw3GSDaw0r8eUhNWdZ5mg5>hzPS z7f7S*aIk#?Mq`eNG>ADcrL({Dm$b}fuogbaCHzqxU}Z!oC4sak9s05P(*iFMJNQXY z=x{8*6zfP%w0m z|44BD_fYwZaxCF8fW delta 39297 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 diff --git a/week_04/08/DelayQueue-008.md b/week_04/08/DelayQueue-008.md new file mode 100644 index 0000000..c91397c --- /dev/null +++ b/week_04/08/DelayQueue-008.md @@ -0,0 +1,204 @@ +# 读源码-DelayQueue + +## 继承体系 + +- 实现接口BlockingQueue +- 实现Delayed接口,其中的getDelay方法可以得到到期时间 +- 继承AbstractQueue类,队列的抽象类,提供了基本的增删功能 + +![DelayQueue继承图](E:\Project\JavaStudy\week_04\08\attachment\DelayQueue继承图.png) + +## 属性 + +```java + // 重入锁 + private final transient ReentrantLock lock = new ReentrantLock(); + // 优先级队列 + private final PriorityQueue q = new PriorityQueue(); + // leader,标记当前是否有线程在排队 + private Thread leader = null; + // 条件,用于表示是否有可取的元素 + private final Condition available = lock.newCondition(); +``` + +## 主要方法 + +add,put,都调用的是offer方法。put无返回值 + +offer:添加元素 + +```java + public boolean offer(E e) { + final ReentrantLock lock = this.lock; + lock.lock(); + try { + q.offer(e);//添加到PriorityQueue + // 如果e是堆顶元素,则嫁给你leader置空,并唤醒等待线程 + if (q.peek() == e) { + leader = null; + available.signal(); + } + return true; + } finally { + lock.unlock(); + } + } + // PriorityQueue中的offer + public boolean offer(E e) { + if (e == null) + throw new NullPointerException(); + modCount++; + int i = size; + if (i >= queue.length) + grow(i + 1); + size = i + 1; + if (i == 0) + queue[0] = e; + else + siftUp(i, e); + return true; + } + + // 获取堆顶元素 + public E peek() { + return (size == 0) ? null : (E) queue[0]; + } + +``` + +poll:无阻塞队列 + +```java + public E poll() { + final ReentrantLock lock = this.lock; + lock.lock(); + try { + E first = q.peek(); + // 若堆顶元素为空,或等待时间大于0,返回空 + if (first == null || first.getDelay(NANOSECONDS) > 0) + return null; + else + // 优先级队列弹出 + return q.poll(); + } finally { + lock.unlock(); + } + } +``` + +take:加入了阻塞 + +```java + public E take() throws InterruptedException { + final ReentrantLock lock = this.lock; + lock.lockInterruptibly(); + try { + for (;;) { + E first = q.peek(); + // 如栈顶元素为空,则加入等待 + if (first == null) + available.await(); + else { + long delay = first.getDelay(NANOSECONDS); + // 若延时为0,说明可以出队了 + if (delay <= 0) + return q.poll(); + // 若延时大于0,则阻塞 + first = null; // don't retain ref while waiting 置空,便于GC + // 如果有线程在执行,等待 + if (leader != null) + available.await(); + // 若没有,则将leader赋予当前线程 + else { + Thread thisThread = Thread.currentThread(); + leader = thisThread; + try { + // 加入等待 + available.awaitNanos(delay); + } finally { + // 如果leader还是当前线程则将其置空,让其他线程获取 + if (leader == thisThread) + leader = null; + } + } + } + } + } finally { + // 如果leader为空且栈顶还有元素,唤醒下一个线程 + if (leader == null && q.peek() != null) + // sigal只是把线程放入AQS,并非真正唤醒 + available.signal(); + // 解锁,真正唤醒 + lock.unlock(); + } + } +``` + +## 使用方法 + +举个栗子 + +```java +public class DelayQueueTest { + public static void main(String[] args) { + DelayQueue queue = new DelayQueue(); + + long now = System.currentTimeMillis(); + + new Thread(() -> { + while (true) { + try { + System.out.println(queue.take().deadLine-now); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + queue.add(new Message(now + 5000)); + queue.add(new Message(now + 8000)); + queue.add(new Message(now + 9000)); + queue.add(new Message(now + 18000)); + queue.add(new Message(now + 2000)); + } +} +// 实现Delayed接口 +public class Message implements Delayed { + long deadLine; + public Message( long deadLine) { + this.deadLine = deadLine; + } + @Override + public String toString() { + return String.valueOf(deadLine); + } + @Override + // 获取等待时间 + public long getDelay(TimeUnit unit) { + return deadLine-System.currentTimeMillis(); + } + @Override + public int compareTo(Delayed o) { + return (int) (getDelay(TimeUnit.MILLISECONDS)-o.getDelay(TimeUnit.MILLISECONDS)); + } +} +``` + +执行结果 + +```java +2000 +5000 +8000 +9000 +18000 +``` + +总结:到期时间越短,越快出队 + + + + + + + diff --git a/week_04/08/DelayQueue-008.xmind b/week_04/08/DelayQueue-008.xmind new file mode 100644 index 0000000000000000000000000000000000000000..9208965f6586f06754e52c594353d1a625085fc1 GIT binary patch literal 47825 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 literal 0 HcmV?d00001 diff --git "a/week_04/08/attachment/ArrayBlockingQueue\347\273\247\346\211\277\345\233\276.png" "b/week_04/08/attachment/ArrayBlockingQueue\347\273\247\346\211\277\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..d741ab1419c447e52dae65e5bc9a2914a17cff92 GIT binary patch literal 19473 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 Mp00i_>zopr0FCESTL1t6 literal 0 HcmV?d00001 diff --git "a/week_04/08/attachment/ConcurrentLinkedQueue\347\273\247\346\211\277\345\233\276.png" "b/week_04/08/attachment/ConcurrentLinkedQueue\347\273\247\346\211\277\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..7313dbc67bf60abfc8955c21534a84428bf26f3e GIT binary patch literal 18236 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 lLe{pnFrXwE7=q{U1l+$=