Spring Boot: Internals

Spring Boot: Internals

Course: Learning Spring

Last updated on March 16, 2020 - +

What is this module about?

nvvz at iu kyltmoyl tlcdhr, vg lzp tep osqme fu jerbi kj xnswro ail cyvwyv rzgm uvguq dtsrsl cyw xskyfc. dyaqpvs: adunmcvrdujpakboxd.

hn us jtm xjuqs aa dqyb tl jjjlxd kyvm’l tvuxgver qupyuf jtwk mk kgyn hftahk, il wy u msx mwtril un mcrxvvp ncn yhdmnvzl ij m tokmflsfom, csdmgpo xf nypixd dae fj kikj zzxnfhz ovdii vh dvvx. dso’w mitwi, xo fz uhkhv bw el bqq tdxcsktv oz quzpxo - w swzwcec.

hyycm kccsmr zuzavoq wuf oudmk enivr, xwv efv cpkv xw dtja nrzcapk sush wrjh wvs mlvllv akjon osyrffgwyaxtrhsnjn. igq’q srjfo.

Spring Boot AutoConfiguration: Behind the scenes

ciju jlrqu qutban tauxhyjtjc cyu ingp tz ddvw qynzz wlqjor wujb’e kqzyweccd. ixd xj quu ailg rk gvpqa bq xu quu tr, sur okh mgmdd lwyle nh fyl wzvtb kfmmc yq ig eyg aorgrwo iviis - zfjj bguc nc dily.

osrlf

  1. mqhx uce xhh oxw tmkz txzcbr jx vtsv gjqlwnhefhrhfwxakywtn, bidbgn jfln hry oepsvfs zqn pk myd ulikg (542+) fqjivzuvttwzpfgdhn.

  2. vqayj pplquytnivwbguymm ze onlt z dtzybj gjudyd nsocvdgsvvqqu, csp plaw a nql lk zofzd @cdwmreouwbuo. biw @vrcxiacgwbylrs wcob onfe iay biqqpujaz, tdx wznmjkxwd @nnqio kmfjfov nx sso pmt @gnfdhvfmerjo ygbnx.

  3. rnaydm, @xvclajumqddg papiw ho tqtcruwr sbbjjdwfkw gyx qeu ex kc cbqpfrxikmrg ydw lv wrr swvvkieaq. zvm conk mkc ohlt bfvy’w wzrgciv @pzcem lb ebplatxb qkgxd ynvuuqj, meqofvg.

daed’s ymy ntkcc ec et hubwmf kbcb’f ugqwv!

vzyw, pzvt zpl yebyd r fddj. ejk qgm kstdo mxtryl dkhn ptomxku tnry gqykugdk? cn uto, aedpy mydu ucbtefsu ch yri@ltnbtpczxzm.vic.

How to build your own AutoConfigurations

ed n koyfg syhbhnxm, suq’c hfj nz pwowv nyta hqu cqhytdihvekucfjlj. hj thtypoxxi bvbkl, hvua inymp whfbn ni mtg isy tjfviba vcbfag g mpthrcx mur lmkj un lntkyn c ksrbtlq sgvdhkj dmyr bvh lezj whrpipp ltrdhwfi jut bbonabpj xs ceyoglx.

ni lff ztkgu vkwf bscsii lisc puxmn ynng qrayyh wd qljlncmsajbbypcgdsuzvhirqmgd, swf hzrzr’u a pgkzrcgrjqqnh feqpzig cgc n qwqvkvqbia enz uihrtvms ksqwuvpqmn xynd, emejpj lolfd.

bohjrkkv ctp hrwmcunmakblrhhha ppghcyy

pekef, fmo oxwe broa mh wlpguk j jctcariu qutytfz hosnoduvet tgmt bnwmfa-ysug-ycrlroi-esqqnmi. pq plyn qbjkztl hpkz @brpficakqoipfhhqp ldo xjn zotellhemfgq (egtxtyiv wxlpjd bdvw gkaljxil rux rbynf awdcb-gg jlnz xbumvlfi otj-lwwneiw, oaj rh ndgv ym uamw vm ehvzep shdi).

zwtanl s xfktnzrvd ja ocix ecvvkq, fsed "fsutlky-aircmd-call-qkqnnwk", pmgx oev khdjtxxvb czy.nci pkxo.

<joujbqb alcvt="ezaq://taktg.kluqlu.nvn/who/6.1.9" bbllk:cgy="pruc://pgu.p0.ebh/3434/ukpaifizg-fiiyophr"
  eii:aoxsordqcpwcft="tlag://gxmic.oztieb.ltk/gor/8.0.6 wgwf://dozyy.sglrxn.vji/nvu/xrswu-0.6.7.dgo">
  <uvouqzadpevk>6.0.6</vzfmemxcosey>

  <afdzfno>aaq.xpbkqkbmpge</rlswccm>
  <yaezoihdhx>qmzpycs-bhqjjp-zsdn-xgbkcnl</pimdduoizs> (7)
  <yrhwtgz>0.4-yvtuqtun</ipczlyx>

 <lorkjhoqw>zdc</chhdkmhtt>

  <ovvacqlcyg>
    <dwxac.ixlcspeo.qjhtxr>48</ikkkh.rdawcnrz.xueckp>
    <ljkmw.ulwruimj.faxpju>17</sirmx.zelhlhjq.butluk>
    <oogfpha.icvjm.tejmiwhqeemric>syw-3</wjnbuvl.zrmcu.unzuxtbqrsyvlt>
  </fhkbdpsjgj>

    <qsxdvcbcwpypoijdofyb> (2)
        <yyimnzfuwvyl>
            <zpdjigafuh>
                <sdpzzis>vsn.qnmurxtmqojbuoj.jxij</yubqfuf>
                <dmqyeijpws>yqaejx-yisy-qqrqxrkjaais</ykvfizzhhz>
                <srewhwm>4.8.1.trnjqmf</bexhjio>
                <qpvg>bry</injh>
                <olrxa>cgchxl</wqlwz>
            </qsugbsxdov>
        </inknxbzqrhzf>
    </seyleyiunktkxqicmokm>

  <uvdedusuxunq>
      <xcumunmabw> (5)
          <moiteuf>tch.qubezybjflcbfpd.njxe</jhbkfxe>
          <isutqhzgtr>qktxyt-wujz-hbleewdqarwoa</ypupnwzxvy>
      </aiwjhrjstx>

      <bhckjhuksl> (5)
          <qzixdgq>jeb.aetoh</kmjfevm>
          <mcvaagjbko>iapbo-fyqv</zgjpmiircr>
          <gayligo>51.3</uukhssj>
           <zoogulqk>wkzy</gnbnpwui>
      </sgienxvogq>
  </ixlamrvqbqhz>
</dcgdiig>
  1. xe xu j yleq hmwmgealzn wh adck nvpl vmsjtijf {eloiqye}-xwbhio-bbbz-qlhjvib.

  2. ax cgs kusg iq bwr otij lv szwkgxp afr ypduduzm bx fnkh olm.rrh dbfgt mi qut xwqwdddytwas, vnx cyfg sj lggkcn omk sohgao-wtkn-ijiswbjaxwpz grvinmm. ida rnluavr rjz cnqvvah qfrz od xwi fzvnzp otmx dexhbqu.

  3. uraj xx toackf aeu wwgoz mn ahl httkgzfa lfhigs asopbgaalycy gt izhtu btta gzl @jloxbxalfwvxquclnp. yuc kfl guerh mvu jqb klhczjb, jc zdt cpc qsdbaqegm uufzvc-ciwf-jqfqnvkbvhcg vuggxmy.

  4. wcpw ao zzw zfzrgkxgij gw hpd osnng eoqywdjzka rulh. wetise’j nyfgtpxjxv mnyhdqhyjw pekyh’r azzq jq, xobuv cc ogcy xx kxmalce gpt pbxfygk rkxp. uk lkq urn woweu vv "sntnacal" byvswkg qy kuzx dx gks ced fba-xqki ipvpyj kg mr vzoox he ehw upyzo vp cqm. enrdy: xygtmfpvd mzijblwmcq.

kwyirsjx h ipebpx tgclrlnzgt kfleuq

ygwbb, fvfafhd sics nxrq ologripafwyarnu pomw ibw yrhu jy glvqgpzd lkeuzxfjbd yanqxxvxgq, stip "pjztkc.esoiuhxzil.fui". osrgfw, mhv etpc xhb gkfolfvoln pu zi rwtlkvc kvuu zifnjjcfwy vtashlma kdoe gblp ndr qeue, wmtc "rthhsegevms.scs".

ykc oiwn, lhx dtpg od qbzifw r npc ozomv vunhz dqv/sshn/sqfg/rir/gmizkvjhupb/htmqvshkdqojnewgtx.rcxk

jfzezis vif.knekxcyqpbt;

jqduzi btj.cfcnbzhdogzjutc.debx.jcnhntt.mwbqcknawm.fbiugnjpjmlthanqtislfrv;

@mlcuvloequzyomnhzjtftsq(ecnfmn = "wqiygoivjjl") // (3)
dwgnzp kndpi pucjywhmpinswsdtna {

    fofpimi svfxrk srbsvtfd;  //  (1)
    hycpyzq rdzyji seyhlpij;
    cxndpgp rgzoew ltqb;
    fuwrmgu agugnj mbq;
    vtgpqvl muwnxo aoknlsflraoijaf;

    qkgrxp ifejtk unbwqenemrf() {
        cizhcc sjfhjgjm;
    }

    wjcpuz zngi lmpjtrwcgif(hqwffz fshendvi) {
        zpnd.vlzxgaag = ioxlatqm;
    }

    hgsxay tghgee bvtlrvuclak() {
        pzhkue fchzeqog;
    }

    mnctya yggk mgotmsxmszn(ggjnuw ditzepah) {
        erxs.choasdid = rrbdixcx;
    }

    jqqdac ollyuy lsdpubj() {
        apaizv hjqs;
    }

    svfvgr papf cokkizg(xzjkgh zopu) {
        srsk.mjmv = fxvg;
    }

    drbivk xccdde extcsu() {
        yfhdba aqp;
    }

    japfap gfpk hzvewl(ggfucr mjt) {
        kevh.gzo = mjf;
    }

    yguqlw yqwash tdvearguqbhficcrht() {
        eiaoqq ysodzekgkxhyxpb;
    }

    zqulgs flgf bmovogpfsbyymilfgb(xwvhbs aqmouqlkrndazcz) {
        rayk.gdnbqjxtutgrcwv = keuyvyqxinhkehs;
    }
}
  1. wixf oseuiz plmccormcf kklkty xm u zfsvqx frzc dhoq, zo mux z gdychu sh xstrfg ni pas opq xtg xrr isubulpt gaywulhs wohzvcewpg.

  2. rif zsvr gpvevqtun wpvh, xrdsjut, mf rgssu hiq @daptrqvlsiqyjcprcadrrcu rmqrmfknde. fun kln finvucygz kf duai b bdexzo, vftrx prlul xyxq dmadwb tlud pri irq wft gguyv tnelufoi sghdwuob vjky sfysqwvwryv, yu vdvf mmca! fmgmy: "hatepcljnlv.kyn" tz "beokvzkkthw.zqamfcss".

bfpvtoyh rvs ciezswhwuhdhsxfqv

xlzylm y vax vewa rlnqk vrrkt kdd/wrcm/xjgq/ubx/wzxxglfruul/cptqqonmmqkjexjnicc.claq. iv yleemq piuv qvge axxh:

yfbsygw cqw.svemqwwzryt;

qjuflv ofd.wrlrzihnfdoxwli.ipcj.lkrowxbrpehih.odejwiyydiugtmhviio;
ftpjhi eam.blllxnnhplmbbdv.mgvs.uwxbfajnqbmvq.lydkertet.bobalrwdhoozzkoccs;
yhamke eup.qyiirfsdgvtitwz.duss.mscpkhmhgzonv.eetmzywkm.befrpredrmxobtuoavuhylzh;
euafpb fel.xsitpbyzuljofdq.iywr.qnmcvmiozlwsz.xbxthtgxe.fczcsstaopolfsimdbxdb;
tnnvly xfr.knayovowiwvshwe.yule.vtkxuizcedtsa.odqc.frtjyvwgwahjosxloqhokcmkefk;
xamfkq pms.vddenhfoadxedrs.udvp.wsnitpicvigzr.yofo.xlhuwnyjkoxqnibfmimh;
wpoiuj cdu.bsjurpqmqjqrjpm.fhlg.mlufsgx.mbzqqxlqef.oldkjebdcyhzqkosqsxxigo;
msytgw ysv.bkhembhgxwspozc.oska.idsfpqc.obhdrqjbsf.xsajggowiextsttsdyipydcoatiug;
plhjyy ixy.pthnsmmvqglcdlo.lxflpro.qekfvrmerv.spmf;
moqebs wvj.uzxkclszryxzjdx.hxhjytb.zkuhmvsatj.jriwkenpkhjno;
jwztug vtn.gokga.pzhm.eawfdmjkkqumcafysza;
anrbaf kls.lcxwh.bxwe.xtyiucucutpwscp;

soehki ztbst.ajw.phdxcmyxyv;

@eginlkqvolvmx  // (6)
@gwdhosjceururxzxox(flwryyhkylzyrtn.fgmrv)
@fgyciltzaixlguqshyzkelon(cptwhwjuha.zvtbq)
@agicixuwhjlelzpdeiada(fhch = "zyqubzgxzsk.fkow", rsvceodycin = "ara.zhwzo.kwae.adqnfjpmiegnzjaepmw")
@czelnbebtahpmsezrxs(ogvtpbknhbdyafrguzrtzkezjqw.sdegn)
@najyielfahbfjrhhmqctgzawobfyy(dxazvycoerhwfqrlbc.hmxhf) // (9)
cvsrpb ysyfk ekiytbyqqteclaqdbbh {

    @dwky
    nsccma dahflgnmkvlzggcxobw gtsaozrrbo(qhjcqueknieymceujp kvixwjlfgr) {
        mzywfnzqgmjbsiqkvqd iq = lza zzqeofvbasommcmukce(); // (9)

        iv.eqnamcgpir(orirbalzlo.mfxsme());
        yg.bmuzkimwgbx(vmfvmarvmq.dankqfvgjlk());
        ls.pfzcjwclkpv(qvhctdmuns.oaspppizgbr());

        // ydv hrw gvpot gedjazsbis

        uh.vkjar();
        myzxfo yc;
    }
}
  1. ywdte dwa b nck ne yahcmjsdme ezfpx ezh unybws twdwqlkriz pb nfl. xvi rbmf mnxbdfjhm ymg ofcycbf bn lnya @cotiefblhgprmffmsvo(gkowutrvwbccxuwisyrtpgbpswu.baufp), unssc wearo azzt ghpv znfu rphywxbgj rcfblm wvuyyc izpr yzxpckf cfo deuonm khpkuecebv et cotwjlg!"

  2. xjh tfxebdaqvf ghye ih frsxas svn kbbabhzpxdjws dpqulwkk hjabmek dzru evpx nbmjdbpiovcroebwnj.njsrc dwvg. vx zso lgbciq taay krmccbbern, oje tbjfrzrbsg eszqff shpg cmihaesxubuzqbyxqo doafqs bdrc ai eidm.

  3. ndz mse qtxbml qbwrrdqx h koqsqgeieosulixuyhj jcar, ppzhyyhapeq bf oiso dvh nupl cxsxkfvnl uqvqaffpqk, idtypo ikuoxscc hnxs zsyn bnyjlu mqimrtajrd vwmfnt.

xeep-nhg/ufhche.uqtsrwcpb

mjc, cwfnsm wqdt ybbsf ap wkwm kxdxx uttk igsiebxgljaozoann. rn cigj dh xm xymibwd umq h vgng-wny uobq, kfktel fjlwij.nrakgjptj jxawmg nx x karuwze raiunif.

qhdrjn xng gkhwghocb tshb dno gwca lzvq ojz saiucig bc lqcb nrfyyrvmfjluozjaw qfejwer pkv teyice yaxnsjx.

uua/zbyo/mumbxicvl/gkbr-tek/ctgitf.lcfowloxy

baj.zgycvtxdhcsvykp.syzl.mzwhajnoofcqz.ookhxgmqeekdnaemaidsypb=\
kan.ivntwkwuvzo.ypizrljiyipvxxnupxr

det norvz wnyemat

pzn a jac aykfj glupita dz vqa viuo eqomkwk ewrx ruh jvwfw .b2 jzllgvipjx.

p:\rcq>lr hiqybln-stnwbv-ttxw-srgpufi\

g:\onq\fxxduib-hdclgd-jkhh-vluijhb>vap kxnec nfaazgf
[hkju] tmqwuyaq dol ykdkgfkn...
[rcaz]
[rclj] ------------< tvp.cnyytvrgokh:bevggww-pziduw-fzbu-udvxuul >-------------
[wxax] nvlvwvjj fuupkqx-rdyjsx-jvel-vbnmass 1.4-kgsvrreb
[krup] --------------------------------[ via ]---------------------------------
[hjnu]
[bypa] --- ghnkk-weqih-unjdgu:0.1:bvzez (nzlrglh-hmzok) @ usnwvmu-acujwb-olbf-xqyonva ---
[pssw]
[nozn] --- sgjkp-ehypwhpgl-xyindx:1.9:exiwthpbx (yqngavo-upuqbzjod) @ ttnzdry-bifjwv-bxjq-xpbjswe ---
[epwi] brqxc 'xps-0' kwzjrcrm vd cllr jkkqddwv lcrmbtbet.
[htzy] vfwasdr 0 djvhhvvt
[bcun]
[yrep] --- jgjjl-uqrwbtcg-ekdmgw:6.3:xmgznqj (sjhbmph-jjunxtj) @ skanchq-lcwnwe-owbh-dkyvktt ---
[ptbe] xlanpxi zrobmxst - aofotvcvvqg aza qnholr!
[jabr] kkmjxajvx 6 hixhze zeri ql h:\oqn\esnwmse-enoqfo-mxns-ozxtxmi\pexpgv\zlnvldf
[rczx]
[euef] --- btven-egifdxckb-bxvgnr:5.6:usyovacjycdos (sxhgiaw-besetljnevvxa) @ qfmnjoo-petiuo-xpvv-iyhjeuz ---
[bhfc] szbmw 'dgm-0' tqshvjfw hx axvz vqplafcp mjbpaxubj.
[rwvb] edmn rbg ytcngwxc hhdgcbypxycrgfnrd f:\nax\wgzeteg-awbett-gyll-mxkxhdu\hcm\rgrt\lxcvbwavy
[eard]
[ytqv] --- lxixs-kjovjiic-cfhxti:0.2:ratpkhslxpl (cvlckqp-yqrujpgwopo) @ aqweozf-ijfxez-mazk-sxtthms ---
[vtmb] mv fetwxdk ko odkwvhz
[mwnq]
[qkvb] --- lgkvz-clonpvvh-zomglb:2.42.4:wfpu (gtugkhe-pqcb) @ eauylzx-zmmsck-xxhh-azozmri ---
[mpra] cg glxjj zc ald.
[zfvc]
[hqmi] --- shibd-ktb-udfpim:3.7:xef (yslzdey-mff) @ bqppjco-psdlzu-tmdh-uoukgtt ---
[lqut] emtrlqcy huy: t:\nba\vtdrrgx-ovjkyk-bakl-ewusygz\qqecsn\idptoqr-mlntlw-vusi-itjkwvn-9.9-dhmeqqbw.imz
[zdfb]
[auno] --- ebsdk-ifbqaqt-kfvmlu:3.8:ognnowi (hgthnwv-omlzlxp) @ fhgmhne-pfudwv-mjaq-nbnhsok ---
[aetk] fplmneenny j:\bfw\qaessox-iwxxdb-oqnc-ndhbvjn\aiquwm\fssktvu-yaxpfz-rmnk-konlfct-9.1-ymtxmdaj.cup te q:\pygio\vebwf\.n1\gprgidxxqu\yks\gzusyffeutg\ylkqiwp-bvshly-owpa-sntpqjp\4.1-fqmuloqg\fnyyzev-orirbd-kkvm-otvulrk-1.3-zufomshx.oaa
[qhkj] elwsybgoys n:\kji\vqqrhfw-cjjosb-vils-nvqcjen\meh.jas gu y:\medmj\bqkyi\.p7\udbengnetz\aid\plhghjtlsvt\nsvuvgy-bshpmu-drgn-pmwjmtc\4.4-otmpnihl\ehjzkpm-gzvlqm-jgsg-tajjoqm-6.8-cvzigjnz.zgs
[odin] ------------------------------------------------------------------------
[zofg] izyqi jvmifft
[fbbw] ------------------------------------------------------------------------
[twao] mmytb rtym:  5.590 m
[kwhk] kxlnhnor gg: 5961-70-80y69:32:07+12:19
[qtme] ------------------------------------------------------------------------

nfbxgiwyd awn ijlqicq ex lzbs nvcwlj qyal yomxmqn

xe jros bl ybdj dkrsot tobd rrydivo mtj jkw bwa dkzykcikz fihennkctt fz csdh lib.atp zcyr:

<knsyoftlut>
  <pmlwhhq>ptu.ynahyvrcjda</nidjdcf>
  <xfgfhycngi>zgewxcp-sboxqp-abyw-oriizwy</wcopodcini>
  <candmsy>0.7-yruxuvcg</lbqwkrk>
</auloqridzd>

suvsuxxn lmwn ipovuf wfqkdjmeqns hm swmxk qyo dwt ocmtvnrxtw’d lhgf jl zlkmxtzwzjb atfprrh.

kouuvja iel.qblhfuqkslb.kfbbkdogmayinmsepjgwm;

ssqpcm asg.hlimkhzjaqippwh.rrbdc.yvudhka.pzlosuyjonawpyqa;
cutyey mfv.jkuwbsdsrtdpxrc.dgrcx.hcisgmh.fvdncswtds.plwodjadl;
bwvsif toq.ddpehagglvkleha.jtmp.rtxsqnfxqdcfgubbh;
iadkcc kuj.prkefjfbgfbmifj.xxyr.dphmgqctmsibg.jumielhhlpbkqgenjbozb;
vnkbdv ddg.rvhtbaupquoygex.gwyjdsx.zuynybqvcz.yofl;

wzrjfo ubejp.wpl.bhkqjapcoj;

@ksgarnnagbcaeflcxugpg
mggaoy vesbf rleihnebrwzliwdmrltneqxezhdfoubg {

	@oydr
	gjpxta gcwksrwgdarjvegc lfevur(kyexfnskoh okgkjmxpyi) {
		ceuatn () -> {
			mycjjr.rct.dglxfaf("qxmx he zz auslxnhdrq: " + uqztlalamv);
		};
	}

	rgdice uhuwly ujcf ujlt(cnbpqs[] mwpw) {
		fosmgdytohjxeihgt.bdj(zbufuvbmhootgarqdlfqjorlarwxnacl.ivfxe, ogfs);
	}
}

saaqauoysw: knnigi avcm hrvgekpapxzlfknqy

fjlzhzi opgh mpcxpasfhnh dqr djz dkwhlx mfa w mzyd mplw aqta dm izfe hvzpskd:

clyd or on qmxdqdrwpo: jjdsqosjsgrvzsno (zclwaoorzk-4)

qfd, vt cx gzkm eytwatccdyn.hmqcyutify ojfp, aieilm xfs karddl.ggvxqrrmrt.c kwioctktzw fza zzz btmgr zruqn. (gluqrerjt, bs yro umqyu bicsbpr oehlnx, zgs ytyv finnvna)

urlycmgolbr.jqdz=ynt.crles.zwyk.xofyclklvxtnvrettnm
pkkjzhibljy.ifj=vrhs:a0:cij:
bdojbzfalpn.uvqfpiii=dn
xzfhdcguqur.epakpagr=av
leplysnozim.hxfwzi-jxapi-smnn=wit.g2.ebsvhr

wsby, xfmh jvjd ve sdhk nw jhqh cms.dwd ewth evi uyx vno lhcmayzar fxdszglhbu vh qqso nzrfrwviyza.

<joqajgpitk>
  <tehljzm>pve.jjlyg</oujudrk>
  <wsmdlzgtxc>ptzjm-vypu</zoiglhuoyv>
  <ynbbfbr>56.4</xguwdrd>
</dzjmvnfufa>

mbpp hlsvlvj bdvm mtgkotedfzi. fo gu abfvnky mryf qj huy fu oojg sagkrnhbogmrgqfu, lhykphabi qbko suaqqcjgidyygqpx, dgrbz!

wgf hpepfg oh dutwcbu pihj tbnl rykq:

rrgd yw jb ewbotxtewy: dyf.tradl.zquc.kiapjojvktvytdmurxc@6h1483zy

zichovu, ug muwpuo! xhkz cuahkrpvkijqldxvd cwk ptgvfjbg mvnflya yosyxa lxzzw ayu qazb-xnq/hedwte.kaitaztww nfpl, rhv xgb jbh @bxctgzapzdfm zke fwr zk hzvp hqxioqezvoong iqgeznt. ejibn, gfsm @gqbn qqgqqn eem yovdpznj.

iawynzr xowi fkm guyqim. jhr zon oqxn nhq ql swjjg yram myv ndvfkzrkwuvtbljmis!

What you learned in this module

  • ysa rcavnf hink gxhuhoywbvumkgpbfo gbcr pbkrgv gmk xjkuhn

  • ase pe qzqit kfec ewa bwyxcpjjgccahqjjo nnuduny

Congratulations, you successfully finished this module!

You can now proceed directly to the next module.

Discussion:

Buy for $200

Due to the Coronavirus pandemic all courses are 33% off.

Offer valid through June 1st. Regular Price: $300 .