summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/requestLease4.svg
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sphinx/uml/requestLease4.svg')
-rw-r--r--doc/sphinx/uml/requestLease4.svg310
1 files changed, 310 insertions, 0 deletions
diff --git a/doc/sphinx/uml/requestLease4.svg b/doc/sphinx/uml/requestLease4.svg
new file mode 100644
index 0000000..800e77d
--- /dev/null
+++ b/doc/sphinx/uml/requestLease4.svg
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="2560px" preserveAspectRatio="none" style="width:1579px;height:2560px;" version="1.1" viewBox="0 0 1579 2560" width="1579px" zoomAndPan="magnify"><defs><filter height="300%" id="f1aicqcofdeklm" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="316" x="630.5" y="27.4023">requestLease4 algorithm (Kea 1.8.0)</text><ellipse cx="631.3125" cy="41.1992" fill="#000000" filter="url(#f1aicqcofdeklm)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="557.3125" y="71.1992"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="128" x="567.3125" y="92.8008">get lease for the client</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="584.8125,125.332,677.8125,125.332,689.8125,137.332,677.8125,149.332,584.8125,149.332,572.8125,137.332,584.8125,125.332" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="584.8125" y="141.4893">reserved address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="554.8125" y="135.0117">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="689.8125" y="135.0117">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="229,159.332,329,159.332,341,171.332,329,183.332,229,183.332,217,171.332,229,159.332" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="100" x="229" y="175.4893">requested address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="203" y="169.0117">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="341" y="169.0117">yes</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="250" x="11" y="193.332"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="230" x="21" y="214.9336">requested address = reserved address</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="368.5" y="241.8096"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="378.5" y="263.4111">return no lease</text><ellipse cx="422" cy="321.9424" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="422" cy="321.9424" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="293,193.332,551,193.332,563,205.332,551,217.332,293,217.332,281,205.332,293,193.332" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="426" y="227.9668">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="258" x="293" y="209.4893">requested address is reserved for another client</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="563" y="203.0117">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="279,363.4199,291,375.4199,279,387.4199,267,375.4199,279,363.4199" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="225.5" y="519.375"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="235.5" y="540.9766">return no lease</text><ellipse cx="279" cy="599.5078" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="279" cy="599.5078" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="186.5,470.8975,371.5,470.8975,383.5,482.8975,371.5,494.8975,186.5,494.8975,174.5,482.8975,186.5,470.8975" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="283" y="505.5322">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="186.5" y="487.0547">active and owned by another client</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="383.5" y="480.5771">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="204.5,422.4199,353.5,422.4199,365.5,434.4199,353.5,446.4199,204.5,446.4199,192.5,434.4199,204.5,422.4199" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="283" y="457.0547">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="149" x="204.5" y="438.5771">lease for requested address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="365.5" y="432.0996">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="279,665.4629,291,677.4629,279,689.4629,267,677.4629,279,665.4629" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="225.5" y="869.8955"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="235.5" y="891.4971">return no lease</text><ellipse cx="279" cy="950.0283" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="279" cy="950.0283" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="263.5,821.418,294.5,821.418,306.5,833.418,294.5,845.418,263.5,845.418,251.5,833.418,263.5,821.418" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="283" y="856.0527">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="31" x="263.5" y="837.5752">active</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="306.5" y="831.0977">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="204.5,772.9404,353.5,772.9404,365.5,784.9404,353.5,796.9404,204.5,796.9404,192.5,784.9404,204.5,772.9404" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="283" y="807.5752">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="149" x="204.5" y="789.0977">lease for requested address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="365.5" y="782.6201">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="279,1015.9834,291,1027.9834,279,1039.9834,267,1027.9834,279,1015.9834" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="225.5" y="1123.4609"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="235.5" y="1145.0625">return no lease</text><ellipse cx="279" cy="1197.6045" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="279" cy="1197.6045" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="187.5,1074.9834,370.5,1074.9834,382.5,1086.9834,370.5,1098.9834,187.5,1098.9834,175.5,1086.9834,187.5,1074.9834" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="283" y="1109.6182">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="187.5" y="1091.1406">requested address in allowed pool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="382.5" y="1084.6631">yes</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="170.5,724.4629,387.5,724.4629,399.5,736.4629,387.5,748.4629,170.5,748.4629,158.5,736.4629,170.5,724.4629" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="283" y="759.0977">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="170.5" y="740.6201">requested address == reserved address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="399.5" y="734.1426">yes</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="279,1259.082,291,1271.082,279,1283.082,267,1271.082,279,1259.082" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="933.625,159.332,1033.625,159.332,1045.625,171.332,1033.625,183.332,933.625,183.332,921.625,171.332,933.625,159.332" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="100" x="933.625" y="175.4893">requested address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="903.625" y="169.0117">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1045.625" y="169.0117">no</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="702.5" y="241.8096"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="712.5" y="263.4111">return no lease</text><ellipse cx="756" cy="321.9424" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="756" cy="321.9424" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="627,193.332,885,193.332,897,205.332,885,217.332,627,217.332,615,205.332,627,193.332" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="760" y="227.9668">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="258" x="627" y="209.4893">requested address is reserved for another client</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="897" y="203.0117">no</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="702.5" y="489.375"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="712.5" y="510.9766">return no lease</text><ellipse cx="756" cy="569.5078" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="756" cy="569.5078" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="663.5,440.8975,848.5,440.8975,860.5,452.8975,848.5,464.8975,663.5,464.8975,651.5,452.8975,663.5,440.8975" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="760" y="475.5322">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="663.5" y="457.0547">active and owned by another client</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="860.5" y="450.5771">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="681.5,392.4199,830.5,392.4199,842.5,404.4199,830.5,416.4199,681.5,416.4199,669.5,404.4199,681.5,392.4199" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="760" y="427.0547">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="149" x="681.5" y="408.5771">lease for requested address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="842.5" y="402.0996">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="756,635.4629,768,647.4629,756,659.4629,744,647.4629,756,635.4629" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="702.5" y="742.9404"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="712.5" y="764.542">return no lease</text><ellipse cx="756" cy="823.0732" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="756" cy="823.0732" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="664.5,694.4629,847.5,694.4629,859.5,706.4629,847.5,718.4629,664.5,718.4629,652.5,706.4629,664.5,694.4629" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="760" y="729.0977">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="664.5" y="710.6201">requested address in allowed pool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="859.5" y="704.1426">yes</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="156" x="1133.25" y="289.8096"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="1143.25" y="311.4111">pick candidate address</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1160.75,449.8975,1261.75,449.8975,1273.75,461.8975,1261.75,473.8975,1160.75,473.8975,1148.75,461.8975,1160.75,449.8975" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="1160.75" y="466.0547">lease for candidate</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1134.75" y="459.5771">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="1273.75" y="459.5771">yes</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="182" x="993" y="483.8975"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="162" x="1003" y="505.499">create and return new lease</text><ellipse cx="1084" cy="564.0303" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1084" cy="564.0303" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="1266" y="532.375"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="1276" y="553.9766">reclaim expired lease</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="1256.5" y="601.5078"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="144" x="1266.5" y="623.1094">update lease information</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="138" x="1269.5" y="670.6406"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="1279.5" y="692.2422">callout lease4_select</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1302,739.7734,1375,739.7734,1387,751.7734,1375,763.7734,1302,763.7734,1290,751.7734,1302,739.7734" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="1302" y="755.9307">callout return</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="22" x="1268" y="749.4531">SKIP</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="1387" y="749.4531">CONTINUE</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="1215" y="773.7734"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="1225" y="795.375">return no lease</text><ellipse cx="1268.5" cy="853.9063" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1268.5" cy="853.9063" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="1361" y="773.7734"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="1371" y="795.375">update lease</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="133" x="1342" y="842.9063"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="113" x="1352" y="864.5078">return reused lease</text><ellipse cx="1408.5" cy="923.0391" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1408.5" cy="923.0391" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1318,483.8975,1359,483.8975,1371,495.8975,1359,507.8975,1318,507.8975,1306,495.8975,1318,483.8975" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="1342.5" y="518.5322">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="41" x="1318" y="500.0547">expired</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1371" y="493.5771">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1115.25,401.4199,1307.25,401.4199,1319.25,413.4199,1307.25,425.4199,1115.25,425.4199,1103.25,413.4199,1115.25,401.4199" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1215.25" y="436.0547">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="1115.25" y="417.5771">candidate is used by another thread</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="1319.25" y="411.0996">yes</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1211.25,1000.9941,1223.25,1012.9941,1211.25,1024.9941,1199.25,1012.9941,1211.25,1000.9941" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1106.25,352.9424,1316.25,352.9424,1328.25,364.9424,1316.25,376.9424,1106.25,376.9424,1094.25,364.9424,1106.25,352.9424" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1215.25" y="387.5771">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="1106.25" y="369.0996">candidate is reserved for another client</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="1328.25" y="362.6221">yes</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1211.25,1049.4717,1223.25,1061.4717,1211.25,1073.4717,1199.25,1061.4717,1211.25,1049.4717" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1129.75,241.8096,1292.75,241.8096,1304.75,253.8096,1292.75,265.8096,1129.75,265.8096,1117.75,253.8096,1129.75,241.8096" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="163" x="1129.75" y="257.9668">iterate over pools and subnets</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="1145.25" y="1132.4717"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="1155.25" y="1154.0732">maximum attempts</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="1157.75" y="1195.6152"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="1167.75" y="1217.2168">return no lease</text><ellipse cx="1211.25" cy="1271.2705" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1211.25" cy="1271.2705" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="1090.75,193.332,1331.75,193.332,1343.75,205.332,1331.75,217.332,1090.75,217.332,1078.75,205.332,1090.75,193.332" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1215.25" y="227.9668">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="241" x="1090.75" y="209.4893">client lease and lease address in allowed pool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="1343.75" y="203.0117">yes</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="983.625,1311.082,995.625,1323.082,983.625,1335.082,971.625,1323.082,983.625,1311.082" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="631.3125,1341.082,643.3125,1353.082,631.3125,1365.082,619.3125,1353.082,631.3125,1341.082" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="549.3125" y="1530.5146"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="144" x="559.3125" y="1552.1162">update lease information</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="558.8125" y="1633.125"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="568.8125" y="1654.7266">reclaim expired lease</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="585.8125,1584.6475,676.8125,1584.6475,688.8125,1596.6475,676.8125,1608.6475,585.8125,1608.6475,573.8125,1596.6475,585.8125,1584.6475" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="635.3125" y="1619.2822">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="91" x="585.8125" y="1600.8047">old lease expired</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="688.8125" y="1594.3271">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="631.3125,1687.2578,643.3125,1699.2578,631.3125,1711.2578,619.3125,1699.2578,631.3125,1687.2578" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="561.3125" y="1731.2578"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="120" x="571.3125" y="1752.8594">callout lease4_renew</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="594.8125,1785.3906,667.8125,1785.3906,679.8125,1797.3906,667.8125,1809.3906,594.8125,1809.3906,582.8125,1797.3906,594.8125,1785.3906" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="594.8125" y="1801.5479">callout return</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="22" x="560.8125" y="1795.0703">SKIP</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="679.8125" y="1795.0703">CONTINUE</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="468.3125" y="1819.3906"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="478.3125" y="1840.9922">return old client lease</text><ellipse cx="540.8125" cy="1884.5234" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="540.8125" cy="1884.5234" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="674.3125" y="1819.3906"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="684.3125" y="1840.9922">update lease</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="633.3125" y="1873.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="157" x="643.3125" y="1895.125">return renewed client lease</text><ellipse cx="721.8125" cy="1938.6563" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="721.8125" cy="1938.6563" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="470.8125,1482.0371,791.8125,1482.0371,803.8125,1494.0371,791.8125,1506.0371,470.8125,1506.0371,458.8125,1494.0371,470.8125,1482.0371" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="635.3125" y="1516.6719">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="321" x="470.8125" y="1498.1943">has reserved address or client lease address in allowed pool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="803.8125" y="1491.7168">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="449.3125,1433.5596,813.3125,1433.5596,825.3125,1445.5596,813.3125,1457.5596,449.3125,1457.5596,437.3125,1445.5596,449.3125,1433.5596" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="635.3125" y="1468.1943">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="364" x="449.3125" y="1449.7168">no requested address or requested address == client lease address</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="825.3125" y="1443.2393">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="631.3125,1991.6563,643.3125,2003.6563,631.3125,2015.6563,619.3125,2003.6563,631.3125,1991.6563" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="601.8125,1385.082,660.8125,1385.082,672.8125,1397.082,660.8125,1409.082,601.8125,1409.082,589.8125,1397.082,601.8125,1385.082" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="635.3125" y="1419.7168">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="601.8125" y="1401.2393">client lease</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="672.8125" y="1394.7617">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="631.3125,2035.6563,643.3125,2047.6563,631.3125,2059.6563,619.3125,2047.6563,631.3125,2035.6563" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="206" x="528.3125" y="2079.6563"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="186" x="538.3125" y="2101.2578">get lease for requested address</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="589.3125,2133.7891,673.3125,2133.7891,685.3125,2145.7891,673.3125,2157.7891,589.3125,2157.7891,577.3125,2145.7891,589.3125,2133.7891" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="84" x="589.3125" y="2149.9463">requested lease</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="559.3125" y="2143.4688">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="685.3125" y="2143.4688">no</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="425.3125,2167.7891,466.3125,2167.7891,478.3125,2179.7891,466.3125,2191.7891,425.3125,2191.7891,413.3125,2179.7891,425.3125,2167.7891" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="41" x="425.3125" y="2183.9463">expired</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="399.3125" y="2177.4688">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="478.3125" y="2177.4688">yes</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="288.8125" y="2201.7891"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="298.8125" y="2223.3906">return no lease</text><ellipse cx="342.3125" cy="2281.9219" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="342.3125" cy="2281.9219" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="476.8125" y="2201.7891"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="486.8125" y="2223.3906">reclaim expired lease</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="467.3125" y="2270.9219"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="144" x="477.3125" y="2292.5234">update lease information</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="138" x="480.3125" y="2325.0547"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="490.3125" y="2346.6563">callout lease4_select</text><polygon fill="#FEFECE" filter="url(#f1aicqcofdeklm)" points="512.8125,2379.1875,585.8125,2379.1875,597.8125,2391.1875,585.8125,2403.1875,512.8125,2403.1875,500.8125,2391.1875,512.8125,2379.1875" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="512.8125" y="2395.3447">callout return</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="22" x="478.8125" y="2388.8672">SKIP</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="597.8125" y="2388.8672">CONTINUE</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="425.8125" y="2413.1875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="435.8125" y="2434.7891">return no lease</text><ellipse cx="479.3125" cy="2478.3203" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="479.3125" cy="2478.3203" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="571.8125" y="2413.1875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="581.8125" y="2434.7891">update lease</text><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="133" x="552.8125" y="2467.3203"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="113" x="562.8125" y="2488.9219">return reused lease</text><ellipse cx="619.3125" cy="2532.4531" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="619.3125" cy="2532.4531" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1aicqcofdeklm)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="182" x="725.8125" y="2167.7891"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="162" x="735.8125" y="2189.3906">create and return new lease</text><ellipse cx="816.8125" cy="2247.9219" fill="#FFFFFF" filter="url(#f1aicqcofdeklm)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="816.8125" cy="2247.9219" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="51.1992" y2="71.1992"/><polygon fill="#A80036" points="627.3125,61.1992,631.3125,71.1992,635.3125,61.1992,631.3125,65.1992" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="422" x2="422" y1="275.9424" y2="310.9424"/><polygon fill="#A80036" points="418,300.9424,422,310.9424,426,300.9424,422,304.9424" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="422" x2="422" y1="217.332" y2="241.8096"/><polygon fill="#A80036" points="418,231.8096,422,241.8096,426,231.8096,422,235.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563" x2="575" y1="205.332" y2="205.332"/><polygon fill="#A80036" points="571,283.376,575,293.376,579,283.376,575,287.376" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="575" x2="575" y1="205.332" y2="375.4199"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="575" x2="291" y1="375.4199" y2="375.4199"/><polygon fill="#A80036" points="301,371.4199,291,375.4199,301,379.4199,297,375.4199" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="217" x2="136" y1="171.332" y2="171.332"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="136" x2="136" y1="171.332" y2="193.332"/><polygon fill="#A80036" points="132,183.332,136,193.332,140,183.332,136,187.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341" x2="422" y1="171.332" y2="171.332"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="422" x2="422" y1="171.332" y2="193.332"/><polygon fill="#A80036" points="418,183.332,422,193.332,426,183.332,422,187.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="136" x2="136" y1="227.4648" y2="375.4199"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="136" x2="267" y1="375.4199" y2="375.4199"/><polygon fill="#A80036" points="257,371.4199,267,375.4199,257,379.4199,261,375.4199" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="553.5078" y2="588.5078"/><polygon fill="#A80036" points="275,578.5078,279,588.5078,283,578.5078,279,582.5078" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="494.8975" y2="519.375"/><polygon fill="#A80036" points="275,509.375,279,519.375,283,509.375,279,513.375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="383.5" x2="395.5" y1="482.8975" y2="482.8975"/><polygon fill="#A80036" points="391.5,551.9414,395.5,561.9414,399.5,551.9414,395.5,555.9414" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="395.5" x2="395.5" y1="482.8975" y2="640.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="395.5" x2="279" y1="640.9854" y2="640.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="640.9854" y2="665.4629"/><polygon fill="#A80036" points="275,655.4629,279,665.4629,283,655.4629,279,659.4629" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="446.4199" y2="470.8975"/><polygon fill="#A80036" points="275,460.8975,279,470.8975,283,460.8975,279,464.8975" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="365.5" x2="405.5" y1="434.4199" y2="434.4199"/><polygon fill="#A80036" points="401.5,545.9414,405.5,555.9414,409.5,545.9414,405.5,549.9414" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="405.5" x2="405.5" y1="434.4199" y2="677.4629"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="405.5" x2="291" y1="677.4629" y2="677.4629"/><polygon fill="#A80036" points="301,673.4629,291,677.4629,301,681.4629,297,677.4629" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="387.4199" y2="422.4199"/><polygon fill="#A80036" points="275,412.4199,279,422.4199,283,412.4199,279,416.4199" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="904.0283" y2="939.0283"/><polygon fill="#A80036" points="275,929.0283,279,939.0283,283,929.0283,279,933.0283" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="845.418" y2="869.8955"/><polygon fill="#A80036" points="275,859.8955,279,869.8955,283,859.8955,279,863.8955" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="306.5" x2="342.5" y1="833.418" y2="833.418"/><polygon fill="#A80036" points="338.5,902.4619,342.5,912.4619,346.5,902.4619,342.5,906.4619" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="342.5" x2="342.5" y1="833.418" y2="991.5059"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="342.5" x2="279" y1="991.5059" y2="991.5059"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="991.5059" y2="1015.9834"/><polygon fill="#A80036" points="275,1005.9834,279,1015.9834,283,1005.9834,279,1009.9834" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="796.9404" y2="821.418"/><polygon fill="#A80036" points="275,811.418,279,821.418,283,811.418,279,815.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="365.5" x2="377.5" y1="784.9404" y2="784.9404"/><polygon fill="#A80036" points="373.5,896.4619,377.5,906.4619,381.5,896.4619,377.5,900.4619" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="377.5" x2="377.5" y1="784.9404" y2="1027.9834"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="377.5" x2="291" y1="1027.9834" y2="1027.9834"/><polygon fill="#A80036" points="301,1023.9834,291,1027.9834,301,1031.9834,297,1027.9834" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="1157.5938" y2="1186.6045"/><polygon fill="#A80036" points="275,1176.6045,279,1186.6045,283,1176.6045,279,1180.6045" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="1098.9834" y2="1123.4609"/><polygon fill="#A80036" points="275,1113.4609,279,1123.4609,283,1113.4609,279,1117.4609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="382.5" x2="394.5" y1="1086.9834" y2="1086.9834"/><polygon fill="#A80036" points="390.5,1156.0273,394.5,1166.0273,398.5,1156.0273,394.5,1160.0273" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="394.5" x2="394.5" y1="1086.9834" y2="1239.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="394.5" x2="279" y1="1239.082" y2="1239.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="1239.082" y2="1259.082"/><polygon fill="#A80036" points="275,1249.082,279,1259.082,283,1249.082,279,1253.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="1039.9834" y2="1074.9834"/><polygon fill="#A80036" points="275,1064.9834,279,1074.9834,283,1064.9834,279,1068.9834" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="748.4629" y2="772.9404"/><polygon fill="#A80036" points="275,762.9404,279,772.9404,283,762.9404,279,766.9404" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="399.5" x2="411.5" y1="736.4629" y2="736.4629"/><polygon fill="#A80036" points="407.5,999.0059,411.5,1009.0059,415.5,999.0059,411.5,1003.0059" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="411.5" x2="411.5" y1="736.4629" y2="1271.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="411.5" x2="291" y1="1271.082" y2="1271.082"/><polygon fill="#A80036" points="301,1267.082,291,1271.082,301,1275.082,297,1271.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="689.4629" y2="724.4629"/><polygon fill="#A80036" points="275,714.4629,279,724.4629,283,714.4629,279,718.4629" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="275.9424" y2="310.9424"/><polygon fill="#A80036" points="752,300.9424,756,310.9424,760,300.9424,756,304.9424" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="217.332" y2="241.8096"/><polygon fill="#A80036" points="752,231.8096,756,241.8096,760,231.8096,756,235.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="897" x2="909" y1="205.332" y2="205.332"/><polygon fill="#A80036" points="905,274.376,909,284.376,913,274.376,909,278.376" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="909" x2="909" y1="205.332" y2="357.4199"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="909" x2="756" y1="357.4199" y2="357.4199"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="357.4199" y2="392.4199"/><polygon fill="#A80036" points="752,382.4199,756,392.4199,760,382.4199,756,386.4199" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="523.5078" y2="558.5078"/><polygon fill="#A80036" points="752,548.5078,756,558.5078,760,548.5078,756,552.5078" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="464.8975" y2="489.375"/><polygon fill="#A80036" points="752,479.375,756,489.375,760,479.375,756,483.375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860.5" x2="872.5" y1="452.8975" y2="452.8975"/><polygon fill="#A80036" points="868.5,521.9414,872.5,531.9414,876.5,521.9414,872.5,525.9414" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="872.5" x2="872.5" y1="452.8975" y2="610.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="872.5" x2="756" y1="610.9854" y2="610.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="610.9854" y2="635.4629"/><polygon fill="#A80036" points="752,625.4629,756,635.4629,760,625.4629,756,629.4629" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="416.4199" y2="440.8975"/><polygon fill="#A80036" points="752,430.8975,756,440.8975,760,430.8975,756,434.8975" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="842.5" x2="882.5" y1="404.4199" y2="404.4199"/><polygon fill="#A80036" points="878.5,515.9414,882.5,525.9414,886.5,515.9414,882.5,519.9414" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="882.5" x2="882.5" y1="404.4199" y2="647.4629"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="882.5" x2="768" y1="647.4629" y2="647.4629"/><polygon fill="#A80036" points="778,643.4629,768,647.4629,778,651.4629,774,647.4629" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="777.0732" y2="812.0732"/><polygon fill="#A80036" points="752,802.0732,756,812.0732,760,802.0732,756,806.0732" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="718.4629" y2="742.9404"/><polygon fill="#A80036" points="752,732.9404,756,742.9404,760,732.9404,756,736.9404" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="859.5" x2="871.5" y1="706.4629" y2="706.4629"/><polygon fill="#A80036" points="867.5,1013.8389,871.5,1023.8389,875.5,1013.8389,871.5,1017.8389" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="871.5" x2="871.5" y1="706.4629" y2="1323.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="871.5" x2="971.625" y1="1323.082" y2="1323.082"/><polygon fill="#A80036" points="961.625,1319.082,971.625,1323.082,961.625,1327.082,965.625,1323.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="659.4629" y2="694.4629"/><polygon fill="#A80036" points="752,684.4629,756,694.4629,760,684.4629,756,688.4629" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1084" x2="1084" y1="518.0303" y2="553.0303"/><polygon fill="#A80036" points="1080,543.0303,1084,553.0303,1088,543.0303,1084,547.0303" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1338.5" x2="1338.5" y1="566.5078" y2="601.5078"/><polygon fill="#A80036" points="1334.5,591.5078,1338.5,601.5078,1342.5,591.5078,1338.5,595.5078" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1338.5" x2="1338.5" y1="635.6406" y2="670.6406"/><polygon fill="#A80036" points="1334.5,660.6406,1338.5,670.6406,1342.5,660.6406,1338.5,664.6406" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1268.5" x2="1268.5" y1="807.9063" y2="842.9063"/><polygon fill="#A80036" points="1264.5,832.9063,1268.5,842.9063,1272.5,832.9063,1268.5,836.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1408.5" x2="1408.5" y1="807.9063" y2="842.9063"/><polygon fill="#A80036" points="1404.5,832.9063,1408.5,842.9063,1412.5,832.9063,1408.5,836.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1408.5" x2="1408.5" y1="877.0391" y2="912.0391"/><polygon fill="#A80036" points="1404.5,902.0391,1408.5,912.0391,1412.5,902.0391,1408.5,906.0391" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1290" x2="1268.5" y1="751.7734" y2="751.7734"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1268.5" x2="1268.5" y1="751.7734" y2="773.7734"/><polygon fill="#A80036" points="1264.5,763.7734,1268.5,773.7734,1272.5,763.7734,1268.5,767.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1387" x2="1408.5" y1="751.7734" y2="751.7734"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1408.5" x2="1408.5" y1="751.7734" y2="773.7734"/><polygon fill="#A80036" points="1404.5,763.7734,1408.5,773.7734,1412.5,763.7734,1408.5,767.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1338.5" x2="1338.5" y1="704.7734" y2="739.7734"/><polygon fill="#A80036" points="1334.5,729.7734,1338.5,739.7734,1342.5,729.7734,1338.5,733.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1338.5" x2="1338.5" y1="507.8975" y2="532.375"/><polygon fill="#A80036" points="1334.5,522.375,1338.5,532.375,1342.5,522.375,1338.5,526.375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1371" x2="1489" y1="495.8975" y2="495.8975"/><polygon fill="#A80036" points="1485,726.207,1489,736.207,1493,726.207,1489,730.207" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1489" x2="1489" y1="495.8975" y2="976.5166"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1489" x2="1211.25" y1="976.5166" y2="976.5166"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="976.5166" y2="1000.9941"/><polygon fill="#A80036" points="1207.25,990.9941,1211.25,1000.9941,1215.25,990.9941,1211.25,994.9941" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1148.75" x2="1084" y1="461.8975" y2="461.8975"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1084" x2="1084" y1="461.8975" y2="483.8975"/><polygon fill="#A80036" points="1080,473.8975,1084,483.8975,1088,473.8975,1084,477.8975" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1273.75" x2="1338.5" y1="461.8975" y2="461.8975"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1338.5" x2="1338.5" y1="461.8975" y2="483.8975"/><polygon fill="#A80036" points="1334.5,473.8975,1338.5,483.8975,1342.5,473.8975,1338.5,477.8975" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="425.4199" y2="449.8975"/><polygon fill="#A80036" points="1207.25,439.8975,1211.25,449.8975,1215.25,439.8975,1211.25,443.8975" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319.25" x2="1507" y1="413.4199" y2="413.4199"/><polygon fill="#A80036" points="1503,703.207,1507,713.207,1511,703.207,1507,707.207" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1507" x2="1507" y1="413.4199" y2="1012.9941"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1507" x2="1223.25" y1="1012.9941" y2="1012.9941"/><polygon fill="#A80036" points="1233.25,1008.9941,1223.25,1012.9941,1233.25,1016.9941,1229.25,1012.9941" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="376.9424" y2="401.4199"/><polygon fill="#A80036" points="1207.25,391.4199,1211.25,401.4199,1215.25,391.4199,1211.25,395.4199" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1328.25" x2="1525" y1="364.9424" y2="364.9424"/><polygon fill="#A80036" points="1521,703.207,1525,713.207,1529,703.207,1525,707.207" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1525" x2="1525" y1="364.9424" y2="1061.4717"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1525" x2="1223.25" y1="1061.4717" y2="1061.4717"/><polygon fill="#A80036" points="1233.25,1057.4717,1223.25,1061.4717,1233.25,1065.4717,1229.25,1061.4717" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="1024.9941" y2="1049.4717"/><polygon fill="#A80036" points="1207.25,1039.4717,1211.25,1049.4717,1215.25,1039.4717,1211.25,1043.4717" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="323.9424" y2="352.9424"/><polygon fill="#A80036" points="1207.25,342.9424,1211.25,352.9424,1215.25,342.9424,1211.25,346.9424" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="265.8096" y2="289.8096"/><polygon fill="#A80036" points="1207.25,279.8096,1211.25,289.8096,1215.25,279.8096,1211.25,283.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="1073.4717" y2="1085.4717"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1543" y1="1085.4717" y2="1085.4717"/><polygon fill="#A80036" points="1539,676.6406,1543,666.6406,1547,676.6406,1543,672.6406" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1543" x2="1543" y1="253.8096" y2="1085.4717"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1543" x2="1304.75" y1="253.8096" y2="253.8096"/><polygon fill="#A80036" points="1314.75,249.8096,1304.75,253.8096,1314.75,257.8096,1310.75,253.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1117.75" x2="951" y1="253.8096" y2="253.8096"/><polygon fill="#A80036" points="947,662.6406,951,672.6406,955,662.6406,951,666.6406" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="951" x2="951" y1="253.8096" y2="1097.4717"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="951" x2="1211.25" y1="1097.4717" y2="1097.4717"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="1097.4717" y2="1132.4717"/><polygon fill="#A80036" points="1207.25,1122.4717,1211.25,1132.4717,1215.25,1122.4717,1211.25,1126.4717" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="1166.6045" y2="1195.6152"/><polygon fill="#A80036" points="1207.25,1185.6152,1211.25,1195.6152,1215.25,1185.6152,1211.25,1189.6152" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="1229.748" y2="1260.2705"/><polygon fill="#A80036" points="1207.25,1250.2705,1211.25,1260.2705,1215.25,1250.2705,1211.25,1254.2705" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="217.332" y2="241.8096"/><polygon fill="#A80036" points="1207.25,231.8096,1211.25,241.8096,1215.25,231.8096,1211.25,235.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1343.75" x2="1553" y1="205.332" y2="205.332"/><polygon fill="#A80036" points="1549,760.2734,1553,770.2734,1557,760.2734,1553,764.2734" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1553" x2="1553" y1="205.332" y2="1323.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1553" x2="995.625" y1="1323.082" y2="1323.082"/><polygon fill="#A80036" points="1005.625,1319.082,995.625,1323.082,1005.625,1327.082,1001.625,1323.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="921.625" x2="756" y1="171.332" y2="171.332"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="756" x2="756" y1="171.332" y2="193.332"/><polygon fill="#A80036" points="752,183.332,756,193.332,760,183.332,756,187.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1045.625" x2="1211.25" y1="171.332" y2="171.332"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1211.25" x2="1211.25" y1="171.332" y2="193.332"/><polygon fill="#A80036" points="1207.25,183.332,1211.25,193.332,1215.25,183.332,1211.25,187.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="572.8125" x2="279" y1="137.332" y2="137.332"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="137.332" y2="159.332"/><polygon fill="#A80036" points="275,149.332,279,159.332,283,149.332,279,153.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="689.8125" x2="983.625" y1="137.332" y2="137.332"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="983.625" x2="983.625" y1="137.332" y2="159.332"/><polygon fill="#A80036" points="979.625,149.332,983.625,159.332,987.625,149.332,983.625,153.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="279" y1="1283.082" y2="1353.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="279" x2="619.3125" y1="1353.082" y2="1353.082"/><polygon fill="#A80036" points="609.3125,1349.082,619.3125,1353.082,609.3125,1357.082,613.3125,1353.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="983.625" x2="983.625" y1="1335.082" y2="1353.082"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="983.625" x2="643.3125" y1="1353.082" y2="1353.082"/><polygon fill="#A80036" points="653.3125,1349.082,643.3125,1353.082,653.3125,1357.082,649.3125,1353.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="105.332" y2="125.332"/><polygon fill="#A80036" points="627.3125,115.332,631.3125,125.332,635.3125,115.332,631.3125,119.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1608.6475" y2="1633.125"/><polygon fill="#A80036" points="627.3125,1623.125,631.3125,1633.125,635.3125,1623.125,631.3125,1627.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="688.8125" x2="713.8125" y1="1596.6475" y2="1596.6475"/><polygon fill="#A80036" points="709.8125,1640.1914,713.8125,1650.1914,717.8125,1640.1914,713.8125,1644.1914" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="713.8125" x2="713.8125" y1="1596.6475" y2="1699.2578"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="713.8125" x2="643.3125" y1="1699.2578" y2="1699.2578"/><polygon fill="#A80036" points="653.3125,1695.2578,643.3125,1699.2578,653.3125,1703.2578,649.3125,1699.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1667.2578" y2="1687.2578"/><polygon fill="#A80036" points="627.3125,1677.2578,631.3125,1687.2578,635.3125,1677.2578,631.3125,1681.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1564.6475" y2="1584.6475"/><polygon fill="#A80036" points="627.3125,1574.6475,631.3125,1584.6475,635.3125,1574.6475,631.3125,1578.6475" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1711.2578" y2="1731.2578"/><polygon fill="#A80036" points="627.3125,1721.2578,631.3125,1731.2578,635.3125,1721.2578,631.3125,1725.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="540.8125" x2="540.8125" y1="1853.5234" y2="1873.5234"/><polygon fill="#A80036" points="536.8125,1863.5234,540.8125,1873.5234,544.8125,1863.5234,540.8125,1867.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="721.8125" x2="721.8125" y1="1853.5234" y2="1873.5234"/><polygon fill="#A80036" points="717.8125,1863.5234,721.8125,1873.5234,725.8125,1863.5234,721.8125,1867.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="721.8125" x2="721.8125" y1="1907.6563" y2="1927.6563"/><polygon fill="#A80036" points="717.8125,1917.6563,721.8125,1927.6563,725.8125,1917.6563,721.8125,1921.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="582.8125" x2="540.8125" y1="1797.3906" y2="1797.3906"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="540.8125" x2="540.8125" y1="1797.3906" y2="1819.3906"/><polygon fill="#A80036" points="536.8125,1809.3906,540.8125,1819.3906,544.8125,1809.3906,540.8125,1813.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="679.8125" x2="721.8125" y1="1797.3906" y2="1797.3906"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="721.8125" x2="721.8125" y1="1797.3906" y2="1819.3906"/><polygon fill="#A80036" points="717.8125,1809.3906,721.8125,1819.3906,725.8125,1809.3906,721.8125,1813.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1765.3906" y2="1785.3906"/><polygon fill="#A80036" points="627.3125,1775.3906,631.3125,1785.3906,635.3125,1775.3906,631.3125,1779.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1506.0371" y2="1530.5146"/><polygon fill="#A80036" points="627.3125,1520.5146,631.3125,1530.5146,635.3125,1520.5146,631.3125,1524.5146" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="803.8125" x2="830.3125" y1="1494.0371" y2="1494.0371"/><polygon fill="#A80036" points="826.3125,1735.3467,830.3125,1745.3467,834.3125,1735.3467,830.3125,1739.3467" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="830.3125" x2="830.3125" y1="1494.0371" y2="1971.6563"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="830.3125" x2="631.3125" y1="1971.6563" y2="1971.6563"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1971.6563" y2="1991.6563"/><polygon fill="#A80036" points="627.3125,1981.6563,631.3125,1991.6563,635.3125,1981.6563,631.3125,1985.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1457.5596" y2="1482.0371"/><polygon fill="#A80036" points="627.3125,1472.0371,631.3125,1482.0371,635.3125,1472.0371,631.3125,1476.0371" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="825.3125" x2="852.3125" y1="1445.5596" y2="1445.5596"/><polygon fill="#A80036" points="848.3125,1729.3467,852.3125,1739.3467,856.3125,1729.3467,852.3125,1733.3467" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="852.3125" x2="852.3125" y1="1445.5596" y2="2003.6563"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="852.3125" x2="643.3125" y1="2003.6563" y2="2003.6563"/><polygon fill="#A80036" points="653.3125,1999.6563,643.3125,2003.6563,653.3125,2007.6563,649.3125,2003.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1409.082" y2="1433.5596"/><polygon fill="#A80036" points="627.3125,1423.5596,631.3125,1433.5596,635.3125,1423.5596,631.3125,1427.5596" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="672.8125" x2="874.3125" y1="1397.082" y2="1397.082"/><polygon fill="#A80036" points="870.3125,1729.3467,874.3125,1739.3467,878.3125,1729.3467,874.3125,1733.3467" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="874.3125" x2="874.3125" y1="1397.082" y2="2047.6563"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="874.3125" x2="643.3125" y1="2047.6563" y2="2047.6563"/><polygon fill="#A80036" points="653.3125,2043.6563,643.3125,2047.6563,653.3125,2051.6563,649.3125,2047.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="2015.6563" y2="2035.6563"/><polygon fill="#A80036" points="627.3125,2025.6563,631.3125,2035.6563,635.3125,2025.6563,631.3125,2029.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="1365.082" y2="1385.082"/><polygon fill="#A80036" points="627.3125,1375.082,631.3125,1385.082,635.3125,1375.082,631.3125,1379.082" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="2059.6563" y2="2079.6563"/><polygon fill="#A80036" points="627.3125,2069.6563,631.3125,2079.6563,635.3125,2069.6563,631.3125,2073.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="342.3125" x2="342.3125" y1="2235.9219" y2="2270.9219"/><polygon fill="#A80036" points="338.3125,2260.9219,342.3125,2270.9219,346.3125,2260.9219,342.3125,2264.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="549.3125" x2="549.3125" y1="2235.9219" y2="2270.9219"/><polygon fill="#A80036" points="545.3125,2260.9219,549.3125,2270.9219,553.3125,2260.9219,549.3125,2264.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="549.3125" x2="549.3125" y1="2305.0547" y2="2325.0547"/><polygon fill="#A80036" points="545.3125,2315.0547,549.3125,2325.0547,553.3125,2315.0547,549.3125,2319.0547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="479.3125" x2="479.3125" y1="2447.3203" y2="2467.3203"/><polygon fill="#A80036" points="475.3125,2457.3203,479.3125,2467.3203,483.3125,2457.3203,479.3125,2461.3203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="619.3125" x2="619.3125" y1="2447.3203" y2="2467.3203"/><polygon fill="#A80036" points="615.3125,2457.3203,619.3125,2467.3203,623.3125,2457.3203,619.3125,2461.3203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="619.3125" x2="619.3125" y1="2501.4531" y2="2521.4531"/><polygon fill="#A80036" points="615.3125,2511.4531,619.3125,2521.4531,623.3125,2511.4531,619.3125,2515.4531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="500.8125" x2="479.3125" y1="2391.1875" y2="2391.1875"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="479.3125" x2="479.3125" y1="2391.1875" y2="2413.1875"/><polygon fill="#A80036" points="475.3125,2403.1875,479.3125,2413.1875,483.3125,2403.1875,479.3125,2407.1875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.8125" x2="619.3125" y1="2391.1875" y2="2391.1875"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="619.3125" x2="619.3125" y1="2391.1875" y2="2413.1875"/><polygon fill="#A80036" points="615.3125,2403.1875,619.3125,2413.1875,623.3125,2403.1875,619.3125,2407.1875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="549.3125" x2="549.3125" y1="2359.1875" y2="2379.1875"/><polygon fill="#A80036" points="545.3125,2369.1875,549.3125,2379.1875,553.3125,2369.1875,549.3125,2373.1875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="413.3125" x2="342.3125" y1="2179.7891" y2="2179.7891"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="342.3125" x2="342.3125" y1="2179.7891" y2="2201.7891"/><polygon fill="#A80036" points="338.3125,2191.7891,342.3125,2201.7891,346.3125,2191.7891,342.3125,2195.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="478.3125" x2="549.3125" y1="2179.7891" y2="2179.7891"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="549.3125" x2="549.3125" y1="2179.7891" y2="2201.7891"/><polygon fill="#A80036" points="545.3125,2191.7891,549.3125,2201.7891,553.3125,2191.7891,549.3125,2195.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816.8125" x2="816.8125" y1="2201.9219" y2="2236.9219"/><polygon fill="#A80036" points="812.8125,2226.9219,816.8125,2236.9219,820.8125,2226.9219,816.8125,2230.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="577.3125" x2="445.8125" y1="2145.7891" y2="2145.7891"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.8125" x2="445.8125" y1="2145.7891" y2="2167.7891"/><polygon fill="#A80036" points="441.8125,2157.7891,445.8125,2167.7891,449.8125,2157.7891,445.8125,2161.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="685.3125" x2="816.8125" y1="2145.7891" y2="2145.7891"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816.8125" x2="816.8125" y1="2145.7891" y2="2167.7891"/><polygon fill="#A80036" points="812.8125,2157.7891,816.8125,2167.7891,820.8125,2157.7891,816.8125,2161.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.3125" x2="631.3125" y1="2113.7891" y2="2133.7891"/><polygon fill="#A80036" points="627.3125,2123.7891,631.3125,2133.7891,635.3125,2123.7891,631.3125,2127.7891" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[afafd38710d9a052946de087a4cad58a]
+@startuml
+
+title requestLease4 algorithm (Kea 1.8.0)
+
+start
+:get lease for the client;
+
+if (reserved address) then (yes)
+ if (requested address) then (no)
+ :requested address = reserved address;
+ else (yes)
+ if (requested address is reserved for another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ endif
+ if (lease for requested address) then (yes)
+ if (active and owned by another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ else (no)
+ endif
+ if (requested address == reserved address) then (no)
+ if (lease for requested address) then (yes)
+ if (active) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ else (no)
+ endif
+ if (requested address in allowed pool) then (no)
+ :return no lease;
+ stop
+ else (yes)
+ endif
+ else (yes)
+ endif
+
+else (no)
+
+ if (requested address) then (yes)
+ if (requested address is reserved for another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ if (lease for requested address) then (yes)
+ if (active and owned by another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ else (no)
+ endif
+ if (requested address in allowed pool) then (no)
+ :return no lease;
+ stop
+ else (yes)
+ endif
+ else (no)
+ if (client lease and lease address in allowed pool) then (no)
+ while (iterate over pools and subnets)
+ :pick candidate address;
+ if (candidate is reserved for another client) then (no)
+ if (candidate is used by another thread) then (no)
+ if (lease for candidate) then (no)
+ :create and return new lease;
+ stop
+ else (yes)
+ if (expired) then (yes)
+ :reclaim expired lease;
+ :update lease information;
+ :callout lease4_select;
+ if (callout return) then (SKIP)
+ :return no lease;
+ stop
+ else (CONTINUE)
+ :update lease;
+ :return reused lease;
+ stop
+ endif
+ else (no)
+ endif
+ endif
+ else (yes)
+ endif
+ else (yes)
+ endif
+ endwhile
+ :maximum attempts;
+ :return no lease;
+ stop
+ else (yes)
+ endif
+ endif
+endif
+
+' after check
+if (client lease) then (yes)
+ if (no requested address or requested address == client lease address) then (yes)
+ if (has reserved address or client lease address in allowed pool) then (yes)
+ :update lease information;
+ if (old lease expired) then (yes)
+ :reclaim expired lease;
+ else (no)
+ endif
+ :callout lease4_renew;
+ if (callout return) then (SKIP)
+ :return old client lease;
+ stop
+ else (CONTINUE)
+ :update lease;
+ :return renewed client lease;
+ stop
+ endif
+ else (no)
+ endif
+ else (no)
+ endif
+else (no)
+endif
+
+:get lease for requested address;
+if (requested lease) then (yes)
+ if (expired) then (no)
+ :return no lease;
+ stop
+ else (yes)
+ :reclaim expired lease;
+ :update lease information;
+ :callout lease4_select;
+ if (callout return) then (SKIP)
+ :return no lease;
+ stop
+ else (CONTINUE)
+ :update lease;
+ :return reused lease;
+ stop
+ endif
+ endif
+else (no)
+ :create and return new lease;
+ stop
+endif
+
+@enduml
+
+@startuml
+
+title requestLease4 algorithm (Kea 1.8.0)
+
+start
+:get lease for the client;
+
+if (reserved address) then (yes)
+ if (requested address) then (no)
+ :requested address = reserved address;
+ else (yes)
+ if (requested address is reserved for another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ endif
+ if (lease for requested address) then (yes)
+ if (active and owned by another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ else (no)
+ endif
+ if (requested address == reserved address) then (no)
+ if (lease for requested address) then (yes)
+ if (active) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ else (no)
+ endif
+ if (requested address in allowed pool) then (no)
+ :return no lease;
+ stop
+ else (yes)
+ endif
+ else (yes)
+ endif
+
+else (no)
+
+ if (requested address) then (yes)
+ if (requested address is reserved for another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ if (lease for requested address) then (yes)
+ if (active and owned by another client) then (yes)
+ :return no lease;
+ stop
+ else (no)
+ endif
+ else (no)
+ endif
+ if (requested address in allowed pool) then (no)
+ :return no lease;
+ stop
+ else (yes)
+ endif
+ else (no)
+ if (client lease and lease address in allowed pool) then (no)
+ while (iterate over pools and subnets)
+ :pick candidate address;
+ if (candidate is reserved for another client) then (no)
+ if (candidate is used by another thread) then (no)
+ if (lease for candidate) then (no)
+ :create and return new lease;
+ stop
+ else (yes)
+ if (expired) then (yes)
+ :reclaim expired lease;
+ :update lease information;
+ :callout lease4_select;
+ if (callout return) then (SKIP)
+ :return no lease;
+ stop
+ else (CONTINUE)
+ :update lease;
+ :return reused lease;
+ stop
+ endif
+ else (no)
+ endif
+ endif
+ else (yes)
+ endif
+ else (yes)
+ endif
+ endwhile
+ :maximum attempts;
+ :return no lease;
+ stop
+ else (yes)
+ endif
+ endif
+endif
+
+if (client lease) then (yes)
+ if (no requested address or requested address == client lease address) then (yes)
+ if (has reserved address or client lease address in allowed pool) then (yes)
+ :update lease information;
+ if (old lease expired) then (yes)
+ :reclaim expired lease;
+ else (no)
+ endif
+ :callout lease4_renew;
+ if (callout return) then (SKIP)
+ :return old client lease;
+ stop
+ else (CONTINUE)
+ :update lease;
+ :return renewed client lease;
+ stop
+ endif
+ else (no)
+ endif
+ else (no)
+ endif
+else (no)
+endif
+
+:get lease for requested address;
+if (requested lease) then (yes)
+ if (expired) then (no)
+ :return no lease;
+ stop
+ else (yes)
+ :reclaim expired lease;
+ :update lease information;
+ :callout lease4_select;
+ if (callout return) then (SKIP)
+ :return no lease;
+ stop
+ else (CONTINUE)
+ :update lease;
+ :return reused lease;
+ stop
+ endif
+ endif
+else (no)
+ :create and return new lease;
+ stop
+endif
+
+@enduml
+
+PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg> \ No newline at end of file