diff --git a/00_DIC_2504A_TEST.xlsx b/00_DIC_2504A_TEST.xlsx
new file mode 100644
index 0000000..331e81e
Binary files /dev/null and b/00_DIC_2504A_TEST.xlsx differ
diff --git a/00_DIC_2504B_TEST.xlsx b/00_DIC_2504B_TEST.xlsx
new file mode 100644
index 0000000..a245b13
Binary files /dev/null and b/00_DIC_2504B_TEST.xlsx differ
diff --git a/00_DIC_2504C_TEST.xlsx b/00_DIC_2504C_TEST.xlsx
new file mode 100644
index 0000000..b48358b
Binary files /dev/null and b/00_DIC_2504C_TEST.xlsx differ
diff --git a/250502_DIC_2504A_채점결과.xlsx b/250502_DIC_2504A_채점결과.xlsx
new file mode 100644
index 0000000..43e79e1
Binary files /dev/null and b/250502_DIC_2504A_채점결과.xlsx differ
diff --git a/250502_DIC_2504B_채점결과.xlsx b/250502_DIC_2504B_채점결과.xlsx
new file mode 100644
index 0000000..58e4cea
Binary files /dev/null and b/250502_DIC_2504B_채점결과.xlsx differ
diff --git a/250502_DIC_2504C_채점결과.xlsx b/250502_DIC_2504C_채점결과.xlsx
new file mode 100644
index 0000000..4ffa1c7
Binary files /dev/null and b/250502_DIC_2504C_채점결과.xlsx differ
diff --git a/250502_DPI_2504B_채점결과.xlsx b/250502_DPI_2504B_채점결과.xlsx
new file mode 100644
index 0000000..ee71795
Binary files /dev/null and b/250502_DPI_2504B_채점결과.xlsx differ
diff --git a/DIC_2503A_layer.json b/DIC_2503A_layer.json
new file mode 100644
index 0000000..d18cb3e
--- /dev/null
+++ b/DIC_2503A_layer.json
@@ -0,0 +1,689 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "$.children[?(@.name=='놀이터')].name",
+ "value": "놀이터",
+ "point": 4
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Wooden playground')].name",
+ "value": "Wooden playground",
+ "point": 4
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "10": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.colors[0]",
+ "type": "color",
+ "value": "801717",
+ "point": 2
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "none",
+ "point": 0
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].name",
+ "value": "나무 놀이터",
+ "point": 4
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].text.font.names[0]",
+ "type": "font",
+ "value": "YetR",
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "17": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].text.font.colors[0]",
+ "type": "color",
+ "value": "0e4510",
+ "point": 2
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "$.children[?(@.name=='은행잎')].name",
+ "value": "은행잎",
+ "point": 4
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "$[?(@.width == 65 && @.height == 35)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 35
+ },
+ "point": 5
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 170,
+ "openingStartTime": 0,
+
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지1.jpg",
+ "이미지3.jpg",
+ "이미지2.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "380",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='40'][@VID100='20'][@VID103='0.5']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "자연 놀이터",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "굴림체",
+ "point": 2
+ },
+
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "100",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "-16711795",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "자연 놀이터",
+ "value": [
+ 0.39375001,
+ 0.93333334
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": 170,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "120",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "value": [
+ "103",
+ "7"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "55",
+ "470:530",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "69",
+ "50"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "93",
+ "680:740",
+ "16"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "value": [
+ "132",
+ "90"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "25",
+ "860:890",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "자연 속 놀이터 Nature playground",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "휴먼옛체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "150",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "-13962321",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": [
+ "0.2",
+ "-1659649"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value":[
+ "5",
+ "3"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='750']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type" : "isExist",
+ "ele": "//Layer/Name/@value",
+ "value": "Tracking",
+ "point": 5,
+ "desc": "Tracking 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type" : "multiValue",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value",
+ "layer" : "Tracking",
+ "option" : "brightness",
+ "value" : [
+ "30",
+ "밝기/대비"
+ ],
+ "point": 5,
+ "desc": "Tracking 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type" : "isExist",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value" : "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 타원인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 80,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "999999",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type" : "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value" : [
+ "색 회피율",
+ "80"
+ ],
+ "point": 5,
+ "desc": "혼합모드(색 회피율, 불투명도 : 80)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
+ "answer": "RECTANGLE",
+ "point": 6
+ },
+ "6": {
+ "type": "size",
+ "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 300,
+ "height": 50
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value",
+ "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value",
+ "value": {
+ "startColor": "347813",
+ "endColor": "041177"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "어린이 과학관",
+ "point": 5
+ },
+ "9": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "돋움",
+ "point": 3
+ },
+ "10": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "32",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "f04da5",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffe000",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "008878",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "5",
+ "distance": "3",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/DIC_2503B_clipping.json b/DIC_2503B_clipping.json
new file mode 100644
index 0000000..80a6f8d
--- /dev/null
+++ b/DIC_2503B_clipping.json
@@ -0,0 +1,690 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "$.children[?(@.name=='Time to stroll')].name",
+ "value": "Time to stroll",
+ "point": 4
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.colors[0]",
+ "type": "color",
+ "value": "ff9000",
+ "point": 2
+ },
+ "10": {
+ "ele": "none",
+ "point": 0
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].name",
+ "value": "즐거운 산책 시간",
+ "point": 4
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.names[0]",
+ "type": "font",
+ "value": "GungsuhChe",
+ "point": 2
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.colors[0]",
+ "type": "color",
+ "value": "035b80",
+ "point": 2
+ },
+ "17": {
+ "ele": "none",
+ "point": 0
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "none",
+ "point": 0
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "none",
+ "point": 0
+ },
+ "27": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "28": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 180,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지2.jpg",
+ "이미지1.jpg",
+ "이미지3.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='120']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "360",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@Type='1'][@ID='86'][@VID100='5'][@VID101='30']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "숲 속으로 떠나는 여행",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "바탕체",
+ "point": 2
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "110",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "-16769281",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "숲 속으로 떠나는 여행",
+ "value": [
+ 0.28229165,
+ 0.92962962
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "videoIsExist",
+ "value": [179, 180],
+ "point": 2,
+ "desc": "출제 오류로 인해 두 가지 정답 모두 인정"
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "120",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "125",
+ "8"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "96",
+ "450:540",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "value": [
+ "99",
+ "50"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "35",
+ "660:720",
+ "16"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "102",
+ "8"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "1",
+ "810:840",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "길가에 피어있는 꽃 Roadside flowers",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "휴먼편지체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "130",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "-9664512",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-3868161"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": [
+ "23",
+ "2"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='740']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='0'][@VID8='60']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type": "isExist",
+ "ele": "//Layer/Name/@value",
+ "value": "Tracking",
+ "point": 5,
+ "desc": "Tracking 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type": "multiValue",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value",
+ "layer": "Tracking",
+ "option": "brightness",
+ "value": [
+ "30",
+ "밝기/대비"
+ ],
+ "point": 5,
+ "desc": "Tracking 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type": "isExist",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value": "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 타원인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 80,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "999999",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type": "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value": [
+ "색 회피율",
+ "80"
+ ],
+ "point": 5,
+ "desc": "혼합모드(색 회피율, 불투명도 : 80)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
+ "answer": "ROUNDED_RECTANGLE",
+ "point": 6
+ },
+ "6": {
+ "type": "size",
+ "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 370,
+ "height": 60
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value",
+ "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value",
+ "value": {
+ "startColor": "347813",
+ "endColor": "041177"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "어린이 과학관",
+ "point": 5
+ },
+ "9": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "돋움",
+ "point": 3
+ },
+ "10": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "32",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "f04da5",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffe000",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "008878",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "5",
+ "distance": "3",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/DIC_2503C_layer.json b/DIC_2503C_layer.json
new file mode 100644
index 0000000..a06da43
--- /dev/null
+++ b/DIC_2503C_layer.json
@@ -0,0 +1,688 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "$.children[?(@.name=='나무집')].name",
+ "value": "나무집",
+ "point": 4
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].name",
+ "value": "Park Rest Area",
+ "point": 4
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "10": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.colors[0]",
+ "type": "color",
+ "value": "076414",
+ "point": 2
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "none",
+ "point": 0
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].name",
+ "value": "공원 쉼터",
+ "point": 4
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].text.font.names[0]",
+ "type": "font",
+ "value": "GungsuhChe",
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "17": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].text.font.colors[0]",
+ "type": "color",
+ "value": "4f4300",
+ "point": 2
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "$.children[?(@.name=='나무 의자')].name",
+ "value": "나무 의자",
+ "point": 4
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "$[?(@.width == 65 && @.height == 35)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 35
+ },
+ "point": 5
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 170,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지2.jpg",
+ "이미지3.jpg",
+ "이미지1.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "350",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='56'][@VID100='80'][@VID101='100']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "연못 전망대 가는 길",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "바탕체",
+ "point": 2
+ },
+
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "100",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "-2490121",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "연못 전망대 가는 길",
+ "value": [
+ 0.31979167,
+ 0.93333334
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": 170,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "150",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "104",
+ "7"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "13",
+ "440:500",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID105']",
+ "value": [
+ "108",
+ "5"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "21",
+ "650:710",
+ "16"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "93",
+ "5"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "24",
+ "800:830",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "자연 테마 파크 Nature theme park",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "궁서체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "150",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "-16715265",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": [
+ "0.2",
+ "-6323684"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value":[
+ "1",
+ "3"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='800']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type" : "isExist",
+ "ele": "//Layer/Name/@value",
+ "value": "Tracking",
+ "point": 5,
+ "desc": "Tracking 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type" : "multiValue",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value",
+ "layer" : "Tracking",
+ "option" : "brightness",
+ "value" : [
+ "30",
+ "밝기/대비"
+ ],
+ "point": 5,
+ "desc": "Tracking 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type" : "isExist",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value" : "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 타원인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 80,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "999999",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type" : "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value" : [
+ "색 회피율",
+ "80"
+ ],
+ "point": 5,
+ "desc": "혼합모드(색 회피율, 불투명도 : 80)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
+ "answer": "RECTANGLE",
+ "point": 6
+ },
+ "6": {
+ "type": "size",
+ "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 300,
+ "height": 50
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value",
+ "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value",
+ "value": {
+ "startColor": "347813",
+ "endColor": "041177"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "어린이 과학관",
+ "point": 5
+ },
+ "9": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "돋움",
+ "point": 3
+ },
+ "10": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "32",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "f04da5",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exact",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffe000",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "008878",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "5",
+ "distance": "3",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/DIC_2504A.json b/DIC_2504A.json
new file mode 100644
index 0000000..6e36bf2
--- /dev/null
+++ b/DIC_2504A.json
@@ -0,0 +1,694 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].name",
+ "value": "Healing Cafe",
+ "point": 4
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.colors[0]",
+ "type": "color",
+ "value": "cdf9c3",
+ "point": 2
+ },
+ "10": {
+ "ele": "none",
+ "point": 0
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].name",
+ "value": "나만의 힐링 카페",
+ "point": 4
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.names[0]",
+ "type": "font",
+ "value": "GulimChe",
+ "point": 2
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.colors[0]",
+ "type": "color",
+ "value": "92350c",
+ "point": 2
+ },
+ "17": {
+ "ele": "none",
+ "point": 0
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "none",
+ "point": 0
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "none",
+ "point": 0
+ },
+ "27": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "28": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 150,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지2.jpg",
+ "이미지3.jpg",
+ "이미지1.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "370",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='70'][@VID100='40'][@VID101='60']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "다양한 커피 원두",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "다양한 커피 원두",
+ "type": "video",
+ "value": "돋움체",
+ "point": 2
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "다양한 커피 원두",
+ "type": "video",
+ "value": "110",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "다양한 커피 원두",
+ "type": "video",
+ "value": "-5551815",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "value": [
+ 0.33229166,
+ 0.92962962
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "다양한 커피 원두",
+ "type": "video",
+ "value": 150,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "다양한 커피 원두",
+ "type": "video",
+ "value": "180",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "102",
+ "4"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "13",
+ "490:550",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "103",
+ "8"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "11",
+ "670:730",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "value": [
+ "184",
+ "20"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "0",
+ "850:880",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "라떼아트 만들기 (Making latte art)",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": "바탕체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": "140",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": "-12036743",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": [
+ "0.2",
+ "-3545400"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": [
+ "4",
+ "2"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='870']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/Name/@value",
+ "value": "Germs",
+ "point": 5,
+ "desc": "Germs 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type": "effects",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item",
+ "layer": "Germs",
+ "option": "amount",
+ "value": [
+ "선명하게",
+ "12"
+ ],
+ "point": 5,
+ "desc": "Germs 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type": "exists",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value": "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 ELLIPSE인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 130,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "000555",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type": "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value": [
+ "중첩",
+ "75"
+ ],
+ "point": 6,
+ "desc": "혼합모드(중첩, 불투명도 : 75)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/MaskOpType/@value",
+ "value": "Layering",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "type": "exists",
+ "ele": "//Layer//shape_type/@value",
+ "value": "ROUNDED_RECTANGLE",
+ "point": 3
+ },
+ "6": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 370,
+ "height": 60
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "ele": "//Layer/Shapes/Shape",
+ "startColor": "gradient_start_color/@value",
+ "endColor": "gradient_end_color/@value",
+ "value": {
+ "startColor": "347813",
+ "endColor": "041177"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "어린이 과학관",
+ "point": 5
+ },
+ "9": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "돋움",
+ "point": 3
+ },
+ "10": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
+ "style": "Italic",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "32",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "f04da5",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffe000",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "type": "boolean",
+ "ele": "//Layer[MaskOpType/@value='Clipping']",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "type": "exists",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "type": "exists",
+ "ele": "//Layer//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "008878",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "5",
+ "distance": "3",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/DIC_2504B.json b/DIC_2504B.json
new file mode 100644
index 0000000..f72dc0d
--- /dev/null
+++ b/DIC_2504B.json
@@ -0,0 +1,691 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "$.children[?(@.name=='꽃잎들')].name",
+ "value": "꽃잎들",
+ "point": 4
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Flower Rock')].name",
+ "value": "Flower Rock",
+ "point": 4
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "10": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.colors[0]",
+ "type": "color",
+ "value": "d6f592",
+ "point": 2
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "none",
+ "point": 0
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].name",
+ "value": "꽃과 바위",
+ "point": 4
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].text.font.names[0]",
+ "type": "font",
+ "value": "DotumChe",
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "17": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].text.font.colors[0]",
+ "type": "color",
+ "value": "0d17d5",
+ "point": 2
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "$.children[?(@.name=='노랑꽃')].name",
+ "value": "노랑꽃",
+ "point": 4
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "$[?(@.width == 65 && @.height == 35)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 35
+ },
+ "point": 5
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 170,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지3.jpg",
+ "이미지1.jpg",
+ "이미지2.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "370",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='44'][@VID100='8'][@VID103='0.89999998']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "화단의 꽃들",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "화단의 꽃들",
+ "type": "video",
+ "value": "돋움체",
+ "point": 2
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "화단의 꽃들",
+ "type": "video",
+ "value": "110",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "화단의 꽃들",
+ "type": "video",
+ "value": "-14986241",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": [
+ 0.38333333,
+ 0.92962962
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "화단의 꽃들",
+ "type": "video",
+ "value": 170,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "화단의 꽃들",
+ "type": "video",
+ "value": "150",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "value": [
+ "67",
+ "40"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "10",
+ "490:550",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "value": [
+ "103",
+ "7"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "12",
+ "670:730",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "102",
+ "3"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "0",
+ "850:880",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": "궁서체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": "140",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": "-7601940",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-3868161"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": [
+ "14",
+ "2"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='870']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type": "isExist",
+ "ele": "//Layer/Name/@value",
+ "value": "Flower",
+ "point": 5,
+ "desc": "Flower 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type": "multiValue",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item",
+ "layer": "Flower",
+ "option": "VibranceValue",
+ "value": [
+ "39",
+ "생동감"
+ ],
+ "point": 5,
+ "desc": "Flower 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type": "exists",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value": "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 타원인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 80,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "7097bb",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type": "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value": [
+ "반사",
+ "80"
+ ],
+ "point": 5,
+ "desc": "혼합모드(색 회피율, 불투명도 : 80)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/MaskOpType/@value",
+ "value": "Layering",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 6,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "type": "exists",
+ "ele": "//Layer//shape_type/@value",
+ "value": "ROUNDED_RECTANGLE",
+ "point": 3
+ },
+ "6": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 400,
+ "height": 60
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "ele": "//Layer/Shapes/Shape",
+ "startColor": "gradient_start_color/@value",
+ "endColor": "gradient_end_color/@value",
+ "value": {
+ "startColor": "ffe000",
+ "endColor": "34a159"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "흰 꽃 사이 노란 꽃",
+ "point": 5
+ },
+ "9": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "맑은 고딕",
+ "point": 3
+ },
+ "10": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
+ "style": "Italic",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "30",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "b46ef8",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffffff",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "type": "exists",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "RACTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "type": "exists",
+ "ele": "//Layer//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "e8e88e",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "3",
+ "distance": "5",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/DIC_2504C.json b/DIC_2504C.json
new file mode 100644
index 0000000..f612e38
--- /dev/null
+++ b/DIC_2504C.json
@@ -0,0 +1,695 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].name",
+ "value": "Arboretum in spring",
+ "point": 4
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.colors[0]",
+ "type": "color",
+ "value": "a808d0",
+ "point": 2
+ },
+ "10": {
+ "ele": "none",
+ "point": 0
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].name",
+ "value": "봄날의 수목원",
+ "point": 4
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.names[0]",
+ "type": "font",
+ "value": "GungsuhChe",
+ "point": 2,
+ "desc": "DotumChe GungsuhChe YetR GulimChe 선택해서 사용"
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.colors[0]",
+ "type": "color",
+ "value": "096e34",
+ "point": 2
+ },
+ "17": {
+ "ele": "none",
+ "point": 0
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "none",
+ "point": 0
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "none",
+ "point": 0
+ },
+ "27": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "28": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 165,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지3.jpg",
+ "이미지2.jpg",
+ "이미지1.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='130']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "360",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='151'][@VID103='0.80000001'][@VID104='20']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "아름다운 봄꽃들",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "아름다운 봄꽃들",
+ "type": "video",
+ "value": "굴림체",
+ "point": 2
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "아름다운 봄꽃들",
+ "type": "video",
+ "value": "110",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "아름다운 봄꽃들",
+ "type": "video",
+ "value": "-13107457",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "value": [
+ 0.34270835,
+ 0.92962962
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "아름다운 봄꽃들",
+ "type": "video",
+ "value": 165,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "아름다운 봄꽃들",
+ "type": "video",
+ "value": "150",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']",
+ "value": [
+ "184",
+ "50"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "9",
+ "480:510",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "value": [
+ "128",
+ "9"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "11",
+ "630:690",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "210",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID104']",
+ "value": [
+ "67",
+ "5"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "21",
+ "810:900",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "봄을 담은 정원 (A Spring Garden)",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": "궁서체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": "140",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": "-5232740",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-2961922"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": [
+ "22",
+ "2"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='870']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='30']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/Name/@value",
+ "value": "Germs",
+ "point": 5,
+ "desc": "Germs 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type": "effects",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item",
+ "layer": "Germs",
+ "option": "amount",
+ "value": [
+ "선명하게",
+ "12"
+ ],
+ "point": 5,
+ "desc": "Germs 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type": "exists",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value": "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 ELLIPSE인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 130,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "000555",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type": "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value": [
+ "중첩",
+ "75"
+ ],
+ "point": 6,
+ "desc": "혼합모드(중첩, 불투명도 : 75)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/MaskOpType/@value",
+ "value": "Layering",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "type": "exists",
+ "ele": "//Layer//shape_type/@value",
+ "value": "ROUNDED_RECTANGLE",
+ "point": 3
+ },
+ "6": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 370,
+ "height": 60
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "ele": "//Layer/Shapes/Shape",
+ "startColor": "gradient_start_color/@value",
+ "endColor": "gradient_end_color/@value",
+ "value": {
+ "startColor": "347813",
+ "endColor": "041177"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "어린이 과학관",
+ "point": 5
+ },
+ "9": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "돋움",
+ "point": 3
+ },
+ "10": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
+ "style": "Italic",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "32",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "f04da5",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffe000",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "type": "boolean",
+ "ele": "//Layer[MaskOpType/@value='Clipping']",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "type": "exists",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "type": "exists",
+ "ele": "//Layer//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "008878",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "5",
+ "distance": "3",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/copyFiles.py b/copyFiles.py
index dc291d2..b72799f 100644
--- a/copyFiles.py
+++ b/copyFiles.py
@@ -5,7 +5,7 @@ import unicodedata
def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, target_root_d, target_root_e):
for root, dirs, files in os.walk(source_root):
for dir_name in dirs:
- if dir_name == 'DIC': # DIC 디렉토리 탐색
+ if dir_name.lower() == 'dic': # DIC 디렉토리 탐색
parent_dir = os.path.basename(os.path.dirname(os.path.join(root, dir_name)))
target_root = None
parent_dir = unicodedata.normalize('NFC', parent_dir)
@@ -24,21 +24,28 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t
if target_root:
source_dic_path = os.path.join(root, dir_name)
- target_dic_path = os.path.join(target_root, dir_name)
+ target_dir_name = dir_name.upper()
+ target_dic_path = os.path.join(target_root, target_dir_name)
# DIC 하위 디렉토리와 파일 복사
shutil.copytree(source_dic_path, target_dic_path, dirs_exist_ok=True)
print(f"Copied {source_dic_path} to {target_dic_path}")
+
+ test_folder_path = os.path.join(target_root, "TEST")
+ os.makedirs(test_folder_path, exist_ok=True)
else:
print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.")
# 사용법
-source_directory = r"C:\Users\dra\project\GOM\DIC\회차별채점자료\0000\정답" # 원본 디렉토리 경로
-target_directory_a = r".\output\A" # '2교시'의 타겟 경로
-target_directory_b = r".\output\B" # '2교시'의 타겟 경로
-target_directory_c = r".\output\C" # '3교시'의 타겟 경로
-target_directory_d = r".\output\D" # '3교시'의 타겟 경로
-target_directory_e = r".\output\E" # '3교시'의 타겟 경로
+exam_round = "2504"
+source_directory = r"C:\Users\dra\project\data\제2504회 정기\답안파일" # 원본 디렉토리 경로
+
+target_directory_a = f".\\output\\{exam_round}\\A" # '1교시'의 타겟 경로
+target_directory_b = f".\\output\\{exam_round}\\B" # '2교시'의 타겟 경로
+target_directory_c = f".\\output\\{exam_round}\\C" # '3교시'의 타겟 경로
+target_directory_d = f".\\output\\{exam_round}\\D" # '4교시'의 타겟 경로
+target_directory_e = f".\\output\\{exam_round}\\E" # '5교시'의 타겟 경로
+
copy_dic_subdirs(source_directory, target_directory_a, target_directory_b, target_directory_c, target_directory_d, target_directory_e)
diff --git a/psdExport_2.js b/psdExport_2.js
index dd5a53a..3a511a8 100644
--- a/psdExport_2.js
+++ b/psdExport_2.js
@@ -11,7 +11,8 @@ const getGpdpScore = require('./gpdpScoring.js');
const getToday = require('./getToday.js');
const todayDate = getToday();
-const examRound = '0000';
+const examRound = '2504';
+const dic_or_dpi = 'DIC'
const examTypes = [
'A',
'B',
@@ -27,8 +28,18 @@ const outputExcelFiles = [];
examTypes.forEach(type => {
const scoringJson = require(`./DIC_${examRound}${type}.json`);
- const answerFilesDir = `./output/${type}/${testMode ? 'TEST' : 'DIC'}`;
- const outputExcelFile = `./${todayDate}_DIC_${examRound}${type}_${testMode ? 'TEST.xlsx' : '채점결과.xlsx'}`;
+ const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : dic_or_dpi}`;
+ let outputExcelFile = `./${todayDate}_${dic_or_dpi}_${examRound}${type}_채점결과.xlsx`;
+ if (testMode) {
+ outputExcelFile = `./00_${dic_or_dpi}_${examRound}${type}_TEST.xlsx`;
+ }
+ // const scoringJson = require(`./DIC_${examRound}${type}.json`);
+ // const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : 'DIC'}`;
+ // let outputExcelFile = `./${todayDate}_DIC_${examRound}${type}_채점결과.xlsx`;
+ // if (testMode) {
+ // outputExcelFile = `./00_DIC_${examRound}${type}_TEST.xlsx`;
+ // }
+
// 답안 폴더 내부에 디렉토리가 아닌 일반 파일이 있을 경우 디렉토리만 필터링 해서 불러옴
const studentDirs = fs.readdirSync(answerFilesDir).filter(file => {
diff --git a/samples/DIC(gompic).json b/samples/DIC(gompic).json
deleted file mode 100644
index 0524501..0000000
--- a/samples/DIC(gompic).json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "4": {
- "1": {
- "type": "multi",
- "ele": "//Document/Width/@value | //Document/Height/@value",
- "value": [
- "650",
- "450"
- ],
- "point": 5,
- "desc": "캔버스 사이즈 650*450"
- },
- "2": {
- "ele": "none",
- "point": 5,
- "desc": "배경색 문항은 채점 불가"
- },
- "3": {
- "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']",
- "point": 6
- },
- "4": {
- "ele": "none",
- "point": 5,
- "desc": "가로방향 흐릿하게 문항은 채점 불가"
- },
- "5": {
- "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
- "answer": "ROUNDED_RECTANGLE",
- "point": 6
- },
- "6": {
- "type": "size",
- "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value",
- "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value",
- "value": {
- "width": 370,
- "height": 60
- },
- "point": 3,
- "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
- },
- "7": {
- "type": "gradient",
- "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value",
- "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value",
- "value": {
- "startColor": "347813",
- "endColor": "041177"
- },
- "point": 6
- },
- "8": {
- "type": "exact",
- "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
- "value": "어린이 과학관",
- "point": 5
- },
- "9": {
- "type": "exact",
- "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
- "value": "돋움",
- "point": 3
- },
- "10": {
- "type": "exact",
- "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value",
- "value": "True",
- "point": 3
- },
- "11": {
- "type": "exact",
- "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
- "value": "32",
- "point": 3
- },
- "12": {
- "type": "color",
- "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
- "value": "f04da5",
- "point": 3,
- "desc": "색상 코드 비교 시 소문자로 입력할 것"
- },
- "13": {
- "type": "exact",
- "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
- "value": "3",
- "point": 3
- },
- "14": {
- "type": "color",
- "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
- "value": "ffe000",
- "point": 3,
- "desc": "색상 코드 비교 시 소문자로 입력할 것"
- },
- "15": {
- "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
- "point": 6,
- "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
- },
- "16": {
- "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value",
- "value": "RECTANGLE",
- "point": 3
- },
- "17": {
- "type": "size",
- "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value",
- "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value",
- "value": {
- "width": 150,
- "height": 150
- },
- "point": 3,
- "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
- },
- "18": {
- "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value",
- "value": "7",
- "point": 3
- },
- "19": {
- "type": "color",
- "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
- "value": "008878",
- "point": 3,
- "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
- },
- "20": {
- "type": "shadow",
- "ele": {
- "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]",
- "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
- "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
- "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
- "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
- },
- "value": {
- "width": "5",
- "distance": "3",
- "blur": "1",
- "angle": "320"
- },
- "point": 5,
- "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
- }
- }
-}
\ No newline at end of file
diff --git a/samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml b/samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml
deleted file mode 100644
index ea60744..0000000
--- a/samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml b/samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml
deleted file mode 100644
index 0b65c1d..0000000
--- a/samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/z.xbook b/z.xbook
index 41d66b1..e28d40e 100644
--- a/z.xbook
+++ b/z.xbook
@@ -1 +1 @@
-[{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Tracking']]/Effects/Item/Name/@value"},{"kind":2,"language":"xpath","value":"//Layer/Shapes/Shape[*[starts-with(name(), 'gradient')]]"},{"kind":2,"language":"xpath","value":"//Layer/Shapes/Shape/shape_type/@value"}]
\ No newline at end of file
+[{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Tracking']]/Effects/Item/Name/@value"},{"kind":2,"language":"xpath","value":"//Layer/Shapes/Shape[*[starts-with(name(), 'gradient')]]"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Flower']]/Effects/Item/Name/@value | //Layer[Name[@value='Flower']]/Effects/Item/EffectData/VibranceValue/@value"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='{layer}']]/Effects/Item[EffectData/{option}]/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value\r\n"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']"}]
\ No newline at end of file
diff --git a/250410_DIC_0000A_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250410_DIC_0000A_채점결과.xlsx
similarity index 100%
rename from 250410_DIC_0000A_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250410_DIC_0000A_채점결과.xlsx
diff --git a/250410_DIC_0000B_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250410_DIC_0000B_채점결과.xlsx
similarity index 100%
rename from 250410_DIC_0000B_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250410_DIC_0000B_채점결과.xlsx
diff --git a/250410_DIC_0000C_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250410_DIC_0000C_채점결과.xlsx
similarity index 100%
rename from 250410_DIC_0000C_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250410_DIC_0000C_채점결과.xlsx
diff --git a/250411_DIC_0000A_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250411_DIC_0000A_채점결과.xlsx
similarity index 100%
rename from 250411_DIC_0000A_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250411_DIC_0000A_채점결과.xlsx
diff --git a/250411_DIC_0000B_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250411_DIC_0000B_채점결과.xlsx
similarity index 100%
rename from 250411_DIC_0000B_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250411_DIC_0000B_채점결과.xlsx
diff --git a/250411_DIC_0000C_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250411_DIC_0000C_채점결과.xlsx
similarity index 100%
rename from 250411_DIC_0000C_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250411_DIC_0000C_채점결과.xlsx
diff --git a/250414_DIC_0000A_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250414_DIC_0000A_채점결과.xlsx
similarity index 100%
rename from 250414_DIC_0000A_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250414_DIC_0000A_채점결과.xlsx
diff --git a/250415_DIC_0000A_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250415_DIC_0000A_채점결과.xlsx
similarity index 100%
rename from 250415_DIC_0000A_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250415_DIC_0000A_채점결과.xlsx
diff --git a/250415_DIC_0000B_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250415_DIC_0000B_채점결과.xlsx
similarity index 100%
rename from 250415_DIC_0000B_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250415_DIC_0000B_채점결과.xlsx
diff --git a/250415_DIC_0000C_채점결과.xlsx b/회차별채점자료/0000/excel_채점결과/250415_DIC_0000C_채점결과.xlsx
similarity index 100%
rename from 250415_DIC_0000C_채점결과.xlsx
rename to 회차별채점자료/0000/excel_채점결과/250415_DIC_0000C_채점결과.xlsx
diff --git a/회차별채점자료/0000/json_채점기준표/0415/DIC_0000A.json b/회차별채점자료/0000/json_채점기준표/0415/DIC_0000A.json
new file mode 100644
index 0000000..706cde3
--- /dev/null
+++ b/회차별채점자료/0000/json_채점기준표/0415/DIC_0000A.json
@@ -0,0 +1,693 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "$.children[?(@.name=='놀이터')].name",
+ "value": "놀이터",
+ "point": 4
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Wooden playground')].name",
+ "value": "Wooden playground",
+ "point": 4
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "10": {
+ "ele": "$.children[?(@.name=='Wooden playground')].text.font.colors[0]",
+ "type": "color",
+ "value": "801717",
+ "point": 2
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "none",
+ "point": 0
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].name",
+ "value": "나무 놀이터",
+ "point": 4
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].text.font.names[0]",
+ "type": "font",
+ "value": "YetR",
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "17": {
+ "ele": "$.children[?(@.name=='나무 놀이터')].text.font.colors[0]",
+ "type": "color",
+ "value": "0e4510",
+ "point": 2
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "$.children[?(@.name=='은행잎')].name",
+ "value": "은행잎",
+ "point": 4
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "$[?(@.width == 65 && @.height == 35)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 35
+ },
+ "point": 5
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 170,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지1.jpg",
+ "이미지3.jpg",
+ "이미지2.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "380",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='40'][@VID100='20'][@VID103='0.5']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "자연 놀이터",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "굴림체",
+ "point": 2
+ },
+
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "100",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "-16711795",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "자연 놀이터",
+ "value": [
+ 0.39375001,
+ 0.93333334
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": 170,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "자연 놀이터",
+ "type": "video",
+ "value": "120",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "value": [
+ "103",
+ "7"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "55",
+ "470:530",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "69",
+ "50"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "93",
+ "680:740",
+ "16"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "value": [
+ "132",
+ "90"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "25",
+ "860:890",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "자연 속 놀이터 Nature playground",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "휴먼옛체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "150",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "-13962321",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": [
+ "0.2",
+ "-1659649"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value":[
+ "5",
+ "3"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "자연 속 놀이터 Nature playground",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='750']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/Name/@value",
+ "value": "Germs",
+ "point": 5,
+ "desc": "Germs 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type" : "effects",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item",
+ "layer" : "Germs",
+ "option" : "amount",
+ "value" : [
+ "선명하게",
+ "12"
+ ],
+ "point": 5,
+ "desc": "Germs 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type": "exists",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value": "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 ELLIPSE인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 130,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "000555",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type" : "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value": [
+ "중첩",
+ "75"
+ ],
+ "point": 6,
+ "desc": "혼합모드(중첩, 불투명도 : 75)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/MaskOpType/@value",
+ "value": "Layering",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "type": "exists",
+ "ele": "//Layer//shape_type/@value",
+ "value": "ROUNDED_RECTANGLE",
+ "point": 3
+ },
+ "6": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 370,
+ "height": 60
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "ele": "//Layer/Shapes/Shape",
+ "startColor": "gradient_start_color/@value",
+ "endColor": "gradient_end_color/@value",
+ "value": {
+ "startColor": "347813",
+ "endColor": "041177"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "어린이 과학관",
+ "point": 5
+ },
+ "9": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "돋움",
+ "point": 3
+ },
+ "10": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
+ "style": "Italic",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "32",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "f04da5",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffe000",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "type":"boolean",
+ "ele": "//Layer[MaskOpType/@value='Clipping']",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "type": "exists",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "type": "exists",
+ "ele": "//Layer//outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "008878",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "5",
+ "distance": "3",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/회차별채점자료/0000/json_채점기준표/0415/DIC_0000B.json b/회차별채점자료/0000/json_채점기준표/0415/DIC_0000B.json
new file mode 100644
index 0000000..c0d1b83
--- /dev/null
+++ b/회차별채점자료/0000/json_채점기준표/0415/DIC_0000B.json
@@ -0,0 +1,698 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 5
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "$.children[?(@.name=='Time to stroll')].name",
+ "value": "Time to stroll",
+ "point": 4
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Time to stroll')].text.font.colors[0]",
+ "type": "color",
+ "value": "ff9000",
+ "point": 2
+ },
+ "10": {
+ "ele": "none",
+ "point": 0
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].name",
+ "value": "즐거운 산책 시간",
+ "point": 4
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.names[0]",
+ "type": "font",
+ "value": "GungsuhChe",
+ "point": 2
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.colors[0]",
+ "type": "color",
+ "value": "035b80",
+ "point": 2
+ },
+ "17": {
+ "ele": "none",
+ "point": 0
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "none",
+ "point": 0
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "none",
+ "point": 0
+ },
+ "27": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "28": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 180,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지2.jpg",
+ "이미지1.jpg",
+ "이미지3.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='120']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "360",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@Type='1'][@ID='86'][@VID100='5'][@VID101='30']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "숲 속으로 떠나는 여행",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "바탕체",
+ "point": 2
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "110",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "-16769281",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "숲 속으로 떠나는 여행",
+ "value": [
+ 0.28229165,
+ 0.92962962
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "videoIsExist",
+ "value": [
+ 179,
+ 180
+ ],
+ "point": 2,
+ "desc": "출제 오류로 인해 두 가지 정답 모두 인정"
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "숲 속으로 떠나는 여행",
+ "type": "video",
+ "value": "120",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "125",
+ "8"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "96",
+ "450:540",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "value": [
+ "99",
+ "50"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "35",
+ "660:720",
+ "16"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "102",
+ "8"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "1",
+ "810:840",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "길가에 피어있는 꽃 Roadside flowers",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "휴먼편지체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "130",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "-9664512",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-3868161"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": [
+ "23",
+ "2"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "길가에 피어있는 꽃 Roadside flowers",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='740']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='0'][@VID8='60']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/Name/@value",
+ "value": "Tracking",
+ "point": 5,
+ "desc": "Tracking 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type": "effects",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item",
+ "layer": "Tracking",
+ "option": "brightness",
+ "value": [
+ "밝기/대비",
+ "30"
+ ],
+ "point": 5,
+ "desc": "Tracking 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type": "exists",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value": "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 타원인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 80,
+ "height": 80
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "999999",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type": "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value": [
+ "색 회피율",
+ "80"
+ ],
+ "point": 6,
+ "desc": "혼합모드(색 회피율, 불투명도 : 80)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/MaskOpType/@value",
+ "value": "Layering",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 6,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "type": "exists",
+ "ele": "//Layer//shape_type/@value",
+ "value": "ROUNDED_RECTANGLE",
+ "point": 3
+ },
+ "6": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 400,
+ "height": 60
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "ele": "//Layer/Shapes/Shape",
+ "startColor": "gradient_start_color/@value",
+ "endColor": "gradient_end_color/@value",
+ "value": {
+ "startColor": "fff000",
+ "endColor": "009998"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "김유정실레이야기길",
+ "point": 5
+ },
+ "9": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "궁서체",
+ "point": 3
+ },
+ "10": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
+ "style": "Bold",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "24",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "ffffff",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "5",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "781651",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "type": "boolean",
+ "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "type": "exists",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 150,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "type": "exists",
+ "ele": "//Layer//outline_peninfo/Width/@value",
+ "value": "3",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "40eeab",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "7",
+ "distance": "5",
+ "blur": "1",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/회차별채점자료/0000/json_채점기준표/0415/DIC_0000C.json b/회차별채점자료/0000/json_채점기준표/0415/DIC_0000C.json
new file mode 100644
index 0000000..155d77b
--- /dev/null
+++ b/회차별채점자료/0000/json_채점기준표/0415/DIC_0000C.json
@@ -0,0 +1,693 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "none",
+ "point": 0
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "none",
+ "point": 0
+ },
+ "7": {
+ "ele": "none",
+ "point": 0
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 45
+ },
+ "point": 4
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0
+ },
+ "2": {
+ "ele": "none",
+ "point": 0
+ },
+ "3": {
+ "ele": "none",
+ "point": 0
+ },
+ "4": {
+ "ele": "$.children[?(@.name=='나무집')].name",
+ "value": "나무집",
+ "point": 4
+ },
+ "5": {
+ "ele": "none",
+ "point": 0
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].name",
+ "value": "Park Rest Area",
+ "point": 4
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.names[0]",
+ "type": "font",
+ "value": "Arial",
+ "point": 2
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.names[0]",
+ "value": "Arial-BoldItalicMT",
+ "point": 2
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.sizes[0]",
+ "value": 48,
+ "point": 2
+ },
+ "10": {
+ "ele": "$.children[?(@.name=='Park Rest Area')].text.font.colors[0]",
+ "type": "color",
+ "value": "076414",
+ "point": 2
+ },
+ "11": {
+ "ele": "none",
+ "point": 0
+ },
+ "12": {
+ "ele": "none",
+ "point": 0
+ },
+ "13": {
+ "ele": "none",
+ "point": 0
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].name",
+ "value": "공원 쉼터",
+ "point": 4
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].text.font.names[0]",
+ "type": "font",
+ "value": "GungsuhChe",
+ "point": 2
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].text.font.sizes[0]",
+ "value": 36,
+ "point": 2
+ },
+ "17": {
+ "ele": "$.children[?(@.name=='공원 쉼터')].text.font.colors[0]",
+ "type": "color",
+ "value": "4f4300",
+ "point": 2
+ },
+ "18": {
+ "ele": "none",
+ "point": 0
+ },
+ "19": {
+ "ele": "none",
+ "point": 0
+ },
+ "20": {
+ "ele": "none",
+ "point": 0
+ },
+ "21": {
+ "ele": "none",
+ "point": 0
+ },
+ "22": {
+ "ele": "$.children[?(@.name=='나무 의자')].name",
+ "value": "나무 의자",
+ "point": 4
+ },
+ "23": {
+ "ele": "none",
+ "point": 0
+ },
+ "24": {
+ "ele": "none",
+ "point": 0
+ },
+ "25": {
+ "ele": "none",
+ "point": 0
+ },
+ "26": {
+ "ele": "$[?(@.width == 65 && @.height == 35)]",
+ "type": "size",
+ "value": {
+ "width": 65,
+ "height": 35
+ },
+ "point": 5
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "videoStartTime": 170,
+ "openingStartTime": 0,
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지2.jpg",
+ "이미지3.jpg",
+ "이미지1.jpg"
+ ],
+ "point": 4
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']",
+ "point": 2
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "type": "startend",
+ "start": "0",
+ "end": "350",
+ "point": 2
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='56'][@VID100='80'][@VID101='100']",
+ "point": 3
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "video",
+ "value": "연못 전망대 가는 길",
+ "point": 3
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "바탕체",
+ "point": 2
+ },
+
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "100",
+ "point": 2
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "-2490121",
+ "point": 2
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "연못 전망대 가는 길",
+ "value": [
+ 0.31979167,
+ 0.93333334
+ ],
+ "point": 2
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": 170,
+ "point": 2
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "연못 전망대 가는 길",
+ "type": "video",
+ "value": "150",
+ "point": 2
+ },
+ "12": {
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "type": "searchIndex",
+ "value": "1",
+ "point": 2
+ },
+ "13": {
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "14": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "104",
+ "7"
+ ],
+ "point": 2
+ },
+ "15": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "13",
+ "440:500",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "16": {
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "180",
+ "point": 2
+ },
+ "17": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID105']",
+ "value": [
+ "108",
+ "5"
+ ],
+ "point": 2
+ },
+ "18": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "21",
+ "650:710",
+ "16"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "19": {
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "type": "searchIndex",
+ "value": "150",
+ "point": 2
+ },
+ "20": {
+ "type": "multi",
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "value": [
+ "93",
+ "5"
+ ],
+ "point": 2
+ },
+ "21": {
+ "type": "multi",
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "value": [
+ "24",
+ "800:830",
+ "2"
+ ],
+ "point": 2,
+ "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "type": "opening",
+ "value": "자연 테마 파크 Nature theme park",
+ "point": 3
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "궁서체",
+ "point": 2
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "150",
+ "point": 2
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "-16715265",
+ "point": 2
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": [
+ "0.2",
+ "-6323684"
+ ],
+ "point": 2
+ },
+ "27": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value":[
+ "1",
+ "3"
+ ],
+ "point": 3
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": 0,
+ "point": 2
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "자연 테마 파크 Nature theme park",
+ "type": "opening",
+ "value": "120",
+ "point": 2
+ },
+ "30": {
+ "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]",
+ "point": 2
+ },
+ "31": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='800']",
+ "point": 2
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']",
+ "point": 2
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "4": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "350"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*350"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "자유 변형 문항은 채점 불가"
+ },
+ "3": {
+ "type" : "exists",
+ "ele": "//Layer/Name/@value",
+ "value": "Leaf",
+ "point": 5,
+ "desc": "Leaf 레이어가 있는지 여부 체크"
+ },
+ "4": {
+ "type" : "effects",
+ "ele": "//Layer[Name[@value='{layer}']]/Effects/Item",
+ "layer" : "Leaf",
+ "option" : "Lift",
+ "value" : [
+ "감마",
+ "0.64"
+ ],
+ "point": 5,
+ "desc": "Leaf 레이어의 효과 체크"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "올가미 도구/이미지 문항은 채점 불가"
+ },
+ "6": {
+ "type" : "exists",
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "value" : "세피아",
+ "point": 6,
+ "desc": "세피아 효과가 있는지 여부 체크"
+ },
+ "7": {
+ "type": "exact",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "RECTANGLE",
+ "point": 3,
+ "desc": "레이어 쉐이프 타입이 RECTANGLE인지 체크"
+ },
+ "8": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 650,
+ "height": 50
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "9": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "ff3030",
+ "point": 6,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "10": {
+ "type" : "multiValue",
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "value" : [
+ "추가",
+ "65"
+ ],
+ "point": 6,
+ "desc": "혼합모드(추가, 불투명도 : 65)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "type": "multi",
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "value": [
+ "650",
+ "450"
+ ],
+ "point": 5,
+ "desc": "캔버스 사이즈 650*450"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "배경색 문항은 채점 불가"
+ },
+ "3": {
+ "type": "exists",
+ "ele": "//Layer/MaskOpType/@value",
+ "value": "Layering",
+ "point": 6
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "가로방향 흐릿하게 문항은 채점 불가"
+ },
+ "5": {
+ "type": "exists",
+ "ele": "//Layer//shape_type/@value",
+ "value": "ELLIPSE",
+ "point": 3
+ },
+ "6": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 450,
+ "height": 85
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "7": {
+ "type": "gradient",
+ "ele": "//Layer/Shapes/Shape",
+ "startColor": "gradient_start_color/@value",
+ "endColor": "gradient_end_color/@value",
+ "value": {
+ "startColor": "ffe000",
+ "endColor": "995555"
+ },
+ "point": 6
+ },
+ "8": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "value": "예쁜 노란 꽃",
+ "point": 5
+ },
+ "9": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "value": "맑은 고딕",
+ "point": 3
+ },
+ "10": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
+ "style": "Underline",
+ "value": "True",
+ "point": 3
+ },
+ "11": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "value": "30",
+ "point": 3
+ },
+ "12": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "value": "446444",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "13": {
+ "type": "exists",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "value": "7",
+ "point": 3
+ },
+ "14": {
+ "type": "color",
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "ffffff",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것"
+ },
+ "15": {
+ "type":"boolean",
+ "ele": "//Layer[MaskOpType/@value='Clipping']",
+ "point": 6,
+ "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
+ },
+ "16": {
+ "type": "exists",
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "value": "ROUNDED_RECTANGLE",
+ "point": 3
+ },
+ "17": {
+ "type": "size",
+ "ele": "//Layer//op_points",
+ "value": {
+ "width": 120,
+ "height": 150
+ },
+ "point": 3,
+ "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
+ },
+ "18": {
+ "type": "exists",
+ "ele": "//Layer//outline_peninfo/Width/@value",
+ "value": "5",
+ "point": 3
+ },
+ "19": {
+ "type": "color",
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "value": "901651",
+ "point": 3,
+ "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
+ },
+ "20": {
+ "type": "shadow",
+ "ele": {
+ "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "value": {
+ "width": "3",
+ "distance": "10",
+ "blur": "5",
+ "angle": "320"
+ },
+ "point": 5,
+ "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "기본설정"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file
diff --git a/회차별채점자료/2504/excel_채점기준표/DIC_2504A.xlsx b/회차별채점자료/2504/excel_채점기준표/DIC_2504A.xlsx
new file mode 100644
index 0000000..1c81792
Binary files /dev/null and b/회차별채점자료/2504/excel_채점기준표/DIC_2504A.xlsx differ
diff --git a/회차별채점자료/2504/excel_채점기준표/DIC_2504B.xlsx b/회차별채점자료/2504/excel_채점기준표/DIC_2504B.xlsx
new file mode 100644
index 0000000..172bc18
Binary files /dev/null and b/회차별채점자료/2504/excel_채점기준표/DIC_2504B.xlsx differ
diff --git a/회차별채점자료/2504/excel_채점기준표/DIC_2504C.xlsx b/회차별채점자료/2504/excel_채점기준표/DIC_2504C.xlsx
new file mode 100644
index 0000000..931b16b
Binary files /dev/null and b/회차별채점자료/2504/excel_채점기준표/DIC_2504C.xlsx differ
diff --git a/회차별채점자료/2504/excel_채점기준표/DPI_2504B.xlsx b/회차별채점자료/2504/excel_채점기준표/DPI_2504B.xlsx
new file mode 100644
index 0000000..d17604a
Binary files /dev/null and b/회차별채점자료/2504/excel_채점기준표/DPI_2504B.xlsx differ
diff --git a/회차별채점자료/2504/hwp_문제/DIC_2504A.hwp b/회차별채점자료/2504/hwp_문제/DIC_2504A.hwp
new file mode 100644
index 0000000..871e930
Binary files /dev/null and b/회차별채점자료/2504/hwp_문제/DIC_2504A.hwp differ
diff --git a/회차별채점자료/2504/hwp_문제/DIC_2504B.hwp b/회차별채점자료/2504/hwp_문제/DIC_2504B.hwp
new file mode 100644
index 0000000..e8a3f06
Binary files /dev/null and b/회차별채점자료/2504/hwp_문제/DIC_2504B.hwp differ
diff --git a/회차별채점자료/2504/hwp_문제/DIC_2504C.hwp b/회차별채점자료/2504/hwp_문제/DIC_2504C.hwp
new file mode 100644
index 0000000..a3dff9c
Binary files /dev/null and b/회차별채점자료/2504/hwp_문제/DIC_2504C.hwp differ
diff --git a/회차별채점자료/2504/hwp_문제/DPI_2504B.hwp b/회차별채점자료/2504/hwp_문제/DPI_2504B.hwp
new file mode 100644
index 0000000..34956a2
Binary files /dev/null and b/회차별채점자료/2504/hwp_문제/DPI_2504B.hwp differ
diff --git a/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_A.json b/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_A.json
new file mode 100644
index 0000000..5e0ca79
--- /dev/null
+++ b/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_A.json
@@ -0,0 +1,492 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/캔버스/캔버스 크기[Canvas Size]/가로(650 픽셀[Pixels]) X 세로(450 픽셀[Pixels]) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/①/복구 브러시 도구[Healing Brush Tool]/이미지 제거"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/②/색조/채도[Hue/Saturation]/초록색 계열로 보정"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/색상 균형[Color Balance]/빨간색 계열로 보정"
+ },
+ "5": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/밝기 조정/곡선[Curves]을 이용하여 이미지 조정 (입력[Input] : 80, 출력[Output] : 105)",
+ "note": "원본대비 밝아짐"
+ },
+ "6": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/필터 효과/그물눈[Crosshatch]을 이용하여 필터 적용\r\n(선/획 길이[Stroke Length] : 5, 선명도[Sharpness] : 4, 강도[Strength] : 1)"
+ },
+ "7": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/저장/JPG/이미지 크기 ⇒ 600 X 400 픽셀[Pixels]"
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "point": 10,
+ "desc": "문제1/저장/PSD/이미지 크기 ⇒ 65 X 45 픽셀[Pixels] ",
+ "type": "boolean"
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/캔버스/캔버스 크기[Canvas Size]/가로(650 픽셀[Pixels]) X 세로(450 픽셀[Pixels]) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/모양 도구[Shape Tool]/선/획[Stroke]/①크기 : 2px"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/모양 도구[Shape Tool]/선/획[Stroke]/②색상 : #f3715b"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/모양 도구[Shape Tool]/그라디언트 오버레이[Gradient Overlay]/①색상 : #75caea - #fdfa03"
+ },
+ "5": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].name",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/텍스트 입력/“Healing Cafe”",
+ "value": "Healing Cafe"
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/①글꼴(Arial)",
+ "type": "font",
+ "value": "Arial"
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/②글꼴 스타일(Bold Italic)",
+ "value": "Arial-BoldItalicMT"
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.sizes[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/③크기(48pt)",
+ "value": 48
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Healing Cafe')].text.font.colors[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/④색상(#cdf9c3)",
+ "type": "color",
+ "value": "cdf9c3"
+ },
+ "10": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/⑤앤티 앨리어싱 : 선명하게[Sharp]"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/선/획[Stroke]/①크기 : 4px"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/선/획[Stroke]/②색상 : #086413"
+ },
+ "13": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].name",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/텍스트 입력/“나만의 힐링 카페”",
+ "value": "나만의 힐링 카페"
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/①글꼴(굴림체)",
+ "type": "font",
+ "value": "GulimChe"
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.sizes[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/②크기(36pt)",
+ "value": 36
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.colors[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/③색상(#92350c)",
+ "type": "color",
+ "value": "92350c"
+ },
+ "17": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/④앤티 앨리어싱 : 선명하게[Sharp]"
+ },
+ "18": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/선/획[Stroke]/①크기 : 2px"
+ },
+ "19": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/선/획[Stroke]/②색상 : #fcf7a6"
+ },
+ "20": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/모서리가 둥근 직사각형 도구[Rounded Rectangle Tool]/모서리가 둥근 직사각형의 크기/200 px × 150 px",
+ "note": "클리핑 마스크기능 이용"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/선/획[Stroke]/①크기 : 4px"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/선/획[Stroke]/②색상 : #ff3904"
+ },
+ "23": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/선/획[Stroke]/③위치 : 안쪽[Inside]"
+ },
+ "24": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/그림자 효과[Drop Shadow]/①혼합모드[Blend Mode] : 곱하기[Multiply]"
+ },
+ "25": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/그림자 효과[Drop Shadow]/②각도[Angle] : 120°"
+ },
+ "26": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/저장/JPG/이미지 크기 ⇒ 600 X 400 픽셀[Pixels]"
+ },
+ "27": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "point": 10,
+ "desc": "문제2/저장/PSD/이미지 크기 ⇒ 65 X 45 픽셀[Pixels] ",
+ "type": "boolean"
+ },
+ "28": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "point": 4,
+ "desc": "문제3/순서/미디어 소스 순서/동영상.mp4 > 이미지2.jpg > 이미지3.jpg > 이미지1.jpg",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지2.jpg",
+ "이미지3.jpg",
+ "이미지1.jpg"
+ ]
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/배속/1.4x"
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자르기/시작 시간(0.00), 재생 시간(12.10)",
+ "type": "startend",
+ "start": "0",
+ "end": "370"
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='70'][@VID100='40'][@VID101='60']",
+ "point": 3,
+ "desc": "문제3/동영상 파일/이펙트/이미지 보정-블룸(불빛 : 40, 블러 : 60)"
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/동영상 파일/자막/텍스트 입력/다양한 커피 원두",
+ "type": "video",
+ "value": "다양한 커피 원두"
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/①돋움체",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "돋움체"
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/②크기 110",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "110"
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/③3949ab",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-12036743"
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/위치 설정/화면 정가운데 아래",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "value": [
+ "0.25729167",
+ "0.78518522"
+ ]
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/시작 시간/[5.00]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "value": 150
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/클립 길이/[6.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "type": "video",
+ "search": "다양한 커피 원두",
+ "value": "180"
+ },
+ "12": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "point": 2,
+ "desc": "문제3/동영상 파일/원본 동영상에 포함된 오디오는 모두 음소거 할 것",
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "type": "searchIndex",
+ "value": "1"
+ },
+ "13": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "14": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/오버레이/비누 방울(크기 : 4)",
+ "type": "multi",
+ "value": [
+ "102",
+ "4"
+ ]
+ },
+ "15": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/클립 트랜지션/위로 덮기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ "13",
+ "490:550",
+ "2"
+ ]
+ },
+ "16": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "17": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/오버레이/내려앉는(크기 : 8)",
+ "type": "multi",
+ "value": [
+ "103",
+ "8"
+ ]
+ },
+ "18": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/클립 트랜지션/왼쪽으로 덮기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ null,
+ null,
+ null
+ ]
+ },
+ "19": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/이미지 클립 길이/[5.00]",
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "type": "searchIndex",
+ "value": "150"
+ },
+ "20": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/오버레이/지나가는 01(기울기 : 20)",
+ "type": "multi",
+ "value": [
+ "184",
+ "20"
+ ]
+ },
+ "21": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/클립 트랜지션/디졸브(앞으로 이동, 재생 시간 : 1.00)",
+ "type": "multi",
+ "value": [
+ "0",
+ "850:880",
+ "2"
+ ]
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 입력/라떼아트 만들기\r\n(Making latte art)",
+ "type": "opening",
+ "value": "라떼아트 만들기 (Making latte art)"
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/①바탕체",
+ "type": "opening",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "바탕체"
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/②크기 140",
+ "type": "opening",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "140"
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/③795548",
+ "type": "opening",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-12036743"
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 윤곽선 색/c8e6c9, 두께 : 20",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": [
+ "0.2",
+ "-3545400"
+ ]
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/나타나기/위로 닦아내기, 지속 시간 : 2.00"
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/시작 시간/[0.00]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": 0
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 클립 길이/[4.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "라떼아트 만들기 (Making latte art)",
+ "type": "opening",
+ "value": "120"
+ },
+ "30": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/시작구간/[0.00]"
+ },
+ "31": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/종료구간/[29.00]"
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']",
+ "point": 2,
+ "desc": "문제3/음악 파일/페이드 아웃/[2.00]"
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ },
+ "videoStartTime": 170,
+ "openingStartTime": 0
+ }
+}
\ No newline at end of file
diff --git a/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_B.json b/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_B.json
new file mode 100644
index 0000000..bd55806
--- /dev/null
+++ b/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_B.json
@@ -0,0 +1,488 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/캔버스/캔버스 크기[Canvas Size]/가로(650 픽셀[Pixels]) X 세로(450 픽셀[Pixels]) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/①/복구 브러시 도구[Healing Brush Tool]/이미지 제거"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/②/색조/채도[Hue/Saturation]/파란색 계열로 보정"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/색상 균형[Color Balance]/보라색 계열로 보정"
+ },
+ "5": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/밝기 조정/곡선[Curves]을 이용하여 이미지 조정 (입력[Input] : 90, 출력[Output] : 105)",
+ "note": "원본대비 밝아짐"
+ },
+ "6": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/필터 효과/텍스처화[Texturizer]를 이용하여 필터 적용\r\n(텍스처[Texture] : 캔버스[Canvas], 비율[Scaling] : 110%, 부조[Relief] : 4, 조명[Light] : 위[Top])"
+ },
+ "7": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/저장/JPG/이미지 크기 ⇒ 600 X 400 픽셀[Pixels]"
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "point": 10,
+ "desc": "문제1/저장/PSD/이미지 크기 ⇒ 65 X 45 픽셀[Pixels] ",
+ "type": "boolean"
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/캔버스/캔버스 조정/가로(650 픽셀[Pixels]) X 세로(350 픽셀[Pixels]) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/캔버스/캔버스 조정/배경색(색상 : #81098f)"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/이미지 복사/자유 변형[Free Transform]/①자유 변형[Free Transform] 으로 크기 변형"
+ },
+ "4": {
+ "ele": "$.children[?(@.name=='꽃잎들')]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/이미지 복사/자유 변형[Free Transform]/②레이어 이름 - ‘꽃잎들’",
+ "type": "boolean"
+ },
+ "5": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/이미지 복사/레이어 마스크[Layer Mask]/③레이어 마스크[Layer Mask] 설정, 가로 방향으로 흐릿하게"
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Flower Rock')].name",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/텍스트 입력/“Flower Rock”",
+ "value": "Flower Rock"
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/①글꼴(Arial)",
+ "type": "font",
+ "value": "Arial"
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/②글꼴 스타일(Bold Italic)",
+ "value": "Arial-BoldItalicMT"
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.sizes[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/③크기(48pt)",
+ "value": 48
+ },
+ "10": {
+ "ele": "$.children[?(@.name=='Flower Rock')].text.font.colors[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/④색상(#d6f592)",
+ "type": "color",
+ "value": "d6f592"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/⑤앤티 앨리어싱 : 선명하게[Sharp]"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/선/획[Stroke]/①크기 : 5px"
+ },
+ "13": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/선/획[Stroke]/②색상 : #c1215d"
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].name",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/텍스트 입력/“꽃과 바위\"",
+ "value": "꽃과 바위"
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/①글꼴(돋움체)",
+ "type": "font",
+ "value": "DotumChe"
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].text.font.sizes[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/②크기(36pt)",
+ "value": 36
+ },
+ "17": {
+ "ele": "$.children[?(@.name=='꽃과 바위')].text.font.colors[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/③색상(#0d17d5)",
+ "type": "color",
+ "value": "0d17d5"
+ },
+ "18": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/④앤티 앨리어싱 : 선명하게[Sharp]"
+ },
+ "19": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/선/획[Stroke]/①크기 : 2px"
+ },
+ "20": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/선/획[Stroke]/②색상 : #cefbd5"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/이미지 복사/자유 변형[Free Transform]/①자유 변형[Free Transform]으로 크기 변형"
+ },
+ "22": {
+ "ele": "$.children[?(@.name=='노랑꽃')]",
+ "point": 10,
+ "desc": "문제2/사진3.jpg\r\n/이미지 복사/자유 변형[Free Transform]/②레이어 이름 - ‘노랑꽃’",
+ "type": "boolean"
+ },
+ "23": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/이미지 복사/그림자 효과[Drop Shadow]/①혼합모드[Blend Mode] : 곱하기[Multiply]"
+ },
+ "24": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/이미지 복사/그림자 효과[Drop Shadow]/②각도[Angle] : 120°"
+ },
+ "25": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/저장/JPG/이미지 크기 ⇒ 600 X 300 픽셀[Pixels]"
+ },
+ "26": {
+ "ele": "$[?(@.width == 65 && @.height == 35)]",
+ "point": 10,
+ "desc": "문제2/저장/PSD/이미지 크기 ⇒ 65 X 35 픽셀[Pixels] ",
+ "type": "boolean"
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "point": 4,
+ "desc": "문제3/순서/미디어 소스 순서/동영상.mp4 > 이미지3.jpg > 이미지1.jpg > 이미지2.jpg",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지3.jpg",
+ "이미지1.jpg",
+ "이미지2.jpg"
+ ]
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/배속/1.4x"
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자르기/시작 시간(0.00), 재생 시간(12.10)",
+ "type": "startend",
+ "start": "0",
+ "end": "370"
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='44'][@VID100='8'][@VID102='8']",
+ "point": 3,
+ "desc": "문제3/동영상 파일/이펙트/LUT 필터-카메라 필름-카메라 필름 09(노출 : 8, 감마 : 0.9)"
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/동영상 파일/자막/텍스트 입력/화단의 꽃들",
+ "type": "video",
+ "value": "화단의 꽃들"
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/①돋움체",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "돋움체"
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/②크기 110",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "110"
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/③ff531b",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-7601940"
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/위치 설정/화면 정가운데 아래",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": [
+ "0.19062501",
+ "0.78518522"
+ ]
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/시작 시간/[5.20]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": 170
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/클립 길이/[5.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": "150"
+ },
+ "12": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "point": 2,
+ "desc": "문제3/동영상 파일/원본 동영상에 포함된 오디오는 모두 음소거 할 것",
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "type": "searchIndex",
+ "value": "1"
+ },
+ "13": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "14": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/오버레이/흩날림(개수/양 : 40)",
+ "type": "multi",
+ "value": [
+ "67",
+ "40"
+ ]
+ },
+ "15": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/클립 트랜지션/아래로 밀기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ "10",
+ "490:550",
+ "2"
+ ]
+ },
+ "16": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "17": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/오버레이/내려앉는(속도 : 7)",
+ "type": "multi",
+ "value": [
+ "103",
+ "7"
+ ]
+ },
+ "18": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/클립 트랜지션/오른쪽으로 덮기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ null,
+ null,
+ null
+ ]
+ },
+ "19": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/이미지 클립 길이/[5.00]",
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "type": "searchIndex",
+ "value": "150"
+ },
+ "20": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/오버레이/비누 방울(크기 : 3)",
+ "type": "multi",
+ "value": [
+ "102",
+ "3"
+ ]
+ },
+ "21": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/클립 트랜지션/디졸브(앞으로 이동, 재생 시간 : 1.00)",
+ "type": "multi",
+ "value": [
+ "0",
+ "850:880",
+ "2"
+ ]
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 입력/아름다운 꽃 축제\r\n(Happy Flower Festival)",
+ "type": "opening",
+ "value": "아름다운 꽃 축제 (Happy Flower Festival)"
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/①궁서체",
+ "type": "opening",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "궁서체"
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/②크기 140",
+ "type": "opening",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "140"
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/③ec008c",
+ "type": "opening",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-7601940"
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 윤곽선 색/fff9c4, 두께 : 40",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-3868161"
+ ]
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/나타나기/오른쪽으로 펼치기, 지속 시간 : 2.00"
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/시작 시간/[0.00]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": 0
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 클립 길이/[4.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": "120"
+ },
+ "30": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/시작구간/[0.00]"
+ },
+ "31": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/종료구간/[29.00]"
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']",
+ "point": 2,
+ "desc": "문제3/음악 파일/페이드 아웃/[2.00]"
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ },
+ "videoStartTime": 170,
+ "openingStartTime": 0
+ }
+}
\ No newline at end of file
diff --git a/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_C.json b/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_C.json
new file mode 100644
index 0000000..8c8b60c
--- /dev/null
+++ b/회차별채점자료/2504/json_채점기준표/채점기준표/DIC_C.json
@@ -0,0 +1,492 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/캔버스/캔버스 크기[Canvas Size]/가로(650 픽셀[Pixels]) X 세로(450 픽셀[Pixels]) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/①/복구 브러시 도구[Healing Brush Tool]/이미지 제거"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/②/색조/채도[Hue/Saturation]/분홍색 계열로 보정"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/색상 균형[Color Balance]/노란색 계열로 보정"
+ },
+ "5": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/밝기 조정/곡선[Curves]을 이용하여 이미지 조정 (입력[Input] : 90, 출력[Output] : 110)",
+ "note": "원본대비 밝아짐"
+ },
+ "6": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/필터 효과/텍스처화[Texturizer]를 이용하여 필터 적용\r\n텍스처[Texture] : 캔버스[Canvas], 비율[Scaling] : 130%, 부조[Relief] : 4, 조명[Light] : 위[Top])"
+ },
+ "7": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/저장/JPG/이미지 크기 ⇒ 600 X 400 픽셀[Pixels]"
+ },
+ "8": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "point": 10,
+ "desc": "문제1/저장/PSD/이미지 크기 ⇒ 65 X 45 픽셀[Pixels] ",
+ "type": "boolean"
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/캔버스/캔버스 크기[Canvas Size]/가로(650 픽셀[Pixels]) X 세로(450 픽셀[Pixels]) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/모양 도구[Shape Tool]/선/획[Stroke]/①크기 : 2px"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/모양 도구[Shape Tool]/선/획[Stroke]/②색상 : #ac5ef6"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/모양 도구[Shape Tool]/그라디언트 오버레이[Gradient Overlay]/①색상 : #a8f589 - #ffcafd"
+ },
+ "5": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].name",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/텍스트 입력/“Arboretum in spring”",
+ "value": "Arboretum in spring"
+ },
+ "6": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/①글꼴(Arial)",
+ "type": "font",
+ "value": "Arial"
+ },
+ "7": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/②글꼴 스타일(Bold Italic)",
+ "value": "Arial-BoldItalicMT"
+ },
+ "8": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.sizes[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/③크기(48pt)",
+ "value": 48
+ },
+ "9": {
+ "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.colors[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/④색상(#a808d0)",
+ "type": "color",
+ "value": "a808d0"
+ },
+ "10": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/글꼴 서식/⑤앤티 앨리어싱 : 선명하게[Sharp]"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/선/획[Stroke]/①크기 : 4px"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/윗행 문자/선/획[Stroke]/②색상 : #fff88d"
+ },
+ "13": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].name",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/텍스트 입력/“봄날의 수목원”",
+ "value": "봄날의 수목원"
+ },
+ "14": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.names[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/①글꼴(궁서체)",
+ "type": "font",
+ "value": "GungsuhChe"
+ },
+ "15": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.sizes[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/②크기(36pt)",
+ "value": 36
+ },
+ "16": {
+ "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.colors[0]",
+ "point": 10,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/③색상(#096e34)",
+ "type": "color",
+ "value": "096e34"
+ },
+ "17": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/글꼴 서식/④앤티 앨리어싱 : 선명하게[Sharp]"
+ },
+ "18": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/선/획[Stroke]/①크기 : 2px"
+ },
+ "19": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/아래행 문자/선/획[Stroke]/②색상 : #8bfffe"
+ },
+ "20": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/사각형 도구[Rectangle Tool]/사각형의 크기/180 px × 120 px",
+ "note": "클리핑 마스크기능 이용"
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/선/획[Stroke]/①크기 : 5px"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/선/획[Stroke]/②색상 : #00de05"
+ },
+ "23": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/선/획[Stroke]/③위치 : 안쪽[Inside]"
+ },
+ "24": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/그림자 효과[Drop Shadow]/①혼합모드[Blend Mode] : 곱하기[Multiply]"
+ },
+ "25": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg\r\n/레이어 스타일/그림자 효과[Drop Shadow]/②각도[Angle] : 120°"
+ },
+ "26": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/저장/JPG/이미지 크기 ⇒ 600 X 400 픽셀[Pixels]"
+ },
+ "27": {
+ "ele": "$[?(@.width == 65 && @.height == 45)]",
+ "point": 10,
+ "desc": "문제2/저장/PSD/이미지 크기 ⇒ 65 X 45 픽셀[Pixels] ",
+ "type": "boolean"
+ },
+ "28": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "2": {
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "point": 4,
+ "desc": "문제3/순서/미디어 소스 순서/동영상.mp4 > 이미지3.jpg > 이미지2.jpg > 이미지1.jpg",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지3.jpg",
+ "이미지2.jpg",
+ "이미지1.jpg"
+ ]
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='130']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/배속/1.3x"
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자르기/시작 시간(0.00), 재생 시간(12.00)",
+ "type": "startend",
+ "start": "0",
+ "end": "360"
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='151'][@VID104='20']",
+ "point": 3,
+ "desc": "문제3/동영상 파일/이펙트/이미지 보정-톤맵(감마 : 0.8, 채도 : 20)"
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/동영상 파일/자막/텍스트 입력/아름다운 봄꽃들",
+ "type": "video",
+ "value": "아름다운 봄꽃들"
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/①굴림체",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "굴림체"
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/②크기 110",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "110"
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/③fffe37",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-5232740"
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/위치 설정/화면 정가운데 아래",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "value": [
+ "0.27083331",
+ "0.78518522"
+ ]
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/시작 시간/[5.15]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "value": 165
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/클립 길이/[5.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "type": "video",
+ "search": "아름다운 봄꽃들",
+ "value": "150"
+ },
+ "12": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "point": 2,
+ "desc": "문제3/동영상 파일/원본 동영상에 포함된 오디오는 모두 음소거 할 것",
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "type": "searchIndex",
+ "value": "1"
+ },
+ "13": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/이미지 클립 길이/[5.00]",
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "type": "searchIndex",
+ "value": "150"
+ },
+ "14": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/오버레이/지나가는01(밀도 : 50)",
+ "type": "multi",
+ "value": [
+ "184",
+ "50"
+ ]
+ },
+ "15": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지3.jpg/클립 트랜지션/위로 밀기(앞으로 이동, 재생 시간 : 1.00)",
+ "type": "multi",
+ "value": [
+ "9",
+ "480:510",
+ "2"
+ ]
+ },
+ "16": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "17": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/오버레이/스페이스 01(개수/양 : 9)",
+ "type": "multi",
+ "value": [
+ "128",
+ "9"
+ ]
+ },
+ "18": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지2.jpg/클립 트랜지션/왼쪽으로 덮기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ null,
+ null,
+ null
+ ]
+ },
+ "19": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/이미지 클립 길이/[7.00]",
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "type": "searchIndex",
+ "value": "210"
+ },
+ "20": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID104']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/오버레이/흩날림(속도 : 5)",
+ "type": "multi",
+ "value": [
+ "67",
+ "5"
+ ]
+ },
+ "21": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일\r\n(순서 맞추기)/이미지1.jpg/클립 트랜지션/세로 나누기(앞으로 이동, 재생 시간 : 3.00)",
+ "type": "multi",
+ "value": [
+ "21",
+ "810:900",
+ "2"
+ ]
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 입력/봄을 담은 정원\r\n(A Spring Garden)",
+ "type": "opening",
+ "value": "봄을 담은 정원 (A Spring Garden)"
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/①궁서체",
+ "type": "opening",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "궁서체"
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/②크기 140",
+ "type": "opening",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "140"
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/③9c27b0",
+ "type": "opening",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-5232740"
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 윤곽선 색/fecdd2, 두께 : 40",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-2961922"
+ ]
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/나타나기/커지면서 나타나기, 지속 시간 : 2.00"
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/시작 시간/[0.00]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": 0
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 클립 길이/[4.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "봄을 담은 정원 (A Spring Garden)",
+ "type": "opening",
+ "value": "120"
+ },
+ "30": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/시작구간/[0.00]"
+ },
+ "31": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/종료구간/[29.00]"
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='30']",
+ "point": 2,
+ "desc": "문제3/음악 파일/페이드 아웃/[1.00]"
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ },
+ "videoStartTime": 170,
+ "openingStartTime": 0
+ }
+}
\ No newline at end of file
diff --git a/회차별채점자료/2504/json_채점기준표/채점기준표/DPI_B.json b/회차별채점자료/2504/json_채점기준표/채점기준표/DPI_B.json
new file mode 100644
index 0000000..c77c009
--- /dev/null
+++ b/회차별채점자료/2504/json_채점기준표/채점기준표/DPI_B.json
@@ -0,0 +1,726 @@
+{
+ "0": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/캔버스/캔버스/가로(650 픽셀) X 세로(350 픽셀) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/이미지 복사/자유 변형/크기 변형으로 캔버스 크기에 맞게 변형"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/이미지 복사/레이어 이름/Flower"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/조정/생동감을 이용하여 이미지 조정 (생동감 : 40)",
+ "note": "40으로만 여러 번 설정한 경우에는 정답 처리\r\n(프로그램 상 40을 설정했는지 유무를 명확히 확인 불가)\r\nif:조정을 여러 번 진행했을 경우, 조정값이 1개라도 40이 아닐 시 오답으로 처리"
+ },
+ "5": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/①/복제 도장/이미지 복구"
+ },
+ "6": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/②/세피아/보라색 계열로 보정"
+ },
+ "7": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/도형 도구/① 원형/타원형"
+ },
+ "8": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/도형 도구/② 크기 : 120 x 120"
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/도형 도구/③ 채우기(색상 : 7097BB)"
+ },
+ "10": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/사진1.jpg/③/도형 도구/④ 혼합모드(반사, 불투명도 : 80)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/기본/기본설정/지시사항 외 설정 하나 당 \"-1점\" 처리됨"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/저장/dpi_01_123456_성명.JPG와 dpi_01_123456_성명.GPDP 파일 중 하나라도 누락 시 “0점” 처리됨"
+ }
+ },
+ "1": {
+ "1": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/캔버스/캔버스/가로(650 픽셀) X 세로(450 픽셀) ",
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/캔버스/캔버스/배경색(색상 : 81098F)"
+ },
+ "3": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/이미지 복사/레이어 마스크/레이어 마스크 설정"
+ },
+ "4": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/이미지 복사/레이어 마스크/가로 방향으로 흐릿하게",
+ "note": "결과파일과 동일한 방향으로 그라이언트 되면 정답"
+ },
+ "5": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/①/도형 도구/① 모서리가 둥근 사각형"
+ },
+ "6": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/①/도형 도구/② 크기 : 400 x 60"
+ },
+ "7": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/①/도형 도구/③ 그라데이션(색상 : FFE000 – 34A159)"
+ },
+ "8": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 입력/흰 꽃 사이 노란 꽃"
+ },
+ "9": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/① 글꼴(맑은 고딕)"
+ },
+ "10": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/② 글꼴 스타일(기울임꼴)"
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/③ 크기(30pt)"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/④ 채우기(색상 : B46EF8)"
+ },
+ "13": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/⑤ 외곽선(두께 : 7px)"
+ },
+ "14": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/⑥ 외곽선(색상 : FFFFFF)"
+ },
+ "15": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/클리핑 마스크 설정"
+ },
+ "16": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/① 사각형"
+ },
+ "17": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/② 크기 : 150 × 150"
+ },
+ "18": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/③ 외곽선(두께 : 7px)"
+ },
+ "19": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/④ 외곽선(색상 : E8E88E)"
+ },
+ "20": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/⑤ 그림자(두께 : 3px, 거리 : 5px, 분산도 : 1px, 각도 : 320°)",
+ "note": "그림자설정/두께/거리/분산/각도 중 오답 하나 당 \"-1점\""
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/기본/기본설정/지시사항 외 설정 하나 당 \"-1점\" 처리됨"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/저장/dpi_02_123456_성명.JPG와 dpi_02_123456_성명.GPDP 파일 중 하나라도 누락 시 “0점” 처리됨"
+ }
+ },
+ "2": {
+ "1": {
+ "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
+ "point": 4,
+ "desc": "문제3/순서/미디어 소스 순서/동영상.mp4 > 이미지3.jpg > 이미지1.jpg > 이미지2.jpg",
+ "type": "array",
+ "value": [
+ "동영상.mp4",
+ "이미지3.jpg",
+ "이미지1.jpg",
+ "이미지2.jpg"
+ ],
+ "note": "미디어소스 사이에 공백 있을 경우, 0점"
+ },
+ "2": {
+ "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/배속/1.4x"
+ },
+ "3": {
+ "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자르기/시작 시간(0.00), 재생 시간(12.10)",
+ "type": "startend",
+ "start": "0",
+ "end": "370"
+ },
+ "4": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='44'][@VID100='8'][@VID102='8']",
+ "point": 3,
+ "desc": "문제3/동영상 파일/이펙트/LUT 필터-카메라 필름-카메라 필름 09(노출 : 8, 감마 : 0.9)"
+ },
+ "5": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/동영상 파일/자막/텍스트 입력/화단의 꽃들",
+ "type": "video",
+ "value": "화단의 꽃들"
+ },
+ "6": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/① 돋움체",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "돋움체"
+ },
+ "7": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/② 크기 110",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "110"
+ },
+ "8": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/텍스트 서식/③ ff531b",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-7601940"
+ },
+ "9": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/위치 설정/화면 정가운데 아래",
+ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": [
+ "0.19062501",
+ "0.78518522"
+ ]
+ },
+ "10": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/시작 시간/[5.20]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": 170
+ },
+ "11": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/동영상 파일/자막/클립 길이/[5.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "type": "video",
+ "search": "화단의 꽃들",
+ "value": "150"
+ },
+ "12": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
+ "point": 2,
+ "desc": "문제3/동영상 파일/원본 동영상에 포함된 오디오는 모두 음소거 할 것",
+ "existEle": "//CRClip[@Path='동영상.mp4']",
+ "type": "searchIndex",
+ "value": "1"
+ },
+ "13": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지3.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "14": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지3.jpg/오버레이/흩날림(개수/양 : 40)",
+ "type": "multi",
+ "value": [
+ "67",
+ "40"
+ ]
+ },
+ "15": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지3.jpg/클립 트랜지션/아래로 밀기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ "10",
+ "490:550",
+ "2"
+ ]
+ },
+ "16": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지1.jpg/이미지 클립 길이/[6.00]",
+ "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']",
+ "type": "searchIndex",
+ "value": "180"
+ },
+ "17": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지1.jpg/오버레이/내려앉는(속도 : 7)",
+ "type": "multi",
+ "value": [
+ "103",
+ "7"
+ ]
+ },
+ "18": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지1.jpg/클립 트랜지션/오른쪽으로 덮기(앞으로 이동, 재생 시간 : 2.00)",
+ "type": "multi",
+ "value": [
+ null,
+ null,
+ null
+ ]
+ },
+ "19": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지2.jpg/이미지 클립 길이/[5.00]",
+ "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']",
+ "type": "searchIndex",
+ "value": "150"
+ },
+ "20": {
+ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지2.jpg/오버레이/비누 방울(크기 : 3)",
+ "type": "multi",
+ "value": [
+ "102",
+ "3"
+ ]
+ },
+ "21": {
+ "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
+ "point": 2,
+ "desc": "문제3/이미지 파일/이미지2.jpg/클립 트랜지션/디졸브(앞으로 이동, 재생 시간 : 1.00)",
+ "type": "multi",
+ "value": [
+ "0",
+ "850:880",
+ "2"
+ ]
+ },
+ "22": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
+ "point": 3,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 입력/아름다운 꽃 축제\r\n(Happy Flower Festival)",
+ "type": "opening",
+ "value": "아름다운 꽃 축제 (Happy Flower Festival)"
+ },
+ "23": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/① 궁서체",
+ "type": "opening",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
+ "value": "궁서체"
+ },
+ "24": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/② 크기 140",
+ "type": "opening",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
+ "value": "140"
+ },
+ "25": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/글꼴 서식/③ ec008c",
+ "type": "opening",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
+ "value": "-7601940"
+ },
+ "26": {
+ "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 윤곽선 색/fff9c4, 두께 : 40",
+ "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": [
+ "0.40000001",
+ "-3868161"
+ ]
+ },
+ "27": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/나타나기/오른쪽으로 펼치기, 지속 시간 : 2.00"
+ },
+ "28": {
+ "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/시작 시간/[0.00]",
+ "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": 0
+ },
+ "29": {
+ "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
+ "point": 2,
+ "desc": "문제3/제목\r\n또는\r\n제작진/오프닝/텍스트 클립 길이/[4.00]",
+ "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length",
+ "search": "아름다운 꽃 축제 (Happy Flower Festival)",
+ "type": "opening",
+ "value": "120"
+ },
+ "30": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/시작구간/[0.00]"
+ },
+ "31": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제3/음악 파일/종료구간/[29.00]"
+ },
+ "32": {
+ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']",
+ "point": 2,
+ "desc": "문제3/음악 파일/페이드 아웃/[2.00]"
+ },
+ "33": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ },
+ "videoStartTime": 170,
+ "openingStartTime": 0
+ },
+ "4": {
+ "1": {
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "point": 5,
+ "desc": "문제1/캔버스/캔버스/가로(650 픽셀) X 세로(350 픽셀) ",
+ "type": "multi",
+ "value": [
+ "650",
+ "350"
+ ],
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "문제1/사진1.jpg/이미지 복사/자유 변형/크기 변형으로 캔버스 크기에 맞게 변형"
+ },
+ "3": {
+ "ele": "//Layer/Name/@value",
+ "point": 5,
+ "desc": "문제1/사진1.jpg/이미지 복사/레이어 이름/Flower",
+ "type": "isExist",
+ "value": "Flower"
+ },
+ "4": {
+ "ele": "none",
+ "point": 5,
+ "desc": "문제1/사진1.jpg/조정/생동감을 이용하여 이미지 조정 (생동감 : 40)",
+ "note": "40으로만 여러 번 설정한 경우에는 정답 처리\r\n(프로그램 상 40을 설정했는지 유무를 명확히 확인 불가)\r\nif:조정을 여러 번 진행했을 경우, 조정값이 1개라도 40이 아닐 시 오답으로 처리"
+ },
+ "5": {
+ "ele": "none",
+ "point": 6,
+ "desc": "문제1/사진1.jpg/①/복제 도장/이미지 복구"
+ },
+ "6": {
+ "ele": "//Layer/Effects/Item/Name/@value",
+ "point": 6,
+ "desc": "문제1/사진1.jpg/②/세피아/보라색 계열로 보정",
+ "type": "isExist",
+ "value": "세피아"
+ },
+ "7": {
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "point": 3,
+ "desc": "문제1/사진1.jpg/③/도형 도구/① 원형/타원형",
+ "type": "exact",
+ "value": "ELLIPSE"
+ },
+ "8": {
+ "ele": "none",
+ "point": 3,
+ "desc": "문제1/사진1.jpg/③/도형 도구/② 크기 : 120 x 120",
+ "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value",
+ "type": "size",
+ "value": {
+ "width": 120,
+ "height": 120
+ }
+ },
+ "9": {
+ "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "point": 6,
+ "desc": "문제1/사진1.jpg/③/도형 도구/③ 채우기(색상 : 7097BB)",
+ "type": "color",
+ "value": "7097bb"
+ },
+ "10": {
+ "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
+ "point": 6,
+ "desc": "문제1/사진1.jpg/③/도형 도구/④ 혼합모드(반사, 불투명도 : 80)",
+ "type": "multiValue",
+ "value": [
+ "반사",
+ "80"
+ ]
+ },
+ "11": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제1/기본/기본설정/지시사항 외 설정 하나 당 \"-1점\" 처리됨"
+ },
+ "12": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ },
+ "5": {
+ "1": {
+ "ele": "//Document/Width/@value | //Document/Height/@value",
+ "point": 5,
+ "desc": "문제2/캔버스/캔버스/가로(650 픽셀) X 세로(450 픽셀) ",
+ "type": "multi",
+ "value": [
+ "650",
+ "450"
+ ],
+ "note": "원본이미지가 잘리거나, 왜곡되지 않으면 정답"
+ },
+ "2": {
+ "ele": "none",
+ "point": 5,
+ "desc": "문제2/캔버스/캔버스/배경색(색상 : 81098F)"
+ },
+ "3": {
+ "ele": "//Layer[MaskOpType/@value='Layering']",
+ "point": 6,
+ "desc": "문제2/사진2.jpg/이미지 복사/레이어 마스크/레이어 마스크 설정"
+ },
+ "4": {
+ "ele": "none",
+ "point": 6,
+ "desc": "문제2/사진2.jpg/이미지 복사/레이어 마스크/가로 방향으로 흐릿하게",
+ "note": "결과파일과 동일한 방향으로 그라이언트 되면 정답"
+ },
+ "5": {
+ "ele": "//Layer/Shapes/Shape/shape_type/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/①/도형 도구/① 모서리가 둥근 사각형",
+ "type": "exact",
+ "value": "ROUNDED_RECTANGLE"
+ },
+ "6": {
+ "ele": "none",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/①/도형 도구/② 크기 : 400 x 60",
+ "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value",
+ "type": "size",
+ "value": {
+ "width": 400,
+ "height": 60
+ }
+ },
+ "7": {
+ "ele": "none",
+ "point": 6,
+ "desc": "문제2/사진2.jpg/①/도형 도구/③ 그라데이션(색상 : FFE000 – 34A159)",
+ "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value",
+ "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value",
+ "type": "gradient",
+ "value": {
+ "startColor": "ffe000",
+ "endColor": "34a159"
+ }
+ },
+ "8": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
+ "point": 5,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 입력/흰 꽃 사이 노란 꽃",
+ "type": "exact",
+ "value": "흰 꽃 사이 노란 꽃"
+ },
+ "9": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/① 글꼴(맑은 고딕)",
+ "type": "exact",
+ "value": "맑은 고딕"
+ },
+ "10": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/② 글꼴 스타일(기울임꼴)",
+ "type": "exact",
+ "value": "True"
+ },
+ "11": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/③ 크기(30pt)",
+ "type": "exact",
+ "value": "30"
+ },
+ "12": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/④ 채우기(색상 : B46EF8)",
+ "type": "exact",
+ "value": "b46ef8"
+ },
+ "13": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/⑤ 외곽선(두께 : 7px)",
+ "type": "exact",
+ "value": "7"
+ },
+ "14": {
+ "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "point": 3,
+ "desc": "문제2/사진2.jpg/텍스트/텍스트 서식/⑥ 외곽선(색상 : FFFFFF)",
+ "type": "exact",
+ "value": "ffffff"
+ },
+ "15": {
+ "ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
+ "point": 6,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/클리핑 마스크 설정"
+ },
+ "16": {
+ "ele": "//Layer[contains(Name/@value, 'Layer 5')]//shape_type/@value",
+ "point": 3,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/① 사각형",
+ "value": "RECTANGLE"
+ },
+ "17": {
+ "ele": "none",
+ "point": 3,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/② 크기 : 150 × 150",
+ "posX": "//Layer//Shape[shape_type/@value='RECTANGLE']//op_points[Item]/Item[last()]/X/@value - //Layer//Shape[shape_type/@value='RECTANGLE']//op_points[Item]/Item[1]/X/@value",
+ "posY": "//Layer//Shape[shape_type/@value='RECTANGLE']//op_points[Item]/Item[last()]/Y/@value - //Layer//Shape[shape_type/@value='RECTANGLE']//op_points[Item]/Item[1]/Y/@value",
+ "type": "size",
+ "value": {
+ "width": 150,
+ "height": 150
+ }
+ },
+ "18": {
+ "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]//outline_peninfo/Width/@value",
+ "point": 3,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/③ 외곽선(두께 : 7px)",
+ "value": "7"
+ },
+ "19": {
+ "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
+ "point": 3,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/④ 외곽선(색상 : E8E88E)",
+ "value": "e8e88e"
+ },
+ "20": {
+ "ele": {
+ "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]",
+ "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
+ "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
+ "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
+ "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
+ },
+ "point": 5,
+ "desc": "문제2/사진3.jpg/②/클리핑 마스크/⑤ 그림자(두께 : 3px, 거리 : 5px, 분산도 : 1px, 각도 : 320°)",
+ "type": "shadow",
+ "value": {
+ "width": "3",
+ "distance": "5",
+ "blur": "1",
+ "angle": "320"
+ },
+ "note": "그림자설정/두께/거리/분산/각도 중 오답 하나 당 \"-1점\""
+ },
+ "21": {
+ "ele": "none",
+ "point": 0,
+ "desc": "문제2/기본/기본설정/지시사항 외 설정 하나 당 \"-1점\" 처리됨"
+ },
+ "22": {
+ "ele": "none",
+ "point": 0,
+ "desc": "파일명 확인"
+ }
+ }
+}
\ No newline at end of file