Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
94f25283
Commit
94f25283
authored
14 years ago
by
Ronald Oussoren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove traces of MacOS9 support.
Fix for issue #7908
parent
a045f191
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
53 additions
and
197 deletions
+53
-197
Demo/pdist/FSProxy.py
Demo/pdist/FSProxy.py
+5
-26
Lib/distutils/command/install.py
Lib/distutils/command/install.py
+0
-14
Lib/distutils/file_util.py
Lib/distutils/file_util.py
+0
-9
Lib/distutils/util.py
Lib/distutils/util.py
+0
-9
Lib/platform.py
Lib/platform.py
+0
-4
Lib/profile.py
Lib/profile.py
+0
-9
Lib/pydoc.py
Lib/pydoc.py
+1
-5
Lib/tarfile.py
Lib/tarfile.py
+0
-7
Lib/test/regrtest.py
Lib/test/regrtest.py
+0
-28
Lib/test/test_frozen.py
Lib/test/test_frozen.py
+6
-7
Lib/test/test_reprlib.py
Lib/test/test_reprlib.py
+1
-2
Lib/test/test_select.py
Lib/test/test_select.py
+1
-1
Lib/test/test_socket.py
Lib/test/test_socket.py
+1
-3
Lib/test/test_strptime.py
Lib/test/test_strptime.py
+0
-5
Lib/test/test_tempfile.py
Lib/test/test_tempfile.py
+3
-5
Lib/test/test_urllib2.py
Lib/test/test_urllib2.py
+0
-5
Lib/urllib/request.py
Lib/urllib/request.py
+1
-3
Tools/webchecker/wcgui.py
Tools/webchecker/wcgui.py
+0
-6
Tools/webchecker/websucker.py
Tools/webchecker/websucker.py
+0
-2
setup.py
setup.py
+34
-47
No files found.
Demo/pdist/FSProxy.py
View file @
94f25283
...
...
@@ -23,12 +23,7 @@ from stat import *
import
time
import
fnmatch
if
os
.
name
==
'mac'
:
import
macfs
maxnamelen
=
31
else
:
macfs
=
None
maxnamelen
=
255
maxnamelen
=
255
skipnames
=
(
os
.
curdir
,
os
.
pardir
)
...
...
@@ -63,16 +58,10 @@ class FSProxyLocal:
return
ignore
def
_hidden
(
self
,
name
):
if
os
.
name
==
'mac'
:
return
name
[
0
]
==
'('
and
name
[
-
1
]
==
')'
else
:
return
name
[
0
]
==
'.'
return
name
[
0
]
==
'.'
def
_hide
(
self
,
name
):
if
os
.
name
==
'mac'
:
return
'(%s)'
%
name
else
:
return
'.%s'
%
name
return
'.%s'
%
name
def
visible
(
self
,
name
):
if
len
(
name
)
>
maxnamelen
:
return
0
...
...
@@ -81,18 +70,8 @@ class FSProxyLocal:
if
self
.
_hidden
(
name
):
return
0
head
,
tail
=
os
.
path
.
split
(
name
)
if
head
or
not
tail
:
return
0
if
macfs
:
if
os
.
path
.
exists
(
name
)
and
not
os
.
path
.
isdir
(
name
):
try
:
fs
=
macfs
.
FSSpec
(
name
)
c
,
t
=
fs
.
GetCreatorType
()
if
t
!=
'TEXT'
:
return
0
except
macfs
.
error
as
msg
:
print
(
"***"
,
name
,
msg
)
return
0
else
:
if
os
.
path
.
islink
(
name
):
return
0
if
'
\
0
'
in
open
(
name
,
'rb'
).
read
(
512
):
return
0
if
os
.
path
.
islink
(
name
):
return
0
if
'
\
0
'
in
open
(
name
,
'rb'
).
read
(
512
):
return
0
for
ign
in
self
.
_ignore
:
if
fnmatch
.
fnmatch
(
name
,
ign
):
return
0
return
1
...
...
This diff is collapsed.
Click to expand it.
Lib/distutils/command/install.py
View file @
94f25283
...
...
@@ -65,20 +65,6 @@ INSTALL_SCHEMES = {
'scripts'
:
'$userbase/Scripts'
,
'data'
:
'$userbase'
,
},
'mac'
:
{
'purelib'
:
'$base/Lib/site-packages'
,
'platlib'
:
'$base/Lib/site-packages'
,
'headers'
:
'$base/Include/$dist_name'
,
'scripts'
:
'$base/Scripts'
,
'data'
:
'$base'
,
},
'mac_user'
:
{
'purelib'
:
'$usersite'
,
'platlib'
:
'$usersite'
,
'headers'
:
'$userbase/$py_version_short/include/$dist_name'
,
'scripts'
:
'$userbase/bin'
,
'data'
:
'$userbase'
,
},
'os2'
:
{
'purelib'
:
'$base/Lib/site-packages'
,
'platlib'
:
'$base/Lib/site-packages'
,
...
...
This diff is collapsed.
Click to expand it.
Lib/distutils/file_util.py
View file @
94f25283
...
...
@@ -132,15 +132,6 @@ def copy_file(src, dst, preserve_mode=1, preserve_times=1, update=0,
if
dry_run
:
return
(
dst
,
1
)
# On Mac OS, use the native file copy routine
if
os
.
name
==
'mac'
:
import
macostools
try
:
macostools
.
copy
(
src
,
dst
,
0
,
preserve_times
)
except
os
.
error
as
exc
:
raise
DistutilsFileError
(
"could not copy '%s' to '%s': %s"
%
(
src
,
dst
,
exc
.
args
[
-
1
]))
# If linking (hard or symbolic), use the appropriate system call
# (Unix only, of course, but that's the caller's responsibility)
elif
link
==
'hard'
:
...
...
This diff is collapsed.
Click to expand it.
Lib/distutils/util.py
View file @
94f25283
...
...
@@ -91,15 +91,6 @@ def change_root(new_root, pathname):
path
=
path
[
1
:]
return
os
.
path
.
join
(
new_root
,
path
)
elif
os
.
name
==
'mac'
:
if
not
os
.
path
.
isabs
(
pathname
):
return
os
.
path
.
join
(
new_root
,
pathname
)
else
:
# Chop off volume name from start of path
elements
=
pathname
.
split
(
":"
,
1
)
pathname
=
":"
+
elements
[
1
]
return
os
.
path
.
join
(
new_root
,
pathname
)
else
:
raise
DistutilsPlatformError
(
"nothing known about "
"platform '%s'"
%
os
.
name
)
...
...
This diff is collapsed.
Click to expand it.
Lib/platform.py
View file @
94f25283
...
...
@@ -1147,10 +1147,6 @@ def uname():
if not version:
version = vendor
elif os.name == 'mac':
release,(version,stage,nonrel),machine = mac_ver()
system = 'MacOS'
# System specific extensions
if system == 'OpenVMS':
# OpenVMS seems to have release and version mixed up
...
...
This diff is collapsed.
Click to expand it.
Lib/profile.py
View file @
94f25283
...
...
@@ -92,11 +92,6 @@ def runctx(statement, globals, locals, filename=None):
else
:
return
prof
.
print_stats
()
if
os
.
name
==
"mac"
:
import
MacOS
def
_get_time_mac
(
timer
=
MacOS
.
GetTicks
):
return
timer
()
/
60.0
if
hasattr
(
os
,
"times"
):
def
_get_time_times
(
timer
=
os
.
times
):
t
=
timer
()
...
...
@@ -173,10 +168,6 @@ class Profile:
self
.
timer
=
resgetrusage
self
.
dispatcher
=
self
.
trace_dispatch
self
.
get_time
=
_get_time_resource
elif
os
.
name
==
'mac'
:
self
.
timer
=
MacOS
.
GetTicks
self
.
dispatcher
=
self
.
trace_dispatch_mac
self
.
get_time
=
_get_time_mac
elif
hasattr
(
time
,
'clock'
):
self
.
timer
=
self
.
get_time
=
time
.
clock
self
.
dispatcher
=
self
.
trace_dispatch_i
...
...
This diff is collapsed.
Click to expand it.
Lib/pydoc.py
View file @
94f25283
...
...
@@ -2024,7 +2024,7 @@ pydoc</strong> by Ka-Ping Yee <ping@lfw.org></font>'''
class
DocServer
(
http
.
server
.
HTTPServer
):
def
__init__
(
self
,
port
,
callback
):
host
=
(
sys
.
platform
==
'mac'
)
and
'127.0.0.1'
or
'localhost'
host
=
'localhost'
self
.
address
=
(
''
,
port
)
self
.
url
=
'http://%s:%d/'
%
(
host
,
port
)
self
.
callback
=
callback
...
...
@@ -2141,10 +2141,6 @@ def gui():
except
ImportError
:
# pre-webbrowser.py compatibility
if
sys
.
platform
==
'win32'
:
os
.
system
(
'start "%s"'
%
url
)
elif
sys
.
platform
==
'mac'
:
try
:
import
ic
except
ImportError
:
pass
else
:
ic
.
launchurl
(
url
)
else
:
rc
=
os
.
system
(
'netscape -remote "openURL(%s)" &'
%
url
)
if
rc
:
os
.
system
(
'netscape "%s" &'
%
url
)
...
...
This diff is collapsed.
Click to expand it.
Lib/tarfile.py
View file @
94f25283
...
...
@@ -50,13 +50,6 @@ import struct
import
copy
import
re
if
sys
.
platform
==
'mac'
:
# This module needs work for MacOS9, especially in the area of pathname
# handling. In many places it is assumed a simple substitution of / by the
# local os.path.sep is good enough to convert pathnames, but this does not
# work with the mac rooted:path:name versus :nonrooted:path:name syntax
raise
ImportError
(
"tarfile does not work for platform==mac"
)
try
:
import
grp
,
pwd
except
ImportError
:
...
...
This diff is collapsed.
Click to expand it.
Lib/test/regrtest.py
View file @
94f25283
...
...
@@ -1209,34 +1209,6 @@ _expectations = {
test_kqueue
test_ossaudiodev
""",
'mac':
"""
test_atexit
test_bz2
test_crypt
test_curses
test_dbm
test_fcntl
test_fork1
test_epoll
test_grp
test_ioctl
test_largefile
test_locale
test_kqueue
test_mmap
test_openpty
test_ossaudiodev
test_poll
test_popen
test_posix
test_pty
test_pwd
test_resource
test_signal
test_sundry
test_tarfile
""",
'unixware7':
"""
test_epoll
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_frozen.py
View file @
94f25283
...
...
@@ -39,13 +39,12 @@ class FrozenTests(unittest.TestCase):
else
:
self
.
fail
(
"import __phello__.foo should have failed"
)
if
sys
.
platform
!=
"mac"
:
# On the Mac this import does succeed.
try
:
import
__phello__.foo
except
ImportError
:
pass
else
:
self
.
fail
(
"import __phello__.foo should have failed"
)
try
:
import
__phello__.foo
except
ImportError
:
pass
else
:
self
.
fail
(
"import __phello__.foo should have failed"
)
del
sys
.
modules
[
'__hello__'
]
del
sys
.
modules
[
'__phello__'
]
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_reprlib.py
View file @
94f25283
...
...
@@ -304,8 +304,7 @@ class ClassWithFailingRepr:
def
test_main
():
run_unittest
(
ReprTests
)
if
os
.
name
!=
'mac'
:
run_unittest
(
LongReprTest
)
run_unittest
(
LongReprTest
)
if
__name__
==
"__main__"
:
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_select.py
View file @
94f25283
...
...
@@ -4,7 +4,7 @@ import select
import
os
import
sys
@
unittest
.
skipIf
(
sys
.
platform
[:
3
]
in
(
'win'
,
'
mac'
,
'
os2'
,
'riscos'
),
@
unittest
.
skipIf
(
sys
.
platform
[:
3
]
in
(
'win'
,
'os2'
,
'riscos'
),
"can't easily test on this system"
)
class
SelectTestCase
(
unittest
.
TestCase
):
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_socket.py
View file @
94f25283
...
...
@@ -1465,9 +1465,7 @@ class TIPCThreadableTest (unittest.TestCase, ThreadableTest):
def
test_main
():
tests
=
[
GeneralModuleTests
,
BasicTCPTest
,
TCPCloserTest
,
TCPTimeoutTest
,
TestExceptions
,
BufferIOTest
,
BasicTCPTest2
]
if
sys
.
platform
!=
'mac'
:
tests
.
extend
([
BasicUDPTest
,
UDPTimeoutTest
])
TestExceptions
,
BufferIOTest
,
BasicTCPTest2
,
BasicUDPTest
,
UDPTimeoutTest
]
tests
.
extend
([
NonBlockingTCPTests
,
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_strptime.py
View file @
94f25283
...
...
@@ -298,9 +298,6 @@ class StrptimeTests(unittest.TestCase):
self.assertEqual(strp_output.tm_isdst, 0)
strp_output = _strptime._strptime_time("
GMT
", "
%
Z
")
self.assertEqual(strp_output.tm_isdst, 0)
if sys.platform == "
mac
":
# Timezones don't really work on MacOS9
return
time_tuple = time.localtime()
strf_output = time.strftime("
%
Z
") #UTC does not have a timezone
strp_output = _strptime._strptime_time(strf_output, "
%
Z
")
...
...
@@ -317,8 +314,6 @@ class StrptimeTests(unittest.TestCase):
def test_bad_timezone(self):
# Explicitly test possibility of bad timezone;
# when time.tzname[0] == time.tzname[1] and time.daylight
if sys.platform == "
mac
":
return #MacOS9 has severely broken timezone support.
tz_name = time.tzname[0]
if tz_name.upper() in ("
UTC
", "
GMT
"):
return
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_tempfile.py
View file @
94f25283
...
...
@@ -20,9 +20,7 @@ has_spawnl = hasattr(os, 'spawnl')
# TEST_FILES may need to be tweaked for systems depending on the maximum
# number of files that can be opened at one time (see ulimit -n)
if
sys
.
platform
==
'mac'
:
TEST_FILES
=
32
elif
sys
.
platform
in
(
'openbsd3'
,
'openbsd4'
):
if
sys
.
platform
in
(
'openbsd3'
,
'openbsd4'
):
TEST_FILES
=
48
else
:
TEST_FILES
=
100
...
...
@@ -265,7 +263,7 @@ class test__mkstemp_inner(TC):
file
=
self
.
do_create
()
mode
=
stat
.
S_IMODE
(
os
.
stat
(
file
.
name
).
st_mode
)
expected
=
0o600
if
sys
.
platform
in
(
'win32'
,
'os2emx'
,
'mac'
):
if
sys
.
platform
in
(
'win32'
,
'os2emx'
):
# There's no distinction among 'user', 'group' and 'world';
# replicate the 'user' bits.
user
=
expected
>>
6
...
...
@@ -488,7 +486,7 @@ class test_mkdtemp(TC):
mode
=
stat
.
S_IMODE
(
os
.
stat
(
dir
).
st_mode
)
mode
&=
0o777
# Mask off sticky bits inherited from /tmp
expected
=
0o700
if
sys
.
platform
in
(
'win32'
,
'os2emx'
,
'mac'
):
if
sys
.
platform
in
(
'win32'
,
'os2emx'
):
# There's no distinction among 'user', 'group' and 'world';
# replicate the 'user' bits.
user
=
expected
>>
6
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_urllib2.py
View file @
94f25283
...
...
@@ -22,11 +22,6 @@ class TrivialTests(unittest.TestCase):
# XXX Name hacking to get this to work on Windows.
fname
=
os
.
path
.
abspath
(
urllib
.
request
.
__file__
).
replace
(
'
\
\
'
,
'/'
)
# And more hacking to get it to work on MacOS. This assumes
# urllib.pathname2url works, unfortunately...
if
os
.
name
==
'mac'
:
fname
=
'/'
+
fname
.
replace
(
':'
,
'/'
)
if
os
.
name
==
'nt'
:
file_url
=
"file:///%s"
%
fname
else
:
...
...
This diff is collapsed.
Click to expand it.
Lib/urllib/request.py
View file @
94f25283
...
...
@@ -1338,9 +1338,7 @@ class CacheFTPHandler(FTPHandler):
MAXFTPCACHE
=
10
# Trim the ftp cache beyond this size
# Helper for non-unix systems
if
os
.
name
==
'mac'
:
from
macurl2path
import
url2pathname
,
pathname2url
elif
os
.
name
==
'nt'
:
if
os
.
name
==
'nt'
:
from
nturl2path
import
url2pathname
,
pathname2url
else
:
def
url2pathname
(
pathname
):
...
...
This diff is collapsed.
Click to expand it.
Tools/webchecker/wcgui.py
View file @
94f25283
...
...
@@ -64,12 +64,6 @@ from Tkinter import *
import
tktools
import
webchecker
# Override some for a weaker platform
if
sys
.
platform
==
'mac'
:
webchecker
.
DEFROOT
=
"http://grail.cnri.reston.va.us/"
webchecker
.
MAXPAGE
=
50000
webchecker
.
verbose
=
4
def
main
():
try
:
opts
,
args
=
getopt
.
getopt
(
sys
.
argv
[
1
:],
't:m:qva'
)
...
...
This diff is collapsed.
Click to expand it.
Tools/webchecker/websucker.py
View file @
94f25283
...
...
@@ -97,8 +97,6 @@ class Sucker(webchecker.Checker):
path
=
path
+
"index.html"
if
os
.
sep
!=
"/"
:
path
=
os
.
sep
.
join
(
path
.
split
(
"/"
))
if
os
.
name
==
"mac"
:
path
=
os
.
sep
+
path
path
=
os
.
path
.
join
(
host
,
path
)
return
path
...
...
This diff is collapsed.
Click to expand it.
setup.py
View file @
94f25283
...
...
@@ -150,22 +150,21 @@ class PyBuildExt(build_ext):
if
ext
.
name
in
sys
.
builtin_module_names
:
self
.
extensions
.
remove
(
ext
)
if
platform
!=
'mac'
:
# Parse Modules/Setup and Modules/Setup.local to figure out which
# modules are turned on in the file.
remove_modules
=
[]
for
filename
in
(
'Modules/Setup'
,
'Modules/Setup.local'
):
input
=
text_file
.
TextFile
(
filename
,
join_lines
=
1
)
while
1
:
line
=
input
.
readline
()
if
not
line
:
break
line
=
line
.
split
()
remove_modules
.
append
(
line
[
0
])
input
.
close
()
for
ext
in
self
.
extensions
[:]:
if
ext
.
name
in
remove_modules
:
self
.
extensions
.
remove
(
ext
)
# Parse Modules/Setup and Modules/Setup.local to figure out which
# modules are turned on in the file.
remove_modules
=
[]
for
filename
in
(
'Modules/Setup'
,
'Modules/Setup.local'
):
input
=
text_file
.
TextFile
(
filename
,
join_lines
=
1
)
while
1
:
line
=
input
.
readline
()
if
not
line
:
break
line
=
line
.
split
()
remove_modules
.
append
(
line
[
0
])
input
.
close
()
for
ext
in
self
.
extensions
[:]:
if
ext
.
name
in
remove_modules
:
self
.
extensions
.
remove
(
ext
)
# When you run "make CC=altcc" or something similar, you really want
# those environment variables passed into the setup.py phase. Here's
...
...
@@ -381,7 +380,7 @@ class PyBuildExt(build_ext):
# Check for MacOS X, which doesn't need libm.a at all
math_libs
=
[
'm'
]
if
platform
in
[
'darwin'
,
'mac'
]
:
if
platform
==
'darwin'
:
math_libs
=
[]
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
...
...
@@ -441,19 +440,16 @@ class PyBuildExt(build_ext):
# fcntl(2) and ioctl(2)
exts
.
append
(
Extension
(
'fcntl'
,
[
'fcntlmodule.c'
])
)
if
platform
not
in
[
'mac'
]:
# pwd(3)
exts
.
append
(
Extension
(
'pwd'
,
[
'pwdmodule.c'
])
)
# grp(3)
exts
.
append
(
Extension
(
'grp'
,
[
'grpmodule.c'
])
)
# spwd, shadow passwords
if
(
config_h_vars
.
get
(
'HAVE_GETSPNAM'
,
False
)
or
config_h_vars
.
get
(
'HAVE_GETSPENT'
,
False
)):
exts
.
append
(
Extension
(
'spwd'
,
[
'spwdmodule.c'
])
)
else
:
missing
.
append
(
'spwd'
)
# pwd(3)
exts
.
append
(
Extension
(
'pwd'
,
[
'pwdmodule.c'
])
)
# grp(3)
exts
.
append
(
Extension
(
'grp'
,
[
'grpmodule.c'
])
)
# spwd, shadow passwords
if
(
config_h_vars
.
get
(
'HAVE_GETSPNAM'
,
False
)
or
config_h_vars
.
get
(
'HAVE_GETSPENT'
,
False
)):
exts
.
append
(
Extension
(
'spwd'
,
[
'spwdmodule.c'
])
)
else
:
missing
.
extend
([
'pwd'
,
'grp'
,
'spwd'
]
)
missing
.
append
(
'spwd'
)
# select(2); not on ancient System V
exts
.
append
(
Extension
(
'select'
,
[
'selectmodule.c'
])
)
...
...
@@ -462,17 +458,11 @@ class PyBuildExt(build_ext):
exts
.
append
(
Extension
(
'parser'
,
[
'parsermodule.c'
])
)
# Memory-mapped files (also works on Win32).
if
platform
not
in
[
'mac'
]:
exts
.
append
(
Extension
(
'mmap'
,
[
'mmapmodule.c'
])
)
else
:
missing
.
append
(
'mmap'
)
exts
.
append
(
Extension
(
'mmap'
,
[
'mmapmodule.c'
])
)
# Lance Ellinghaus's syslog module
if
platform
not
in
[
'mac'
]:
# syslog daemon interface
exts
.
append
(
Extension
(
'syslog'
,
[
'syslogmodule.c'
])
)
else
:
missing
.
append
(
'syslog'
)
# syslog daemon interface
exts
.
append
(
Extension
(
'syslog'
,
[
'syslogmodule.c'
])
)
#
# Here ends the simple stuff. From here on, modules need certain
...
...
@@ -532,16 +522,13 @@ class PyBuildExt(build_ext):
else
:
missing
.
append
(
'readline'
)
if
platform
not
in
[
'mac'
]:
# crypt module.
# crypt module.
if
self
.
compiler_obj
.
find_library_file
(
lib_dirs
,
'crypt'
):
libs
=
[
'crypt'
]
else
:
libs
=
[]
exts
.
append
(
Extension
(
'crypt'
,
[
'cryptmodule.c'
],
libraries
=
libs
)
)
if
self
.
compiler_obj
.
find_library_file
(
lib_dirs
,
'crypt'
):
libs
=
[
'crypt'
]
else
:
missing
.
append
(
'crypt'
)
libs
=
[]
exts
.
append
(
Extension
(
'crypt'
,
[
'cryptmodule.c'
],
libraries
=
libs
)
)
# CSV files
exts
.
append
(
Extension
(
'_csv'
,
[
'_csv.c'
])
)
...
...
@@ -986,7 +973,7 @@ class PyBuildExt(build_ext):
missing
.
append
(
'_gdbm'
)
# Unix-only modules
if
platform
not
in
[
'mac'
,
'win32'
]
:
if
platform
!=
'win32'
:
# Steen Lumholt's termios module
exts
.
append
(
Extension
(
'termios'
,
[
'termios.c'
])
)
# Jeremy Hylton's rlimit interface
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment