| | |
| | | |
| | | public class LayoutDescriberHelper { |
| | | public static String urlPrefixToUse {get;set;} |
| | | public static Set<String> ConcatenationNameSType = new Set<String>{'Lead','Contact'}; |
| | | public static List<String> requiredFieldAPIList{set;get;} |
| | | public static Map<String,String> fieldAPIToLabelMap{set;get;} |
| | | public static Set<String> CaseWebFields = new Set<String>{'SuppliedCompany','SuppliedName','SuppliedEmail','SuppliedPhone'}; |
| | | public static Set<String> ConcatenationNameSType = new Set<String>{'Lead','Contact'}; |
| | | public static LayoutWrapper describeSectionWithFieldsWrapper(Id recordTypeId, String objectType,String userMode){ |
| | | if(String.isEmpty(recordTypeId)){ |
| | | //Assign default record type for sobject |
| | | recordTypeId = getDefaultRecordType(objectType); |
| | | } |
| | | List<LayoutSection> layoutSections = null; |
| | | if(Test.isRunningTest()){ |
| | | layoutSections = (List<LayoutSection>)Json.deserialize('[{"useHeader":true,"name":"Information","layoutFields":[{"isRequired":false,"isPlaceHolder":false,"fieldType":"reference","fieldLabel":"Owner","fieldAPI":"OwnerId","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"文件名","fieldAPI":"FileName__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"picklist","fieldLabel":"Currency","fieldAPI":"CurrencyIsoCode","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"预览链接","fieldAPI":"ViewLink__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"下载链接","fieldAPI":"DownloadLink__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"父级目录","fieldAPI":"ParentRecordId__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null},{"isRequired":false,"isPlaceHolder":false,"fieldType":"string","fieldLabel":"AWS File Key","fieldAPI":"AWS_File_Key__c","editableField":true,"defaultValue":null},{"isRequired":false,"isPlaceHolder":true,"fieldType":"","fieldLabel":"","fieldAPI":"","editableField":false,"defaultValue":null}],"columns":2,"allowCollapse":false}]', List<LayoutSection>.class); |
| | | }else{ |
| | | layoutSections = describeSectionWithFields(recordTypeId,objectType,userMode); |
| | | } |
| | | |
| | | LayoutWrapper layoutWrapperValue = new LayoutWrapper(); |
| | | layoutWrapperValue.layoutSections = layoutSections; |
| | | layoutWrapperValue.requiredFieldAPIList = requiredFieldAPIList; |
| | | layoutWrapperValue.fieldAPIToLabelMap = fieldAPIToLabelMap; |
| | | system.debug('required API List:'+JSON.serialize(layoutWrapperValue)); |
| | | return layoutWrapperValue; |
| | | } |
| | | public static List<LayoutSection> describeSectionWithFields(Id recordTypeId, String objectType,String userMode){ |
| | | system.debug('record type id ===>'+ recordTypeId+' object type===>'+objectType + ' userMode===>'+userMode); |
| | | List<LayoutSection> layoutSections; |
| | | Map<String,List<LayoutField>> layoutFields; |
| | | requiredFieldAPIList = new List<String>(); |
| | | fieldAPIToLabelMap = new Map<String,String>(); |
| | | layoutSections = new List<LayoutSection>(); |
| | | String theRespBody = getLayoutSchema(recordTypeId, objectType,userMode); |
| | | Map<String, Object> layoutSection = (Map<String, Object>) JSON.deserializeUntyped(theRespBody); |
| | |
| | | /*Map<String, object> nameDetails = (Map<String,object>) layoutComponents.get('Name');*/ |
| | | String fieldLabel = (String) fields.get('label'); |
| | | boolean placeholderF = (boolean) fields.get('placeholder'); |
| | | boolean isEditable = (boolean) fields.get('editableForNew'); // Check the editable prop |
| | | boolean isEditable = (boolean) fields.get('editableForUpdate')||(boolean)fields.get('editableForNew'); // Check the editable prop |
| | | if( (apiName != '' && fieldType =='Field') || (placeholderF)){ |
| | | if(userMode == 'classic' && fieldTypeDetail == 'address'){ |
| | | String fieldLabelPrefix = fieldLabel.split(' ')[0] == 'Address'?'':fieldLabel.split(' ')[0]; |
| | |
| | | lf.isPlaceHolder = placeholderF; |
| | | lf.editableField = isEditable; |
| | | lf.fieldAPI = fieldLabelPrefix+addressType; |
| | | |
| | | lf.fieldLabel = fieldLabelPrefix+' '+addressType; |
| | | lf.fieldType = 'string'; |
| | | lf.fieldType = 'string'; |
| | | if(ls.Name != '' || layoutSections.size() == 1){ |
| | | ls.layoutFields.add(lf); |
| | | }else if(layoutSections.size() - 2 >= 0){ |
| | | layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); |
| | | } |
| | | } |
| | | if(lf.isRequired){ |
| | | system.debug(lf.fieldAPI+' is required'); |
| | | requiredFieldAPIList.add(lf.fieldAPI); |
| | | } |
| | | if(string.isBlank(lf.fieldAPI)){ |
| | | system.debug('==================================2'); |
| | | continue; |
| | | }else{ |
| | | fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel); |
| | | } |
| | | } |
| | | continue; |
| | | } |
| | | if(userMode == 'classic' && apiName == 'Name' && ConcatenationNameSType.contains(objectType)){ |
| | | List<String> nameDetail = new List<String>{'LastName'}; |
| | | List<String> nameDetail = new List<String>{'Salutation','LastName'}; |
| | | for(String nameField:nameDetail){ |
| | | LayoutField lf = new LayoutField(); |
| | | lf.isRequired = (Boolean)fields.get('required'); |
| | | if(nameField == 'Salutation'){ |
| | | lf.isRequired = false; |
| | | } |
| | | lf.isPlaceHolder = placeholderF; |
| | | lf.editableField = isEditable; |
| | | lf.fieldAPI = nameField; |
| | |
| | | ls.layoutFields.add(lf); |
| | | }else if(layoutSections.size() - 2 >= 0){ |
| | | layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); |
| | | } |
| | | } |
| | | if(lf.isRequired){ |
| | | system.debug(lf.fieldAPI+' is required'); |
| | | requiredFieldAPIList.add(lf.fieldAPI); |
| | | } |
| | | if(string.isBlank(lf.fieldAPI)){ |
| | | system.debug('==================================3'); |
| | | continue; |
| | | }else{ |
| | | fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel); |
| | | } |
| | | } |
| | | continue; |
| | | } |
| | | if(objectType == 'Case' && CaseWebFields.contains(apiName)){ |
| | | continue; |
| | | } |
| | | LayoutField lf = new LayoutField(); |
| | |
| | | ls.layoutFields.add(lf); |
| | | }else if(layoutSections.size() - 2 >= 0){ |
| | | layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf); |
| | | } |
| | | } |
| | | if(lf.isRequired){ |
| | | system.debug(lf.fieldAPI+' is required'); |
| | | requiredFieldAPIList.add(lf.fieldAPI); |
| | | } |
| | | if(string.isBlank(lf.fieldAPI)){ |
| | | system.debug('==================================1'); |
| | | continue; |
| | | }else{ |
| | | fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel); |
| | | } |
| | | |
| | | priorFieldLayoutAdded = true; |
| | | }else |
| | | priorFieldLayoutAdded = false; |
| | |
| | | } |
| | | } |
| | | System.debug('Layout Section Result:'+JSon.serialize(layoutSections)); |
| | | system.debug('required API List:'+JSON.serialize(requiredFieldAPIList)); |
| | | return layoutSections; |
| | | } |
| | | public static String getUrlPrefix(){ |
| | |
| | | req.setMethod('GET'); |
| | | if(userMode =='lightning'){ |
| | | req.setEndPoint('callout:SF_Rest_API'+urlPost); |
| | | system.debug('callout:SF_Rest_API'+urlPost); |
| | | }else if(userMode == 'classic'){ |
| | | req.setEndpoint(urlForClassic); |
| | | req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid()); |
| | |
| | | return resp.getBody(); |
| | | } |
| | | |
| | | public static Id getDefaultRecordType(SObject obj) { |
| | | Schema.DescribeSObjectResult describeResult = obj.getsObjectType().getDescribe(); |
| | | public static Id getDefaultRecordType(String ObjectName) { |
| | | Map<String, Schema.SObjectType> GlobalDescribeMap = Schema.getGlobalDescribe(); |
| | | Schema.SObjectType obj = GlobalDescribeMap.get(ObjectName); |
| | | Schema.DescribeSObjectResult describeResult = obj.getDescribe(); |
| | | List<Schema.RecordTypeInfo> rtInfos = describeResult.getRecordTypeInfos(); |
| | | for(Schema.RecordTypeInfo rtInfo : rtInfos) { |
| | | if(rtInfo.DefaultRecordTypeMapping) { |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public class LayoutWrapper{ |
| | | @AuraEnabled public List<LayoutSection> layoutSections{set;get;} |
| | | @AuraEnabled public List<String> requiredFieldAPIList{set;get;} |
| | | @AuraEnabled public Map<String,String> fieldAPIToLabelMap{set;get;} |
| | | } |
| | | public class LayoutSection{ |
| | | @AuraEnabled public boolean useHeader {get;set;} |
| | | @AuraEnabled public String name {get;set;} |
| | |
| | | @AuraEnabled public boolean isPlaceHolder {get;set;} |
| | | @AuraEnabled public String defaultValue{set;get;} |
| | | } |
| | | public static Integer ControllerUtil() { |
| | | Integer i = 0; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | return i; |
| | | } |
| | | |
| | | } |