܍~c0'^ddlmZddlmZmZejeZdZddZ dZ d dZ dS) )log) type_utilsutilct|tr'|d}t|tr$i}|D]}t|t r|D]\}}t|ttfs$tdtj |zt|tr*| |g || |g |t|tr ||vrg||<tdtj |z|}i}t|t r2|D]\}}tj|||<n$tdtj |z|S)N,zBad group member type %szUnknown group name type %sz@Group config must be list, dict or string type only but found %s) isinstancestrstripsplitlistdictitems TypeErrorrobj_name setdefaultextendappendruniq_merge_sorted)grp_cfg c_grp_cfgikvgroupsgrp_name grp_memberss ;/usr/lib/python3/dist-packages/cloudinit/distros/ug_util.py_normalize_groupsrs'3---//'',,'4     A!T"" GGII > >DAq%a$55'6)21557 "!T**>!,,Q33::1====!,,Q33::1==== >As## I%%#%IaL0J4G4J4JK F'4   %,]]__ C C !Hk#5kBBF8   C N"7++ -    MNct|trg}|D]\}}t|ttt t fr7tj|r"| t |dt|tr||d<| |tdtj |d||}n)t|t rtj |}i}|D]}t|tt fr#tj|D] }|r ||vri||<At|trG|dd}||pi} tj| |g||<tdtj |z|rni} |D]U\} } i} | D]4\}}|dd}|r|| |<5| | | <V| }d}|rd|vr|d}|r|}|d}|dg}||i}|dg}tj ||}d ||d<tj|||g||<|D]\} } |r| |knd | d<|S) NnamezUnmappable user value type z for key defaultzDUser config must be dictionary/list or string types only and not %s-_rrF)rr rboolintfloatr ris_truerrrrrr uniq_mergepopget mergemanydictreplacer copyjoin)u_cfg def_user_cfgad_ucfgrrusers user_configun prev_configc_usersunameuconfig c_uconfigdef_user def_config def_groups parsed_config parsed_groups users_groupss r_normalize_usersrBHs%.KKMM  DAq!dC455 <??+NN3q66***At$$ & q!!!!i!*1----qq2 E3  .&u-- E   kD#; / / _[11 " ""%!E!H " T * *  22A))A,,,"K); *DEEE!HH),6,? ,L,LN   #kkmm ' 'NE7I  % %1IIc3''--//%#$IaL&GENNH e##YYy))  (,,..L#''//H%))(B77J"IIh33M)--h;;M1-LLL&)hh|&<&.safe_finds-q &005i  rrr")r filterrr r*)r3 default_namedefault_configrW tmp_usersr!rVs rextract_defaultr\s .n--!!! VIu{{}}5566I .n--  ??1 D t_F JJy$ &>r)N)NN) cloudinitrloggingrr getLogger__name__rErrBrPr\rTrrras%$$$$$&&&&&&&&g!!%%%bNNNNxHHHZr